@master/eslint-plugin-css 2.0.0-beta.215 → 2.0.0-rc.10

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/README.md CHANGED
@@ -43,9 +43,9 @@
43
43
  </a>
44
44
  <a aria-label="Github Actions" href="https://github.com/1aron/repo/actions/workflows/release.yml">
45
45
  <picture>
46
- <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=beta&label=%20&message=twitter&color=212022&logo=githubactions&style=for-the-badge">
47
- <source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=beta&label=%20&message=twitter&color=f6f7f8&logo=githubactions&style=for-the-badge&logoColor=%23000">
48
- <img alt="Github release actions" src="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=beta&label=%20&message=twitter&color=f6f7f8&logo=githubactions&style=for-the-badge&logoColor=%23000">
46
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=rc&label=%20&message=twitter&color=212022&logo=githubactions&style=for-the-badge">
47
+ <source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=rc&label=%20&message=twitter&color=f6f7f8&logo=githubactions&style=for-the-badge&logoColor=%23000">
48
+ <img alt="Github release actions" src="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=rc&label=%20&message=twitter&color=f6f7f8&logo=githubactions&style=for-the-badge&logoColor=%23000">
49
49
  </picture>
50
50
  </a>
51
51
  </p>
@@ -53,7 +53,7 @@
53
53
  </div>
54
54
 
55
55
  ## Documentation
56
- Check out the official [documentation](https://beta.css.master.co/docs/code-linting).
56
+ Check out the official [documentation](https://rc.css.master.co/docs/code-linting).
57
57
 
58
58
  ## Credits
59
59
  This plugin is heavily inspired by the awesome [eslint-plugin-tailwindcss](https://github.com/francoismassart/eslint-plugin-tailwindcss). We want to thank for their initial work, which served as the foundation for this project. While significant modifications have been made, the core ideas and concepts from A Plugin have been instrumental in developing this plugin.
@@ -1 +1 @@
1
- var k=Object.create;var p=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var D=(e,s)=>{for(var o in s)p(e,o,{get:s[o],enumerable:!0})},y=(e,s,o,m)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of w(s))!K.call(e,i)&&i!==o&&p(e,i,{get:()=>s[i],enumerable:!(m=q(s,i))||m.enumerable});return e};var c=(e,s,o)=>(o=e!=null?k(A(e)):{},y(s||!e||!e.__esModule?p(o,"default",{value:e,enumerable:!0}):o,e)),O=e=>y(p({},"__esModule",{value:!0}),e);var z={};D(z,{default:()=>V});module.exports=O(z);var R=c(require("../utils/are-declarations-equal")),S=c(require("../utils/define-visitors")),$=c(require("../utils/resolve-context")),v=c(require("../utils/find-loc")),L=require("../utils/parse-node-recursive"),b=c(require("../utils/valid-rules-action")),V={meta:{docs:{description:"Avoid applying classes with the same CSS declaration",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#class-collision-detection"},messages:{collisionClass:"{{message}}"},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create(e){const{options:s,settings:o}=(0,$.default)(e);return(0,S.default)({context:e,settings:o},(i,j=null)=>{(0,L.parseNodeRecursive)(i,j,(a,u,x,M,N)=>{const E=e.sourceCode.lines,I=u.loc.start.line,T=u.loc.end.line,C=(0,b.default)(a,o.config);for(let l=0;l<a.length;l++){const f=a[l],g=C[f],d=[];if(g)for(let n=0;n<a.length;n++){const r=a[n],t=C[r];l!==n&&t&&(0,R.default)(g.declarations,t.declarations)&&g.stateToken===t.stateToken&&d.push(r)}if(d.length>0){const n=d.map(t=>`"${t}"`).join(" and ");let r=x;for(const t of d){const h=t.replace(/(\\|\.|\(|\)|\[|\]|\{|\}|\+|\*|\?|\^|\$|\||\/)/g,"\\$1");r=r.replace(new RegExp(`\\s+${h}|${h}\\s+`),"")}e.report({loc:(0,v.default)(f,E,I,T),messageId:"collisionClass",data:{message:`"${f}" applies the same CSS declarations as ${n}.`},fix:function(t){return t.replaceTextRange([M,N],r)}})}}},!1,!1,o.ignoredKeys,e)})}};
1
+ var k=Object.create;var p=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var D=(e,s)=>{for(var o in s)p(e,o,{get:s[o],enumerable:!0})},y=(e,s,o,m)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of w(s))!K.call(e,i)&&i!==o&&p(e,i,{get:()=>s[i],enumerable:!(m=q(s,i))||m.enumerable});return e};var c=(e,s,o)=>(o=e!=null?k(A(e)):{},y(s||!e||!e.__esModule?p(o,"default",{value:e,enumerable:!0}):o,e)),O=e=>y(p({},"__esModule",{value:!0}),e);var z={};D(z,{default:()=>V});module.exports=O(z);var R=c(require("../utils/are-declarations-equal")),S=c(require("../utils/define-visitors")),$=c(require("../utils/resolve-context")),v=c(require("../utils/find-loc")),L=require("../utils/parse-node-recursive"),j=c(require("../utils/valid-rules-action")),V={meta:{docs:{description:"Avoid applying classes with the same CSS declaration",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#class-collision-detection"},messages:{collisionClass:"{{message}}"},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create(e){const{options:s,settings:o}=(0,$.default)(e);return(0,S.default)({context:e,settings:o},(i,x=null)=>{(0,L.parseNodeRecursive)(i,x,(a,u,M,N,b)=>{const E=e.sourceCode.lines,I=u.loc.start.line,T=u.loc.end.line,C=(0,j.default)(a,o.config);for(let l=0;l<a.length;l++){const f=a[l],g=C[f],d=[];if(g)for(let n=0;n<a.length;n++){const r=a[n],t=C[r];l!==n&&t&&(0,R.default)(g.declarations,t.declarations)&&g.stateToken===t.stateToken&&d.push(r)}if(d.length>0){const n=d.map(t=>`"${t}"`).join(" and ");let r=M;for(const t of d){const h=t.replace(/(\\|\.|\(|\)|\[|\]|\{|\}|\+|\*|\?|\^|\$|\||\/)/g,"\\$1");r=r.replace(new RegExp(`\\s+${h}|${h}\\s+`),"")}e.report({loc:(0,v.default)(f,E,I,T),messageId:"collisionClass",data:{message:`"${f}" applies the same CSS declarations as ${n}.`},fix:function(t){return t.replaceTextRange([N,b],r)}})}}},!1,!1,o.ignoredKeys,e)})}};
@@ -1 +1 @@
1
- import $ from"../utils/are-declarations-equal.mjs";import v from"../utils/define-visitors.mjs";import L from"../utils/resolve-context.mjs";import b from"../utils/find-loc.mjs";import{parseNodeRecursive as j}from"../utils/parse-node-recursive.mjs";import x from"../utils/valid-rules-action.mjs";var O={meta:{docs:{description:"Avoid applying classes with the same CSS declaration",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#class-collision-detection"},messages:{collisionClass:"{{message}}"},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create(t){const{options:M,settings:a}=L(t);return v({context:t,settings:a},(f,g=null)=>{j(f,g,(i,d,u,C,h)=>{const y=t.sourceCode.lines,R=d.loc.start.line,S=d.loc.end.line,p=x(i,a.config);for(let n=0;n<i.length;n++){const c=i[n],l=p[c],r=[];if(l)for(let s=0;s<i.length;s++){const o=i[s],e=p[o];n!==s&&e&&$(l.declarations,e.declarations)&&l.stateToken===e.stateToken&&r.push(o)}if(r.length>0){const s=r.map(e=>`"${e}"`).join(" and ");let o=u;for(const e of r){const m=e.replace(/(\\|\.|\(|\)|\[|\]|\{|\}|\+|\*|\?|\^|\$|\||\/)/g,"\\$1");o=o.replace(new RegExp(`\\s+${m}|${m}\\s+`),"")}t.report({loc:b(c,y,R,S),messageId:"collisionClass",data:{message:`"${c}" applies the same CSS declarations as ${s}.`},fix:function(e){return e.replaceTextRange([C,h],o)}})}}},!1,!1,a.ignoredKeys,t)})}};export{O as default};
1
+ import $ from"../utils/are-declarations-equal.mjs";import v from"../utils/define-visitors.mjs";import L from"../utils/resolve-context.mjs";import j from"../utils/find-loc.mjs";import{parseNodeRecursive as x}from"../utils/parse-node-recursive.mjs";import M from"../utils/valid-rules-action.mjs";var O={meta:{docs:{description:"Avoid applying classes with the same CSS declaration",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#class-collision-detection"},messages:{collisionClass:"{{message}}"},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create(t){const{options:N,settings:a}=L(t);return v({context:t,settings:a},(f,g=null)=>{x(f,g,(i,d,u,C,h)=>{const y=t.sourceCode.lines,R=d.loc.start.line,S=d.loc.end.line,p=M(i,a.config);for(let n=0;n<i.length;n++){const c=i[n],l=p[c],r=[];if(l)for(let s=0;s<i.length;s++){const o=i[s],e=p[o];n!==s&&e&&$(l.declarations,e.declarations)&&l.stateToken===e.stateToken&&r.push(o)}if(r.length>0){const s=r.map(e=>`"${e}"`).join(" and ");let o=u;for(const e of r){const m=e.replace(/(\\|\.|\(|\)|\[|\]|\{|\}|\+|\*|\?|\^|\$|\||\/)/g,"\\$1");o=o.replace(new RegExp(`\\s+${m}|${m}\\s+`),"")}t.report({loc:j(c,y,R,S),messageId:"collisionClass",data:{message:`"${c}" applies the same CSS declarations as ${s}.`},fix:function(e){return e.replaceTextRange([C,h],o)}})}}},!1,!1,a.ignoredKeys,t)})}};export{O as default};
@@ -1 +1 @@
1
- var U=Object.create;var E=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var X=(r,a)=>{for(var o in a)E(r,o,{get:a[o],enumerable:!0})},R=(r,a,o,h)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of A(a))!G.call(r,i)&&i!==o&&E(r,i,{get:()=>a[i],enumerable:!(h=j(a,i))||h.enumerable});return r};var m=(r,a,o)=>(o=r!=null?U(F(r)):{},R(a||!r||!r.__esModule?E(o,"default",{value:r,enumerable:!0}):o,r)),q=r=>R(E({},"__esModule",{value:!0}),r);var K={};X(K,{default:()=>B});module.exports=q(K);var I=m(require("../utils/define-visitors")),k=m(require("../utils/resolve-context")),L=m(require("../utils/get-template-element-body")),V=m(require("../utils/get-template-element-suffix")),_=m(require("../utils/get-template-element-prefix")),$=m(require("../utils/extract-value-from-node")),M=m(require("../utils/extract-range-from-node")),O=m(require("../utils/extract-classnames-from-value")),P=m(require("../utils/find-loc")),w=m(require("../utils/reorder-valid-classes-action")),B={meta:{docs:{description:"Enforce a consistent and logical order of classes",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#consistent-class-order"},messages:{invalidClassOrder:"No consistent class order followed."},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(r){const{options:a,settings:o}=(0,k.default)(r),h=r.sourceCode,i=(l,t=null)=>{let s=null,f=null,u=null,x="",N="",g=[];if(t===null){s=(0,$.default)(l);const e=(0,M.default)(l);l.type==="TextAttribute"?(f=e[0],u=e[1]):(f=e[0]+1,u=e[1]-1)}else switch(t.type){case"Identifier":return;case"TemplateLiteral":t.expressions.forEach(n=>{i(l,n)}),s=h.getText(t),s=s.substring(1,s.length-1),g=s.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g)??[];for(let n=0;n<g.length;n++)s=s.replace(g[n],`EXPRESSION_STRING_NUM_${n}`);f=t.range[0]+1,u=t.range[1]-1;break;case"ConditionalExpression":i(l,t.consequent),i(l,t.alternate);return;case"LogicalExpression":i(l,t.right);return;case"ArrayExpression":t.elements.forEach(n=>{i(l,n)});return;case"ObjectExpression":const e=l.callee&&l.callee.name==="classnames",y=l.key&&l.key.type==="VDirectiveKey";t.properties.forEach(n=>{const b=e||y?n.key:n.value;i(l,b)});return;case"Property":i(l,t.key);break;case"Literal":s=t.value,f=t.range[0]+1,u=t.range[1]-1;break;case"SvelteLiteral":if(s=t.value,s==="")return;f=t.range[0],u=t.range[1];break;case"TemplateElement":if(s=t.value.raw,s==="")return;f=t.range[0],u=t.range[1];const p=r.sourceCode.getText(t);x=(0,_.default)(p,s),N=(0,V.default)(p,s),s=(0,L.default)(p,x,N);break}const{classNames:S,whitespaces:C,headSpace:T,tailSpace:v}=(0,O.default)(s);if(S.length<=1)return;let d=(0,w.default)(S,o.config);d=S.filter(e=>!d.includes(e)).concat(d).filter(e=>e.trim()!=="");let c="";for(let e=0;e<d.length;e++){const y=C[e]??"",p=d[e];c+=T?`${y}${p}`:`${p}${y}`,p&&(!v&&e===d.length-1&&(c=c.replace(/\s+$/,"")),T&&v&&e===d.length-1&&(c+=C[C.length-1]??""))}for(let e=0;e<g.length;e++)s=s.replace(`EXPRESSION_STRING_NUM_${e}`,g[e]),c=c.replace(`EXPRESSION_STRING_NUM_${e}`,g[e]);if(s!==c){c=x+c+N;const e=h.lines,y=l.loc.start.line,p=l.loc.end.line,n={loc:(0,P.default)(s,e,y,p),messageId:"invalidClassOrder",fix:function(b){return b.replaceTextRange([f,u],c)}};r.report(n)}};return(0,I.default)({context:r,settings:o},i)}};
1
+ var U=Object.create;var E=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var X=(r,a)=>{for(var o in a)E(r,o,{get:a[o],enumerable:!0})},R=(r,a,o,h)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of A(a))!G.call(r,i)&&i!==o&&E(r,i,{get:()=>a[i],enumerable:!(h=j(a,i))||h.enumerable});return r};var m=(r,a,o)=>(o=r!=null?U(F(r)):{},R(a||!r||!r.__esModule?E(o,"default",{value:r,enumerable:!0}):o,r)),q=r=>R(E({},"__esModule",{value:!0}),r);var K={};X(K,{default:()=>B});module.exports=q(K);var I=m(require("../utils/define-visitors")),k=m(require("../utils/resolve-context")),L=m(require("../utils/get-template-element-body")),V=m(require("../utils/get-template-element-suffix")),_=m(require("../utils/get-template-element-prefix")),$=m(require("../utils/extract-value-from-node")),M=m(require("../utils/extract-range-from-node")),O=m(require("../utils/extract-classnames-from-value")),P=m(require("../utils/find-loc")),w=m(require("../utils/reorder-valid-classes-action")),B={meta:{docs:{description:"Enforce a consistent and logical order of classes",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#consistent-class-order"},messages:{invalidClassOrder:"No consistent class order followed."},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(r){const{options:a,settings:o}=(0,k.default)(r),h=r.sourceCode,i=(l,t=null)=>{let s=null,f=null,u=null,x="",N="",g=[];if(t===null){s=(0,$.default)(l);const e=(0,M.default)(l);l.type==="TextAttribute"?(f=e[0],u=e[1]):(f=e[0]+1,u=e[1]-1)}else switch(t.type){case"Identifier":return;case"TemplateLiteral":t.expressions.forEach(n=>{i(l,n)}),s=h.getText(t),s=s.substring(1,s.length-1),g=s.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g)??[];for(let n=0;n<g.length;n++)s=s.replace(g[n],`EXPRESSION_STRING_NUM_${n}`);f=t.range[0]+1,u=t.range[1]-1;break;case"ConditionalExpression":i(l,t.consequent),i(l,t.alternate);return;case"LogicalExpression":i(l,t.right);return;case"ArrayExpression":t.elements.forEach(n=>{i(l,n)});return;case"ObjectExpression":const e=l.callee&&l.callee.name==="classnames",y=l.key&&l.key.type==="VDirectiveKey";t.properties.forEach(n=>{const T=e||y?n.key:n.value;i(l,T)});return;case"Property":i(l,t.key);break;case"Literal":s=t.value,f=t.range[0]+1,u=t.range[1]-1;break;case"SvelteLiteral":if(s=t.value,s==="")return;f=t.range[0],u=t.range[1];break;case"TemplateElement":if(s=t.value.raw,s==="")return;f=t.range[0],u=t.range[1];const p=r.sourceCode.getText(t);x=(0,_.default)(p,s),N=(0,V.default)(p,s),s=(0,L.default)(p,x,N);break}const{classNames:S,whitespaces:C,headSpace:b,tailSpace:v}=(0,O.default)(s);if(S.length<=1)return;let d=(0,w.default)(S,o.config);d=S.filter(e=>!d.includes(e)).concat(d).filter(e=>e.trim()!=="");let c="";for(let e=0;e<d.length;e++){const y=C[e]??"",p=d[e];c+=b?`${y}${p}`:`${p}${y}`,p&&(!v&&e===d.length-1&&(c=c.replace(/\s+$/,"")),b&&v&&e===d.length-1&&(c+=C[C.length-1]??""))}for(let e=0;e<g.length;e++)s=s.replace(`EXPRESSION_STRING_NUM_${e}`,g[e]),c=c.replace(`EXPRESSION_STRING_NUM_${e}`,g[e]);if(s!==c){c=x+c+N;const e=h.lines,y=l.loc.start.line,p=l.loc.end.line,n={loc:(0,P.default)(s,e,y,p),messageId:"invalidClassOrder",fix:function(T){return T.replaceTextRange([f,u],c)}};r.report(n)}};return(0,I.default)({context:r,settings:o},i)}};
@@ -1 +1 @@
1
- import b from"../utils/define-visitors.mjs";import T from"../utils/resolve-context.mjs";import v from"../utils/get-template-element-body.mjs";import R from"../utils/get-template-element-suffix.mjs";import I from"../utils/get-template-element-prefix.mjs";import k from"../utils/extract-value-from-node.mjs";import L from"../utils/extract-range-from-node.mjs";import V from"../utils/extract-classnames-from-value.mjs";import _ from"../utils/find-loc.mjs";import $ from"../utils/reorder-valid-classes-action.mjs";var D={meta:{docs:{description:"Enforce a consistent and logical order of classes",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#consistent-class-order"},messages:{invalidClassOrder:"No consistent class order followed."},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(u){const{options:M,settings:x}=T(u),N=u.sourceCode,a=(r,t=null)=>{let s=null,o=null,c=null,d="",g="",p=[];if(t===null){s=k(r);const e=L(r);r.type==="TextAttribute"?(o=e[0],c=e[1]):(o=e[0]+1,c=e[1]-1)}else switch(t.type){case"Identifier":return;case"TemplateLiteral":t.expressions.forEach(l=>{a(r,l)}),s=N.getText(t),s=s.substring(1,s.length-1),p=s.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g)??[];for(let l=0;l<p.length;l++)s=s.replace(p[l],`EXPRESSION_STRING_NUM_${l}`);o=t.range[0]+1,c=t.range[1]-1;break;case"ConditionalExpression":a(r,t.consequent),a(r,t.alternate);return;case"LogicalExpression":a(r,t.right);return;case"ArrayExpression":t.elements.forEach(l=>{a(r,l)});return;case"ObjectExpression":const e=r.callee&&r.callee.name==="classnames",f=r.key&&r.key.type==="VDirectiveKey";t.properties.forEach(l=>{const E=e||f?l.key:l.value;a(r,E)});return;case"Property":a(r,t.key);break;case"Literal":s=t.value,o=t.range[0]+1,c=t.range[1]-1;break;case"SvelteLiteral":if(s=t.value,s==="")return;o=t.range[0],c=t.range[1];break;case"TemplateElement":if(s=t.value.raw,s==="")return;o=t.range[0],c=t.range[1];const n=u.sourceCode.getText(t);d=I(n,s),g=R(n,s),s=v(n,d,g);break}const{classNames:y,whitespaces:h,headSpace:S,tailSpace:C}=V(s);if(y.length<=1)return;let m=$(y,x.config);m=y.filter(e=>!m.includes(e)).concat(m).filter(e=>e.trim()!=="");let i="";for(let e=0;e<m.length;e++){const f=h[e]??"",n=m[e];i+=S?`${f}${n}`:`${n}${f}`,n&&(!C&&e===m.length-1&&(i=i.replace(/\s+$/,"")),S&&C&&e===m.length-1&&(i+=h[h.length-1]??""))}for(let e=0;e<p.length;e++)s=s.replace(`EXPRESSION_STRING_NUM_${e}`,p[e]),i=i.replace(`EXPRESSION_STRING_NUM_${e}`,p[e]);if(s!==i){i=d+i+g;const e=N.lines,f=r.loc.start.line,n=r.loc.end.line,l={loc:_(s,e,f,n),messageId:"invalidClassOrder",fix:function(E){return E.replaceTextRange([o,c],i)}};u.report(l)}};return b({context:u,settings:x},a)}};export{D as default};
1
+ import T from"../utils/define-visitors.mjs";import b from"../utils/resolve-context.mjs";import v from"../utils/get-template-element-body.mjs";import R from"../utils/get-template-element-suffix.mjs";import I from"../utils/get-template-element-prefix.mjs";import k from"../utils/extract-value-from-node.mjs";import L from"../utils/extract-range-from-node.mjs";import V from"../utils/extract-classnames-from-value.mjs";import _ from"../utils/find-loc.mjs";import $ from"../utils/reorder-valid-classes-action.mjs";var D={meta:{docs:{description:"Enforce a consistent and logical order of classes",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#consistent-class-order"},messages:{invalidClassOrder:"No consistent class order followed."},fixable:"code",schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(u){const{options:M,settings:x}=b(u),N=u.sourceCode,a=(r,t=null)=>{let s=null,o=null,c=null,d="",g="",p=[];if(t===null){s=k(r);const e=L(r);r.type==="TextAttribute"?(o=e[0],c=e[1]):(o=e[0]+1,c=e[1]-1)}else switch(t.type){case"Identifier":return;case"TemplateLiteral":t.expressions.forEach(l=>{a(r,l)}),s=N.getText(t),s=s.substring(1,s.length-1),p=s.match(/\$\{(?:(?<!\\\\)(['"`]).*?(?<!\\\\)\1|[^}])*?\}/g)??[];for(let l=0;l<p.length;l++)s=s.replace(p[l],`EXPRESSION_STRING_NUM_${l}`);o=t.range[0]+1,c=t.range[1]-1;break;case"ConditionalExpression":a(r,t.consequent),a(r,t.alternate);return;case"LogicalExpression":a(r,t.right);return;case"ArrayExpression":t.elements.forEach(l=>{a(r,l)});return;case"ObjectExpression":const e=r.callee&&r.callee.name==="classnames",f=r.key&&r.key.type==="VDirectiveKey";t.properties.forEach(l=>{const E=e||f?l.key:l.value;a(r,E)});return;case"Property":a(r,t.key);break;case"Literal":s=t.value,o=t.range[0]+1,c=t.range[1]-1;break;case"SvelteLiteral":if(s=t.value,s==="")return;o=t.range[0],c=t.range[1];break;case"TemplateElement":if(s=t.value.raw,s==="")return;o=t.range[0],c=t.range[1];const n=u.sourceCode.getText(t);d=I(n,s),g=R(n,s),s=v(n,d,g);break}const{classNames:y,whitespaces:h,headSpace:S,tailSpace:C}=V(s);if(y.length<=1)return;let m=$(y,x.config);m=y.filter(e=>!m.includes(e)).concat(m).filter(e=>e.trim()!=="");let i="";for(let e=0;e<m.length;e++){const f=h[e]??"",n=m[e];i+=S?`${f}${n}`:`${n}${f}`,n&&(!C&&e===m.length-1&&(i=i.replace(/\s+$/,"")),S&&C&&e===m.length-1&&(i+=h[h.length-1]??""))}for(let e=0;e<p.length;e++)s=s.replace(`EXPRESSION_STRING_NUM_${e}`,p[e]),i=i.replace(`EXPRESSION_STRING_NUM_${e}`,p[e]);if(s!==i){i=d+i+g;const e=N.lines,f=r.loc.start.line,n=r.loc.end.line,l={loc:_(s,e,f,n),messageId:"invalidClassOrder",fix:function(E){return E.replaceTextRange([o,c],i)}};u.report(l)}};return T({context:u,settings:x},a)}};export{D as default};
@@ -1 +1 @@
1
- var b=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var S=(e,s)=>{for(var o in s)i(e,o,{get:s[o],enumerable:!0})},p=(e,s,o,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of M(s))!R.call(e,t)&&t!==o&&i(e,t,{get:()=>s[t],enumerable:!(a=I(s,t))||a.enumerable});return e};var n=(e,s,o)=>(o=e!=null?b(N(e)):{},p(s||!e||!e.__esModule?i(o,"default",{value:e,enumerable:!0}):o,e)),U=e=>p(i({},"__esModule",{value:!0}),e);var K={};S(K,{default:()=>j});module.exports=U(K);var u=n(require("../utils/define-visitors")),y=n(require("../utils/resolve-context")),l=n(require("../utils/find-loc")),C=require("../utils/parse-node-recursive"),w=n(require("../utils/validate-action")),j={meta:{docs:{description:"Detect syntax errors early when writing classes",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#syntax-error-checks"},messages:{invalidClass:"{{message}}",disallowUnknownClass:"{{message}}"},fixable:null,schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(e){const{options:s,settings:o}=(0,y.default)(e);return(0,u.default)({context:e,settings:o},(t,h=null)=>{(0,C.parseNodeRecursive)(t,h,(v,c)=>{const d=e.sourceCode.lines,m=c.loc.start.line,g=c.loc.end.line;for(const r of v){const{isMasterCSS:k,errors:f}=(0,w.default)(r,o.config);if(f.length>0)for(const L of f)k?e.report({loc:(0,l.default)(r,d,m,g),messageId:"invalidClass",data:{message:L.message+"."}}):s.disallowUnknownClass&&e.report({loc:(0,l.default)(r,d,m,g),messageId:"disallowUnknownClass",data:{message:`"${r}" is not a valid or known class.`}})}},!1,!1,o.ignoredKeys,e)})}};
1
+ var I=Object.create;var i=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var b=(e,s)=>{for(var o in s)i(e,o,{get:s[o],enumerable:!0})},p=(e,s,o,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of N(s))!S.call(e,r)&&r!==o&&i(e,r,{get:()=>s[r],enumerable:!(a=M(s,r))||a.enumerable});return e};var n=(e,s,o)=>(o=e!=null?I(R(e)):{},p(s||!e||!e.__esModule?i(o,"default",{value:e,enumerable:!0}):o,e)),U=e=>p(i({},"__esModule",{value:!0}),e);var K={};b(K,{default:()=>j});module.exports=U(K);var u=n(require("../utils/define-visitors")),y=n(require("../utils/resolve-context")),l=n(require("../utils/find-loc")),C=require("../utils/parse-node-recursive"),w=n(require("../utils/validate-action")),j={meta:{docs:{description:"Detect syntax errors early when writing classes",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#syntax-error-checks"},messages:{invalidClass:"{{message}}",disallowUnknownClass:"{{message}}"},fixable:null,schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(e){const{options:s,settings:o}=(0,y.default)(e);return(0,u.default)({context:e,settings:o},(r,h=null)=>{(0,C.parseNodeRecursive)(r,h,(v,c)=>{const d=e.sourceCode.lines,m=c.loc.start.line,g=c.loc.end.line;for(const t of v){const{isMasterCSS:k,errors:f}=(0,w.default)(t,o.config);if(f.length>0)for(const L of f)k?e.report({loc:(0,l.default)(t,d,m,g),messageId:"invalidClass",data:{message:L.message+"."}}):s.disallowUnknownClass&&e.report({loc:(0,l.default)(t,d,m,g),messageId:"disallowUnknownClass",data:{message:`"${t}" is not a valid or known class.`}})}},!1,!1,o.ignoredKeys,e)})}};
@@ -1 +1 @@
1
- import u from"../utils/define-visitors.mjs";import y from"../utils/resolve-context.mjs";import l from"../utils/find-loc.mjs";import{parseNodeRecursive as C}from"../utils/parse-node-recursive.mjs";import w from"../utils/validate-action.mjs";var S={meta:{docs:{description:"Detect syntax errors early when writing classes",category:"Stylistic Issues",recommended:!1,url:"https://beta.css.master.co/docs/code-linting#syntax-error-checks"},messages:{invalidClass:"{{message}}",disallowUnknownClass:"{{message}}"},fixable:null,schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(e){const{options:c,settings:o}=y(e);return u({context:e,settings:o},(d,m=null)=>{C(d,m,(g,t)=>{const r=e.sourceCode.lines,i=t.loc.start.line,n=t.loc.end.line;for(const s of g){const{isMasterCSS:f,errors:a}=w(s,o.config);if(a.length>0)for(const p of a)f?e.report({loc:l(s,r,i,n),messageId:"invalidClass",data:{message:p.message+"."}}):c.disallowUnknownClass&&e.report({loc:l(s,r,i,n),messageId:"disallowUnknownClass",data:{message:`"${s}" is not a valid or known class.`}})}},!1,!1,o.ignoredKeys,e)})}};export{S as default};
1
+ import u from"../utils/define-visitors.mjs";import y from"../utils/resolve-context.mjs";import l from"../utils/find-loc.mjs";import{parseNodeRecursive as C}from"../utils/parse-node-recursive.mjs";import w from"../utils/validate-action.mjs";var b={meta:{docs:{description:"Detect syntax errors early when writing classes",category:"Stylistic Issues",recommended:!1,url:"https://rc.css.master.co/docs/code-linting#syntax-error-checks"},messages:{invalidClass:"{{message}}",disallowUnknownClass:"{{message}}"},fixable:null,schema:[{type:"object",properties:{calleeMatching:{type:"string"},classMatching:{type:"string"},ignoredKeys:{type:"array",items:{type:"string",minLength:0},uniqueItems:!0},config:{type:["string","object"]}}}]},create:function(e){const{options:c,settings:o}=y(e);return u({context:e,settings:o},(d,m=null)=>{C(d,m,(g,r)=>{const t=e.sourceCode.lines,i=r.loc.start.line,n=r.loc.end.line;for(const s of g){const{isMasterCSS:f,errors:a}=w(s,o.config);if(a.length>0)for(const p of a)f?e.report({loc:l(s,t,i,n),messageId:"invalidClass",data:{message:p.message+"."}}):c.disallowUnknownClass&&e.report({loc:l(s,t,i,n),messageId:"disallowUnknownClass",data:{message:`"${s}" is not a valid or known class.`}})}},!1,!1,o.ignoredKeys,e)})}};export{b as default};
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@master/eslint-plugin-css","scripts":{"build":"techor pack \"src/**/*.ts\" --declare","dev":"pnpm run 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.js","types":"./dist/index.d.ts","exports":"./dist/index.js","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","files":["dist"],"publishConfig":{"access":"public"},"dependencies":{"@master/css":"^2.0.0-beta.215","@master/css-validator":"^2.0.0-beta.215","explore-config":"^2.5.20","synckit":"^0.8.5"},"devDependencies":{"@angular-eslint/template-parser":"^16.2.0","@swc-node/register":"^1.6.8","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.10.0","@typescript-eslint/utils":"^6.10.0","eslint":"^8.52.0","eslint-plugin-markdown":"^3.0.1","eslint-plugin-mdx":"^2.2.0","svelte-eslint-parser":"^0.33.1","ts-node":"^10.9.1","vue-eslint-parser":"^9.3.1"},"version":"2.0.0-beta.215"}
1
+ {"name":"@master/eslint-plugin-css","scripts":{"build":"techor pack \"src/**/*.ts\" --declare","dev":"pnpm run 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.js","types":"./dist/index.d.ts","exports":"./dist/index.js","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","files":["dist"],"publishConfig":{"access":"public"},"dependencies":{"@master/css":"^2.0.0-rc.10","@master/css-validator":"^2.0.0-rc.10","explore-config":"^2.5.24","synckit":"^0.8.5"},"devDependencies":{"@angular-eslint/template-parser":"^16.2.0","@swc-node/register":"^1.6.8","@types/node":"^20.6.0","@typescript-eslint/parser":"^6.10.0","@typescript-eslint/utils":"^6.10.0","eslint":"^8.52.0","eslint-plugin-markdown":"^3.0.1","eslint-plugin-mdx":"^2.2.0","svelte-eslint-parser":"^0.33.1","ts-node":"^10.9.1","vue-eslint-parser":"^9.3.1"},"version":"2.0.0-rc.10"}