eslint-plugin-complete 1.4.1 → 1.5.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.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-complete",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "An ESLint plugin that contains useful rules.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../../src/configs/recommended.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAmEnD,CAAC"}
1
+ {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../../src/configs/recommended.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAoEnD,CAAC"}
@@ -44,6 +44,7 @@ export const recommended = [
44
44
  "complete/require-capital-read-only": "error",
45
45
  "complete/require-unannotated-const-assertions": "error",
46
46
  "complete/require-variadic-function-argument": "error",
47
+ "complete/sort-destructured-properties": "error",
47
48
  "complete/strict-array-methods": "error",
48
49
  "complete/strict-enums": "error",
49
50
  "complete/strict-undefined-functions": "error",
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.js","sourceRoot":"","sources":["../../../../../src/configs/recommended.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sDAAsD;AACtD,oBAAoB;AAIpB,MAAM,CAAC,MAAM,WAAW,GAAiC;IACvD;QACE,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL,mCAAmC,EAAE,OAAO;YAC5C,2CAA2C,EAAE,OAAO;YACpD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,qBAAqB,EAAE,OAAO;YAC9B,gCAAgC,EAAE,OAAO;YACzC,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,sCAAsC,EAAE,OAAO;YAC/C,mCAAmC,EAAE,OAAO;YAC5C,yBAAyB,EAAE,OAAO;YAClC,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,qBAAqB,EAAE,OAAO;YAC9B,4BAA4B,EAAE,OAAO;YACrC,0BAA0B,EAAE,OAAO;YACnC,wBAAwB,EAAE,OAAO;YACjC,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,0CAA0C,EAAE,OAAO;YACnD,mCAAmC,EAAE,OAAO;YAC5C,oCAAoC,EAAE,OAAO;YAC7C,6BAA6B,EAAE,OAAO;YACtC,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,uBAAuB,EAAE,OAAO;YAChC,0BAA0B,EAAE,OAAO;YACnC,8BAA8B,EAAE,OAAO;YACvC,0BAA0B,EAAE,OAAO;YACnC,kCAAkC,EAAE,OAAO;YAC3C,0CAA0C,EAAE,OAAO;YACnD,wBAAwB,EAAE,OAAO;YACjC,wBAAwB,EAAE,OAAO;YACjC,2CAA2C,EAAE,OAAO;YACpD,oCAAoC,EAAE,OAAO;YAC7C,+CAA+C,EAAE,OAAO;YACxD,6CAA6C,EAAE,OAAO;YACtD,+BAA+B,EAAE,OAAO;YACxC,uBAAuB,EAAE,OAAO;YAChC,qCAAqC,EAAE,OAAO;YAC9C,gCAAgC,EAAE,OAAO;SAC1C;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,qBAAqB,CAAC;KAC5D;IACD;QACE,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;YACb,mBAAmB,EAAE,KAAK;YAC1B,6BAA6B,EAAE,KAAK;YACpC,cAAc,EAAE,KAAK;SACtB;KACF;IACD;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QACtD,KAAK,EAAE;YACL,qBAAqB,EAAE,KAAK;YAC5B,wBAAwB,EAAE,KAAK;YAC/B,2CAA2C,EAAE,KAAK;YAClD,oCAAoC,EAAE,KAAK;SAC5C;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"recommended.js","sourceRoot":"","sources":["../../../../../src/configs/recommended.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sDAAsD;AACtD,oBAAoB;AAIpB,MAAM,CAAC,MAAM,WAAW,GAAiC;IACvD;QACE,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL,mCAAmC,EAAE,OAAO;YAC5C,2CAA2C,EAAE,OAAO;YACpD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,qBAAqB,EAAE,OAAO;YAC9B,gCAAgC,EAAE,OAAO;YACzC,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,sCAAsC,EAAE,OAAO;YAC/C,mCAAmC,EAAE,OAAO;YAC5C,yBAAyB,EAAE,OAAO;YAClC,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,qBAAqB,EAAE,OAAO;YAC9B,4BAA4B,EAAE,OAAO;YACrC,0BAA0B,EAAE,OAAO;YACnC,wBAAwB,EAAE,OAAO;YACjC,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,0CAA0C,EAAE,OAAO;YACnD,mCAAmC,EAAE,OAAO;YAC5C,oCAAoC,EAAE,OAAO;YAC7C,6BAA6B,EAAE,OAAO;YACtC,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,uBAAuB,EAAE,OAAO;YAChC,0BAA0B,EAAE,OAAO;YACnC,8BAA8B,EAAE,OAAO;YACvC,0BAA0B,EAAE,OAAO;YACnC,kCAAkC,EAAE,OAAO;YAC3C,0CAA0C,EAAE,OAAO;YACnD,wBAAwB,EAAE,OAAO;YACjC,wBAAwB,EAAE,OAAO;YACjC,2CAA2C,EAAE,OAAO;YACpD,oCAAoC,EAAE,OAAO;YAC7C,+CAA+C,EAAE,OAAO;YACxD,6CAA6C,EAAE,OAAO;YACtD,uCAAuC,EAAE,OAAO;YAChD,+BAA+B,EAAE,OAAO;YACxC,uBAAuB,EAAE,OAAO;YAChC,qCAAqC,EAAE,OAAO;YAC9C,gCAAgC,EAAE,OAAO;SAC1C;QACD,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,qBAAqB,CAAC;KAC5D;IACD;QACE,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;YACb,mBAAmB,EAAE,KAAK;YAC1B,6BAA6B,EAAE,KAAK;YACpC,cAAc,EAAE,KAAK;SACtB;KACF;IACD;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QACtD,KAAK,EAAE;YACL,qBAAqB,EAAE,KAAK;YAC5B,wBAAwB,EAAE,KAAK;YAC/B,2CAA2C,EAAE,KAAK;YAClD,oCAAoC,EAAE,KAAK;SAC5C;KACF;CACF,CAAC"}
@@ -133,6 +133,9 @@ declare const plugin: {
133
133
  "require-variadic-function-argument": TSESLint.RuleModule<"noArgument", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, TSESLint.RuleListener> & {
134
134
  name: string;
135
135
  };
136
+ "sort-destructured-properties": TSESLint.RuleModule<"incorrectOrder", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, TSESLint.RuleListener> & {
137
+ name: string;
138
+ };
136
139
  "strict-array-methods": TSESLint.RuleModule<"conditionError", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, TSESLint.RuleListener> & {
137
140
  name: string;
138
141
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAQzD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOX,CAAC;AAMF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAQzD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOX,CAAC;AAMF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { TSESLint } from "@typescript-eslint/utils";
2
+ export declare const sortDestructuredProperties: TSESLint.RuleModule<"incorrectOrder", [], import("../interfaces/MyPluginDocs.js").MyPluginDocs, TSESLint.RuleListener> & {
3
+ name: string;
4
+ };
5
+ //# sourceMappingURL=sort-destructured-properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-destructured-properties.d.ts","sourceRoot":"","sources":["../../../src/rules/sort-destructured-properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAenE,eAAO,MAAM,0BAA0B;;CAmFrC,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
2
+ import { createRule } from "../utils.js";
3
+ export const sortDestructuredProperties = createRule({
4
+ name: "sort-destructured-properties",
5
+ meta: {
6
+ type: "problem",
7
+ docs: {
8
+ description: "Requires destructured object properties to match the declared type order",
9
+ recommended: true,
10
+ requiresTypeChecking: true,
11
+ },
12
+ fixable: "code",
13
+ schema: [],
14
+ messages: {
15
+ incorrectOrder: "Destructured property `{{ earlierName }}` must be before `{{ laterName }}` to match the declared type order.",
16
+ },
17
+ },
18
+ defaultOptions: [],
19
+ create(context) {
20
+ const parserServices = ESLintUtils.getParserServices(context);
21
+ const checker = parserServices.program.getTypeChecker();
22
+ const { sourceCode } = context;
23
+ return {
24
+ ObjectPattern(node) {
25
+ const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
26
+ const type = checker.getTypeAtLocation(tsNode);
27
+ const propertyOrder = getPropertyOrder(type);
28
+ if (propertyOrder.size === 0) {
29
+ return;
30
+ }
31
+ let highestSeenOrder = -1;
32
+ let highestSeenName;
33
+ for (const property of node.properties) {
34
+ if (property.type === AST_NODE_TYPES.RestElement) {
35
+ continue;
36
+ }
37
+ const propertyName = getPropertyName(property);
38
+ if (propertyName === undefined) {
39
+ continue;
40
+ }
41
+ const order = propertyOrder.get(propertyName);
42
+ if (order === undefined) {
43
+ continue;
44
+ }
45
+ if (order < highestSeenOrder && highestSeenName !== undefined) {
46
+ const replacement = getReplacementText(sourceCode, node, propertyOrder);
47
+ context.report({
48
+ node: property.key,
49
+ messageId: "incorrectOrder",
50
+ data: {
51
+ earlierName: propertyName,
52
+ laterName: highestSeenName,
53
+ },
54
+ ...(replacement === undefined
55
+ ? {}
56
+ : {
57
+ fix(fixer) {
58
+ const [range, replacementText] = replacement;
59
+ return fixer.replaceTextRange(range, replacementText);
60
+ },
61
+ }),
62
+ });
63
+ return;
64
+ }
65
+ highestSeenOrder = order;
66
+ highestSeenName = propertyName;
67
+ }
68
+ },
69
+ };
70
+ },
71
+ });
72
+ function getReplacementText(sourceCode, node, propertyOrder) {
73
+ const sortableProperties = [];
74
+ for (const property of node.properties) {
75
+ if (property.type === AST_NODE_TYPES.RestElement) {
76
+ continue;
77
+ }
78
+ const propertyName = getPropertyName(property);
79
+ const order = propertyName === undefined ? undefined : propertyOrder.get(propertyName);
80
+ if (order === undefined) {
81
+ return undefined;
82
+ }
83
+ sortableProperties.push({
84
+ order,
85
+ property,
86
+ });
87
+ }
88
+ const firstProperty = sortableProperties.at(0)?.property;
89
+ const lastProperty = sortableProperties.at(-1)?.property;
90
+ if (firstProperty === undefined || lastProperty === undefined) {
91
+ return undefined;
92
+ }
93
+ const range = [firstProperty.range[0], lastProperty.range[1]];
94
+ if (hasCommentInRange(sourceCode, range)) {
95
+ return undefined;
96
+ }
97
+ const replacementText = sortableProperties
98
+ .toSorted((a, b) => a.order - b.order)
99
+ .map(({ property }) => sourceCode.getText(property))
100
+ .join(", ");
101
+ return [range, replacementText];
102
+ }
103
+ function getPropertyName(property) {
104
+ if (property.computed) {
105
+ return undefined;
106
+ }
107
+ const { key } = property;
108
+ switch (key.type) {
109
+ case AST_NODE_TYPES.Identifier: {
110
+ return key.name;
111
+ }
112
+ case AST_NODE_TYPES.Literal: {
113
+ return typeof key.value === "string" ? key.value : undefined;
114
+ }
115
+ }
116
+ }
117
+ function hasCommentInRange(sourceCode, range) {
118
+ return sourceCode
119
+ .getAllComments()
120
+ .some((comment) => comment.range[0] >= range[0] && comment.range[1] <= range[1]);
121
+ }
122
+ function getPropertyOrder(type) {
123
+ const propertyOrder = new Map();
124
+ for (const [i, property] of type.getProperties().entries()) {
125
+ propertyOrder.set(property.getName(), i);
126
+ }
127
+ return propertyOrder;
128
+ }
129
+ //# sourceMappingURL=sort-destructured-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-destructured-properties.js","sourceRoot":"","sources":["../../../../../src/rules/sort-destructured-properties.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,9 @@ export declare const rules: {
124
124
  "require-variadic-function-argument": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noArgument", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
125
125
  name: string;
126
126
  };
127
+ "sort-destructured-properties": import("@typescript-eslint/utils/ts-eslint").RuleModule<"incorrectOrder", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
128
+ name: string;
129
+ };
127
130
  "strict-array-methods": import("@typescript-eslint/utils/ts-eslint").RuleModule<"conditionError", [], import("./interfaces/MyPluginDocs.js").MyPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
128
131
  name: string;
129
132
  };
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAgDA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CjB,CAAC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CjB,CAAC"}
package/dist/src/rules.js CHANGED
@@ -40,6 +40,7 @@ import { requireCapitalConstAssertions } from "./rules/require-capital-const-ass
40
40
  import { requireCapitalReadOnly } from "./rules/require-capital-read-only.js";
41
41
  import { requireUnannotatedConstAssertions } from "./rules/require-unannotated-const-assertions.js";
42
42
  import { requireVariadicFunctionArgument } from "./rules/require-variadic-function-argument.js";
43
+ import { sortDestructuredProperties } from "./rules/sort-destructured-properties.js";
43
44
  import { strictArrayMethods } from "./rules/strict-array-methods.js";
44
45
  import { strictEnums } from "./rules/strict-enums.js";
45
46
  import { strictUndefinedFunctions } from "./rules/strict-undefined-functions.js";
@@ -84,6 +85,7 @@ export const rules = {
84
85
  "require-capital-read-only": requireCapitalReadOnly,
85
86
  "require-unannotated-const-assertions": requireUnannotatedConstAssertions,
86
87
  "require-variadic-function-argument": requireVariadicFunctionArgument,
88
+ "sort-destructured-properties": sortDestructuredProperties,
87
89
  "strict-array-methods": strictArrayMethods,
88
90
  "strict-enums": strictEnums,
89
91
  "strict-undefined-functions": strictUndefinedFunctions,
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/rules.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-complete",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "An ESLint plugin that contains useful rules.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -42,23 +42,23 @@
42
42
  "test": "jest"
43
43
  },
44
44
  "dependencies": {
45
- "@typescript-eslint/type-utils": "8.58.0",
46
- "@typescript-eslint/utils": "8.58.0"
45
+ "@typescript-eslint/type-utils": "8.60.1",
46
+ "@typescript-eslint/utils": "8.60.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@babel/core": "7.29.0",
50
- "@babel/preset-env": "7.29.2",
51
- "@babel/preset-typescript": "7.28.5",
49
+ "@babel/core": "7.29.7",
50
+ "@babel/preset-env": "7.29.7",
51
+ "@babel/preset-typescript": "7.29.7",
52
52
  "@types/jest": "30.0.0",
53
- "@types/node": "25.5.0",
54
- "@typescript-eslint/rule-tester": "8.58.0",
55
- "@typescript-eslint/types": "8.58.0",
56
- "complete-common": "2.22.1",
57
- "complete-node": "16.4.0",
58
- "eslint-doc-generator": "3.3.2",
59
- "jest": "30.3.0",
60
- "prettier": "3.8.1",
61
- "typescript": "6.0.2"
53
+ "@types/node": "25.9.1",
54
+ "@typescript-eslint/rule-tester": "8.60.1",
55
+ "@typescript-eslint/types": "8.60.1",
56
+ "complete-common": "2.29.0",
57
+ "complete-node": "17.0.0",
58
+ "eslint-doc-generator": "3.6.0",
59
+ "jest": "30.4.2",
60
+ "prettier": "3.8.3",
61
+ "typescript": "6.0.3"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "eslint": ">= 9.0.0",