@devup-ui/eslint-plugin 1.0.0 → 1.0.2

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";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../rules/css-utils-literal-only/index.cjs"),s=require("../rules/no-duplicate-value/index.cjs"),l=require("../rules/no-useless-responsive/index.cjs"),u=require("../rules/no-useless-tailing-nulls/index.cjs"),i=[{plugins:{"@devup-ui":{rules:{"no-useless-tailing-nulls":u.noUselessTailingNulls,"css-utils-literal-only":e.cssUtilsLiteralOnly,"no-duplicate-value":s.noDuplicateValue,"no-useless-responsive":l.noUselessResponsive}}},rules:{"@devup-ui/no-useless-tailing-nulls":"error","@devup-ui/css-utils-literal-only":"error","@devup-ui/no-duplicate-value":"error","@devup-ui/no-useless-responsive":"error"}}];exports.default=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../rules/css-utils-literal-only/index.cjs"),s=require("../rules/no-duplicate-value/index.cjs"),r=require("../rules/no-useless-responsive/index.cjs"),l=require("../rules/no-useless-tailing-nulls/index.cjs"),u=require("../rules/style-order-range/index.cjs"),i=[{plugins:{"@devup-ui":{rules:{"no-useless-tailing-nulls":l.noUselessTailingNulls,"css-utils-literal-only":e.cssUtilsLiteralOnly,"no-duplicate-value":s.noDuplicateValue,"no-useless-responsive":r.noUselessResponsive,"style-order-range":u.styleOrderRange}}},rules:{"@devup-ui/no-useless-tailing-nulls":"error","@devup-ui/css-utils-literal-only":"error","@devup-ui/no-duplicate-value":"error","@devup-ui/no-useless-responsive":"error","@devup-ui/style-order-range":"error"}}];exports.default=i;
@@ -7,6 +7,7 @@ declare const _default: {
7
7
  'css-utils-literal-only': RuleModule<"cssUtilsLiteralOnly", [], unknown, RuleListener>;
8
8
  'no-duplicate-value': RuleModule<"duplicateValue", [], unknown, RuleListener>;
9
9
  'no-useless-responsive': RuleModule<"uselessResponsive", [], unknown, RuleListener>;
10
+ 'style-order-range': RuleModule<"styleOrderRange", [], unknown, RuleListener>;
10
11
  };
11
12
  };
12
13
  };
@@ -15,6 +16,7 @@ declare const _default: {
15
16
  '@devup-ui/css-utils-literal-only': string;
16
17
  '@devup-ui/no-duplicate-value': string;
17
18
  '@devup-ui/no-useless-responsive': string;
19
+ '@devup-ui/style-order-range': string;
18
20
  };
19
21
  }[];
20
22
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/configs/recommended.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,wBAmBC"}
1
+ {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/configs/recommended.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,wBAqBC"}
@@ -1,16 +1,18 @@
1
1
  import { cssUtilsLiteralOnly as e } from "../rules/css-utils-literal-only/index.js";
2
2
  import { noDuplicateValue as s } from "../rules/no-duplicate-value/index.js";
3
- import { noUselessResponsive as l } from "../rules/no-useless-responsive/index.js";
4
- import { noUselessTailingNulls as o } from "../rules/no-useless-tailing-nulls/index.js";
5
- const t = [
3
+ import { noUselessResponsive as r } from "../rules/no-useless-responsive/index.js";
4
+ import { noUselessTailingNulls as l } from "../rules/no-useless-tailing-nulls/index.js";
5
+ import { styleOrderRange as o } from "../rules/style-order-range/index.js";
6
+ const a = [
6
7
  {
7
8
  plugins: {
8
9
  "@devup-ui": {
9
10
  rules: {
10
- "no-useless-tailing-nulls": o,
11
+ "no-useless-tailing-nulls": l,
11
12
  "css-utils-literal-only": e,
12
13
  "no-duplicate-value": s,
13
- "no-useless-responsive": l
14
+ "no-useless-responsive": r,
15
+ "style-order-range": o
14
16
  }
15
17
  }
16
18
  },
@@ -18,10 +20,11 @@ const t = [
18
20
  "@devup-ui/no-useless-tailing-nulls": "error",
19
21
  "@devup-ui/css-utils-literal-only": "error",
20
22
  "@devup-ui/no-duplicate-value": "error",
21
- "@devup-ui/no-useless-responsive": "error"
23
+ "@devup-ui/no-useless-responsive": "error",
24
+ "@devup-ui/style-order-range": "error"
22
25
  }
23
26
  }
24
27
  ];
25
28
  export {
26
- t as default
29
+ a as default
27
30
  };
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export declare const configs: {
9
9
  'css-utils-literal-only': RuleModule<"cssUtilsLiteralOnly", [], unknown, RuleListener>;
10
10
  'no-duplicate-value': RuleModule<"duplicateValue", [], unknown, RuleListener>;
11
11
  'no-useless-responsive': RuleModule<"uselessResponsive", [], unknown, RuleListener>;
12
+ 'style-order-range': RuleModule<"styleOrderRange", [], unknown, RuleListener>;
12
13
  };
13
14
  };
14
15
  };
@@ -17,6 +18,7 @@ export declare const configs: {
17
18
  '@devup-ui/css-utils-literal-only': string;
18
19
  '@devup-ui/no-duplicate-value': string;
19
20
  '@devup-ui/no-useless-responsive': string;
21
+ '@devup-ui/style-order-range': string;
20
22
  };
21
23
  }[];
22
24
  };
@@ -30,6 +32,7 @@ declare const _default: {
30
32
  'css-utils-literal-only': RuleModule<"cssUtilsLiteralOnly", [], unknown, RuleListener>;
31
33
  'no-duplicate-value': RuleModule<"duplicateValue", [], unknown, RuleListener>;
32
34
  'no-useless-responsive': RuleModule<"uselessResponsive", [], unknown, RuleListener>;
35
+ 'style-order-range': RuleModule<"styleOrderRange", [], unknown, RuleListener>;
33
36
  };
34
37
  };
35
38
  };
@@ -38,6 +41,7 @@ declare const _default: {
38
41
  '@devup-ui/css-utils-literal-only': string;
39
42
  '@devup-ui/no-duplicate-value': string;
40
43
  '@devup-ui/no-useless-responsive': string;
44
+ '@devup-ui/style-order-range': string;
41
45
  };
42
46
  }[];
43
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;CAEnB,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAEC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;CAEnB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAEC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./css-utils-literal-only/index.cjs"),s=require("./no-duplicate-value/index.cjs"),i=require("./no-useless-responsive/index.cjs"),l=require("./no-useless-tailing-nulls/index.cjs");exports.cssUtilsLiteralOnly=e.cssUtilsLiteralOnly;exports.noDuplicateValue=s.noDuplicateValue;exports.noUselessResponsive=i.noUselessResponsive;exports.noUselessTailingNulls=l.noUselessTailingNulls;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./css-utils-literal-only/index.cjs"),s=require("./no-duplicate-value/index.cjs"),n=require("./no-useless-responsive/index.cjs"),i=require("./no-useless-tailing-nulls/index.cjs"),l=require("./style-order-range/index.cjs");exports.cssUtilsLiteralOnly=e.cssUtilsLiteralOnly;exports.noDuplicateValue=s.noDuplicateValue;exports.noUselessResponsive=n.noUselessResponsive;exports.noUselessTailingNulls=i.noUselessTailingNulls;exports.styleOrderRange=l.styleOrderRange;
@@ -2,4 +2,5 @@ export * from './css-utils-literal-only';
2
2
  export * from './no-duplicate-value';
3
3
  export * from './no-useless-responsive';
4
4
  export * from './no-useless-tailing-nulls';
5
+ export * from './style-order-range';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA"}
@@ -1,10 +1,12 @@
1
- import { cssUtilsLiteralOnly as s } from "./css-utils-literal-only/index.js";
2
- import { noDuplicateValue as r } from "./no-duplicate-value/index.js";
3
- import { noUselessResponsive as i } from "./no-useless-responsive/index.js";
4
- import { noUselessTailingNulls as p } from "./no-useless-tailing-nulls/index.js";
1
+ import { cssUtilsLiteralOnly as r } from "./css-utils-literal-only/index.js";
2
+ import { noDuplicateValue as l } from "./no-duplicate-value/index.js";
3
+ import { noUselessResponsive as n } from "./no-useless-responsive/index.js";
4
+ import { noUselessTailingNulls as i } from "./no-useless-tailing-nulls/index.js";
5
+ import { styleOrderRange as f } from "./style-order-range/index.js";
5
6
  export {
6
- s as cssUtilsLiteralOnly,
7
- r as noDuplicateValue,
8
- i as noUselessResponsive,
9
- p as noUselessTailingNulls
7
+ r as cssUtilsLiteralOnly,
8
+ l as noDuplicateValue,
9
+ n as noUselessResponsive,
10
+ i as noUselessTailingNulls,
11
+ f as styleOrderRange
10
12
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@typescript-eslint/utils"),r=require("../../utils/import-storage.cjs"),c=u.ESLintUtils.RuleCreator(l=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`);function s(l,a){for(let t=0;t<l.elements.length;t++){const e=l.elements[t];if((e==null?void 0:e.type)===u.AST_NODE_TYPES.Literal){if(t===0)continue;const i=l.elements[t-1];(i==null?void 0:i.type)===u.AST_NODE_TYPES.Literal&&e.value===i.value&&e.value!==null&&a.report({node:l,messageId:"duplicateValue",data:{value:e.value},fix(n){return n.replaceText(e,"null")}})}}}const o=c({name:"no-duplicate-value",defaultOptions:[],meta:{schema:[],messages:{duplicateValue:"Duplicate value found: {{value}}."},type:"problem",fixable:"code",docs:{description:"No duplicate value."}},create(l){const a=new r.ImportStorage;let t=null;return{ImportDeclaration(e){a.addImportByDeclaration(e)},CallExpression(e){a.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===u.AST_NODE_TYPES.ObjectExpression&&(t=e)},"CallExpression:exit"(e){t===e&&(t=null)},JSXOpeningElement(e){a.checkContextType(e)==="COMPONENT"&&(t=e)},"JSXOpeningElement:exit"(e){t===e&&(t=null)},ArrayExpression(e){t&&s(e,l)}}}});exports.noDuplicateValue=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@typescript-eslint/utils"),r=require("../../utils/import-storage.cjs"),c=i.ESLintUtils.RuleCreator(l=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`);function s(l,a){for(let t=0;t<l.elements.length;t++){const e=l.elements[t];if(e?.type===i.AST_NODE_TYPES.Literal){if(t===0)continue;const n=l.elements[t-1];n?.type===i.AST_NODE_TYPES.Literal&&e.value===n.value&&e.value!==null&&a.report({node:l,messageId:"duplicateValue",data:{value:e.value},fix(u){return u.replaceText(e,"null")}})}}}const o=c({name:"no-duplicate-value",defaultOptions:[],meta:{schema:[],messages:{duplicateValue:"Duplicate value found: {{value}}."},type:"problem",fixable:"code",docs:{description:"No duplicate value."}},create(l){const a=new r.ImportStorage;let t=null;return{ImportDeclaration(e){a.addImportByDeclaration(e)},CallExpression(e){a.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===i.AST_NODE_TYPES.ObjectExpression&&(t=e)},"CallExpression:exit"(e){t===e&&(t=null)},JSXOpeningElement(e){a.checkContextType(e)==="COMPONENT"&&(t=e)},"JSXOpeningElement:exit"(e){t===e&&(t=null)},ArrayExpression(e){t&&s(e,l)}}}});exports.noDuplicateValue=o;
@@ -1,22 +1,22 @@
1
- import { ESLintUtils as r, AST_NODE_TYPES as u } from "@typescript-eslint/utils";
1
+ import { ESLintUtils as u, AST_NODE_TYPES as i } from "@typescript-eslint/utils";
2
2
  import { ImportStorage as p } from "../../utils/import-storage.js";
3
- const c = r.RuleCreator(
3
+ const c = u.RuleCreator(
4
4
  (l) => `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`
5
5
  );
6
6
  function o(l, a) {
7
7
  for (let t = 0; t < l.elements.length; t++) {
8
8
  const e = l.elements[t];
9
- if ((e == null ? void 0 : e.type) === u.Literal) {
9
+ if (e?.type === i.Literal) {
10
10
  if (t === 0) continue;
11
- const i = l.elements[t - 1];
12
- (i == null ? void 0 : i.type) === u.Literal && e.value === i.value && e.value !== null && a.report({
11
+ const n = l.elements[t - 1];
12
+ n?.type === i.Literal && e.value === n.value && e.value !== null && a.report({
13
13
  node: l,
14
14
  messageId: "duplicateValue",
15
15
  data: {
16
16
  value: e.value
17
17
  },
18
- fix(n) {
19
- return n.replaceText(e, "null");
18
+ fix(r) {
19
+ return r.replaceText(e, "null");
20
20
  }
21
21
  });
22
22
  }
@@ -44,7 +44,7 @@ const f = c({
44
44
  a.addImportByDeclaration(e);
45
45
  },
46
46
  CallExpression(e) {
47
- a.checkContextType(e) === "UTIL" && e.arguments.length === 1 && e.arguments[0].type === u.ObjectExpression && (t = e);
47
+ a.checkContextType(e) === "UTIL" && e.arguments.length === 1 && e.arguments[0].type === i.ObjectExpression && (t = e);
48
48
  },
49
49
  "CallExpression:exit"(e) {
50
50
  t === e && (t = null);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@typescript-eslint/utils"),o=require("../../utils/import-storage.cjs"),l=r.ESLintUtils.RuleCreator(t=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${t}`);function a(t,n,s){if(t.elements.length!==1)return;const e=t.elements[0];for(const i of n)switch(i.type){case r.AST_NODE_TYPES.ConditionalExpression:if(n.indexOf(i.test)!==-1)return;break;case r.AST_NODE_TYPES.JSXExpressionContainer:case r.AST_NODE_TYPES.Property:case r.AST_NODE_TYPES.JSXOpeningElement:case r.AST_NODE_TYPES.CallExpression:case r.AST_NODE_TYPES.ObjectExpression:case r.AST_NODE_TYPES.JSXAttribute:break;default:return}s.report({node:t,messageId:"uselessResponsive",fix(i){return i.replaceText(t,s.sourceCode.getText(e))}})}const c=l({name:"no-useless-responsive",defaultOptions:[],meta:{schema:[],messages:{uselessResponsive:"Responsive are useless. Remove them."},type:"problem",fixable:"code",docs:{description:"No useless responsive."}},create(t){const n=new o.ImportStorage;let s=null;return{ImportDeclaration(e){n.addImportByDeclaration(e)},CallExpression(e){n.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===r.AST_NODE_TYPES.ObjectExpression&&(s=e)},"CallExpression:exit"(e){s===e&&(s=null)},JSXOpeningElement(e){n.checkContextType(e)==="COMPONENT"&&(s=e)},"JSXOpeningElement:exit"(e){s===e&&(s=null)},ArrayExpression(e){s&&a(e,t.sourceCode.getAncestors(e).slice(t.sourceCode.getAncestors(s).length),t)}}}});exports.noUselessResponsive=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@typescript-eslint/utils"),o=require("../../utils/import-storage.cjs"),l=r.ESLintUtils.RuleCreator(t=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${t}`);function a(t,n,s){if(t.elements.length!==1)return;const e=t.elements[0];for(const i of n)switch(i.type){case r.AST_NODE_TYPES.ConditionalExpression:if(n.indexOf(i.test)!==-1)return;break;case r.AST_NODE_TYPES.JSXExpressionContainer:case r.AST_NODE_TYPES.Property:case r.AST_NODE_TYPES.JSXOpeningElement:case r.AST_NODE_TYPES.CallExpression:case r.AST_NODE_TYPES.ObjectExpression:case r.AST_NODE_TYPES.JSXAttribute:break;default:return}s.report({node:t,messageId:"uselessResponsive",fix(i){return i.replaceText(t,s.sourceCode.getText(e))}})}const p=l({name:"no-useless-responsive",defaultOptions:[],meta:{schema:[],messages:{uselessResponsive:"Responsive are useless. Remove them."},type:"problem",fixable:"code",docs:{description:"No useless responsive."}},create(t){const n=new o.ImportStorage;let s=null;return{ImportDeclaration(e){n.addImportByDeclaration(e)},CallExpression(e){n.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===r.AST_NODE_TYPES.ObjectExpression&&(s=e)},"CallExpression:exit"(e){s===e&&(s=null)},JSXOpeningElement(e){n.checkContextType(e)==="COMPONENT"&&(s=e)},"JSXOpeningElement:exit"(e){s===e&&(s=null)},Property(e){s&&e.key.type===r.AST_NODE_TYPES.Identifier&&e.key.name==="imports"&&(s=null)},ArrayExpression(e){s&&a(e,t.sourceCode.getAncestors(e).slice(t.sourceCode.getAncestors(s).length),t)}}}});exports.noUselessResponsive=p;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/no-useless-responsive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAA;AA4CjC,eAAO,MAAM,mBAAmB,oFA4D9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/no-useless-responsive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAA;AA4CjC,eAAO,MAAM,mBAAmB,oFAqE9B,CAAA"}
@@ -62,6 +62,9 @@ const m = p({
62
62
  "JSXOpeningElement:exit"(e) {
63
63
  s === e && (s = null);
64
64
  },
65
+ Property(e) {
66
+ s && e.key.type === r.Identifier && e.key.name === "imports" && (s = null);
67
+ },
65
68
  ArrayExpression(e) {
66
69
  s && a(
67
70
  e,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@typescript-eslint/utils"),r=require("../../utils/import-storage.cjs"),a=i.ESLintUtils.RuleCreator(l=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`);function u(l,n){let t=0;for(let e=l.elements.length-1;e>=0;e--){const s=l.elements[e];if((s==null?void 0:s.type)===i.AST_NODE_TYPES.Literal&&s.value===null)t++;else break}t!==0&&n.report({node:l,messageId:"uselessTailingNulls",fix(e){return e.removeRange([l.elements.length>t?l.elements[l.elements.length-t-1].range[1]:l.elements[0].range[0],l.elements[l.elements.length-1].range[1]])}})}const g=a({name:"no-useless-tailing-nulls",defaultOptions:[],meta:{schema:[],messages:{uselessTailingNulls:"Trailing nulls are useless. Remove them."},type:"problem",fixable:"code",docs:{description:"No useless tailing nulls."}},create(l){const n=new r.ImportStorage;let t=null;return{ImportDeclaration(e){n.addImportByDeclaration(e)},CallExpression(e){n.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===i.AST_NODE_TYPES.ObjectExpression&&(t=e)},"CallExpression:exit"(e){t===e&&(t=null)},JSXOpeningElement(e){n.checkContextType(e)==="COMPONENT"&&(t=e)},"JSXOpeningElement:exit"(e){t===e&&(t=null)},ArrayExpression(e){var s;t&&((s=e.parent)==null?void 0:s.type)!==i.AST_NODE_TYPES.MemberExpression&&u(e,l)}}}});exports.noUselessTailingNulls=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@typescript-eslint/utils"),r=require("../../utils/import-storage.cjs"),a=n.ESLintUtils.RuleCreator(l=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`);function u(l,s){let t=0;for(let e=l.elements.length-1;e>=0;e--){const i=l.elements[e];if(i?.type===n.AST_NODE_TYPES.Literal&&i.value===null)t++;else break}t!==0&&s.report({node:l,messageId:"uselessTailingNulls",fix(e){return e.removeRange([l.elements.length>t?l.elements[l.elements.length-t-1].range[1]:l.elements[0].range[0],l.elements[l.elements.length-1].range[1]])}})}const g=a({name:"no-useless-tailing-nulls",defaultOptions:[],meta:{schema:[],messages:{uselessTailingNulls:"Trailing nulls are useless. Remove them."},type:"problem",fixable:"code",docs:{description:"No useless tailing nulls."}},create(l){const s=new r.ImportStorage;let t=null;return{ImportDeclaration(e){s.addImportByDeclaration(e)},CallExpression(e){s.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===n.AST_NODE_TYPES.ObjectExpression&&(t=e)},"CallExpression:exit"(e){t===e&&(t=null)},JSXOpeningElement(e){s.checkContextType(e)==="COMPONENT"&&(t=e)},"JSXOpeningElement:exit"(e){t===e&&(t=null)},ArrayExpression(e){t&&e.parent?.type!==n.AST_NODE_TYPES.MemberExpression&&u(e,l)}}}});exports.noUselessTailingNulls=g;
@@ -1,18 +1,18 @@
1
- import { ESLintUtils as r, AST_NODE_TYPES as i } from "@typescript-eslint/utils";
1
+ import { ESLintUtils as r, AST_NODE_TYPES as n } from "@typescript-eslint/utils";
2
2
  import { ImportStorage as a } from "../../utils/import-storage.js";
3
3
  const u = r.RuleCreator(
4
4
  (l) => `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${l}`
5
5
  );
6
- function m(l, n) {
6
+ function m(l, s) {
7
7
  let t = 0;
8
8
  for (let e = l.elements.length - 1; e >= 0; e--) {
9
- const s = l.elements[e];
10
- if ((s == null ? void 0 : s.type) === i.Literal && s.value === null)
9
+ const i = l.elements[e];
10
+ if (i?.type === n.Literal && i.value === null)
11
11
  t++;
12
12
  else
13
13
  break;
14
14
  }
15
- t !== 0 && n.report({
15
+ t !== 0 && s.report({
16
16
  node: l,
17
17
  messageId: "uselessTailingNulls",
18
18
  fix(e) {
@@ -38,27 +38,26 @@ const o = u({
38
38
  }
39
39
  },
40
40
  create(l) {
41
- const n = new a();
41
+ const s = new a();
42
42
  let t = null;
43
43
  return {
44
44
  ImportDeclaration(e) {
45
- n.addImportByDeclaration(e);
45
+ s.addImportByDeclaration(e);
46
46
  },
47
47
  CallExpression(e) {
48
- n.checkContextType(e) === "UTIL" && e.arguments.length === 1 && e.arguments[0].type === i.ObjectExpression && (t = e);
48
+ s.checkContextType(e) === "UTIL" && e.arguments.length === 1 && e.arguments[0].type === n.ObjectExpression && (t = e);
49
49
  },
50
50
  "CallExpression:exit"(e) {
51
51
  t === e && (t = null);
52
52
  },
53
53
  JSXOpeningElement(e) {
54
- n.checkContextType(e) === "COMPONENT" && (t = e);
54
+ s.checkContextType(e) === "COMPONENT" && (t = e);
55
55
  },
56
56
  "JSXOpeningElement:exit"(e) {
57
57
  t === e && (t = null);
58
58
  },
59
59
  ArrayExpression(e) {
60
- var s;
61
- t && ((s = e.parent) == null ? void 0 : s.type) !== i.MemberExpression && m(e, l);
60
+ t && e.parent?.type !== n.MemberExpression && m(e, l);
62
61
  }
63
62
  };
64
63
  }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@typescript-eslint/utils"),u=require("../../utils/import-storage.cjs"),s=a.ESLintUtils.RuleCreator(t=>`https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${t}`);function i(t,l){let r=null;if(t.type===a.AST_NODE_TYPES.Literal){if(typeof t.value=="number")r=t.value;else if(typeof t.value=="string"){const e=parseInt(t.value,10);isNaN(e)||(r=e)}}else if(t.type===a.AST_NODE_TYPES.UnaryExpression)if(t.argument.type===a.AST_NODE_TYPES.Literal&&typeof t.argument.value=="number"&&(t.operator==="-"||t.operator==="+"))r=t.operator==="-"?-t.argument.value:t.argument.value;else{l.report({node:t,messageId:"styleOrderRange"});return}else if(t.type===a.AST_NODE_TYPES.TemplateLiteral){if(t.expressions.length>0){l.report({node:t,messageId:"styleOrderRange"});return}else if(r=parseInt(t.quasis[0].value.raw,10),isNaN(r)){l.report({node:t,messageId:"styleOrderRange"});return}}(r===null||r<1||r>254)&&l.report({node:t,messageId:"styleOrderRange"})}const p=s({name:"style-order-range",defaultOptions:[],meta:{schema:[],messages:{styleOrderRange:"styleOrder prop must be a number greater than 0 and less than 255."},type:"problem",docs:{description:"Ensures styleOrder prop is within valid range (0 < value < 255)."}},create(t){const l=new u.ImportStorage;let r=null;return{ImportDeclaration(e){l.addImportByDeclaration(e)},CallExpression(e){l.checkContextType(e)==="UTIL"&&e.arguments.length===1&&e.arguments[0].type===a.AST_NODE_TYPES.ObjectExpression&&(r=e)},"CallExpression:exit"(e){r===e&&(r=null)},Property(e){if(r&&e.key.type===a.AST_NODE_TYPES.Identifier&&e.key.name==="styleOrder"){const n=e.value;n.type!==a.AST_NODE_TYPES.AssignmentPattern&&n.type!==a.AST_NODE_TYPES.TSEmptyBodyFunctionExpression&&i(n,t)}},JSXOpeningElement(e){l.checkContextType(e)==="COMPONENT"&&(r=e)},"JSXOpeningElement:exit"(e){r===e&&(r=null)},JSXAttribute(e){if(r&&!(e.name.type!==a.AST_NODE_TYPES.JSXIdentifier||e.name.name!=="styleOrder"||!e.value))if(e.value.type===a.AST_NODE_TYPES.JSXExpressionContainer){const n=e.value.expression;n.type!==a.AST_NODE_TYPES.JSXEmptyExpression&&i(n,t)}else e.value.type===a.AST_NODE_TYPES.Literal&&i(e.value,t)}}}});exports.styleOrderRange=p;
@@ -0,0 +1,3 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const styleOrderRange: ESLintUtils.RuleModule<"styleOrderRange", [], unknown, ESLintUtils.RuleListener>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/style-order-range/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEZ,MAAM,0BAA0B,CAAA;AAuEjC,eAAO,MAAM,eAAe,kFAuF1B,CAAA"}
@@ -0,0 +1,95 @@
1
+ import { ESLintUtils as u, AST_NODE_TYPES as a } from "@typescript-eslint/utils";
2
+ import { ImportStorage as s } from "../../utils/import-storage.js";
3
+ const p = u.RuleCreator(
4
+ (t) => `https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/${t}`
5
+ );
6
+ function i(t, l) {
7
+ let r = null;
8
+ if (t.type === a.Literal) {
9
+ if (typeof t.value == "number")
10
+ r = t.value;
11
+ else if (typeof t.value == "string") {
12
+ const e = parseInt(t.value, 10);
13
+ isNaN(e) || (r = e);
14
+ }
15
+ } else if (t.type === a.UnaryExpression)
16
+ if (t.argument.type === a.Literal && typeof t.argument.value == "number" && (t.operator === "-" || t.operator === "+"))
17
+ r = t.operator === "-" ? -t.argument.value : t.argument.value;
18
+ else {
19
+ l.report({
20
+ node: t,
21
+ messageId: "styleOrderRange"
22
+ });
23
+ return;
24
+ }
25
+ else if (t.type === a.TemplateLiteral) {
26
+ if (t.expressions.length > 0) {
27
+ l.report({
28
+ node: t,
29
+ messageId: "styleOrderRange"
30
+ });
31
+ return;
32
+ } else if (r = parseInt(t.quasis[0].value.raw, 10), isNaN(r)) {
33
+ l.report({
34
+ node: t,
35
+ messageId: "styleOrderRange"
36
+ });
37
+ return;
38
+ }
39
+ }
40
+ (r === null || r < 1 || r > 254) && l.report({
41
+ node: t,
42
+ messageId: "styleOrderRange"
43
+ });
44
+ }
45
+ const g = p({
46
+ name: "style-order-range",
47
+ defaultOptions: [],
48
+ meta: {
49
+ schema: [],
50
+ messages: {
51
+ styleOrderRange: "styleOrder prop must be a number greater than 0 and less than 255."
52
+ },
53
+ type: "problem",
54
+ docs: {
55
+ description: "Ensures styleOrder prop is within valid range (0 < value < 255)."
56
+ }
57
+ },
58
+ create(t) {
59
+ const l = new s();
60
+ let r = null;
61
+ return {
62
+ ImportDeclaration(e) {
63
+ l.addImportByDeclaration(e);
64
+ },
65
+ CallExpression(e) {
66
+ l.checkContextType(e) === "UTIL" && e.arguments.length === 1 && e.arguments[0].type === a.ObjectExpression && (r = e);
67
+ },
68
+ "CallExpression:exit"(e) {
69
+ r === e && (r = null);
70
+ },
71
+ Property(e) {
72
+ if (r && e.key.type === a.Identifier && e.key.name === "styleOrder") {
73
+ const n = e.value;
74
+ n.type !== a.AssignmentPattern && n.type !== a.TSEmptyBodyFunctionExpression && i(n, t);
75
+ }
76
+ },
77
+ JSXOpeningElement(e) {
78
+ l.checkContextType(e) === "COMPONENT" && (r = e);
79
+ },
80
+ "JSXOpeningElement:exit"(e) {
81
+ r === e && (r = null);
82
+ },
83
+ JSXAttribute(e) {
84
+ if (r && !(e.name.type !== a.JSXIdentifier || e.name.name !== "styleOrder" || !e.value))
85
+ if (e.value.type === a.JSXExpressionContainer) {
86
+ const n = e.value.expression;
87
+ n.type !== a.JSXEmptyExpression && i(n, t);
88
+ } else e.value.type === a.Literal && i(e.value, t);
89
+ }
90
+ };
91
+ }
92
+ });
93
+ export {
94
+ g as styleOrderRange
95
+ };
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var s=(i,e,t)=>e in i?c(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var a=(i,e,t)=>s(i,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@typescript-eslint/utils"),p={css:"css",globalCss:"globalCss",keyframes:"keyframes",Box:"Box",Button:"Button",Text:"Text",Image:"Image",Flex:"Flex",Grid:"Grid",Center:"Center",VStack:"VStack",Input:"Input"};class o{constructor(){a(this,"imports",{});a(this,"importObject",new Set)}addImportByDeclaration(e){if(e.source.value==="@devup-ui/react")for(const t of e.specifiers)switch(t.type){case r.AST_NODE_TYPES.ImportSpecifier:this.addImport(t.local.name,t.imported.type===r.AST_NODE_TYPES.Literal?t.imported.value:t.imported.name);break;case r.AST_NODE_TYPES.ImportDefaultSpecifier:this.importObject.add(t.local.name);break;case r.AST_NODE_TYPES.ImportNamespaceSpecifier:this.importObject.add(t.local.name);break}}addImport(e,t){this.imports[e]=t}checkContextType(e){switch(e.type){case r.AST_NODE_TYPES.JSXOpeningElement:{if(this.checkDevupUIComponent(e.name))return"COMPONENT";break}case r.AST_NODE_TYPES.CallExpression:{if(this.checkDevupUIUtil(e))return"UTIL";break}}}checkDevupUIUtil(e){return e.callee.type===r.AST_NODE_TYPES.Identifier&&e.callee.name in this.imports||e.callee.type===r.AST_NODE_TYPES.MemberExpression&&e.callee.object.type===r.AST_NODE_TYPES.Identifier&&this.importObject.has(e.callee.object.name)&&e.callee.property.type===r.AST_NODE_TYPES.Identifier&&e.callee.property.name in p}checkDevupUIComponent(e){return e.type===r.AST_NODE_TYPES.JSXIdentifier&&e.name in this.imports||e.type===r.AST_NODE_TYPES.JSXMemberExpression&&e.object.type===r.AST_NODE_TYPES.JSXIdentifier&&this.importObject.has(e.object.name)&&e.property.name in p}}exports.ImportStorage=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@typescript-eslint/utils"),i={css:"css",globalCss:"globalCss",keyframes:"keyframes",Box:"Box",Button:"Button",Text:"Text",Image:"Image",Flex:"Flex",Grid:"Grid",Center:"Center",VStack:"VStack",Input:"Input"};class a{imports={};importObject=new Set;addImportByDeclaration(e){if(e.source.value==="@devup-ui/react")for(const r of e.specifiers)switch(r.type){case t.AST_NODE_TYPES.ImportSpecifier:this.addImport(r.local.name,r.imported.type===t.AST_NODE_TYPES.Literal?r.imported.value:r.imported.name);break;case t.AST_NODE_TYPES.ImportDefaultSpecifier:this.importObject.add(r.local.name);break;case t.AST_NODE_TYPES.ImportNamespaceSpecifier:this.importObject.add(r.local.name);break}}addImport(e,r){this.imports[e]=r}checkContextType(e){switch(e.type){case t.AST_NODE_TYPES.JSXOpeningElement:{if(this.checkDevupUIComponent(e.name))return"COMPONENT";break}case t.AST_NODE_TYPES.CallExpression:{if(this.checkDevupUIUtil(e))return"UTIL";break}}}checkDevupUIUtil(e){return e.callee.type===t.AST_NODE_TYPES.Identifier&&e.callee.name in this.imports||e.callee.type===t.AST_NODE_TYPES.MemberExpression&&e.callee.object.type===t.AST_NODE_TYPES.Identifier&&this.importObject.has(e.callee.object.name)&&e.callee.property.type===t.AST_NODE_TYPES.Identifier&&e.callee.property.name in i}checkDevupUIComponent(e){return e.type===t.AST_NODE_TYPES.JSXIdentifier&&e.name in this.imports||e.type===t.AST_NODE_TYPES.JSXMemberExpression&&e.object.type===t.AST_NODE_TYPES.JSXIdentifier&&this.importObject.has(e.object.name)&&e.property.name in i}}exports.ImportStorage=a;
@@ -1,8 +1,5 @@
1
- var c = Object.defineProperty;
2
- var s = (i, e, t) => e in i ? c(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
- var a = (i, e, t) => s(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { AST_NODE_TYPES as r } from "@typescript-eslint/utils";
5
- const p = {
1
+ import { AST_NODE_TYPES as t } from "@typescript-eslint/utils";
2
+ const i = {
6
3
  css: "css",
7
4
  globalCss: "globalCss",
8
5
  keyframes: "keyframes",
@@ -16,40 +13,38 @@ const p = {
16
13
  VStack: "VStack",
17
14
  Input: "Input"
18
15
  };
19
- class l {
20
- constructor() {
21
- a(this, "imports", {});
22
- a(this, "importObject", /* @__PURE__ */ new Set());
23
- }
16
+ class c {
17
+ imports = {};
18
+ importObject = /* @__PURE__ */ new Set();
24
19
  addImportByDeclaration(e) {
25
20
  if (e.source.value === "@devup-ui/react")
26
- for (const t of e.specifiers)
27
- switch (t.type) {
28
- case r.ImportSpecifier:
21
+ for (const r of e.specifiers)
22
+ switch (r.type) {
23
+ case t.ImportSpecifier:
29
24
  this.addImport(
30
- t.local.name,
31
- t.imported.type === r.Literal ? t.imported.value : t.imported.name
25
+ r.local.name,
26
+ r.imported.type === t.Literal ? r.imported.value : r.imported.name
32
27
  );
33
28
  break;
34
- case r.ImportDefaultSpecifier:
35
- this.importObject.add(t.local.name);
29
+ case t.ImportDefaultSpecifier:
30
+ this.importObject.add(r.local.name);
36
31
  break;
37
- case r.ImportNamespaceSpecifier:
38
- this.importObject.add(t.local.name);
32
+ case t.ImportNamespaceSpecifier:
33
+ this.importObject.add(r.local.name);
39
34
  break;
40
35
  }
41
36
  }
42
- addImport(e, t) {
43
- this.imports[e] = t;
37
+ addImport(e, r) {
38
+ this.imports[e] = r;
44
39
  }
45
40
  checkContextType(e) {
46
41
  switch (e.type) {
47
- case r.JSXOpeningElement: {
42
+ case t.JSXOpeningElement: {
48
43
  if (this.checkDevupUIComponent(e.name))
49
44
  return "COMPONENT";
50
45
  break;
51
46
  }
52
- case r.CallExpression: {
47
+ case t.CallExpression: {
53
48
  if (this.checkDevupUIUtil(e))
54
49
  return "UTIL";
55
50
  break;
@@ -57,12 +52,12 @@ class l {
57
52
  }
58
53
  }
59
54
  checkDevupUIUtil(e) {
60
- return e.callee.type === r.Identifier && e.callee.name in this.imports || e.callee.type === r.MemberExpression && e.callee.object.type === r.Identifier && this.importObject.has(e.callee.object.name) && e.callee.property.type === r.Identifier && e.callee.property.name in p;
55
+ return e.callee.type === t.Identifier && e.callee.name in this.imports || e.callee.type === t.MemberExpression && e.callee.object.type === t.Identifier && this.importObject.has(e.callee.object.name) && e.callee.property.type === t.Identifier && e.callee.property.name in i;
61
56
  }
62
57
  checkDevupUIComponent(e) {
63
- return e.type === r.JSXIdentifier && e.name in this.imports || e.type === r.JSXMemberExpression && e.object.type === r.JSXIdentifier && this.importObject.has(e.object.name) && e.property.name in p;
58
+ return e.type === t.JSXIdentifier && e.name in this.imports || e.type === t.JSXMemberExpression && e.object.type === t.JSXIdentifier && this.importObject.has(e.object.name) && e.property.name in i;
64
59
  }
65
60
  }
66
61
  export {
67
- l as ImportStorage
62
+ c as ImportStorage
68
63
  };
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "react",
18
18
  "eslint"
19
19
  ],
20
- "version": "1.0.0",
20
+ "version": "1.0.2",
21
21
  "main": "dist/index.cjs",
22
22
  "type": "module",
23
23
  "publishConfig": {
@@ -34,12 +34,12 @@
34
34
  "dist"
35
35
  ],
36
36
  "dependencies": {
37
- "typescript-eslint": "^8.44",
38
- "@typescript-eslint/utils": "^8.44"
37
+ "typescript-eslint": "^8.45",
38
+ "@typescript-eslint/utils": "^8.45"
39
39
  },
40
40
  "devDependencies": {
41
- "@typescript-eslint/rule-tester": "^8.44",
42
- "typescript": "^5.9.2",
41
+ "@typescript-eslint/rule-tester": "^8.45",
42
+ "typescript": "^5.9.3",
43
43
  "vite": "^7.1.7",
44
44
  "vite-plugin-dts": "^4.5.4"
45
45
  },