eslint-plugin-perfectionist 1.5.0 → 2.0.0

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 +1 @@
1
- "use strict";const e=require("../index.js");require("@typescript-eslint/types");require("@typescript-eslint/utils");require("natural-compare-lite");require("minimatch");require("is-core-module");require("json5");require("path");require("fs");const r={rules:e.configs["recommended-alphabetical"].rules,plugins:{perfectionist:e}};module.exports=r;
1
+ "use strict";const e=require("../index.js");require("path");require("@typescript-eslint/utils");require("minimatch");require("natural-compare-lite");require("module");const r={rules:e.configs["recommended-alphabetical"].rules,plugins:{perfectionist:e}};module.exports=r;
@@ -1,18 +1,15 @@
1
- import o from "../index.mjs";
2
- import "@typescript-eslint/types";
1
+ import e from "../index.mjs";
2
+ import "path";
3
3
  import "@typescript-eslint/utils";
4
- import "natural-compare-lite";
5
4
  import "minimatch";
6
- import "is-core-module";
7
- import "json5";
8
- import "path";
9
- import "fs";
10
- const s = {
11
- rules: o.configs["recommended-alphabetical"].rules,
5
+ import "natural-compare-lite";
6
+ import "module";
7
+ const l = {
8
+ rules: e.configs["recommended-alphabetical"].rules,
12
9
  plugins: {
13
- perfectionist: o
10
+ perfectionist: e
14
11
  }
15
12
  };
16
13
  export {
17
- s as default
14
+ l as default
18
15
  };
@@ -1 +1 @@
1
- "use strict";const e=require("../index.js");require("@typescript-eslint/types");require("@typescript-eslint/utils");require("natural-compare-lite");require("minimatch");require("is-core-module");require("json5");require("path");require("fs");const r={rules:e.configs["recommended-line-length"].rules,plugins:{perfectionist:e}};module.exports=r;
1
+ "use strict";const e=require("../index.js");require("path");require("@typescript-eslint/utils");require("minimatch");require("natural-compare-lite");require("module");const r={rules:e.configs["recommended-line-length"].rules,plugins:{perfectionist:e}};module.exports=r;
@@ -1,18 +1,15 @@
1
- import o from "../index.mjs";
2
- import "@typescript-eslint/types";
1
+ import e from "../index.mjs";
2
+ import "path";
3
3
  import "@typescript-eslint/utils";
4
- import "natural-compare-lite";
5
4
  import "minimatch";
6
- import "is-core-module";
7
- import "json5";
8
- import "path";
9
- import "fs";
10
- const l = {
11
- rules: o.configs["recommended-line-length"].rules,
5
+ import "natural-compare-lite";
6
+ import "module";
7
+ const p = {
8
+ rules: e.configs["recommended-line-length"].rules,
12
9
  plugins: {
13
- perfectionist: o
10
+ perfectionist: e
14
11
  }
15
12
  };
16
13
  export {
17
- l as default
14
+ p as default
18
15
  };
@@ -1 +1 @@
1
- "use strict";const e=require("../index.js");require("@typescript-eslint/types");require("@typescript-eslint/utils");require("natural-compare-lite");require("minimatch");require("is-core-module");require("json5");require("path");require("fs");const r={rules:e.configs["recommended-natural"].rules,plugins:{perfectionist:e}};module.exports=r;
1
+ "use strict";const e=require("../index.js");require("path");require("@typescript-eslint/utils");require("minimatch");require("natural-compare-lite");require("module");const r={rules:e.configs["recommended-natural"].rules,plugins:{perfectionist:e}};module.exports=r;
@@ -1,18 +1,15 @@
1
1
  import r from "../index.mjs";
2
- import "@typescript-eslint/types";
2
+ import "path";
3
3
  import "@typescript-eslint/utils";
4
- import "natural-compare-lite";
5
4
  import "minimatch";
6
- import "is-core-module";
7
- import "json5";
8
- import "path";
9
- import "fs";
10
- const d = {
5
+ import "natural-compare-lite";
6
+ import "module";
7
+ const n = {
11
8
  rules: r.configs["recommended-natural"].rules,
12
9
  plugins: {
13
10
  perfectionist: r
14
11
  }
15
12
  };
16
13
  export {
17
- d as default
14
+ n as default
18
15
  };
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var se=Object.defineProperty;var ne=(a,o,r)=>o in a?se(a,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[o]=r;var F=(a,o,r)=>(ne(a,typeof o!="symbol"?o+"":o,r),r);const u=require("@typescript-eslint/types"),C=require("@typescript-eslint/utils"),oe=require("natural-compare-lite"),k=require("minimatch"),ee=require("is-core-module"),ie=require("json5"),le=require("path"),pe=require("fs");let P=C.ESLintUtils.RuleCreator(a=>`https://eslint-plugin-perfectionist.azat.io/rules/${a}`),O=a=>a.replaceAll(/\s\s+/g," ").trim(),w=a=>{let[o,r]=a;return r-o};var l=(a=>(a.alphabetical="alphabetical",a["line-length"]="line-length",a.natural="natural",a))(l||{}),d=(a=>(a.desc="desc",a.asc="asc",a))(d||{});let N=(a,o,r)=>{var e,n;if((e=o.dependencies)!=null&&e.includes(a.name))return!1;if((n=a.dependencies)!=null&&n.includes(o.name))return!0;let s=r.order==="asc"?1:-1,p,i=t=>r["ignore-case"]?t.toLowerCase():t;return r.type===l.alphabetical?p=(t,c)=>i(t.name).localeCompare(i(c.name)):r.type===l.natural?p=(t,c)=>oe(i(t.name),i(c.name)):p=(t,c)=>t.size-c.size,s*p(a,o)>0},A=(a,o)=>[...a].sort((r,s)=>Number(N(r,s,o))||-1),ce=(a,o)=>{let r=o.getTokenAfter(a,{filter:({value:s,type:p})=>!(p===u.AST_TOKEN_TYPES.Punctuator&&[",",";"].includes(s)),includeComments:!0});return((r==null?void 0:r.type)===u.AST_TOKEN_TYPES.Block||(r==null?void 0:r.type)===u.AST_TOKEN_TYPES.Line)&&a.loc.end.line===r.loc.end.line?r:null},te=(a,o)=>Array.isArray(a)&&a.some(r=>k.minimatch(o.trim(),r))||typeof a=="string"&&k.minimatch(o.trim(),a)||a===!0,$=(a,o)=>{let[r,s]=o.getTokensBefore(a,{filter:({value:p,type:i})=>!(i===u.AST_TOKEN_TYPES.Punctuator&&[",",";"].includes(p)),includeComments:!0,count:2});return((s==null?void 0:s.type)===u.AST_TOKEN_TYPES.Block||(s==null?void 0:s.type)===u.AST_TOKEN_TYPES.Line)&&a.loc.start.line-s.loc.end.line<=1&&(r==null?void 0:r.loc.end.line)!==s.loc.start.line?s:null},Y=(a,o,r)=>{var n;let s=a.range.at(0),p=a.range.at(1),i=o.text.slice(s,p);if(C.ASTUtils.isParenthesized(a,o)){let t=o.getTokenBefore(a,C.ASTUtils.isOpeningParenToken),c=o.getTokenAfter(a,C.ASTUtils.isClosingParenToken);s=t.range.at(0),p=c.range.at(1)}let e=$(a,o);if(i.endsWith(";")||i.endsWith(",")){let t=o.getTokensAfter(a,{includeComments:!0,count:2});a.loc.start.line===((n=t.at(1))==null?void 0:n.loc.start.line)&&(p-=1)}return e&&!te((r==null?void 0:r.partitionComment)??!1,e.value)&&(s=e.range.at(0)),[s,p]},j=(a,o,r,s,p)=>{let i=[];for(let e=0,n=o.length;e<n;e++){let{node:t}=o.at(e);i.push(a.replaceTextRange(Y(t,s,p),s.text.slice(...Y(r.at(e).node,s,p))));let c=ce(r.at(e).node,s);if(c){let y=[s.getTokenBefore(c).range.at(1),c.range.at(1)];i.push(a.replaceTextRange(y,""));let h=s.getTokenAfter(t);i.push(a.insertTextAfter((h==null?void 0:h.loc.end.line)===t.loc.end.line?h:t,s.text.slice(...y)))}}return i},D=(a={},o)=>Object.assign(o,a),I=(a,o)=>{if(a.length>1)for(let r=1;r<a.length;r++){let s=a.at(r-1),p=a.at(r);s&&p&&o(s,p,r-1)}};const B="sort-array-includes",de=P({name:B,meta:{type:"suggestion",docs:{description:"enforce sorted arrays before include method",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1},"spread-last":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedArrayIncludesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({MemberExpression:o=>{if((o.object.type===u.AST_NODE_TYPES.ArrayExpression||o.object.type===u.AST_NODE_TYPES.NewExpression)&&o.property.type===u.AST_NODE_TYPES.Identifier&&o.property.name==="includes"){let r=o.object.type===u.AST_NODE_TYPES.ArrayExpression?o.object.elements:o.object.arguments;if(r.length>1){let s=D(a.options.at(0),{type:l.alphabetical,order:d.asc,"ignore-case":!1,"spread-last":!1}),p=a.getSourceCode(),i=r.reduce((e,n)=>(n!==null&&e.at(0).push({name:n.type===u.AST_NODE_TYPES.Literal?n.raw:p.text.slice(...n.range),size:w(n.range),type:n.type,node:n}),e),[[],[]]).flat();I(i,(e,n)=>{let t;s["spread-last"]&&e.node.type===u.AST_NODE_TYPES.Literal&&n.node.type===u.AST_NODE_TYPES.SpreadElement?t=!1:s["spread-last"]&&e.node.type===u.AST_NODE_TYPES.SpreadElement&&n.node.type===u.AST_NODE_TYPES.Literal?t=!0:t=N(e,n,s),t&&a.report({messageId:"unexpectedArrayIncludesOrder",data:{left:O(e.name),right:O(n.name)},node:n.node,fix:c=>{let g=A(i,s);if(s["spread-last"])for(let y=0,h=g.length;y<h;y++)g.at(y).node.type===u.AST_NODE_TYPES.SpreadElement&&g.push(g.splice(y,1).at(0));return j(c,i,g,p)}})})}}}})}),U="sort-named-exports",fe=P({name:U,meta:{type:"suggestion",docs:{description:"enforce sorted named exports",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedNamedExportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({ExportNamedDeclaration:o=>{if(o.specifiers.length>1){let r=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc}),s=a.getSourceCode(),p=o.specifiers.map(i=>({size:w(i.range),name:i.local.name,node:i}));I(p,(i,e)=>{N(i,e,r)&&a.report({messageId:"unexpectedNamedExportsOrder",data:{left:i.name,right:e.name},node:e.node,fix:n=>j(n,p,A(p,r),s)})})}}})}),z="sort-named-imports",ue=P({name:z,meta:{type:"suggestion",docs:{description:"enforce sorted named imports",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedNamedImportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({ImportDeclaration:o=>{let r=o.specifiers.filter(({type:s})=>s===u.AST_NODE_TYPES.ImportSpecifier);if(r.length>1){let s=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc}),p=a.getSourceCode(),i=r.map(e=>({size:w(e.range),name:e.local.name,node:e}));I(i,(e,n)=>{N(e,n,s)&&a.report({messageId:"unexpectedNamedImportsOrder",data:{left:e.name,right:n.name},node:n.node,fix:t=>j(t,i,A(i,s),p)})})}}})}),q="sort-object-types",me=P({name:q,meta:{type:"suggestion",docs:{description:"enforce sorted object types",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedObjectTypesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({TSTypeLiteral:o=>{if(o.members.length>1){let r=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc}),s=a.getSourceCode(),p=o.members.map(i=>{var y,h;let e,n=s.text.slice(i.range.at(0),i.range.at(1)),t=x=>x.replace(/(,|;)$/,"");if(i.type===u.AST_NODE_TYPES.TSPropertySignature)i.key.type===u.AST_NODE_TYPES.Identifier?{name:e}=i.key:i.key.type===u.AST_NODE_TYPES.Literal?e=`${i.key.value}`:e=s.text.slice(i.range.at(0),(y=i.typeAnnotation)==null?void 0:y.range.at(0));else if(i.type===u.AST_NODE_TYPES.TSIndexSignature){let x=((h=i.typeAnnotation)==null?void 0:h.range.at(0))??i.range.at(1);e=t(s.text.slice(i.range.at(0),x))}else e=t(s.text.slice(i.range.at(0),i.range.at(1)));let g=n.endsWith(";")||n.endsWith(",")?1:0;return{size:w(i.range)-g,node:i,name:e}});I(p,(i,e)=>{N(i,e,r)&&a.report({messageId:"unexpectedObjectTypesOrder",data:{left:O(i.name),right:O(e.name)},node:e.node,fix:n=>j(n,p,A(p,r),s)})})}}})}),J="sort-map-elements",ge=P({name:J,meta:{type:"suggestion",docs:{description:"enforce sorted Map elements",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedMapElementsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({NewExpression:o=>{if(o.callee.type===u.AST_NODE_TYPES.Identifier&&o.callee.name==="Map"&&o.arguments.length&&o.arguments[0].type===u.AST_NODE_TYPES.ArrayExpression){let[{elements:r}]=o.arguments;if(r.length>1){let s=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc}),p=a.getSourceCode(),i=r.reduce((e,n)=>(n===null||n.type===u.AST_NODE_TYPES.SpreadElement?e.push([]):e.at(-1).push(n),e),[[]]);for(let e of i){let n=e.map(t=>{let c;if(t.type===u.AST_NODE_TYPES.ArrayExpression){let[g]=t.elements;g?g.type===u.AST_NODE_TYPES.Literal?c=g.raw:c=p.text.slice(...g.range):c=`${g}`}else c=p.text.slice(...t.range);return{size:w(t.range),node:t,name:c}});I(n,(t,c)=>{N(t,c,s)&&a.report({messageId:"unexpectedMapElementsOrder",data:{left:O(t.name),right:O(c.name)},node:c.node,fix:g=>j(g,n,A(n,s),p)})})}}}}})}),G="sort-union-types",ye=P({name:G,meta:{type:"suggestion",docs:{description:"enforce sorted union types",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedUnionTypesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({TSUnionType:o=>{let r=a.getSourceCode(),s=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc}),p=o.types.map(i=>({name:r.text.slice(...i.range),size:w(i.range),node:i}));I(p,(i,e)=>{N(i,e,s)&&a.report({messageId:"unexpectedUnionTypesOrder",data:{left:O(i.name),right:O(e.name)},node:e.node,fix:n=>j(n,p,A(p,s),r)})})}})}),W="sort-interfaces",Ee=P({name:W,meta:{type:"suggestion",docs:{description:"enforce sorted interface properties",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1},"ignore-pattern":{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedInterfacePropertiesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({TSInterfaceDeclaration:o=>{if(o.body.body.length>1){let r=D(a.options.at(0),{type:l.alphabetical,"ignore-case":!1,order:d.asc,"ignore-pattern":[]});if(!r["ignore-pattern"].some(s=>k.minimatch(o.id.name,s))){let s=a.getSourceCode(),p=o.body.body.reduce((i,e)=>{var t,c,g;if(e.type===u.AST_NODE_TYPES.TSCallSignatureDeclaration)return i.push([]),i;let n;if(e.type===u.AST_NODE_TYPES.TSPropertySignature)if(e.key.type===u.AST_NODE_TYPES.Identifier)({name:n}=e.key);else if(e.key.type===u.AST_NODE_TYPES.Literal)n=`${e.key.value}`;else{let y=((t=e.typeAnnotation)==null?void 0:t.range.at(0))??e.range.at(1)-(e.optional?1:0);n=s.text.slice(e.range.at(0),y)}else if(e.type===u.AST_NODE_TYPES.TSIndexSignature){let y=((c=e.typeAnnotation)==null?void 0:c.range.at(0))??e.range.at(1);n=s.text.slice(e.range.at(0),y)}else{let y=((g=e.returnType)==null?void 0:g.range.at(0))??e.range.at(1);n=s.text.slice(e.range.at(0),y)}return i.at(-1).push({size:w(e.range),node:e,name:n}),i},[[]]);for(let i of p)I(i,(e,n)=>{N(e,n,r)&&a.report({messageId:"unexpectedInterfacePropertiesOrder",data:{left:O(e.name),right:O(n.name)},node:n.node,fix:t=>j(t,i,A(i,r),s)})})}}}})});let ae=(a,o)=>a.reduce((r,s)=>{let p=o(s);return p in r||(r[p]=[]),r[p].push(s),r},{});const X="sort-jsx-props",Se=P({name:X,meta:{type:"suggestion",docs:{description:"enforce sorted JSX props",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"always-on-top":{type:"array",default:[]},"ignore-case":{type:"boolean",default:!1},shorthand:{enum:["first","last","ignore"]},callback:{enum:["first","last","ignore"]},multiline:{enum:["first","last","ignore"]}},additionalProperties:!1}],messages:{unexpectedJSXPropsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({JSXElement:o=>{if(o.openingElement.attributes.length>1){let r=D(a.options.at(0),{type:l.alphabetical,shorthand:"ignore",multiline:"ignore",callback:"ignore","always-on-top":[],"ignore-case":!1,order:d.asc}),s=a.getSourceCode(),p=o.openingElement.attributes.reduce((i,e)=>{if(e.type===u.AST_NODE_TYPES.JSXSpreadAttribute)return i.push([]),i;let n="ignore";e.name.type===u.AST_NODE_TYPES.JSXIdentifier&&r["always-on-top"].includes(e.name.name)?n="exception":(r.shorthand!=="ignore"&&e.value===null&&(n=r.shorthand),r.callback!=="ignore"&&e.name.type===u.AST_NODE_TYPES.JSXIdentifier&&e.name.name.indexOf("on")===0&&e.value!==null?n=r.callback:r.multiline!=="ignore"&&e.loc.start.line!==e.loc.end.line&&(n=r.multiline));let t={name:e.name.type===u.AST_NODE_TYPES.JSXNamespacedName?`${e.name.namespace.name}:${e.name.name.name}`:e.name.name,size:w(e.range),node:e,position:n};return i.at(-1).push(t),i},[[]]);for(let i of p)I(i,(e,n)=>{let t;if(e.position==="exception"&&n.position==="exception")t=r["always-on-top"].indexOf(e.name)>r["always-on-top"].indexOf(n.name);else if(e.position===n.position)t=N(e,n,r);else{let c={exception:2,first:1,ignore:0,last:-1};t=c[e.position]<c[n.position]}t&&a.report({messageId:"unexpectedJSXPropsOrder",data:{left:e.name,right:n.name},node:n.node,fix:c=>{let g=ae(i,({position:x})=>x),y=x=>x in g?g[x]:[],h=[y("exception").sort((x,f)=>r["always-on-top"].indexOf(x.name)-r["always-on-top"].indexOf(f.name)),A(y("first"),r),A(y("ignore"),r),A(y("last"),r)].flat();return j(c,i,h,s)}})})}}})});class re{static get(){return this._instance?this._instance:(this._instance=ie.parse(pe.readFileSync(le.resolve(process.cwd(),"tsconfig.json"),"utf8")),this._instance)}}F(re,"_instance");const K="sort-imports",he=P({name:K,meta:{type:"suggestion",docs:{description:"enforce sorted imports",recommended:!1},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object",properties:{type:{type:"object"},value:{type:"object"}},additionalProperties:!1},type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1},groups:{type:"array",default:[]},"internal-pattern":{type:"array",default:["~/**"]},"newlines-between":{enum:["ignore","always","never"],default:"always"},"read-tsconfig":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedImportsOrder:'Expected "{{right}}" to come before "{{left}}"',missedSpacingBetweenImports:'Missed spacing between "{{left}}" and "{{right}}" imports',extraSpacingBetweenImports:'Extra spacing between "{{left}}" and "{{right}}" imports'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>{var n;let o=D(a.options.at(0),{"newlines-between":"always","custom-groups":{type:{},value:{}},"internal-pattern":["~/**"],type:l.alphabetical,"read-tsconfig":!1,order:d.asc,"ignore-case":!1,groups:[]}),r=[];if(o["read-tsconfig"]){let t=re.get();if((n=t.compilerOptions)!=null&&n.paths)for(let c of Object.keys(t.compilerOptions.paths))r.push(c)}let s=a.getSourceCode(),p=[],i=t=>{let c,g=E=>[".less",".scss",".sass",".styl",".pcss",".css",".sss"].some(b=>E.endsWith(b)),y=E=>["./index.d.js","./index.d.ts","./index.js","./index.ts","./index","./","."].includes(E),h=E=>E.indexOf("..")===0,x=E=>E.indexOf("./")===0,f=E=>{!c&&o.groups.flat().includes(E)&&(c=E)},m=E=>o["internal-pattern"].length&&o["internal-pattern"].some(b=>k.minimatch(E.source.value,b))||r.some(b=>k.minimatch(E.source.value,b)),S=(E,b)=>{for(let[T,_]of Object.entries(o["custom-groups"][E]??{}))Array.isArray(_)&&_.some(v=>k.minimatch(b,v))&&f(T),typeof _=="string"&&k.minimatch(b,_)&&f(T)};return t.importKind==="type"&&(t.type===u.AST_NODE_TYPES.ImportDeclaration&&(S("type",t.source.value),ee(t.source.value)&&f("builtin-type"),m(t)&&f("internal-type"),y(t.source.value)&&f("index-type"),h(t.source.value)&&f("parent-type"),x(t.source.value)&&f("sibling-type")),f("external-type"),f("type")),!c&&t.type===u.AST_NODE_TYPES.ImportDeclaration&&(S("value",t.source.value),ee(t.source.value)&&f("builtin"),m(t)&&f("internal"),g(t.source.value)&&f("style"),t.specifiers.length===0&&f("side-effect"),y(t.source.value)&&f("index"),h(t.source.value)&&f("parent"),x(t.source.value)&&f("sibling"),f("external")),c??"unknown"},e=t=>{let c;t.type===u.AST_NODE_TYPES.ImportDeclaration?c=t.source.value:t.moduleReference.type===u.AST_NODE_TYPES.TSExternalModuleReference&&t.moduleReference.expression.type===u.AST_NODE_TYPES.Literal?c=`${t.moduleReference.expression.value}`:c=s.text.slice(...t.moduleReference.range),p.push({size:w(t.range),group:i(t),name:c,node:t})};return{TSImportEqualsDeclaration:e,ImportDeclaration:e,"Program:exit":()=>{var x;let t=f=>{for(let m=0,S=o.groups.length;m<S;m++){let E=o.groups[m];if(f.group===E||Array.isArray(E)&&E.includes(f.group))return m}return o.groups.length},c=(f,m)=>!!s.getTokensBetween(f.node,$(m.node,s)||m.node,{includeComments:!0}).length,g=(f,m)=>s.lines.slice(f.node.loc.end.line,m.node.loc.start.line-1).filter(E=>!E.trim().length).length,y=(f,m)=>{let S=[],E={};for(let T of m){let _=t(T);_ in E?E[_]=A([...E[_],T],o):E[_]=[T]}let b=Object.keys(E).sort().reduce((T,_)=>[...T,...E[_]],[]);for(let T=0,_=b.length;T<_;T++){let v=b.at(T);if(S.push(f.replaceTextRange(Y(m.at(T).node,s),s.text.slice(...Y(v.node,s)))),o["newlines-between"]!=="ignore"){let L=b.at(T+1);if(L){let R=g(m.at(T),m.at(T+1));(o["newlines-between"]==="always"&&t(v)===t(L)&&R!==0||o["newlines-between"]==="never"&&R>0)&&S.push(f.removeRange([Y(m.at(T).node,s).at(1),Y(m.at(T+1).node,s).at(0)-1])),o["newlines-between"]==="always"&&t(v)!==t(L)&&R>1&&S.push(f.replaceTextRange([Y(m.at(T).node,s).at(1),Y(m.at(T+1).node,s).at(0)-1],`
2
- `)),o["newlines-between"]==="always"&&t(v)!==t(L)&&R===0&&S.push(f.insertTextAfterRange(Y(m.at(T).node,s),`
3
- `))}}}return S},h=[[]];for(let f of p){let m=(x=h.at(-1))==null?void 0:x.at(-1);m&&c(m,f)?h.push([f]):h.at(-1).push(f)}for(let f of h)I(f,(m,S)=>{let E=t(m),b=t(S),T=g(m,S);!c(m,S)&&(E>b||E===b&&N(m,S,o))&&a.report({messageId:"unexpectedImportsOrder",data:{left:m.name,right:S.name},node:S.node,fix:_=>y(_,f)}),o["newlines-between"]==="never"&&T>0&&a.report({messageId:"extraSpacingBetweenImports",data:{left:m.name,right:S.name},node:S.node,fix:_=>y(_,f)}),o["newlines-between"]==="always"&&(E<b&&T===0?a.report({messageId:"missedSpacingBetweenImports",data:{left:m.name,right:S.name},node:S.node,fix:_=>y(_,f)}):(T>1||E===b&&T>0)&&a.report({messageId:"extraSpacingBetweenImports",data:{left:m.name,right:S.name},node:S.node,fix:_=>y(_,f)}))})}}}}),V="sort-classes",Te=P({name:V,meta:{type:"suggestion",docs:{description:"enforce sorted classes",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},"ignore-case":{type:"boolean",default:!1},order:{enum:[d.asc,d.desc],default:d.asc},groups:{type:"array",default:["property","constructor","method","unknown"]}},additionalProperties:!1}],messages:{unexpectedClassesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({ClassBody:o=>{if(o.body.length>1){let r=D(a.options.at(0),{type:l.alphabetical,order:d.asc,"ignore-case":!1,groups:["property","constructor","method","unknown"]}),s=a.getSourceCode(),p=o.body.map(e=>{var g;let n,t;e.type===u.AST_NODE_TYPES.StaticBlock?t="static":e.type===u.AST_NODE_TYPES.TSIndexSignature?t=s.text.slice(e.range.at(0),((g=e.typeAnnotation)==null?void 0:g.range.at(0))??e.range.at(1)):e.key.type===u.AST_NODE_TYPES.Identifier?{name:t}=e.key:t=s.text.slice(...e.key.range);let c=y=>{!n&&r.groups.flat().includes(y)&&(n=y)};return e.type===u.AST_NODE_TYPES.MethodDefinition?(e.kind==="constructor"&&c("constructor"),e.static&&c("static-method"),e.accessibility==="private"&&c("private-method"),c("method")):e.type===u.AST_NODE_TYPES.PropertyDefinition&&(e.static&&c("static-property"),e.accessibility==="private"&&c("private-property"),c("property")),{size:w(e.range),group:n??"unknown",node:e,name:t}}),i=e=>{for(let n=0,t=r.groups.length;n<t;n++){let c=r.groups[n];if(e.group===c||Array.isArray(c)&&c.includes(e.group))return n}return r.groups.length};I(p,(e,n)=>{let t=i(e),c=i(n);(t>c||t===c&&N(e,n,r))&&a.report({messageId:"unexpectedClassesOrder",data:{left:O(e.name),right:O(n.name)},node:n.node,fix:g=>{let y=[],h=p.reduce((f,m)=>{let S=i(m);return S in f?f[S]=A([...f[S],m],r):f[S]=[m],f},{}),x=Object.keys(h).sort().reduce((f,m)=>[...f,...h[m]],[]);for(let f=0,m=x.length;f<m;f++)y.push(g.replaceTextRange(Y(p.at(f).node,s),s.text.slice(...Y(x.at(f).node,s))));return y}})})}}})}),H="sort-objects",xe=P({name:H,meta:{type:"suggestion",docs:{description:"enforce sorted objects",recommended:!1},fixable:"code",schema:[{type:"object",properties:{"partition-by-comment":{type:["boolean","string","array"],default:!1},type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1},"always-on-top":{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedObjectsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>{let o=r=>{if(r.properties.length>1){let s=D(a.options.at(0),{"partition-by-comment":!1,type:l.alphabetical,"ignore-case":!1,order:d.asc,"always-on-top":[]}),p=a.getSourceCode(),i=e=>e.reduce((n,t)=>{if(t.type===u.AST_NODE_TYPES.SpreadElement||t.type===u.AST_NODE_TYPES.RestElement)return n.push([]),n;let c=$(t,p);s["partition-by-comment"]&&c&&te(s["partition-by-comment"],c.value)&&n.push([]);let g,y="ignore",h=[];if(t.key.type===u.AST_NODE_TYPES.Identifier?{name:g}=t.key:t.key.type===u.AST_NODE_TYPES.Literal?g=`${t.key.value}`:g=p.text.slice(...t.key.range),t.key.type===u.AST_NODE_TYPES.Identifier&&s["always-on-top"].includes(t.key.name)&&(y="exception"),t.value.type===u.AST_NODE_TYPES.AssignmentPattern){let f=(m,S)=>{m.right.type===u.AST_NODE_TYPES.Identifier&&h.push(m.right.name),!S&&m.left.type===u.AST_NODE_TYPES.Identifier&&h.push(m.left.name);let E=b=>{b.right.type===u.AST_NODE_TYPES.Identifier&&h.push(b.right.name),b.left.type===u.AST_NODE_TYPES.BinaryExpression&&f(b.left,!1)};m.right.type===u.AST_NODE_TYPES.BinaryExpression&&E(m.right)};f(t.value,!0)}let x={size:w(t.range),dependencies:h,node:t,position:y,name:g};return n.at(-1).push(x),n},[[]]);for(let e of i(r.properties))I(e,(n,t)=>{let c;if(n.position==="exception"&&t.position==="exception")c=s["always-on-top"].indexOf(n.name)>s["always-on-top"].indexOf(t.name);else if(n.position===t.position)c=N(n,t,s);else{let g={exception:1,ignore:0};c=g[n.position]<g[t.position]}if(c){let g=y=>{let h=ae(e,({position:m})=>m),x=m=>m in h?h[m]:[],f=[x("exception").sort((m,S)=>s["always-on-top"].indexOf(m.name)-s["always-on-top"].indexOf(S.name)),A(x("ignore"),s)].flat();return j(y,e,f,p,{partitionComment:s["partition-by-comment"]})};a.report({messageId:"unexpectedObjectsOrder",data:{left:O(n.name),right:O(t.name)},node:t.node,fix:g})}})}};return{ObjectExpression:o,ObjectPattern:o}}}),Q="sort-exports",be=P({name:Q,meta:{type:"suggestion",docs:{description:"enforce sorted exports",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},order:{enum:[d.asc,d.desc],default:d.asc},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedExportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>{let o=D(a.options.at(0),{type:l.alphabetical,order:d.asc,"ignore-case":!1}),r=[[]],s=p=>{p.type===u.AST_NODE_TYPES.ExportAllDeclaration&&p.exported===null?r.push([]):r.at(-1).push({size:w(p.range),name:p.source.value,node:p})};return{ExportAllDeclaration:s,ExportNamedDeclaration:p=>{p.source!==null&&s(p)},"Program:exit":()=>{let p=a.getSourceCode();for(let i of r)I(i,(e,n)=>{N(e,n,o)&&a.report({messageId:"unexpectedExportsOrder",data:{left:e.name,right:n.name},node:n.node,fix:t=>j(t,i,A(i,o),p)})})}}}}),Z="sort-enums",_e=P({name:Z,meta:{type:"suggestion",docs:{description:"enforce sorted TypeScript enums",recommended:!1},fixable:"code",schema:[{type:"object",properties:{type:{enum:[l.alphabetical,l.natural,l["line-length"]],default:l.natural},"ignore-case":{type:"boolean",default:!1},order:{enum:[d.asc,d.desc],default:d.asc}},additionalProperties:!1}],messages:{unexpectedEnumsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:l.alphabetical,order:d.asc}],create:a=>({TSEnumDeclaration:o=>{if(o.members.length>1&&o.members.some(({initializer:r})=>r)){let r=D(a.options.at(0),{type:l.alphabetical,order:d.asc,"ignore-case":!1}),s=a.getSourceCode(),p=o.members.map(i=>({name:i.id.type===u.AST_NODE_TYPES.Literal?`${i.id.value}`:`${s.text.slice(...i.id.range)}`,size:w(i.range),node:i}));I(p,(i,e)=>{N(i,e,r)&&a.report({messageId:"unexpectedEnumsOrder",data:{left:O(i.name),right:O(e.name)},node:e.node,fix:n=>j(n,p,A(p,r),s)})})}}})}),Oe="eslint-plugin-perfectionist";let M=a=>{let o={[K]:["error",{groups:["type",["builtin","external"],"internal-type","internal",["parent-type","sibling-type","index-type"],["parent","sibling","index"],"object","unknown"],"custom-groups":{value:{},type:{}},"newlines-between":"always","internal-pattern":["~/**"],"read-tsconfig":!1}],[V]:["error",{groups:["static-property","private-property","property","constructor","static-method","private-method","method","unknown"]}],[X]:["error",{"always-on-top":[],shorthand:"ignore",multiline:"first",callback:"ignore"}],[H]:["error",{"partition-by-comment":!1,"always-on-top":[]}],[B]:["error",{"spread-last":!0}],[U]:["error"],[z]:["error"],[J]:["error"],[q]:["error"],[W]:["error"],[G]:["error"],[Q]:["error"],[Z]:["error"]};return{rules:Object.fromEntries(Object.entries(o).map(([r,[s,p={}]])=>[`perfectionist/${r}`,[s,Object.assign(p,a)]])),plugins:["perfectionist"]}};const Ae={rules:{[B]:de,[V]:Te,[Z]:_e,[Q]:be,[K]:he,[W]:Ee,[X]:Se,[J]:ge,[U]:fe,[z]:ue,[q]:me,[H]:xe,[G]:ye},configs:{"recommended-alphabetical":M({type:l.alphabetical,order:d.asc,"ignore-case":!1}),"recommended-natural":M({type:l.natural,order:d.asc,"ignore-case":!1}),"recommended-line-length":M({type:l["line-length"],order:d.desc})},name:Oe};module.exports=Ae;
1
+ "use strict";const D=require("path"),B=require("@typescript-eslint/utils"),$=require("minimatch"),le=require("natural-compare-lite"),oe=require("module");let v=B.ESLintUtils.RuleCreator(s=>`https://eslint-plugin-perfectionist.azat.io/rules/${s}`),x=(s,l)=>{for(let n=0,a=s.length;n<a;n++){let u=s[n];if(l.group===u||Array.isArray(u)&&typeof l.group=="string"&&u.includes(l.group))return n}return s.length},w=s=>{let[l,n]=s;return n-l},j=s=>s>0;var i=(s=>(s.alphabetical="alphabetical",s["line-length"]="line-length",s.natural="natural",s))(i||{}),f=(s=>(s.desc="desc",s.asc="asc",s))(f||{});let G=s=>{let l,n=u=>{!l&&s.flat().includes(u)&&(l=u)};return{getGroup:()=>l??"unknown",setCustomGroups:(u,t)=>{if(u)for(let[e,o]of Object.entries(u))Array.isArray(o)&&o.some(r=>$.minimatch(t,r))&&n(e),typeof o=="string"&&$.minimatch(t,o)&&n(e)},defineGroup:n}},I=(s,l,n)=>{var e,o;if((e=l.dependencies)!=null&&e.includes(s.name))return-1;if((o=s.dependencies)!=null&&o.includes(l.name))return 1;let a=n.order==="asc"?1:-1,u,t=r=>n["ignore-case"]?r.toLowerCase():r;return n.type===i.alphabetical?u=(r,c)=>t(r.name).localeCompare(t(c.name)):n.type===i.natural?u=(r,c)=>le(t(r.name),t(c.name)):u=(r,c)=>r.size-c.size,a*u(s,l)},A=(s,l)=>[...s].sort((n,a)=>I(n,a,l)),ie=(s,l)=>{let n=l.getTokenAfter(s,{filter:({value:a,type:u})=>!(u==="Punctuator"&&[",",";"].includes(a)),includeComments:!0});return((n==null?void 0:n.type)==="Block"||(n==null?void 0:n.type)==="Line")&&s.loc.end.line===n.loc.end.line?n:null},ne=(s,l)=>Array.isArray(s)&&s.some(n=>$.minimatch(l.trim(),n))||typeof s=="string"&&$.minimatch(l.trim(),s)||s===!0,_=(s,l)=>{let[n,a]=l.getTokensBefore(s,{filter:({value:u,type:t})=>!(t==="Punctuator"&&[",",";"].includes(u)),includeComments:!0,count:2});return((a==null?void 0:a.type)==="Block"||(a==null?void 0:a.type)==="Line")&&s.loc.start.line-a.loc.end.line<=1&&(n==null?void 0:n.loc.end.line)!==a.loc.start.line?a:null},L=(s,l,n)=>{var o;let a=s.range.at(0),u=s.range.at(1),t=l.text.slice(a,u);if(B.ASTUtils.isParenthesized(s,l)){let r=l.getTokenBefore(s,B.ASTUtils.isOpeningParenToken),c=l.getTokenAfter(s,B.ASTUtils.isClosingParenToken);a=r.range.at(0),u=c.range.at(1)}let e=_(s,l);if(t.endsWith(";")||t.endsWith(",")){let r=l.getTokensAfter(s,{includeComments:!0,count:2});s.loc.start.line===((o=r.at(1))==null?void 0:o.loc.start.line)&&(u-=1)}return e&&!ne((n==null?void 0:n.partitionComment)??!1,e.value)&&(a=e.range.at(0)),[a,u]},P=(s,l,n,a,u)=>{var o,r;let t=[],e=((o=l.at(0))==null?void 0:o.node.loc.start.line)===((r=l.at(-1))==null?void 0:r.node.loc.end.line);for(let c=0,d=l.length;c<d;c++){let{node:y}=l.at(c);t.push(s.replaceTextRange(L(y,a,u),a.text.slice(...L(n.at(c).node,a,u))));let m=ie(n.at(c).node,a);if(m&&!e){let p=[a.getTokenBefore(m).range.at(1),m.range.at(1)];t.push(s.replaceTextRange(p,""));let h=a.getTokenAfter(y);t.push(s.insertTextAfter((h==null?void 0:h.loc.end.line)===y.loc.end.line?h:y,a.text.slice(...p)))}}return t},k=(s={},l)=>Object.assign(l,s),C=(s,l)=>{if(s.length>1)for(let n=1;n<s.length;n++){let a=s.at(n-1),u=s.at(n);a&&u&&l(a,u,n-1)}};const V="sort-svelte-attributes",pe=v({name:V,meta:{type:"suggestion",docs:{description:"enforce sorted Svelte attributes"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array"}},additionalProperties:!1}],messages:{unexpectedSvelteAttributesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>D.extname(s.getFilename())!==".svelte"?{}:{SvelteStartTag:l=>{if(l.attributes.length>1){let n=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1,"custom-groups":{},groups:[]}),a=s.getSourceCode(),u=l.attributes.reduce((t,e)=>{if(e.type==="SvelteSpreadAttribute")return t.push([]),t;let o,{getGroup:r,defineGroup:c,setCustomGroups:d}=G(n.groups);return e.key.type==="SvelteSpecialDirectiveKey"?o=a.text.slice(...e.key.range):typeof e.key.name=="string"?{name:o}=e.key:o=a.text.slice(...e.key.range),d(n["custom-groups"],o),e.type==="SvelteShorthandAttribute"&&(c("svelte-shorthand"),c("shorthand")),(!("value"in e)||Array.isArray(e.value)&&!e.value.at(0))&&c("shorthand"),e.loc.start.line!==e.loc.end.line&&c("multiline"),t.at(-1).push({size:w(e.range),node:e,group:r(),name:o}),t},[[]]);for(let t of u)C(t,(e,o)=>{let r=x(n.groups,e),c=x(n.groups,o);(r>c||r===c&&j(I(e,o,n)))&&s.report({messageId:"unexpectedSvelteAttributesOrder",data:{left:e.name,right:o.name},node:o.node,fix:d=>{let y={};for(let g of t){let p=x(n.groups,g);p in y?y[p]=A([...y[p],g],n):y[p]=[g]}let m=[];for(let g of Object.keys(y).sort())m.push(...A(y[g],n));return P(d,t,m,a)}})})}}}}),W="sort-astro-attributes",ue=v({name:W,meta:{type:"suggestion",docs:{description:"enforce sorted Astro attributes"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array"}},additionalProperties:!1}],messages:{unexpectedAstroAttributesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>D.extname(s.getFilename())!==".astro"?{}:{JSXElement:l=>{let{attributes:n}=l.openingElement;if(n.length>1){let a=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1,"custom-groups":{},groups:[]}),u=s.getSourceCode(),t=n.reduce((e,o)=>{if(o.type==="JSXSpreadAttribute")return e.push([]),e;let r=typeof o.name.name=="string"?o.name.name:u.text.slice(...o.name.range),{getGroup:c,defineGroup:d,setCustomGroups:y}=G(a.groups);return y(a["custom-groups"],r),o.type==="AstroShorthandAttribute"&&(d("astro-shorthand"),d("shorthand")),o.value===null&&d("shorthand"),o.loc.start.line!==o.loc.end.line&&d("multiline"),e.at(-1).push({size:w(o.range),node:o,group:c(),name:r}),e},[[]]);for(let e of t)C(e,(o,r)=>{let c=x(a.groups,o),d=x(a.groups,r);(c>d||c===d&&j(I(o,r,a)))&&s.report({messageId:"unexpectedAstroAttributesOrder",data:{left:o.name,right:r.name},node:r.node,fix:y=>{let m={};for(let p of e){let h=x(a.groups,p);h in m?m[h]=A([...m[h],p],a):m[h]=[p]}let g=[];for(let p of Object.keys(m).sort())g.push(...A(m[p],a));return P(y,e,g,u)}})})}}}});let O=s=>s.replaceAll(/\s\s+/g," ").trim();const J="sort-array-includes",ce=v({name:J,meta:{type:"suggestion",docs:{description:"enforce sorted arrays before include method"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},"spread-last":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedArrayIncludesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({MemberExpression:l=>{if((l.object.type==="ArrayExpression"||l.object.type==="NewExpression")&&l.property.type==="Identifier"&&l.property.name==="includes"){let n=l.object.type==="ArrayExpression"?l.object.elements:l.object.arguments;if(n.length>1){let a=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1,"spread-last":!1}),u=s.getSourceCode(),t=n.reduce((e,o)=>(o!==null&&e.at(0).push({name:o.type==="Literal"?`${o.value}`:u.text.slice(...o.range),size:w(o.range),type:o.type,node:o}),e),[[],[]]).flat();C(t,(e,o)=>{let r;a["spread-last"]&&e.node.type==="Literal"&&o.node.type==="SpreadElement"?r=!1:a["spread-last"]&&e.node.type==="SpreadElement"&&o.node.type==="Literal"?r=!0:r=j(I(e,o,a)),r&&s.report({messageId:"unexpectedArrayIncludesOrder",data:{left:O(e.name),right:O(o.name)},node:o.node,fix:c=>{let d=A(t,a);if(a["spread-last"])for(let y=0,m=d.length;y<m;y++)d.at(y).node.type==="SpreadElement"&&d.push(d.splice(y,1).at(0));return P(c,t,d,u)}})})}}}})}),X="sort-vue-attributes",de=v({name:X,meta:{type:"suggestion",docs:{description:"enforce sorted Vue attributes"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedVueAttributesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>{if(D.extname(s.getFilename())!==".vue")return{};if(!("defineTemplateBodyVisitor"in s.parserServices))return{};let{defineTemplateBodyVisitor:l}=s.parserServices;return l({VStartTag:n=>{if(n.attributes.length>1){let a=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1,"custom-groups":{},groups:[]}),u=s.getSourceCode(),t=n.attributes.reduce((e,o)=>{if(o.key.type==="VDirectiveKey"&&o.key.name.rawName==="bind")return e.push([]),e;let r,{getGroup:c,defineGroup:d,setCustomGroups:y}=G(a.groups);return typeof o.key.name=="string"&&o.key.type!=="VDirectiveKey"?r=o.key.rawName:r=u.text.slice(...o.key.range),y(a["custom-groups"],r),o.value===null&&d("shorthand"),o.loc.start.line!==o.loc.end.line&&d("multiline"),e.at(-1).push({size:w(o.range),node:o,group:c(),name:r}),e},[[]]);for(let e of t)C(e,(o,r)=>{let c=x(a.groups,o),d=x(a.groups,r);(c>d||c===d&&j(I(o,r,a)))&&s.report({messageId:"unexpectedVueAttributesOrder",data:{left:o.name,right:r.name},node:r.node,fix:y=>{let m={};for(let p of e){let h=x(a.groups,p);h in m?m[h]=A([...m[h],p],a):m[h]=[p]}let g=[];for(let p of Object.keys(m).sort())g.push(...A(m[p],a));return P(y,e,g,u)}})})}}})}}),q="sort-named-exports",fe=v({name:q,meta:{type:"suggestion",docs:{description:"enforce sorted named exports"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedNamedExportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({ExportNamedDeclaration:l=>{if(l.specifiers.length>1){let n=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc}),a=s.getSourceCode(),u=l.specifiers.map(t=>({size:w(t.range),name:t.local.name,node:t}));C(u,(t,e)=>{j(I(t,e,n))&&s.report({messageId:"unexpectedNamedExportsOrder",data:{left:t.name,right:e.name},node:e.node,fix:o=>P(o,u,A(u,n),a)})})}}})}),K="sort-named-imports",ge=v({name:K,meta:{type:"suggestion",docs:{description:"enforce sorted named imports"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedNamedImportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({ImportDeclaration:l=>{let n=l.specifiers.filter(({type:a})=>a==="ImportSpecifier");if(n.length>1){let a=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc}),u=s.getSourceCode(),t=n.map(e=>({size:w(e.range),name:e.local.name,node:e}));C(t,(e,o)=>{j(I(e,o,a))&&s.report({messageId:"unexpectedNamedImportsOrder",data:{left:e.name,right:o.name},node:o.node,fix:r=>P(r,t,A(t,a),u)})})}}})}),F="sort-object-types",ye=v({name:F,meta:{type:"suggestion",docs:{description:"enforce sorted object types"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedObjectTypesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({TSTypeLiteral:l=>{if(l.members.length>1){let n=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc,"custom-groups":{},groups:[]}),a=s.getSourceCode(),u=l.members.map(t=>{var p,h;let e,o=a.text.slice(t.range.at(0),t.range.at(1)),{getGroup:r,defineGroup:c,setCustomGroups:d}=G(n.groups),y=S=>S.replace(/(,|;)$/,"");if(t.type==="TSPropertySignature")t.key.type==="Identifier"?{name:e}=t.key:t.key.type==="Literal"?e=`${t.key.value}`:e=a.text.slice(t.range.at(0),(p=t.typeAnnotation)==null?void 0:p.range.at(0));else if(t.type==="TSIndexSignature"){let S=((h=t.typeAnnotation)==null?void 0:h.range.at(0))??t.range.at(1);e=y(a.text.slice(t.range.at(0),S))}else e=y(a.text.slice(t.range.at(0),t.range.at(1)));d(n["custom-groups"],e),t.loc.start.line!==t.loc.end.line&&c("multiline");let g=o.endsWith(";")||o.endsWith(",")?1:0;return{size:w(t.range)-g,group:r(),node:t,name:e}});C(u,(t,e)=>{let o=x(n.groups,t),r=x(n.groups,e);(o>r||o===r&&j(I(t,e,n)))&&s.report({messageId:"unexpectedObjectTypesOrder",data:{left:O(t.name),right:O(e.name)},node:e.node,fix:c=>{let d={};for(let m of u){let g=x(n.groups,m);g in d?d[g]=A([...d[g],m],n):d[g]=[m]}let y=[];for(let m of Object.keys(d).sort())y.push(...A(d[m],n));return P(c,u,y,a)}})})}}})}),H="sort-union-types",me=v({name:H,meta:{type:"suggestion",docs:{description:"enforce sorted union types"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},"nullable-last":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedUnionTypesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({TSUnionType:l=>{let n=s.getSourceCode(),a=k(s.options.at(0),{type:i.alphabetical,"nullable-last":!1,"ignore-case":!1,order:f.asc}),u=l.types.map(t=>({group:t.type==="TSNullKeyword"||t.type==="TSUndefinedKeyword"?"nullable":"unknown",name:n.text.slice(...t.range),size:w(t.range),node:t}));C(u,(t,e)=>{let o=j(I(t,e,a));a["nullable-last"]&&(t.group==="nullable"&&e.group==="unknown"?o=!0:t.group==="unknown"&&e.group==="nullable"&&(o=!1)),o&&s.report({messageId:"unexpectedUnionTypesOrder",data:{left:O(t.name),right:O(e.name)},node:e.node,fix:r=>{let c=[];if(a["nullable-last"]){let d=[],y=u.filter(m=>m.group==="nullable"?(d.push(m),!1):!0);c=[...A(y,a),...A(d,a)]}else c=A(u,a);return P(r,u,c,n)}})})}})}),Q="sort-interfaces",he=v({name:Q,meta:{type:"suggestion",docs:{description:"enforce sorted interface properties"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},"ignore-pattern":{items:{type:"string"},type:"array"},groups:{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedInterfacePropertiesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({TSInterfaceDeclaration:l=>{if(l.body.body.length>1){let n=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc,"ignore-pattern":[],"custom-groups":{},groups:[]});if(!n["ignore-pattern"].some(a=>$.minimatch(l.id.name,a))){let a=s.getSourceCode(),u=l.body.body.reduce((t,e)=>{var y,m,g;if(e.type==="TSCallSignatureDeclaration")return t.push([]),t;let o,{getGroup:r,defineGroup:c,setCustomGroups:d}=G(n.groups);if(e.type==="TSPropertySignature")if(e.key.type==="Identifier")({name:o}=e.key);else if(e.key.type==="Literal")o=`${e.key.value}`;else{let p=((y=e.typeAnnotation)==null?void 0:y.range.at(0))??e.range.at(1)-(e.optional?1:0);o=a.text.slice(e.range.at(0),p)}else if(e.type==="TSIndexSignature"){let p=((m=e.typeAnnotation)==null?void 0:m.range.at(0))??e.range.at(1);o=a.text.slice(e.range.at(0),p)}else{let p=((g=e.returnType)==null?void 0:g.range.at(0))??e.range.at(1);o=a.text.slice(e.range.at(0),p)}return d(n["custom-groups"],o),e.loc.start.line!==e.loc.end.line&&c("multiline"),t.at(-1).push({size:w(e.range),group:r(),node:e,name:o}),t},[[]]);for(let t of u)C(t,(e,o)=>{let r=x(n.groups,e),c=x(n.groups,o);(r>c||r===c&&j(I(e,o,n)))&&s.report({messageId:"unexpectedInterfacePropertiesOrder",data:{left:O(e.name),right:O(o.name)},node:o.node,fix:d=>{let y={};for(let g of t){let p=x(n.groups,g);p in y?y[p]=A([...y[p],g],n):y[p]=[g]}let m=[];for(let g of Object.keys(y).sort())m.push(...A(y[g],n));return P(d,t,m,a)}})})}}}})}),Y="sort-jsx-props",be=v({name:Y,meta:{type:"suggestion",docs:{description:"enforce sorted JSX props"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},groups:{type:"array"},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedJSXPropsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>[".svelte",".astro",".vue"].includes(D.extname(s.getFilename()))?{}:{JSXElement:l=>{if(l.openingElement.attributes.length>1){let n=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc,"custom-groups":{},groups:[]}),a=s.getSourceCode(),u=l.openingElement.attributes.reduce((t,e)=>{if(e.type==="JSXSpreadAttribute")return t.push([]),t;let o=e.name.type==="JSXNamespacedName"?`${e.name.namespace.name}:${e.name.name.name}`:e.name.name,{getGroup:r,defineGroup:c,setCustomGroups:d}=G(n.groups);d(n["custom-groups"],o),e.value===null&&c("shorthand"),e.loc.start.line!==e.loc.end.line&&c("multiline");let y={size:w(e.range),group:r(),node:e,name:o};return t.at(-1).push(y),t},[[]]);for(let t of u)C(t,(e,o)=>{let r=x(n.groups,e),c=x(n.groups,o);(r>c||r===c&&j(I(e,o,n)))&&s.report({messageId:"unexpectedJSXPropsOrder",data:{left:e.name,right:o.name},node:o.node,fix:d=>{let y={};for(let g of t){let p=x(n.groups,g);p in y?y[p]=A([...y[p],g],n):y[p]=[g]}let m=[];for(let g of Object.keys(y).sort())m.push(...A(y[g],n));return P(d,t,m,a)}})})}}}}),Z="sort-exports",xe=v({name:Z,meta:{type:"suggestion",docs:{description:"enforce sorted exports"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedExportsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>{let l=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1}),n=[[]],a=u=>{u.type==="ExportAllDeclaration"&&u.exported===null?n.push([]):n.at(-1).push({size:w(u.range),name:u.source.value,node:u})};return{ExportAllDeclaration:a,ExportNamedDeclaration:u=>{u.source!==null&&a(u)},"Program:exit":()=>{let u=s.getSourceCode();for(let t of n)C(t,(e,o)=>{j(I(e,o,l))&&s.report({messageId:"unexpectedExportsOrder",data:{left:e.name,right:o.name},node:o.node,fix:r=>P(r,t,A(t,l),u)})})}}}}),ee="sort-imports",Ee=v({name:ee,meta:{type:"suggestion",docs:{description:"enforce sorted imports"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object",properties:{type:{type:"object"},value:{type:"object"}},additionalProperties:!1},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array",default:[]},"internal-pattern":{items:{type:"string"},type:"array"},"newlines-between":{enum:["ignore","always","never"],default:"always",type:"string"}},additionalProperties:!1}],messages:{unexpectedImportsOrder:'Expected "{{right}}" to come before "{{left}}"',missedSpacingBetweenImports:'Missed spacing between "{{left}}" and "{{right}}" imports',extraSpacingBetweenImports:'Extra spacing between "{{left}}" and "{{right}}" imports'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>{let l=k(s.options.at(0),{"newlines-between":"always","custom-groups":{type:{},value:{}},"internal-pattern":["~/**"],type:i.alphabetical,order:f.asc,"ignore-case":!1,groups:[]}),n=[],a=s.getSourceCode(),u=[],t=r=>r.type==="ImportDeclaration"&&r.specifiers.length===0,e=r=>{let c=b=>[".less",".scss",".sass",".styl",".pcss",".css",".sss"].some(E=>b.endsWith(E)),d=b=>["./index.d.js","./index.d.ts","./index.js","./index.ts","./index","./","."].includes(b),y=b=>b.indexOf("..")===0,m=b=>b.indexOf("./")===0,{getGroup:g,defineGroup:p,setCustomGroups:h}=G(l.groups),S=b=>l["internal-pattern"].length&&l["internal-pattern"].some(E=>$.minimatch(b.source.value,E))||n.some(E=>$.minimatch(b.source.value,E)),N=b=>oe.builtinModules.includes(b)||oe.builtinModules.includes(`node:${b}`);return r.importKind==="type"&&(r.type==="ImportDeclaration"&&(h(l["custom-groups"].type,r.source.value),N(r.source.value)&&p("builtin-type"),S(r)&&p("internal-type"),d(r.source.value)&&p("index-type"),y(r.source.value)&&p("parent-type"),m(r.source.value)&&p("sibling-type")),p("external-type"),p("type")),r.type==="ImportDeclaration"&&(h(l["custom-groups"].value,r.source.value),N(r.source.value)&&p("builtin"),S(r)&&p("internal"),c(r.source.value)&&p("style"),t(r)&&p("side-effect"),d(r.source.value)&&p("index"),y(r.source.value)&&p("parent"),m(r.source.value)&&p("sibling"),p("external")),g()},o=r=>{let c;r.type==="ImportDeclaration"?c=r.source.value:r.moduleReference.type==="TSExternalModuleReference"&&r.moduleReference.expression.type==="Literal"?c=`${r.moduleReference.expression.value}`:c=a.text.slice(...r.moduleReference.range),u.push({size:w(r.range),group:e(r),name:c,node:r})};return{TSImportEqualsDeclaration:o,ImportDeclaration:o,"Program:exit":()=>{var m;let r=(g,p)=>!!a.getTokensBetween(g.node,_(p.node,a)||p.node,{includeComments:!0}).length,c=(g,p)=>a.lines.slice(g.node.loc.end.line,p.node.loc.start.line-1).filter(S=>!S.trim().length).length,d=(g,p)=>{let h=[],S={};for(let b of p){let E=x(l.groups,b);E in S?S[E]=A([...S[E],b],l):S[E]=[b]}let N=Object.keys(S).sort().reduce((b,E)=>[...b,...S[E]],[]);for(let b=0,E=N.length;b<E;b++){let M=N.at(b);if(h.push(g.replaceTextRange(L(p.at(b).node,a),a.text.slice(...L(M.node,a)))),l["newlines-between"]!=="ignore"){let T=N.at(b+1);if(T){let R=c(p.at(b),p.at(b+1));(l["newlines-between"]==="always"&&x(l.groups,M)===x(l.groups,T)&&R!==0||l["newlines-between"]==="never"&&R>0)&&h.push(g.removeRange([L(p.at(b).node,a).at(1),L(p.at(b+1).node,a).at(0)-1])),l["newlines-between"]==="always"&&x(l.groups,M)!==x(l.groups,T)&&R>1&&h.push(g.replaceTextRange([L(p.at(b).node,a).at(1),L(p.at(b+1).node,a).at(0)-1],`
2
+ `)),l["newlines-between"]==="always"&&x(l.groups,M)!==x(l.groups,T)&&R===0&&h.push(g.insertTextAfterRange(L(p.at(b).node,a),`
3
+ `))}}}return h},y=[[]];for(let g of u){let p=(m=y.at(-1))==null?void 0:m.at(-1);p&&r(p,g)?y.push([g]):y.at(-1).push(g)}for(let g of y)C(g,(p,h)=>{let S=x(l.groups,p),N=x(l.groups,h),b=c(p,h);!(t(p.node)&&t(h.node))&&!r(p,h)&&(S>N||S===N&&j(I(p,h,l)))&&s.report({messageId:"unexpectedImportsOrder",data:{left:p.name,right:h.name},node:h.node,fix:E=>d(E,g)}),l["newlines-between"]==="never"&&b>0&&s.report({messageId:"extraSpacingBetweenImports",data:{left:p.name,right:h.name},node:h.node,fix:E=>d(E,g)}),l["newlines-between"]==="always"&&(S<N&&b===0?s.report({messageId:"missedSpacingBetweenImports",data:{left:p.name,right:h.name},node:h.node,fix:E=>d(E,g)}):(b>1||S===N&&b>0)&&s.report({messageId:"extraSpacingBetweenImports",data:{left:p.name,right:h.name},node:h.node,fix:E=>d(E,g)}))})}}}}),te="sort-objects",Se=v({name:te,meta:{type:"suggestion",docs:{description:"enforce sorted objects"},fixable:"code",schema:[{type:"object",properties:{"custom-groups":{type:"object"},"partition-by-comment":{type:["boolean","string","array"],default:!1},"styled-components":{type:"boolean",default:!0},type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1},groups:{type:"array"}},additionalProperties:!1}],messages:{unexpectedObjectsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>{let l=n=>{if(n.properties.length>1){let a=k(s.options.at(0),{"partition-by-comment":!1,type:i.alphabetical,"styled-components":!0,"ignore-case":!1,order:f.asc,"custom-groups":{},groups:[]}),u=r=>r.type==="Identifier"&&r.name==="styled",t=r=>r!==void 0&&r.type==="CallExpression"&&(r.callee.type==="MemberExpression"&&u(r.callee.object)||r.callee.type==="CallExpression"&&u(r.callee.callee));if(!a["styled-components"]&&(t(n.parent)||n.parent.type==="ArrowFunctionExpression"&&t(n.parent.parent)))return;let e=s.getSourceCode(),o=r=>r.reduce((c,d)=>{if(d.type==="SpreadElement"||d.type==="RestElement")return c.push([]),c;let y=_(d,e);a["partition-by-comment"]&&y&&ne(a["partition-by-comment"],y.value)&&c.push([]);let m,g="ignore",p=[],{getGroup:h,setCustomGroups:S}=G(a.groups);d.key.type==="Identifier"?{name:m}=d.key:d.key.type==="Literal"?m=`${d.key.value}`:m=e.text.slice(...d.key.range),d.value.type==="AssignmentPattern"&&(E=>{E.right.type==="Identifier"&&p.push(E.right.name);let M=T=>{let R=[];switch(T.type){case"ArrowFunctionExpression":R.push(T.body);break;case"ConditionalExpression":R.push(T.consequent,T.alternate);break;case"LogicalExpression":case"BinaryExpression":R.push(T.left,T.right);break;case"CallExpression":R.push(...T.arguments);break}R.forEach(U=>{U.type==="Identifier"&&p.push(U.name),(U.type==="BinaryExpression"||U.type==="ConditionalExpression")&&M(U)})};switch(E.right.type){case"ArrowFunctionExpression":case"ConditionalExpression":case"LogicalExpression":case"BinaryExpression":case"CallExpression":M(E.right);break}})(d.value),S(a["custom-groups"],m);let N={size:w(d.range),group:h(),dependencies:p,node:d,position:g,name:m};return c.at(-1).push(N),c},[[]]);for(let r of o(n.properties))C(r,(c,d)=>{let y=x(a.groups,c),m=x(a.groups,d);if(y>m||y===m&&j(I(c,d,a))){let g=p=>{let h={};for(let N of r){let b=x(a.groups,N);b in h?h[b]=A([...h[b],N],a):h[b]=[N]}let S=[];for(let N of Object.keys(h).sort())S.push(...A(h[N],a));return P(p,r,S,e,{partitionComment:a["partition-by-comment"]})};s.report({messageId:"unexpectedObjectsOrder",data:{left:O(c.name),right:O(d.name)},node:d.node,fix:g})}})}};return{ObjectExpression:l,ObjectPattern:l}}}),re="sort-classes",Ae=v({name:re,meta:{type:"suggestion",docs:{description:"enforce sorted classes"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},"ignore-case":{type:"boolean",default:!1},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},groups:{type:"array",default:[]}},additionalProperties:!1}],messages:{unexpectedClassesOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({ClassBody:l=>{if(l.body.length>1){let n=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1,groups:["property","constructor","method","unknown"]}),a=s.getSourceCode(),u=l.body.map(t=>{var d;let e,{getGroup:o,defineGroup:r}=G(n.groups);t.type==="StaticBlock"?e="static":t.type==="TSIndexSignature"?e=a.text.slice(t.range.at(0),((d=t.typeAnnotation)==null?void 0:d.range.at(0))??t.range.at(1)):t.key.type==="Identifier"?{name:e}=t.key:e=a.text.slice(...t.key.range);let c=e.startsWith("_")||e.startsWith("#");return t.type==="MethodDefinition"?(t.kind==="constructor"&&r("constructor"),(t.accessibility==="private"||c)&&r("private-method"),t.static&&r("static-method"),t.kind==="get"&&r("get-method"),t.kind==="set"&&r("set-method"),r("method")):t.type==="TSIndexSignature"?r("index-signature"):t.type==="PropertyDefinition"&&((t.accessibility==="private"||c)&&r("private-property"),t.static&&r("static-property"),r("property")),{size:w(t.range),group:o(),node:t,name:e}});C(u,(t,e)=>{let o=x(n.groups,t),r=x(n.groups,e);t.name!==e.name&&(o>r||o===r&&j(I(t,e,n)))&&s.report({messageId:"unexpectedClassesOrder",data:{left:O(t.name),right:O(e.name)},node:e.node,fix:c=>{let d=[],y=u.reduce((g,p)=>{let h=x(n.groups,p);return h in g?g[h]=A([...g[h],p],n):g[h]=[p],g},{}),m=Object.keys(y).sort().reduce((g,p)=>[...g,...y[p]],[]);for(let g=0,p=m.length;g<p;g++)d.push(c.replaceTextRange(L(u.at(g).node,a),a.text.slice(...L(m.at(g).node,a))));return d}})})}}})}),se="sort-enums",Ne=v({name:se,meta:{type:"suggestion",docs:{description:"enforce sorted TypeScript enums"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},"ignore-case":{type:"boolean",default:!1},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"}},additionalProperties:!1}],messages:{unexpectedEnumsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({TSEnumDeclaration:l=>{if(l.members.length>1&&l.members.every(({initializer:n})=>n)){let n=k(s.options.at(0),{type:i.alphabetical,order:f.asc,"ignore-case":!1}),a=s.getSourceCode(),u=l.members.map(t=>({name:t.id.type==="Literal"?`${t.id.value}`:`${a.text.slice(...t.id.range)}`,size:w(t.range),node:t}));C(u,(t,e)=>{j(I(t,e,n))&&s.report({messageId:"unexpectedEnumsOrder",data:{left:O(t.name),right:O(e.name)},node:e.node,fix:o=>P(o,u,A(u,n),a)})})}}})}),ae="sort-maps",Ie=v({name:ae,meta:{type:"suggestion",docs:{description:"enforce sorted Map elements"},fixable:"code",schema:[{type:"object",properties:{type:{enum:[i.alphabetical,i.natural,i["line-length"]],default:i.alphabetical,type:"string"},order:{enum:[f.asc,f.desc],default:f.asc,type:"string"},"ignore-case":{type:"boolean",default:!1}},additionalProperties:!1}],messages:{unexpectedMapElementsOrder:'Expected "{{right}}" to come before "{{left}}"'}},defaultOptions:[{type:i.alphabetical,order:f.asc}],create:s=>({NewExpression:l=>{if(l.callee.type==="Identifier"&&l.callee.name==="Map"&&l.arguments.length&&l.arguments[0].type==="ArrayExpression"){let[{elements:n}]=l.arguments;if(n.length>1){let a=k(s.options.at(0),{type:i.alphabetical,"ignore-case":!1,order:f.asc}),u=s.getSourceCode(),t=n.reduce((e,o)=>(o===null||o.type==="SpreadElement"?e.push([]):e.at(-1).push(o),e),[[]]);for(let e of t){let o=e.map(r=>{let c;if(r.type==="ArrayExpression"){let[d]=r.elements;d?d.type==="Literal"?c=d.raw:c=u.text.slice(...d.range):c=`${d}`}else c=u.text.slice(...r.range);return{size:w(r.range),node:r,name:c}});C(o,(r,c)=>{j(I(r,c,a))&&s.report({messageId:"unexpectedMapElementsOrder",data:{left:O(r.name),right:O(c.name)},node:c.node,fix:d=>P(d,o,A(o,a),u)})})}}}}})}),Oe="eslint-plugin-perfectionist";let z=s=>{let l={[ee]:["error",{groups:["type",["builtin","external"],"internal-type","internal",["parent-type","sibling-type","index-type"],["parent","sibling","index"],"object","unknown"],"custom-groups":{value:{},type:{}},"newlines-between":"always","internal-pattern":["~/**"]}],[re]:["error",{groups:["index-signature","static-property","private-property","property","constructor","static-method","private-method","method",["get-method","set-method"],"unknown"]}],[te]:["error",{"partition-by-comment":!1}],[J]:["error",{"spread-last":!0}],[V]:["error"],[W]:["error"],[X]:["error"],[q]:["error"],[K]:["error"],[F]:["error"],[H]:["error"],[Q]:["error"],[Y]:["error"],[Z]:["error"],[se]:["error"],[ae]:["error"]};return{rules:Object.fromEntries(Object.entries(l).map(([n,[a,u={}]])=>[`perfectionist/${n}`,[a,Object.assign(u,s)]])),plugins:["perfectionist"]}};const ve={rules:{[J]:ce,[W]:ue,[re]:Ae,[se]:Ne,[Z]:xe,[ee]:Ee,[Q]:he,[Y]:be,[ae]:Ie,[q]:fe,[K]:ge,[F]:ye,[te]:Se,[V]:pe,[H]:me,[X]:de},configs:{"recommended-alphabetical":z({type:i.alphabetical,order:f.asc,"ignore-case":!1}),"recommended-natural":z({type:i.natural,order:f.asc,"ignore-case":!1}),"recommended-line-length":z({type:i["line-length"],order:f.desc})},name:Oe};module.exports=ve;