@blumintinc/eslint-plugin-blumint 1.14.0 → 1.16.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/README.md +36 -14
- package/lib/index.js +20 -12
- package/lib/rules/avoid-utils-directory.js +0 -4
- package/lib/rules/consistent-callback-naming.js +68 -3
- package/lib/rules/dynamic-https-errors.d.ts +1 -1
- package/lib/rules/dynamic-https-errors.js +119 -49
- package/lib/rules/enforce-boolean-naming-prefixes.d.ts +1 -0
- package/lib/rules/enforce-boolean-naming-prefixes.js +86 -331
- package/lib/rules/enforce-date-ttime.d.ts +1 -0
- package/lib/rules/enforce-date-ttime.js +156 -0
- package/lib/rules/enforce-dynamic-firebase-imports.d.ts +2 -1
- package/lib/rules/enforce-dynamic-firebase-imports.js +3 -2
- package/lib/rules/enforce-dynamic-imports.d.ts +2 -1
- package/lib/rules/enforce-dynamic-imports.js +42 -21
- package/lib/rules/enforce-f-extension-for-entry-points.d.ts +8 -0
- package/lib/rules/enforce-f-extension-for-entry-points.js +283 -0
- package/lib/rules/enforce-global-constants.js +3 -3
- package/lib/rules/enforce-id-capitalization.js +1 -1
- package/lib/rules/enforce-memoize-async.js +66 -15
- package/lib/rules/enforce-mui-rounded-icons.js +42 -1
- package/lib/rules/enforce-props-argument-name.js +42 -16
- package/lib/rules/enforce-stable-hash-spread-props.js +3 -3
- package/lib/rules/enforce-transform-memoization.js +1 -1
- package/lib/rules/enforce-verb-noun-naming.js +3817 -4641
- package/lib/rules/global-const-style.js +25 -4
- package/lib/rules/logical-top-to-bottom-grouping.js +80 -2
- package/lib/rules/memo-compare-deeply-complex-props.js +183 -6
- package/lib/rules/memo-nested-react-components.js +243 -103
- package/lib/rules/no-array-length-in-deps.js +74 -3
- package/lib/rules/no-async-foreach.js +7 -2
- package/lib/rules/no-circular-references.d.ts +2 -1
- package/lib/rules/no-circular-references.js +150 -489
- package/lib/rules/no-compositing-layer-props.js +31 -0
- package/lib/rules/no-console-error.js +12 -10
- package/lib/rules/no-empty-dependency-use-callbacks.js +1 -1
- package/lib/rules/no-entire-object-hook-deps.js +147 -65
- package/lib/rules/no-excessive-parent-chain.js +3 -0
- package/lib/rules/no-explicit-return-type.js +6 -0
- package/lib/rules/no-hungarian.js +119 -24
- package/lib/rules/no-inline-component-prop.js +16 -7
- package/lib/rules/no-margin-properties.js +7 -38
- package/lib/rules/no-passthrough-getters.d.ts +2 -2
- package/lib/rules/no-passthrough-getters.js +83 -1
- package/lib/rules/no-redundant-this-params.js +50 -1
- package/lib/rules/no-unmemoized-memo-without-props.js +1 -1
- package/lib/rules/no-unnecessary-destructuring-rename.js +2 -5
- package/lib/rules/no-unnecessary-verb-suffix.js +79 -0
- package/lib/rules/no-unused-props.js +215 -37
- package/lib/rules/no-useless-fragment.js +10 -2
- package/lib/rules/parallelize-async-operations.js +117 -54
- package/lib/rules/prefer-nullish-coalescing-boolean-props.js +109 -4
- package/lib/rules/prefer-params-over-parent-id.js +1 -1
- package/lib/rules/prefer-settings-object.js +27 -10
- package/lib/rules/prefer-type-alias-over-typeof-constant.js +75 -4
- package/lib/rules/prefer-use-deep-compare-memo.js +8 -14
- package/lib/rules/prefer-usememo-over-useeffect-usestate.js +1 -1
- package/lib/rules/prevent-children-clobber.js +9 -5
- package/lib/rules/react-memoize-literals.js +218 -13
- package/lib/rules/require-https-error-cause.js +30 -11
- package/lib/rules/require-memo.js +17 -9
- package/lib/rules/require-migration-script-metadata.d.ts +9 -0
- package/lib/rules/require-migration-script-metadata.js +206 -0
- package/lib/rules/warn-https-error-message-user-friendly.d.ts +1 -0
- package/lib/rules/warn-https-error-message-user-friendly.js +239 -0
- package/lib/utils/ASTHelpers.d.ts +49 -1
- package/lib/utils/ASTHelpers.js +394 -112
- package/package.json +7 -6
- package/release-manifest.json +166 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blumintinc/eslint-plugin-blumint",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "Custom eslint rules for use within BluMint",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Brodie McGuire",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"private": false,
|
|
28
28
|
"scripts": {
|
|
29
29
|
"lint": "npm-run-all \"lint:*\"",
|
|
30
|
-
"lint:eslint-docs": "
|
|
30
|
+
"lint:eslint-docs": "eslint-doc-generator --check",
|
|
31
31
|
"lint:js": "eslint ./src",
|
|
32
32
|
"lint:fix": "tsc && eslint \"./src/**/*\" --quiet --fix",
|
|
33
33
|
"test": "jest --passWithNoTests --reporters=default --reporters=jest-junit",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"address-merge-conflicts": "tsx ./.github/scripts/address-merge-conflicts.ts",
|
|
37
37
|
"check-merge-conflicts": "bash ./scripts/check-merge-conflicts.sh",
|
|
38
38
|
"merge-review": "tsx ./.github/scripts/merge-review.ts",
|
|
39
|
+
"pr-autopilot": "tsx ./.github/scripts/pr-autopilot.ts",
|
|
39
40
|
"fetch-unresolved-comments": "./scripts/pr-check-comments.sh",
|
|
40
41
|
"fetch-unresolved-bot-comments": "./scripts/pr-check-bot-comments.sh",
|
|
41
42
|
"resolve-comments": "./scripts/pr-resolve-comments.sh",
|
|
@@ -69,22 +70,22 @@
|
|
|
69
70
|
"@semantic-release/release-notes-generator": "14.1.0",
|
|
70
71
|
"@types/eslint": "8.37.0",
|
|
71
72
|
"@types/jest": "29.5.14",
|
|
72
|
-
"@types/node": "
|
|
73
|
+
"@types/node": "22.20.0",
|
|
73
74
|
"@typescript-eslint/eslint-plugin": "5.34.0",
|
|
74
75
|
"@typescript-eslint/parser": "5.48.0",
|
|
75
76
|
"@typescript-eslint/utils": "5.59.6",
|
|
76
|
-
"chai": "4.
|
|
77
|
+
"chai": "4.5.0",
|
|
77
78
|
"chai-as-promised": "7.1.1",
|
|
78
79
|
"cross-env": "7.0.3",
|
|
79
80
|
"cz-conventional-changelog": "3.3.0",
|
|
80
81
|
"del-cli": "4.0.1",
|
|
81
82
|
"dotenv-cli": "5.0.0",
|
|
82
83
|
"eslint": "8.57.1",
|
|
83
|
-
"eslint-config-prettier": "
|
|
84
|
+
"eslint-config-prettier": "9.1.2",
|
|
84
85
|
"eslint-doc-generator": "2.2.0",
|
|
85
86
|
"eslint-import-resolver-typescript": "3.5.5",
|
|
86
87
|
"eslint-plugin-eslint-plugin": "5.0.0",
|
|
87
|
-
"eslint-plugin-import": "2.
|
|
88
|
+
"eslint-plugin-import": "2.32.0",
|
|
88
89
|
"eslint-plugin-jsdoc": "44.0.0",
|
|
89
90
|
"eslint-plugin-node": "11.1.0",
|
|
90
91
|
"eslint-plugin-prettier": "4.2.1",
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"version": "1.16.0",
|
|
4
|
+
"date": "2026-06-29T19:34:27.787Z",
|
|
5
|
+
"rules": [
|
|
6
|
+
{
|
|
7
|
+
"name": "consistent-callback-naming",
|
|
8
|
+
"changeType": "fix",
|
|
9
|
+
"issues": [
|
|
10
|
+
1182
|
|
11
|
+
],
|
|
12
|
+
"summary": "skip union props with non-function members (closes #1182)"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "enforce-boolean-naming-prefixes",
|
|
16
|
+
"changeType": "fix",
|
|
17
|
+
"issues": [
|
|
18
|
+
1219
|
|
19
|
+
],
|
|
20
|
+
"summary": "make property-signature checks opt-in (closes #1219)"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "enforce-mui-rounded-icons",
|
|
24
|
+
"changeType": "fix",
|
|
25
|
+
"issues": [
|
|
26
|
+
1218
|
|
27
|
+
],
|
|
28
|
+
"summary": "strip variant suffix in fix and skip brand icons (closes #1218)"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "enforce-verb-noun-naming",
|
|
32
|
+
"changeType": "fix",
|
|
33
|
+
"issues": [
|
|
34
|
+
1177,
|
|
35
|
+
1225
|
|
36
|
+
],
|
|
37
|
+
"summary": "add 'bucket'/'bucketize' to verbs allowlist (closes #1225); allow `main` as a function name (closes #1177)"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "global-const-style",
|
|
41
|
+
"changeType": "fix",
|
|
42
|
+
"issues": [
|
|
43
|
+
1186
|
|
44
|
+
],
|
|
45
|
+
"summary": "stop flagging null and boolean literals for `as const` (closes #1186)"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "logical-top-to-bottom-grouping",
|
|
49
|
+
"changeType": "fix",
|
|
50
|
+
"issues": [
|
|
51
|
+
1191
|
|
52
|
+
],
|
|
53
|
+
"summary": "keep sibling destructures from the same source declarator grouped (closes #1191)"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "memo-compare-deeply-complex-props",
|
|
57
|
+
"changeType": "fix",
|
|
58
|
+
"issues": [
|
|
59
|
+
1179,
|
|
60
|
+
1224
|
|
61
|
+
],
|
|
62
|
+
"summary": "skip reserved React ref/key slots (closes #1224); exclude React render types from complex-prop detection"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "memo-nested-react-components",
|
|
66
|
+
"changeType": "fix",
|
|
67
|
+
"issues": [
|
|
68
|
+
1185
|
|
69
|
+
],
|
|
70
|
+
"summary": "skip HOC factories and render-prop callbacks (closes #1185)"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "no-array-length-in-deps",
|
|
74
|
+
"changeType": "fix",
|
|
75
|
+
"issues": [
|
|
76
|
+
1196
|
|
77
|
+
],
|
|
78
|
+
"summary": "allow array.length in deps when the body uses only .length (closes #1196)"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "no-circular-references",
|
|
82
|
+
"changeType": "fix",
|
|
83
|
+
"issues": [],
|
|
84
|
+
"summary": "fix recursive member resolution and use cross-version scope helper; fix false positive for function parameters"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "no-compositing-layer-props",
|
|
88
|
+
"changeType": "fix",
|
|
89
|
+
"issues": [
|
|
90
|
+
1228
|
|
91
|
+
],
|
|
92
|
+
"summary": "don't flag CSS reset/identity values (closes #1228)"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "no-entire-object-hook-deps",
|
|
96
|
+
"changeType": "fix",
|
|
97
|
+
"issues": [
|
|
98
|
+
1176
|
|
99
|
+
],
|
|
100
|
+
"summary": "lock in shorthand/JSX usage detection for as-const memo returns (closes #1176); correctly handle TS assertions and optional chaining in parent traversal; resolve PR review comments on TS assertion handling in object literals"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "no-explicit-return-type",
|
|
104
|
+
"changeType": "fix",
|
|
105
|
+
"issues": [
|
|
106
|
+
1216
|
|
107
|
+
],
|
|
108
|
+
"summary": "exempt explicit `never` return types (closes #1216)"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "no-hungarian",
|
|
112
|
+
"changeType": "fix",
|
|
113
|
+
"issues": [
|
|
114
|
+
1217
|
|
115
|
+
],
|
|
116
|
+
"summary": "exempt generic type parameters and semantic type-concept names (closes #1217)"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "no-margin-properties",
|
|
120
|
+
"changeType": "fix",
|
|
121
|
+
"issues": [
|
|
122
|
+
1214
|
|
123
|
+
],
|
|
124
|
+
"summary": "don't flag margins inside createTheme() overrides (closes #1214)"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "no-unnecessary-verb-suffix",
|
|
128
|
+
"changeType": "fix",
|
|
129
|
+
"issues": [
|
|
130
|
+
1227
|
|
131
|
+
],
|
|
132
|
+
"summary": "exempt phrasal-verb particle endings (closes #1227)"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "no-unused-props",
|
|
136
|
+
"changeType": "fix",
|
|
137
|
+
"issues": [
|
|
138
|
+
1215
|
|
139
|
+
],
|
|
140
|
+
"summary": "track props through generic wrappers and body destructuring (closes #1215)"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "no-useless-fragment",
|
|
144
|
+
"changeType": "fix",
|
|
145
|
+
"issues": [
|
|
146
|
+
1195
|
|
147
|
+
],
|
|
148
|
+
"summary": "keep fragments wrapping a single expression container (closes #1195)"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "react-memoize-literals",
|
|
152
|
+
"changeType": "fix",
|
|
153
|
+
"issues": [
|
|
154
|
+
1169
|
|
155
|
+
],
|
|
156
|
+
"summary": "extend sx/style exemption to conditional, logical, and array values (refs #1169); exempt inline sx/style JSX attribute literals (closes #1169)"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "require-migration-script-metadata",
|
|
160
|
+
"changeType": "fix",
|
|
161
|
+
"issues": [],
|
|
162
|
+
"summary": "fix @migrationDependencies logic and update filename access for ESLint v9 compatibility; address review comments on JSDoc tag parsing and validation"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|