eslint-plugin-code-style 2.0.0 → 2.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.
- package/README.md +5 -3
- package/dist/index.js +244 -244
- package/package.json +1 -5
- package/AGENTS.md +0 -1387
- package/CHANGELOG.md +0 -2087
- package/CLAUDE.md +0 -12
- package/docs/rules/README.md +0 -31
- package/docs/rules/arrays.md +0 -107
- package/docs/rules/arrow-functions.md +0 -115
- package/docs/rules/call-expressions.md +0 -275
- package/docs/rules/classes.md +0 -88
- package/docs/rules/comments.md +0 -42
- package/docs/rules/components.md +0 -330
- package/docs/rules/control-flow.md +0 -448
- package/docs/rules/functions.md +0 -232
- package/docs/rules/hooks.md +0 -147
- package/docs/rules/imports-exports.md +0 -383
- package/docs/rules/jsx.md +0 -518
- package/docs/rules/objects.md +0 -224
- package/docs/rules/react.md +0 -175
- package/docs/rules/spacing.md +0 -61
- package/docs/rules/strings.md +0 -92
- package/docs/rules/typescript.md +0 -482
- package/docs/rules/variables.md +0 -32
package/CHANGELOG.md
DELETED
|
@@ -1,2087 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project are documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## [2.0.0] - 2026-02-09
|
|
11
|
-
|
|
12
|
-
**Modular Source Architecture + Minified Build**
|
|
13
|
-
|
|
14
|
-
**Version Range:** v1.20.0 → v2.0.0
|
|
15
|
-
|
|
16
|
-
### Changed
|
|
17
|
-
|
|
18
|
-
- **BREAKING: Modular source architecture** — Split monolithic 23K-line `index.js` into `src/` with 17 category files + shared utilities
|
|
19
|
-
- `src/index.js` — Entry point importing all rules
|
|
20
|
-
- `src/rules/*.js` — 17 category files (arrays, arrow-functions, call-expressions, classes, comments, components, control-flow, functions, hooks, imports-exports, jsx, objects, react, spacing, strings, typescript, variables)
|
|
21
|
-
- `src/utils/tailwind.js` — Shared Tailwind CSS class utilities
|
|
22
|
-
- **Build system** — Added esbuild to bundle and minify `src/` into `dist/index.js`
|
|
23
|
-
- `npm run build` generates the bundled output
|
|
24
|
-
- Output is ~269 KB (was ~1 MB), a 73% reduction
|
|
25
|
-
- **Package entry point** — `main` and `exports` now point to `dist/index.js` instead of `index.js`
|
|
26
|
-
- **npm package** — Publishes `dist/index.js` instead of root `index.js`; removed root `index.js` from package
|
|
27
|
-
|
|
28
|
-
### Added
|
|
29
|
-
|
|
30
|
-
- `esbuild.config.js` — Build configuration
|
|
31
|
-
- `esbuild` as devDependency
|
|
32
|
-
- `npm run build` script
|
|
33
|
-
|
|
34
|
-
### Stats
|
|
35
|
-
|
|
36
|
-
- Total Rules: 79
|
|
37
|
-
- Auto-fixable: 70 rules 🔧
|
|
38
|
-
- Configurable: 19 rules ⚙️
|
|
39
|
-
- Report-only: 9 rules
|
|
40
|
-
- Unpacked size: ~400 KB (was ~1.26 MB)
|
|
41
|
-
|
|
42
|
-
**Full Changelog:** [v1.20.0...v2.0.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.20.0...v2.0.0)
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## [1.20.0] - 2026-02-09
|
|
47
|
-
|
|
48
|
-
**README Reorganization — Split Rules Reference into docs/rules/**
|
|
49
|
-
|
|
50
|
-
**Version Range:** v1.19.0 → v1.20.0
|
|
51
|
-
|
|
52
|
-
### Added
|
|
53
|
-
|
|
54
|
-
- **Rules Reference Documentation** (`docs/rules/`) — 17 category files with detailed rule documentation, examples, and configuration options
|
|
55
|
-
- `arrays.md`, `arrow-functions.md`, `call-expressions.md`, `classes.md`, `comments.md`, `components.md`, `control-flow.md`, `functions.md`, `hooks.md`, `imports-exports.md`, `jsx.md`, `objects.md`, `react.md`, `spacing.md`, `strings.md`, `typescript.md`, `variables.md`
|
|
56
|
-
- **Rules index page** (`docs/rules/README.md`) — Overview table linking to all 17 category files
|
|
57
|
-
|
|
58
|
-
### Changed
|
|
59
|
-
|
|
60
|
-
- **README.md** — Reorganized from ~4,150 lines to ~475 lines by moving detailed rule documentation to `docs/rules/`
|
|
61
|
-
- Kept: badges, Why This Plugin, Recommended Configs, Features, Installation, Quick Start, Enable All Rules, Rules Summary table, Rules Reference links, Auto-fixing, Disabling Rules, Contributing, License
|
|
62
|
-
- Moved: All detailed rule examples, options, and explanations to `docs/rules/` category files
|
|
63
|
-
- **Recommended config READMEs** — Updated rule documentation links to point to `docs/rules/` instead of main README
|
|
64
|
-
- **AGENTS.md** — Updated documentation references to reflect new `docs/rules/` structure
|
|
65
|
-
- **package.json** — Added `docs/` to npm `files` array
|
|
66
|
-
|
|
67
|
-
**Full Changelog:** [v1.19.0...v1.20.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.19.0...v1.20.0)
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## [1.19.0] - 2026-02-09
|
|
72
|
-
|
|
73
|
-
**New: React + Tailwind Test Project & Recommended Config**
|
|
74
|
-
|
|
75
|
-
**Version Range:** v1.18.0 → v1.19.0
|
|
76
|
-
|
|
77
|
-
### Added
|
|
78
|
-
|
|
79
|
-
- **React + Tailwind test project** (`_tests_/react-tw/`) — React + Tailwind CSS project (no TypeScript) with 70 code-style rules enabled and Tailwind CSS v4 plugin
|
|
80
|
-
- **React + Tailwind recommended config** (`recommended-configs/react-tw/`) — Ready-to-use ESLint flat config for React + Tailwind CSS projects without TypeScript
|
|
81
|
-
- Includes 70 JavaScript-compatible code-style rules, Tailwind CSS plugin, and recommended third-party plugins
|
|
82
|
-
- Documented with installation instructions, rule explanations, and customization guide
|
|
83
|
-
|
|
84
|
-
### Changed
|
|
85
|
-
|
|
86
|
-
- Updated Available Configurations table in README.md — React + Tailwind now links to config instead of "Coming Soon"
|
|
87
|
-
- Updated AGENTS.md — React + Tailwind marked as Available with folder paths
|
|
88
|
-
|
|
89
|
-
**Full Changelog:** [v1.18.0...v1.19.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.18.0...v1.19.0)
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## [1.18.0] - 2026-02-09
|
|
94
|
-
|
|
95
|
-
**New: React + TypeScript Test Project & Recommended Config**
|
|
96
|
-
|
|
97
|
-
**Version Range:** v1.17.2 → v1.18.0
|
|
98
|
-
|
|
99
|
-
### Added
|
|
100
|
-
|
|
101
|
-
- **React + TypeScript test project** (`_tests_/react-ts/`) — React + TypeScript project (no Tailwind) with all 79 code-style rules enabled and @typescript-eslint parser
|
|
102
|
-
- **React + TypeScript recommended config** (`recommended-configs/react-ts/`) — Ready-to-use ESLint flat config for React + TypeScript projects without Tailwind CSS
|
|
103
|
-
- Includes all 79 code-style rules, TypeScript parser, and recommended third-party plugins
|
|
104
|
-
- Documented with installation instructions, rule explanations, and customization guide
|
|
105
|
-
|
|
106
|
-
### Changed
|
|
107
|
-
|
|
108
|
-
- Updated Available Configurations table in README.md — React + TypeScript now links to config instead of "Coming Soon"
|
|
109
|
-
- Updated AGENTS.md — React + TypeScript marked as Available with folder paths
|
|
110
|
-
|
|
111
|
-
**Full Changelog:** [v1.17.2...v1.18.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.2...v1.18.0)
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## [1.17.2] - 2026-02-09
|
|
116
|
-
|
|
117
|
-
**Fix: CamelCase Naming Auto-Fix & Prefix Enforcement**
|
|
118
|
-
|
|
119
|
-
**Version Range:** v1.17.1 → v1.17.2
|
|
120
|
-
|
|
121
|
-
### Fixed
|
|
122
|
-
|
|
123
|
-
- **`folder-based-naming-convention`** - Fix camelCase naming enforcement for constants, data, reducers, services, and strings folders
|
|
124
|
-
- Auto-fix missing suffix: `common` → `commonConstants` on save (all camelCase folders)
|
|
125
|
-
- Near-match prefix enforcement: `routeConstants` → `routesConstants` when file is `routes.ts`
|
|
126
|
-
- Multi-export files with unrelated prefixes (e.g., `buttonTypeData` in `data/app.ts`) are not flagged
|
|
127
|
-
|
|
128
|
-
**Full Changelog:** [v1.17.1...v1.17.2](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.1...v1.17.2)
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## [1.17.1] - 2026-02-09
|
|
133
|
-
|
|
134
|
-
**Fix: Index File Behavior in Wrapped Folders**
|
|
135
|
-
|
|
136
|
-
**Version Range:** v1.17.0 → v1.17.1
|
|
137
|
-
|
|
138
|
-
### Fixed
|
|
139
|
-
|
|
140
|
-
- **`index-exports-only`** - Enforce dual index file behavior for wrapped folder structure
|
|
141
|
-
- Root module index (`views/index.ts`) → barrel only (re-exports)
|
|
142
|
-
- Subfolder index (`views/assessment/index.tsx`) → must contain component code, not just re-exports
|
|
143
|
-
- Only one barrel per module — subfolder index files that simulate a barrel are flagged
|
|
144
|
-
- **`no-redundant-folder-suffix`** - Detect file name matching parent folder name (e.g., `assessment/assessment.tsx` → use `assessment/index.tsx`)
|
|
145
|
-
|
|
146
|
-
**Full Changelog:** [v1.17.0...v1.17.1](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.0...v1.17.1)
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## [1.17.0] - 2026-02-09
|
|
151
|
-
|
|
152
|
-
**New Rule + Enhancements to Naming & Import Rules**
|
|
153
|
-
|
|
154
|
-
**Version Range:** v1.16.0 → v1.17.0
|
|
155
|
-
|
|
156
|
-
### Added
|
|
157
|
-
|
|
158
|
-
**New Rules (1)**
|
|
159
|
-
- `inline-export-declaration` - Enforce inline export declarations (`export const x = ...`) instead of grouped export statements (`export { x }`) in non-index files 🔧
|
|
160
|
-
- Auto-fixable: adds `export` to each declaration and removes the grouped export statement
|
|
161
|
-
- Skips index files (barrel re-exports) and aliased exports (`export { a as b }`)
|
|
162
|
-
|
|
163
|
-
### Enhanced
|
|
164
|
-
|
|
165
|
-
- **`folder-based-naming-convention`** - Extended camelCase suffix enforcement for data/constants/strings/services/reducers folders
|
|
166
|
-
- Exports in `data/` must end with `Data` (e.g., `buttonTypeData`)
|
|
167
|
-
- Exports in `constants/` must end with `Constants` (e.g., `localeConstants`)
|
|
168
|
-
- Exports in `strings/` must end with `Strings` (e.g., `appStrings`)
|
|
169
|
-
- Exports in `services/` must end with `Service`, `reducers/` with `Reducer`
|
|
170
|
-
- **`absolute-imports-only`** - Files within the same module folder must use relative imports instead of absolute to avoid circular dependencies 🔧
|
|
171
|
-
- Detects files at any depth inside module folders (e.g., `data/auth/login/guest.tsx`)
|
|
172
|
-
- Allows both `./` and `../` relative imports within the same module folder
|
|
173
|
-
- Auto-fixes absolute imports to own module folder (e.g., `@/data/auth/login/guest` → `../../login/guest`)
|
|
174
|
-
- Now marked as auto-fixable (`fixable: "code"`)
|
|
175
|
-
- **`folder-structure-consistency`** - Added loose module file detection: standalone files matching module folder names (e.g., `data.js`, `strings.js`) are flagged — must use folder structure instead
|
|
176
|
-
|
|
177
|
-
### Stats
|
|
178
|
-
|
|
179
|
-
- Total Rules: 79 (was 78)
|
|
180
|
-
- Auto-fixable: 70 rules (was 69) 🔧
|
|
181
|
-
- Configurable: 19 rules (was 18)
|
|
182
|
-
- Report-only: 9 rules (was 10)
|
|
183
|
-
|
|
184
|
-
**Full Changelog:** [v1.16.0...v1.17.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.16.0...v1.17.0)
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## [1.16.0] - 2026-02-09
|
|
189
|
-
|
|
190
|
-
**New Rule + Enhancements + Rule Renames**
|
|
191
|
-
|
|
192
|
-
**Version Range:** v1.15.0 → v1.16.0
|
|
193
|
-
|
|
194
|
-
### Added
|
|
195
|
-
|
|
196
|
-
**New Rules (1)**
|
|
197
|
-
- `folder-structure-consistency` - Enforce consistent folder structure (flat vs wrapped) in module folders
|
|
198
|
-
- Applies to all module folders (same list as `module-index-exports`)
|
|
199
|
-
- Detects mixed structures (some flat files, some in subfolders)
|
|
200
|
-
- Flags unnecessary wrapper folders when each has only one file
|
|
201
|
-
- Configurable `moduleFolders` and `extraModuleFolders` options
|
|
202
|
-
|
|
203
|
-
### Enhanced
|
|
204
|
-
|
|
205
|
-
- **`folder-based-naming-convention`** (renamed from `folder-component-suffix`)
|
|
206
|
-
- Support nested files with chained folder names (e.g., `layouts/auth/login.tsx` → `LoginAuthLayout`)
|
|
207
|
-
- Match files at any depth within module folders
|
|
208
|
-
- Expanded to cover: views, layouts, pages, providers, reducers, services, contexts, themes (with suffix), atoms and components (chaining only, no suffix)
|
|
209
|
-
- Added `VariableDeclarator` detection for non-JSX folders (contexts, themes)
|
|
210
|
-
- **`no-redundant-folder-suffix`** - Also check folder names for redundant suffixes (e.g., `views/access-control-view/` is now flagged)
|
|
211
|
-
|
|
212
|
-
### Renamed
|
|
213
|
-
|
|
214
|
-
- `folder-component-suffix` → `folder-based-naming-convention` (now handles more than just components)
|
|
215
|
-
- `svg-component-icon-naming` → `svg-icon-naming-convention` (consistent with other naming convention rules)
|
|
216
|
-
|
|
217
|
-
### Stats
|
|
218
|
-
|
|
219
|
-
- Total Rules: 78 (was 77)
|
|
220
|
-
- Auto-fixable: 67 rules
|
|
221
|
-
- Configurable: 18 rules (was 17)
|
|
222
|
-
- Report-only: 11 rules (was 10)
|
|
223
|
-
|
|
224
|
-
**Full Changelog:** [v1.15.0...v1.16.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.15.0...v1.16.0)
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## [1.15.0] - 2026-02-06
|
|
229
|
-
|
|
230
|
-
**New Rule: no-redundant-folder-suffix**
|
|
231
|
-
|
|
232
|
-
**Version Range:** v1.14.1 → v1.15.0
|
|
233
|
-
|
|
234
|
-
### Added
|
|
235
|
-
|
|
236
|
-
**New Rules (1)**
|
|
237
|
-
- `no-redundant-folder-suffix` - Disallow file names that redundantly include the parent or ancestor folder name as a suffix
|
|
238
|
-
- Flags files like `layouts/main-layout.tsx` (redundant "-layout" since already in `layouts/`)
|
|
239
|
-
- Checks all ancestor folders from `src/` onwards
|
|
240
|
-
- Singularizes folder names automatically (layouts→layout, categories→category, classes→class)
|
|
241
|
-
- Skips index files
|
|
242
|
-
|
|
243
|
-
### Enhanced
|
|
244
|
-
|
|
245
|
-
- **`folder-component-suffix`** - Add `layouts` folder support: components in `layouts/` must end with "Layout" suffix (with auto-fix) (v1.14.4)
|
|
246
|
-
- **`type-annotation-spacing`** - Add auto-fix to collapse function types with ≤2 params to one line; add spacing rules for async keyword and function types (v1.14.2–v1.14.3)
|
|
247
|
-
- **`interface-format`** - Fix circular fix conflict by skipping collapse when property has multi-line function type (v1.14.3)
|
|
248
|
-
- **`function-naming-convention`** - Detect functions destructured from hooks without proper naming, with auto-fix (v1.14.1)
|
|
249
|
-
|
|
250
|
-
### Stats
|
|
251
|
-
|
|
252
|
-
- Total Rules: 77 (was 76)
|
|
253
|
-
- Auto-fixable: 67 rules 🔧
|
|
254
|
-
- Configurable: 17 rules ⚙️
|
|
255
|
-
- Report-only: 10 rules (was 9)
|
|
256
|
-
|
|
257
|
-
**Full Changelog:** [v1.14.1...v1.15.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.1...v1.15.0)
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## [1.14.4] - 2026-02-06
|
|
262
|
-
|
|
263
|
-
### Enhanced
|
|
264
|
-
|
|
265
|
-
- **`folder-component-suffix`** - Add `layouts` folder support: components in `layouts/` must end with "Layout" suffix (with auto-fix)
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## [1.14.3] - 2026-02-05
|
|
270
|
-
|
|
271
|
-
### Enhanced
|
|
272
|
-
|
|
273
|
-
- **`type-annotation-spacing`** - Add auto-fix to collapse function types with 2 or fewer params to one line
|
|
274
|
-
- **`interface-format`** - Fix circular fix conflict by skipping collapse when property has multi-line function type
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## [1.14.2] - 2026-02-05
|
|
279
|
-
|
|
280
|
-
### Enhanced
|
|
281
|
-
|
|
282
|
-
- **`type-annotation-spacing`** - Add spacing rules for async keyword and function types:
|
|
283
|
-
- Enforce space after `async` keyword: `async()` → `async ()`
|
|
284
|
-
- Enforce space after `=>` in function types: `() =>void` → `() => void`
|
|
285
|
-
- Format function types with 3+ params on multiple lines
|
|
286
|
-
- **`interface-format`** - Skip collapsing single-property interfaces when property has function type with 3+ params
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## [1.14.1] - 2026-02-05
|
|
291
|
-
|
|
292
|
-
### Enhanced
|
|
293
|
-
|
|
294
|
-
- **`function-naming-convention`** - Detect functions destructured from hooks without proper naming
|
|
295
|
-
- Flags: `const { logout } = useAuth()` (should be `logoutHandler`)
|
|
296
|
-
- Auto-fixes to: `const { logout: logoutHandler } = useAuth()`
|
|
297
|
-
- Renames all usages of the local variable
|
|
298
|
-
- Only flags clear action verbs (login, logout, toggle, increment, etc.)
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
## [1.14.0] - 2026-02-05
|
|
303
|
-
|
|
304
|
-
**New Rule: useState Naming Convention**
|
|
305
|
-
|
|
306
|
-
**Version Range:** v1.13.0 → v1.14.0
|
|
307
|
-
|
|
308
|
-
### Added
|
|
309
|
-
|
|
310
|
-
**New Rules (1)**
|
|
311
|
-
- `use-state-naming-convention` - Enforce boolean useState variables to start with valid prefixes 🔧
|
|
312
|
-
- Boolean state must start with: `is`, `has`, `with`, `without` (configurable)
|
|
313
|
-
- Auto-fixes both state variable and setter function names, plus all usages
|
|
314
|
-
- Detects boolean literals (`useState(false)`) and type annotations (`useState<boolean>()`)
|
|
315
|
-
- Options: `booleanPrefixes`, `extendBooleanPrefixes`, `allowPastVerbBoolean`, `allowContinuousVerbBoolean`
|
|
316
|
-
|
|
317
|
-
### Enhanced
|
|
318
|
-
|
|
319
|
-
- **`folder-component-suffix`** - Add auto-fix to rename component and all references in the file
|
|
320
|
-
- **`function-naming-convention`** - Detect useCallback-wrapped functions in custom hooks
|
|
321
|
-
- **`prop-naming-convention`** - Auto-fix now renames both type annotation AND destructured parameter with all usages
|
|
322
|
-
|
|
323
|
-
### Stats
|
|
324
|
-
|
|
325
|
-
- Total Rules: 76 (was 75)
|
|
326
|
-
- Auto-fixable: 67 rules 🔧
|
|
327
|
-
- Configurable: 17 rules ⚙️
|
|
328
|
-
- Report-only: 9 rules
|
|
329
|
-
|
|
330
|
-
**Full Changelog:** [v1.13.0...v1.14.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.13.0...v1.14.0)
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
|
|
334
|
-
## [1.13.0] - 2026-02-05
|
|
335
|
-
|
|
336
|
-
**New Rule: Prop Naming Convention & Auto-Fix Enhancements**
|
|
337
|
-
|
|
338
|
-
**Version Range:** v1.12.1 → v1.13.0
|
|
339
|
-
|
|
340
|
-
### Added
|
|
341
|
-
|
|
342
|
-
**New Rules (1)**
|
|
343
|
-
- `prop-naming-convention` - Enforce naming conventions for boolean and callback props 🔧
|
|
344
|
-
- Boolean props must start with: `is`, `has`, `with`, `without` (configurable)
|
|
345
|
-
- Callback props must start with: `on` (configurable)
|
|
346
|
-
- Detects React event handler types (`MouseEventHandler`, `ChangeEventHandler`, `FormEventHandler`, etc.)
|
|
347
|
-
- Supports nested types at any depth
|
|
348
|
-
- Applies to interfaces, type aliases, and inline types (NOT JSX attributes)
|
|
349
|
-
- Options: `booleanPrefixes`, `extendBooleanPrefixes`, `allowPastVerbBoolean`, `allowContinuousVerbBoolean`, `callbackPrefix`, `allowActionSuffix`
|
|
350
|
-
|
|
351
|
-
### Enhanced
|
|
352
|
-
|
|
353
|
-
- **`enum-format`** - Add auto-fix for member names (convert to UPPER_SNAKE_CASE)
|
|
354
|
-
- **`interface-format`** - Add auto-fix for property names (convert to camelCase); collapse single-member nested object types to one line
|
|
355
|
-
- **`type-format`** - Add auto-fix for property names (convert to camelCase); collapse single-member nested object types to one line; union type formatting with configurable threshold (`minUnionMembersForMultiline` option, default 5)
|
|
356
|
-
|
|
357
|
-
### Stats
|
|
358
|
-
|
|
359
|
-
- Total Rules: 75 (was 74)
|
|
360
|
-
- Auto-fixable: 66 rules 🔧
|
|
361
|
-
- Configurable: 17 rules ⚙️
|
|
362
|
-
- Report-only: 9 rules
|
|
363
|
-
|
|
364
|
-
**Full Changelog:** [v1.12.1...v1.13.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.12.1...v1.13.0)
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## [1.12.1] - 2026-02-04
|
|
369
|
-
|
|
370
|
-
### Fixed
|
|
371
|
-
|
|
372
|
-
- **`function-object-destructure`** - Skip when param is used in spread operations, exclude object property keys from reference counting
|
|
373
|
-
- **`no-empty-lines-in-function-params`** - Only check parens within function's own range (fix for `.map(config => ...)` false positives)
|
|
374
|
-
- **`jsx-children-on-new-line`** - Remove blank line check after opening tag (handled by `no-empty-lines-in-jsx` rule)
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
## [1.12.0] - 2026-02-04
|
|
379
|
-
|
|
380
|
-
**New Rule: Folder Component Suffix**
|
|
381
|
-
|
|
382
|
-
**Version Range:** v1.11.1 → v1.12.0
|
|
383
|
-
|
|
384
|
-
### Added
|
|
385
|
-
|
|
386
|
-
**New Rules (1)**
|
|
387
|
-
- `folder-component-suffix` - Enforce naming conventions based on folder location:
|
|
388
|
-
- Components in `views/` folder must end with `View` suffix
|
|
389
|
-
- Components in `pages/` folder must end with `Page` suffix
|
|
390
|
-
|
|
391
|
-
### Stats
|
|
392
|
-
|
|
393
|
-
- Total Rules: 74 (was 73)
|
|
394
|
-
- Auto-fixable: 65 rules 🔧
|
|
395
|
-
- Report-only: 9 rules
|
|
396
|
-
|
|
397
|
-
**Full Changelog:** [v1.11.1...v1.12.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.1...v1.12.0)
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## [1.11.9] - 2026-02-04
|
|
402
|
-
|
|
403
|
-
### Fixed
|
|
404
|
-
|
|
405
|
-
- **`variable-naming-convention`** - Enforce camelCase for object property keys (no longer allows SCREAMING_SNAKE_CASE like `APP_NAME`)
|
|
406
|
-
- **`variable-naming-convention`** - Add auto-fix to convert property names to camelCase (e.g., `APP_NAME` → `appName`)
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
## [1.11.8] - 2026-02-04
|
|
411
|
-
|
|
412
|
-
### Fixed
|
|
413
|
-
|
|
414
|
-
- **`comment-format`** - Allow `/* */` syntax for ESLint directive comments (`/* eslint-disable ... */`, `/* eslint-enable ... */`, etc.) since these must use block comment syntax
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
## [1.11.7] - 2026-02-04
|
|
419
|
-
|
|
420
|
-
### Changed
|
|
421
|
-
|
|
422
|
-
- **`no-hardcoded-strings`**
|
|
423
|
-
- Remove UI component pattern exemption - ALL enum-like attribute values are now flagged (e.g., `variant="primary"`, `size="large"`, `color="danger"`)
|
|
424
|
-
- Enforce consistent use of enums for component props to prevent typos
|
|
425
|
-
|
|
426
|
-
---
|
|
427
|
-
|
|
428
|
-
## [1.11.6] - 2026-02-04
|
|
429
|
-
|
|
430
|
-
### Changed
|
|
431
|
-
|
|
432
|
-
- **`no-hardcoded-strings`**
|
|
433
|
-
- Flag `type` attribute in JSX elements (e.g., `<input type="text" />`) - should use enums to prevent typos
|
|
434
|
-
- Remove `type` from default ignored attributes list
|
|
435
|
-
- Remove "text" from UI component pattern (conflicts with input type)
|
|
436
|
-
- Update error message for JSX attributes: "should be imported from @/enums (preferred) or @/data to prevent typos"
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## [1.11.5] - 2026-02-04
|
|
441
|
-
|
|
442
|
-
### Fixed
|
|
443
|
-
|
|
444
|
-
- **`no-hardcoded-strings`**
|
|
445
|
-
- Flag hardcoded strings in component default params (e.g., `type = "text"`, `variant = "ghost"`)
|
|
446
|
-
- Flag hardcoded strings in ternary expressions (e.g., `showPassword ? "text" : "password"`)
|
|
447
|
-
- Remove overly broad HTML input type exemption from general string checks
|
|
448
|
-
- Remove "text" from CSS cursor pattern (conflicts with common input type usage)
|
|
449
|
-
|
|
450
|
-
---
|
|
451
|
-
|
|
452
|
-
## [1.11.4] - 2026-02-04
|
|
453
|
-
|
|
454
|
-
### Fixed
|
|
455
|
-
|
|
456
|
-
- **`opening-brackets-same-line`**
|
|
457
|
-
- Collapse JSX elements with simple children to single line (e.g., `<span>{strings.label}</span>`)
|
|
458
|
-
- Handle simple LogicalExpression children (e.g., `<p>{user?.email || fallback}</p>`)
|
|
459
|
-
|
|
460
|
-
- **`jsx-children-on-new-line`** / **`jsx-element-child-new-line`**
|
|
461
|
-
- Recognize simple LogicalExpression (≤2 operands) as simple children
|
|
462
|
-
- Recognize ChainExpression (optional chaining like `user?.name`) as simple expression
|
|
463
|
-
- Prevent circular fix conflicts with `opening-brackets-same-line`
|
|
464
|
-
|
|
465
|
-
---
|
|
466
|
-
|
|
467
|
-
## [1.11.3] - 2026-02-04
|
|
468
|
-
|
|
469
|
-
### Fixed
|
|
470
|
-
|
|
471
|
-
- **`no-hardcoded-strings`**
|
|
472
|
-
- Skip CSS values in template literals assigned to style-related variables (e.g., `const lineGradient = \`linear-gradient(...)\``)
|
|
473
|
-
- Flag exported hardcoded strings like `export const tokenKey = "auth_token"` (non-SCREAMING_SNAKE_CASE exports)
|
|
474
|
-
- Skip HTML input types in default parameters (e.g., `type = "text"`)
|
|
475
|
-
- Smarter single-word classification: all lowercase (e.g., `"loading"`) → keyword/enum, capitalized (e.g., `"Loading"`) → UI string
|
|
476
|
-
- Descriptive error messages: UI strings → `@/strings or @/constants`, keywords → `@/data or @/enums`
|
|
477
|
-
|
|
478
|
-
- **`opening-brackets-same-line`**
|
|
479
|
-
- Collapse simple JSX logical expressions (≤2 operands, ≤80 chars) to single line
|
|
480
|
-
- Ensure closing `}` is on its own line for multiline logical expressions with 3+ operands
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## [1.11.2] - 2026-02-04
|
|
485
|
-
|
|
486
|
-
### Fixed
|
|
487
|
-
|
|
488
|
-
- **`no-hardcoded-strings`**
|
|
489
|
-
- Skip strings inside style object expressions (CSS values like `radial-gradient(...)`, `rotate(90deg)`, etc.)
|
|
490
|
-
- Skip HTML input types (`text`, `password`, `email`, `number`, etc.)
|
|
491
|
-
- Add CSS function patterns (transform, gradient, animation) to ignore list
|
|
492
|
-
- Simplify error message to unified format: "should be imported from @/data, @/strings, @/constants, or @/enums"
|
|
493
|
-
- Remove forced flagging of status codes, roles, HTTP methods (user intent is ambiguous)
|
|
494
|
-
|
|
495
|
-
- **`ternary-condition-multiline`**
|
|
496
|
-
- Skip collapsing ternaries with JSX branches (JSX ternaries should stay multiline for readability)
|
|
497
|
-
|
|
498
|
-
- **`no-inline-type-definitions`**
|
|
499
|
-
- Skip union types with only built-in/native types (e.g., `Error | null`, `string | null`)
|
|
500
|
-
- Only flag unions with custom inline types like `{ user: string }`
|
|
501
|
-
|
|
502
|
-
---
|
|
503
|
-
|
|
504
|
-
## [1.11.1] - 2026-02-03
|
|
505
|
-
|
|
506
|
-
### Fixed
|
|
507
|
-
|
|
508
|
-
- **`component-props-inline-type`** - Single-property type annotations spanning multiple lines now auto-fix to single line format `{ prop: Type }`
|
|
509
|
-
- **`function-params-per-line`** - Normalize single-member type annotations to prevent circular fix conflicts
|
|
510
|
-
|
|
511
|
-
---
|
|
512
|
-
|
|
513
|
-
## [1.11.0] - 2026-02-03
|
|
514
|
-
|
|
515
|
-
**New Rule: svg-component-icon-naming + Multiple Component Props Fixes**
|
|
516
|
-
|
|
517
|
-
**Version Range:** v1.10.1 → v1.11.0
|
|
518
|
-
|
|
519
|
-
### Added
|
|
520
|
-
|
|
521
|
-
**New Rules (1)**
|
|
522
|
-
|
|
523
|
-
- **`svg-component-icon-naming`** - Enforce SVG components to have 'Icon' suffix and vice versa
|
|
524
|
-
- Components returning only `<svg>` must end with "Icon" suffix (e.g., `SuccessIcon`)
|
|
525
|
-
- Components with "Icon" suffix must return an `<svg>` element
|
|
526
|
-
- Works with arrow functions and function declarations
|
|
527
|
-
|
|
528
|
-
### Fixed
|
|
529
|
-
|
|
530
|
-
- **`component-props-inline-type`** - Single prop trailing comma now correctly removed (was not detecting comma in member range)
|
|
531
|
-
- **`component-props-inline-type`** - Closing `})` now properly placed on its own line for multiple type props (was missing for non-intersection types)
|
|
532
|
-
- **`function-params-per-line`** - Type annotations no longer removed when collapsing params (was losing entire type annotation)
|
|
533
|
-
- **`function-params-per-line`** - Default values preserved for shorthand props (e.g., `className = ""` no longer becomes `className`)
|
|
534
|
-
- **`function-params-per-line`** - Type annotation complexity now considered (2+ type props = complex, prevents incorrect collapsing)
|
|
535
|
-
|
|
536
|
-
### Stats
|
|
537
|
-
|
|
538
|
-
- Total Rules: 73 (was 72)
|
|
539
|
-
- Auto-fixable: 65 rules
|
|
540
|
-
- Report-only: 8 rules
|
|
541
|
-
|
|
542
|
-
**Full Changelog:** [v1.10.1...v1.11.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.10.1...v1.11.0)
|
|
543
|
-
|
|
544
|
-
---
|
|
545
|
-
|
|
546
|
-
## [1.10.3] - 2026-02-03
|
|
547
|
-
|
|
548
|
-
### Fixed
|
|
549
|
-
|
|
550
|
-
- **`no-hardcoded-strings`** - Skip template literals inside className/style attributes (Tailwind classes in template literals)
|
|
551
|
-
- **`component-props-inline-type`** - Auto-fix to REMOVE trailing comma for single property (not just skip adding it)
|
|
552
|
-
|
|
553
|
-
---
|
|
554
|
-
|
|
555
|
-
## [1.10.2] - 2026-02-03
|
|
556
|
-
|
|
557
|
-
### Fixed
|
|
558
|
-
|
|
559
|
-
- **`component-props-inline-type`** - Don't require trailing comma for single property in inline type definitions
|
|
560
|
-
- **`no-hardcoded-strings`** - Skip 40+ SVG attributes (strokeLinecap, strokeLinejoin, filter, result, in, in2, mode, colorInterpolationFilters, etc.)
|
|
561
|
-
- **`no-hardcoded-strings`** - Skip SVG standard attribute values (round, butt, square, miter, bevel, none, normal, sRGB, userSpaceOnUse, etc.)
|
|
562
|
-
- **`no-hardcoded-strings`** - Skip URL references (url(#...)) and scientific notation numbers
|
|
563
|
-
- **`no-hardcoded-strings`** - Skip CSS property values (cursor: pointer, display: flex, position: absolute, etc.)
|
|
564
|
-
- **`no-hardcoded-strings`** - Skip SVG filter result identifiers (BackgroundImageFix, SourceGraphic, etc.)
|
|
565
|
-
|
|
566
|
-
---
|
|
567
|
-
|
|
568
|
-
## [1.10.1] - 2026-02-03
|
|
569
|
-
|
|
570
|
-
### Fixed
|
|
571
|
-
|
|
572
|
-
- **`logical-expression-multiline`** - Add collapse to single line for simple expressions (≤3 operands)
|
|
573
|
-
- **`logical-expression-multiline`** - Skip collapsing when any operand is multiline (e.g., JSX elements)
|
|
574
|
-
|
|
575
|
-
---
|
|
576
|
-
|
|
577
|
-
## [1.10.0] - 2026-02-03
|
|
578
|
-
|
|
579
|
-
**New Rule: logical-expression-multiline + Enhanced no-hardcoded-strings**
|
|
580
|
-
|
|
581
|
-
**Version Range:** v1.9.1 → v1.10.0
|
|
582
|
-
|
|
583
|
-
### Added
|
|
584
|
-
|
|
585
|
-
**New Rules (1)**
|
|
586
|
-
|
|
587
|
-
- **`logical-expression-multiline`** - Enforce multiline formatting for logical expressions with more than maxOperands (default: 3) 🔧
|
|
588
|
-
- Handles variable declarations: `const err = a || b || c || d || e;`
|
|
589
|
-
- Handles return statements, assignments, and other contexts
|
|
590
|
-
- Skips if/ternary conditions (handled by other rules)
|
|
591
|
-
- Auto-fixes to put each operand on its own line with operator at start
|
|
592
|
-
|
|
593
|
-
### Enhanced
|
|
594
|
-
|
|
595
|
-
- **`no-hardcoded-strings`** - Major improvements:
|
|
596
|
-
- Remove single-word string length limitations (now detects all single-word hardcoded strings)
|
|
597
|
-
- Add validation strings: `empty`, `invalid`, `missing`, `optional`, `required`, `valid`
|
|
598
|
-
- Add auth state strings: `anonymous`, `authenticated`, `authed`, `authorized`, `denied`, `forbidden`, etc.
|
|
599
|
-
- Add more status strings: `done`, `finished`, `inprogress`, `queued`, `ready`, `running`, etc.
|
|
600
|
-
- Skip UI component patterns in JSX attributes: `variant="ghost"`, `size="md"`, etc.
|
|
601
|
-
- Skip Tailwind CSS class strings: `"px-5 py-3 w-full"`, `"hover:bg-primary"`, etc.
|
|
602
|
-
- Make technical patterns stricter to avoid false negatives
|
|
603
|
-
|
|
604
|
-
### Fixed
|
|
605
|
-
|
|
606
|
-
- **`no-hardcoded-strings`** - Fix detection of strings inside exported components
|
|
607
|
-
- **`no-hardcoded-strings`** - Fix Tailwind detection being too broad (now requires actual Tailwind syntax)
|
|
608
|
-
|
|
609
|
-
### Stats
|
|
610
|
-
|
|
611
|
-
- Total Rules: 72 (was 71)
|
|
612
|
-
- Auto-fixable: 65 rules 🔧 (was 64)
|
|
613
|
-
- Report-only: 7 rules
|
|
614
|
-
|
|
615
|
-
**Full Changelog:** [v1.9.1...v1.10.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.1...v1.10.0)
|
|
616
|
-
|
|
617
|
-
---
|
|
618
|
-
|
|
619
|
-
## [1.9.7] - 2026-02-03
|
|
620
|
-
|
|
621
|
-
### Fixed
|
|
622
|
-
|
|
623
|
-
- **`no-hardcoded-strings`** - Fix Tailwind detection being too broad:
|
|
624
|
-
- Previously: `"john"`, `"not found"` were incorrectly skipped as Tailwind classes
|
|
625
|
-
- Now: Only strings with Tailwind syntax (hyphens, colons, slashes, brackets) are skipped
|
|
626
|
-
- Regular strings like `const name = "john"` are now properly detected
|
|
627
|
-
- Tailwind classes like `"px-5 py-3 w-full"` still correctly skipped
|
|
628
|
-
|
|
629
|
-
---
|
|
630
|
-
|
|
631
|
-
## [1.9.6] - 2026-02-03
|
|
632
|
-
|
|
633
|
-
### Enhanced
|
|
634
|
-
|
|
635
|
-
- **`no-hardcoded-strings`** - Skip Tailwind CSS class strings:
|
|
636
|
-
- Multi-class strings like `"px-5 py-3 w-full bg-white"` are now ignored
|
|
637
|
-
- Individual classes: `w-5`, `p-4`, `pr-12`, `text-2xl`, `gap-4`, etc.
|
|
638
|
-
- State modifiers: `hover:bg-primary`, `focus:ring-2`, `disabled:opacity-50`
|
|
639
|
-
- Responsive prefixes: `sm:flex`, `md:hidden`, `lg:grid`
|
|
640
|
-
- Opacity values: `bg-white/50`, `text-black/80`, `placeholder-error/50`
|
|
641
|
-
- Arbitrary values: `w-[100px]`, `bg-[#ff0000]`
|
|
642
|
-
- Negative values: `-translate-y-1/2`, `-rotate-45`
|
|
643
|
-
|
|
644
|
-
---
|
|
645
|
-
|
|
646
|
-
## [1.9.5] - 2026-02-03
|
|
647
|
-
|
|
648
|
-
### Fixed
|
|
649
|
-
|
|
650
|
-
- **`no-hardcoded-strings`** - Fix bug where strings inside exported components were incorrectly skipped:
|
|
651
|
-
- Previously: `export const Component = () => { const name = "john" }` was not detected
|
|
652
|
-
- Now: Strings inside functions are properly detected regardless of export status
|
|
653
|
-
- Only direct constant exports are skipped: `export const MESSAGE = "value"` or `export const DATA = { key: "value" }`
|
|
654
|
-
|
|
655
|
-
---
|
|
656
|
-
|
|
657
|
-
## [1.9.4] - 2026-02-03
|
|
658
|
-
|
|
659
|
-
### Enhanced
|
|
660
|
-
|
|
661
|
-
- **`no-hardcoded-strings`** - Skip UI component patterns only in JSX attributes:
|
|
662
|
-
- In JSX attributes: `<Button variant="ghost" />` is now ignored
|
|
663
|
-
- In logic: `const status = "success"` or `setValue("primary")` is still detected
|
|
664
|
-
- UI patterns: `primary`, `secondary`, `ghost`, `outline`, `link`, `muted`, `danger`, `warning`, `success`, `error`, `sm`, `md`, `lg`, `xl`, `left`, `right`, `center`, `top`, `bottom`, `hover`, `focus`, `click`, etc.
|
|
665
|
-
|
|
666
|
-
---
|
|
667
|
-
|
|
668
|
-
## [1.9.3] - 2026-02-03
|
|
669
|
-
|
|
670
|
-
### Enhanced
|
|
671
|
-
|
|
672
|
-
- **`no-hardcoded-strings`** - Remove single-word string length limitations and add more special cases:
|
|
673
|
-
- Removed length restrictions (now detects all single-word hardcoded strings)
|
|
674
|
-
- Added validation strings: `empty`, `invalid`, `missing`, `optional`, `required`, `valid`
|
|
675
|
-
- Added auth state strings: `anonymous`, `authenticated`, `authed`, `authorized`, `denied`, `forbidden`, `granted`, `locked`, `loggedin`, `loggedout`, `revoked`, `unauthenticated`, `unauthorized`, `unlocked`, `unverified`, `verified`
|
|
676
|
-
- Added more status strings: `done`, `finished`, `inprogress`, `queued`, `ready`, `running`, `started`, `stopped`, `successful`, `waiting`
|
|
677
|
-
- Made technical patterns stricter to avoid false negatives (camelCase requires uppercase in middle, snake_case requires underscore, kebab-case requires hyphen)
|
|
678
|
-
|
|
679
|
-
---
|
|
680
|
-
|
|
681
|
-
## [1.9.2] - 2026-02-03
|
|
682
|
-
|
|
683
|
-
### Enhanced
|
|
684
|
-
|
|
685
|
-
- **`no-hardcoded-strings`** - Now detects special strings that should be enums:
|
|
686
|
-
- HTTP status codes (2xx, 4xx, 5xx like "200", "404", "500")
|
|
687
|
-
- HTTP methods ("GET", "POST", "PUT", "DELETE", etc.)
|
|
688
|
-
- Role/permission names ("admin", "user", "moderator", etc.)
|
|
689
|
-
- Environment names ("production", "development", "staging", etc.)
|
|
690
|
-
- Log levels ("debug", "info", "warn", "error", etc.)
|
|
691
|
-
- Status strings ("active", "pending", "approved", "rejected", etc.)
|
|
692
|
-
- Priority levels ("high", "medium", "low", "critical", etc.)
|
|
693
|
-
- All above → import from `@/enums` or `@/data`
|
|
694
|
-
- Regular strings → import from `@/data or @/strings or @/constants or @/@constants or @/@strings`
|
|
695
|
-
|
|
696
|
-
### Fixed
|
|
697
|
-
|
|
698
|
-
- **`no-hardcoded-strings`** - Fixed bug where `isInConstantsObjectHandler` incorrectly matched camelCase variable names due to case-insensitive regex flag
|
|
699
|
-
|
|
700
|
-
---
|
|
701
|
-
|
|
702
|
-
## [1.9.1] - 2026-02-03
|
|
703
|
-
|
|
704
|
-
### Enhanced
|
|
705
|
-
|
|
706
|
-
- **`no-hardcoded-strings`** - Initial special string detection:
|
|
707
|
-
- HTTP status codes (4xx, 5xx)
|
|
708
|
-
- Role/permission names
|
|
709
|
-
|
|
710
|
-
---
|
|
711
|
-
|
|
712
|
-
## [1.9.0] - 2026-02-03
|
|
713
|
-
|
|
714
|
-
**New Rule: class-method-definition-format + Enhanced Spacing Rules**
|
|
715
|
-
|
|
716
|
-
**Version Range:** v1.8.1 → v1.9.0
|
|
717
|
-
|
|
718
|
-
### Added
|
|
719
|
-
|
|
720
|
-
**New Rules (1)**
|
|
721
|
-
- **`class-method-definition-format`** - Enforce consistent spacing in class and method definitions 🔧
|
|
722
|
-
- Space before opening brace `{` in class declarations
|
|
723
|
-
- No space between method name and opening parenthesis `(`
|
|
724
|
-
- Space before opening brace `{` in method definitions
|
|
725
|
-
- Opening brace must be on same line as class/method signature
|
|
726
|
-
|
|
727
|
-
### Enhanced
|
|
728
|
-
|
|
729
|
-
- **`function-call-spacing`** - Now also handles:
|
|
730
|
-
- `new` expressions (`new Class ()` → `new Class()`)
|
|
731
|
-
- Generic type calls (`get <Type>()` → `get<Type>()`)
|
|
732
|
-
- **`member-expression-bracket-spacing`** - Now also handles:
|
|
733
|
-
- TypeScript indexed access types (`Type ["prop"]` → `Type["prop"]`)
|
|
734
|
-
|
|
735
|
-
### Stats
|
|
736
|
-
|
|
737
|
-
- Total Rules: 71 (was 70)
|
|
738
|
-
- Auto-fixable: 64 rules 🔧 (was 63)
|
|
739
|
-
- Report-only: 7 rules
|
|
740
|
-
|
|
741
|
-
**Full Changelog:** [v1.8.1...v1.9.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.1...v1.9.0)
|
|
742
|
-
|
|
743
|
-
---
|
|
744
|
-
|
|
745
|
-
## [1.8.4] - 2026-02-03
|
|
746
|
-
|
|
747
|
-
### Documentation
|
|
748
|
-
|
|
749
|
-
- Fix v1.8.0 CHANGELOG entry to include Release Title, Version Range, and Full Changelog link (required for MINOR releases)
|
|
750
|
-
- Add missing comparison links in CHANGELOG.md (v1.3.9 through v1.8.3)
|
|
751
|
-
- Update manage-rule skill with CHANGELOG format requirements for new rules
|
|
752
|
-
- Update Current releases list in AGENTS.md to include v1.8.0
|
|
753
|
-
|
|
754
|
-
---
|
|
755
|
-
|
|
756
|
-
## [1.8.3] - 2026-02-03
|
|
757
|
-
|
|
758
|
-
### Fixed
|
|
759
|
-
|
|
760
|
-
- **`class-naming-convention`** - Auto-fix now renames all references to the class (including instantiations like `new ClassName()` and type annotations), not just the class declaration
|
|
761
|
-
|
|
762
|
-
---
|
|
763
|
-
|
|
764
|
-
## [1.8.2] - 2026-02-03
|
|
765
|
-
|
|
766
|
-
### Changed
|
|
767
|
-
|
|
768
|
-
- **`multiline-if-conditions`** - Remove configurable `maxNestingLevel` option; nesting level is now fixed at 2 to prevent overly complex conditions. Nested groups with >maxOperands are formatted multiline inline (not extracted). Extraction only occurs when nesting exceeds 2 levels.
|
|
769
|
-
- **`ternary-condition-multiline`** - Remove configurable `maxNestingLevel` option; nesting level is now fixed at 2 to prevent overly complex conditions. Nested groups with >maxOperands are formatted multiline inline (not extracted). Extraction only occurs when nesting exceeds 2 levels.
|
|
770
|
-
- **`opening-brackets-same-line`** - Skip ternary condition tests and detect intentional multiline format to prevent rule conflicts
|
|
771
|
-
- **`if-statement-format`** - Detect intentional multiline conditions to prevent collapsing formatted conditions
|
|
772
|
-
|
|
773
|
-
### Documentation
|
|
774
|
-
|
|
775
|
-
- Update both rules to show multiline inline formatting examples instead of extraction
|
|
776
|
-
- Remove `maxNestingLevel` option from documentation (now fixed internally)
|
|
777
|
-
|
|
778
|
-
---
|
|
779
|
-
|
|
780
|
-
## [1.8.1] - 2026-02-03
|
|
781
|
-
|
|
782
|
-
### Changed
|
|
783
|
-
|
|
784
|
-
- **`function-naming-convention`** - Add `handleXxx` → `xxxHandler` auto-fix (converts `handleClick` to `clickHandler` instead of `handleClickHandler`)
|
|
785
|
-
|
|
786
|
-
---
|
|
787
|
-
|
|
788
|
-
## [1.8.0] - 2026-02-03
|
|
789
|
-
|
|
790
|
-
**New Rule: no-hardcoded-strings**
|
|
791
|
-
|
|
792
|
-
**Version Range:** v1.7.1 → v1.8.0
|
|
793
|
-
|
|
794
|
-
### Added
|
|
795
|
-
|
|
796
|
-
**New Rules (1)**
|
|
797
|
-
- **`no-hardcoded-strings`** - Enforce importing strings from constants/strings modules instead of hardcoding them inline 🔧
|
|
798
|
-
- Detects hardcoded strings in JSX text content, attributes, and component logic
|
|
799
|
-
- Configurable `ignoreAttributes`, `extraIgnoreAttributes`, `ignorePatterns` options
|
|
800
|
-
- Automatically ignores technical strings (CSS units, URLs, paths, identifiers, etc.)
|
|
801
|
-
- Valid import paths: `@/constants`, `@/strings`, `@/@constants`, `@/@strings`, `@/data/constants`, `@/data/strings`
|
|
802
|
-
|
|
803
|
-
### Changed
|
|
804
|
-
|
|
805
|
-
- **`absolute-imports-only`** - Add `strings`, `@constants`, `@strings` to default allowed folders
|
|
806
|
-
- **`module-index-exports`** - Add `strings`, `@constants`, `@strings` to default module folders
|
|
807
|
-
|
|
808
|
-
### Stats
|
|
809
|
-
|
|
810
|
-
- Total Rules: 70 (was 69)
|
|
811
|
-
- Auto-fixable: 63 rules 🔧
|
|
812
|
-
- Report-only: 7 rules (was 6)
|
|
813
|
-
|
|
814
|
-
**Full Changelog:** [v1.7.1...v1.8.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.1...v1.8.0)
|
|
815
|
-
|
|
816
|
-
---
|
|
817
|
-
|
|
818
|
-
## [1.7.6] - 2026-02-02
|
|
819
|
-
|
|
820
|
-
### Changed
|
|
821
|
-
|
|
822
|
-
- **`ternary-condition-multiline`** - Now depends only on operand count, not line length:
|
|
823
|
-
- ≤maxOperands (default: 3): Always collapse to single line regardless of line length
|
|
824
|
-
- \>maxOperands: Format multiline with each operand on its own line
|
|
825
|
-
- Removed `maxLineLength` option (no longer used)
|
|
826
|
-
- This aligns behavior with `multiline-if-conditions` rule
|
|
827
|
-
|
|
828
|
-
---
|
|
829
|
-
|
|
830
|
-
## [1.7.5] - 2026-02-02
|
|
831
|
-
|
|
832
|
-
### Fixed
|
|
833
|
-
|
|
834
|
-
- **`ternary-condition-multiline`** - For ≤3 operands, always collapse to single line when `?` is on different line than condition end (enforces `condition ? value : value` format for simple ternaries)
|
|
835
|
-
- **`no-empty-lines-in-function-params`** - Add detection for empty lines in TSTypeLiteral (type annotation objects like `{ prop: Type }` in intersection types)
|
|
836
|
-
|
|
837
|
-
---
|
|
838
|
-
|
|
839
|
-
## [1.7.4] - 2026-02-02
|
|
840
|
-
|
|
841
|
-
### Fixed
|
|
842
|
-
|
|
843
|
-
- **`no-empty-lines-in-function-params`** - Fix bug that deleted TypeScript type annotations when fixing empty lines in destructured params; now uses `getTokenAfter` instead of `getLastToken` to find closing brace
|
|
844
|
-
- **`no-inline-type-definitions`** - Change threshold comparison from `>` to `>=` so 2-member unions are now flagged (with default `maxUnionMembers: 2`)
|
|
845
|
-
- **`ternary-condition-multiline`** - Fix multiline formatting for >3 operands: first operand stays on same line as property key, `?` and `:` each on their own lines; fix circular fix bug for ≤3 operands case
|
|
846
|
-
|
|
847
|
-
---
|
|
848
|
-
|
|
849
|
-
## [1.7.3] - 2026-02-02
|
|
850
|
-
|
|
851
|
-
### Fixed
|
|
852
|
-
|
|
853
|
-
- **`ternary-condition-multiline`** - Fix `?`/`:` on own line without value; collapse simple ternaries to single line when they fit
|
|
854
|
-
- **`no-empty-lines-in-function-params`** - Detect empty lines after opening `{` and before closing `}` in ObjectPattern params
|
|
855
|
-
- **`empty-line-after-block`** - Skip consecutive if statements (already handled by `if-else-spacing`)
|
|
856
|
-
- **`classname-multiline`** - Fix closing backtick alignment for return statements
|
|
857
|
-
|
|
858
|
-
### Documentation
|
|
859
|
-
|
|
860
|
-
- Add 6 missing rules to README detailed documentation
|
|
861
|
-
- Add 7 missing rules to README Quick Start example
|
|
862
|
-
- Update rule counts from 66 to 69 across all documentation files
|
|
863
|
-
- Update AGENTS.md Tailwind section with actual rules and comparison with `tailwindcss/classnames-order`
|
|
864
|
-
- Add README multi-section update warnings to AGENTS.md rule modification checklists
|
|
865
|
-
|
|
866
|
-
### Added
|
|
867
|
-
|
|
868
|
-
- **`manage-rule` skill** - New skill for adding, editing, or removing ESLint rules with complete workflow
|
|
869
|
-
|
|
870
|
-
---
|
|
871
|
-
|
|
872
|
-
## [1.7.2] - 2026-02-02
|
|
873
|
-
|
|
874
|
-
### Fixed
|
|
875
|
-
|
|
876
|
-
- **`enum-format`** - Fix double comma bug when auto-fixing trailing comma and closing brace position; check for comma token after member, not just member text
|
|
877
|
-
- **`interface-format`** - Same fix as enum-format for trailing comma detection
|
|
878
|
-
|
|
879
|
-
---
|
|
880
|
-
|
|
881
|
-
## [1.7.1] - 2026-02-02
|
|
882
|
-
|
|
883
|
-
### Fixed
|
|
884
|
-
|
|
885
|
-
- **`no-empty-lines-in-function-params`** - Detect empty lines between destructured properties inside ObjectPattern params
|
|
886
|
-
- **`component-props-inline-type`** - Handle TSIntersectionType (e.g., `ButtonHTMLAttributes & { prop: Type }`): check `&` position, opening brace position, and apply formatting rules to type literals within intersections
|
|
887
|
-
- **`enum-type-enforcement`** - Handle TSIntersectionType to track typed props; fix extractTypeInfoHandler argument for TSPropertySignature members
|
|
888
|
-
- **`ternary-condition-multiline`** - Improve simple ternary prefix calculation for object properties; add checks for `?` on same line as condition end and empty lines before `?` or `:`; fix multiline formatting to not add leading newline
|
|
889
|
-
|
|
890
|
-
---
|
|
891
|
-
|
|
892
|
-
## [1.7.0] - 2026-02-02
|
|
893
|
-
|
|
894
|
-
**New Rules for Blocks, Classes & Enum Enforcement + Multiple Enhancements**
|
|
895
|
-
|
|
896
|
-
**Version Range:** v1.6.1 → v1.7.0
|
|
897
|
-
|
|
898
|
-
### Added
|
|
899
|
-
|
|
900
|
-
**New Rules (3)**
|
|
901
|
-
- `empty-line-after-block` - Require empty line between closing `}` of block statement and next statement 🔧
|
|
902
|
-
- `class-naming-convention` - Enforce class declarations end with "Class" suffix 🔧
|
|
903
|
-
- `enum-type-enforcement` - Enforce using enum values instead of string literals for typed variables (e.g., `ButtonVariantEnum.PRIMARY` instead of `"primary"`) 🔧
|
|
904
|
-
|
|
905
|
-
### Enhanced
|
|
906
|
-
|
|
907
|
-
- **`ternary-condition-multiline`** - Now also collapses simple ternaries to single line when they fit within max line length (default: 120 chars). Added `maxLineLength` option.
|
|
908
|
-
- **`function-object-destructure`** - Add auto-fix (replaces destructured usages with dot notation), expand module paths (services, constants, config, api, utils, helpers, lib, apis, configs, utilities, routes)
|
|
909
|
-
- **`function-params-per-line`** - Handle callbacks with mixed params (destructured + simple like `({ item }, index)`)
|
|
910
|
-
- **`array-callback-destructure`** - Fix closing brace on same line as last property
|
|
911
|
-
- **`simple-call-single-line`** - Skip callbacks with 2+ params to avoid conflicts
|
|
912
|
-
- **`jsx-simple-element-one-line`**, **`jsx-children-on-new-line`**, **`jsx-element-child-new-line`** - Treat simple function calls (0-1 args) as simple expressions
|
|
913
|
-
|
|
914
|
-
### Fixed
|
|
915
|
-
|
|
916
|
-
- **`component-props-destructure`** - Detect body destructuring patterns even without type annotations, add auto-fix for body destructuring, preserve TypeScript type annotation when auto-fixing
|
|
917
|
-
|
|
918
|
-
### Stats
|
|
919
|
-
|
|
920
|
-
- Total Rules: 69 (was 66)
|
|
921
|
-
- Auto-fixable: 63 rules 🔧
|
|
922
|
-
- Report-only: 6 rules
|
|
923
|
-
|
|
924
|
-
**Full Changelog:** [v1.6.1...v1.7.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.1...v1.7.0)
|
|
925
|
-
|
|
926
|
-
---
|
|
927
|
-
|
|
928
|
-
## [1.6.6] - 2026-02-01
|
|
929
|
-
|
|
930
|
-
### Fixed
|
|
931
|
-
|
|
932
|
-
- **`component-props-destructure`** - Detect body destructuring patterns (e.g., `const { name } = data;`) even without type annotations
|
|
933
|
-
- **`component-props-destructure`** - Add auto-fix for body destructuring: moves props to parameter and removes body declaration
|
|
934
|
-
|
|
935
|
-
---
|
|
936
|
-
|
|
937
|
-
## [1.6.5] - 2026-02-01
|
|
938
|
-
|
|
939
|
-
### Added
|
|
940
|
-
|
|
941
|
-
- **`function-object-destructure`** - Add auto-fix: replaces destructured usages with dot notation and removes declaration
|
|
942
|
-
|
|
943
|
-
---
|
|
944
|
-
|
|
945
|
-
## [1.6.4] - 2026-02-01
|
|
946
|
-
|
|
947
|
-
### Enhanced
|
|
948
|
-
|
|
949
|
-
- **`function-object-destructure`** - Add more module paths: apis, configs, utilities, routes
|
|
950
|
-
|
|
951
|
-
---
|
|
952
|
-
|
|
953
|
-
## [1.6.3] - 2026-02-01
|
|
954
|
-
|
|
955
|
-
### Fixed
|
|
956
|
-
|
|
957
|
-
- **`component-props-destructure`** - Preserve TypeScript type annotation when auto-fixing
|
|
958
|
-
|
|
959
|
-
---
|
|
960
|
-
|
|
961
|
-
## [1.6.2] - 2026-02-01
|
|
962
|
-
|
|
963
|
-
### Enhanced
|
|
964
|
-
|
|
965
|
-
- **`function-object-destructure`** - Expand to check more module paths (services, constants, config, api, utils, helpers, lib) for dot notation enforcement
|
|
966
|
-
|
|
967
|
-
---
|
|
968
|
-
|
|
969
|
-
## [1.6.1] - 2026-02-01
|
|
970
|
-
|
|
971
|
-
### Enhanced
|
|
972
|
-
|
|
973
|
-
- **`function-params-per-line`** - Handle callbacks with mixed params (destructured + simple like `({ item }, index)`)
|
|
974
|
-
- **`array-callback-destructure`** - Fix closing brace on same line as last property
|
|
975
|
-
- **`simple-call-single-line`** - Skip callbacks with 2+ params to avoid conflicts
|
|
976
|
-
- **`jsx-simple-element-one-line`** - Treat simple function calls (0-1 args) as simple expressions
|
|
977
|
-
- **`jsx-children-on-new-line`** - Treat simple function calls (0-1 args) as simple expressions
|
|
978
|
-
- **`jsx-element-child-new-line`** - Treat simple function calls (0-1 args) as simple expressions
|
|
979
|
-
|
|
980
|
-
### Docs
|
|
981
|
-
|
|
982
|
-
- Clarify version bump and tag workflow in AGENTS.md
|
|
983
|
-
|
|
984
|
-
---
|
|
985
|
-
|
|
986
|
-
## [1.6.0] - 2026-02-01
|
|
987
|
-
|
|
988
|
-
**New array-callback-destructure Rule & Multiple Enhancements**
|
|
989
|
-
|
|
990
|
-
**Version Range:** v1.5.1 → v1.6.0
|
|
991
|
-
|
|
992
|
-
### Added
|
|
993
|
-
|
|
994
|
-
**New Rules (1)**
|
|
995
|
-
- `array-callback-destructure` - Enforce multiline destructuring in array method callbacks (map, filter, find, etc.) when there are 2+ properties 🔧
|
|
996
|
-
|
|
997
|
-
### Enhanced
|
|
998
|
-
|
|
999
|
-
- **`function-naming-convention`** - Added "forgot" to verb prefixes list
|
|
1000
|
-
- **`arrow-function-simplify`** - Extended to handle non-JSX expression statements (simple side-effect functions)
|
|
1001
|
-
|
|
1002
|
-
### Changed
|
|
1003
|
-
|
|
1004
|
-
- **`no-plusplus`** - Changed from "error" to "off" in all config files
|
|
1005
|
-
|
|
1006
|
-
### Stats
|
|
1007
|
-
|
|
1008
|
-
- Total Rules: 66 (was 65)
|
|
1009
|
-
- Auto-fixable: 60 rules 🔧
|
|
1010
|
-
- Report-only: 6 rules
|
|
1011
|
-
|
|
1012
|
-
**Full Changelog:** [v1.5.1...v1.6.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.5.1...v1.6.0)
|
|
1013
|
-
|
|
1014
|
-
---
|
|
1015
|
-
|
|
1016
|
-
## [1.5.2] - 2026-02-01
|
|
1017
|
-
|
|
1018
|
-
- Version bump
|
|
1019
|
-
|
|
1020
|
-
---
|
|
1021
|
-
|
|
1022
|
-
## [1.5.1] - 2026-01-30
|
|
1023
|
-
|
|
1024
|
-
- Minor fixes
|
|
1025
|
-
|
|
1026
|
-
---
|
|
1027
|
-
|
|
1028
|
-
## [1.5.0] - 2026-01-30
|
|
1029
|
-
|
|
1030
|
-
**New if-else-spacing Rule & Enhanced Arrow/Class Method Support**
|
|
1031
|
-
|
|
1032
|
-
**Version Range:** v1.4.3 → v1.5.0
|
|
1033
|
-
|
|
1034
|
-
### Added
|
|
1035
|
-
|
|
1036
|
-
**New Rules (1)**
|
|
1037
|
-
- `if-else-spacing` - Enforce proper spacing between if statements 🔧
|
|
1038
|
-
|
|
1039
|
-
### Enhanced
|
|
1040
|
-
|
|
1041
|
-
- **`function-naming-convention`** - Now checks class methods for Handler suffix (skips constructors, getters, setters, React lifecycle)
|
|
1042
|
-
- **`arrow-function-simplify`** - Extended to handle ALL arrow functions with single return (not just JSX attributes)
|
|
1043
|
-
|
|
1044
|
-
### Fixed
|
|
1045
|
-
|
|
1046
|
-
- **Circular fix conflict** between `opening-brackets-same-line` and `function-arguments-format` for multi-argument arrow function calls
|
|
1047
|
-
|
|
1048
|
-
### Stats
|
|
1049
|
-
|
|
1050
|
-
- Total Rules: 65 (was 64)
|
|
1051
|
-
- Auto-fixable: 59 rules 🔧
|
|
1052
|
-
- Report-only: 6 rules
|
|
1053
|
-
|
|
1054
|
-
**Full Changelog:** [v1.4.3...v1.5.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.3...v1.5.0)
|
|
1055
|
-
|
|
1056
|
-
---
|
|
1057
|
-
|
|
1058
|
-
## [1.4.5] - 2026-01-30
|
|
1059
|
-
|
|
1060
|
-
- Version bump
|
|
1061
|
-
|
|
1062
|
-
---
|
|
1063
|
-
|
|
1064
|
-
## [1.4.3] - 2026-01-30
|
|
1065
|
-
|
|
1066
|
-
### Documentation
|
|
1067
|
-
|
|
1068
|
-
- Add CHANGELOG for v1.4.0 release
|
|
1069
|
-
|
|
1070
|
-
---
|
|
1071
|
-
|
|
1072
|
-
## [1.4.2] - 2026-01-30
|
|
1073
|
-
|
|
1074
|
-
**New Rules, Enhanced Auto-Fix & Comprehensive Documentation**
|
|
1075
|
-
|
|
1076
|
-
**Version Range:** v1.3.1 → v1.4.2
|
|
1077
|
-
|
|
1078
|
-
### Added
|
|
1079
|
-
|
|
1080
|
-
**New Rules (3)**
|
|
1081
|
-
- `index-exports-only` - Prevent type/interface definitions in index files (move to types file)
|
|
1082
|
-
- `ternary-condition-multiline` - Format complex ternary conditions with each operand on its own line 🔧 ⚙️
|
|
1083
|
-
- `no-inline-type-definitions` - Extract inline union types to named types in type files ⚙️
|
|
1084
|
-
|
|
1085
|
-
**Auto-Fix Labels in Documentation**
|
|
1086
|
-
- Added 🔧 label to indicate auto-fixable rules
|
|
1087
|
-
- Added legend explaining 🔧 (auto-fixable) and ⚙️ (customizable) labels
|
|
1088
|
-
|
|
1089
|
-
### Enhanced
|
|
1090
|
-
|
|
1091
|
-
- **`function-naming-convention`** - Expanded verb list from ~50 to ~200+ verbs organized by category
|
|
1092
|
-
- **`function-object-destructure`** - Added auto-fix: inserts destructuring at function body top
|
|
1093
|
-
- **`component-props-destructure`** - Added auto-fix: converts `(props)` to `({ prop1, prop2 })` 🔧
|
|
1094
|
-
- **`react-code-order`** - Added auto-fix for reordering code blocks in components/hooks
|
|
1095
|
-
- **`variable-naming-convention`** - Added auto-fix for renaming variables to camelCase
|
|
1096
|
-
|
|
1097
|
-
### Fixed
|
|
1098
|
-
|
|
1099
|
-
- **`multiline-if-conditions`** - Fix indentation calculation for nested code
|
|
1100
|
-
- **`classname-multiline`** - Fix template literal indentation for inline JSX attributes
|
|
1101
|
-
- **`function-naming-convention`** - Skip React components (PascalCase + returns JSX)
|
|
1102
|
-
- **`variable-naming-convention`** - Skip PascalCase arguments (component references)
|
|
1103
|
-
- Add "poll" as recognized verb prefix in function-naming-convention
|
|
1104
|
-
|
|
1105
|
-
### Documentation
|
|
1106
|
-
|
|
1107
|
-
- Enhanced error messages with examples and helpful context
|
|
1108
|
-
- Improved CHANGELOG with full details and Full Changelog links
|
|
1109
|
-
- Added GitHub Releases guidelines to AGENTS.md
|
|
1110
|
-
|
|
1111
|
-
### Report-Only Rules (6)
|
|
1112
|
-
|
|
1113
|
-
- `absolute-imports-only` - Requires knowledge of project structure
|
|
1114
|
-
- `index-exports-only` - Requires moving code to new files
|
|
1115
|
-
- `jsx-prop-naming-convention` - Requires cross-file prop renaming
|
|
1116
|
-
- `module-index-exports` - Requires file creation
|
|
1117
|
-
- `no-inline-type-definitions` - Requires extracting types to new files
|
|
1118
|
-
- `typescript-definition-location` - Requires moving code to folders
|
|
1119
|
-
|
|
1120
|
-
### Stats
|
|
1121
|
-
|
|
1122
|
-
- Total Rules: 64 (was 61)
|
|
1123
|
-
- Auto-fixable: 58 rules 🔧
|
|
1124
|
-
- Report-only: 6 rules
|
|
1125
|
-
|
|
1126
|
-
**Full Changelog:** [v1.3.1...v1.4.2](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.1...v1.4.2)
|
|
1127
|
-
|
|
1128
|
-
---
|
|
1129
|
-
|
|
1130
|
-
## [1.4.1] - 2026-01-30
|
|
1131
|
-
|
|
1132
|
-
### Documentation
|
|
1133
|
-
|
|
1134
|
-
- Add 🔧 label to indicate auto-fixable rules (57 of 64)
|
|
1135
|
-
- 7 rules are report-only (require manual changes)
|
|
1136
|
-
- Add legend explaining 🔧 (auto-fixable) and ⚙️ (customizable) labels
|
|
1137
|
-
- Add new rules to Rules Categories table
|
|
1138
|
-
|
|
1139
|
-
---
|
|
1140
|
-
|
|
1141
|
-
## [1.4.0] - 2026-01-30
|
|
1142
|
-
|
|
1143
|
-
### Added
|
|
1144
|
-
|
|
1145
|
-
- New rule: `index-exports-only` - Prevent type/interface definitions in index files
|
|
1146
|
-
- New rule: `ternary-condition-multiline` - Format complex ternary conditions
|
|
1147
|
-
- New rule: `no-inline-type-definitions` - Extract inline union types to type files
|
|
1148
|
-
|
|
1149
|
-
### Enhanced
|
|
1150
|
-
|
|
1151
|
-
- `function-naming-convention` - Expanded verb list from ~50 to ~200+ verbs
|
|
1152
|
-
- `function-object-destructure` - Added auto-fix for parameter dot notation
|
|
1153
|
-
|
|
1154
|
-
### Fixed
|
|
1155
|
-
|
|
1156
|
-
- `multiline-if-conditions` - Fix indentation calculation for nested code
|
|
1157
|
-
- `classname-multiline` - Fix template literal indentation for inline attributes
|
|
1158
|
-
|
|
1159
|
-
### Stats
|
|
1160
|
-
|
|
1161
|
-
- Total Rules: 64 (was 61)
|
|
1162
|
-
|
|
1163
|
-
---
|
|
1164
|
-
|
|
1165
|
-
## [1.3.11] - 2026-01-30
|
|
1166
|
-
|
|
1167
|
-
### Enhanced
|
|
1168
|
-
|
|
1169
|
-
- Dependency-aware ordering: statements using variables must come after their declarations
|
|
1170
|
-
- Auto-fix for module-level constants: moves camelCase constants inside component
|
|
1171
|
-
- Auto-fix respects dependencies: initialResult declared before useRef(initialResult)
|
|
1172
|
-
- SCREAMING_CASE constants allowed at module level
|
|
1173
|
-
|
|
1174
|
-
---
|
|
1175
|
-
|
|
1176
|
-
## [1.3.10] - 2026-01-30
|
|
1177
|
-
|
|
1178
|
-
### Fixed
|
|
1179
|
-
|
|
1180
|
-
- `function-naming-convention` - Skip React components (PascalCase + returns JSX)
|
|
1181
|
-
- Prevents renaming components like Login to loginHandler
|
|
1182
|
-
|
|
1183
|
-
---
|
|
1184
|
-
|
|
1185
|
-
## [1.3.9] - 2026-01-29
|
|
1186
|
-
|
|
1187
|
-
### Enhanced
|
|
1188
|
-
|
|
1189
|
-
- `react-code-order` - Add auto-fix
|
|
1190
|
-
- Auto-fix preserves control flow statements (if, for, while) in their relative positions
|
|
1191
|
-
|
|
1192
|
-
---
|
|
1193
|
-
|
|
1194
|
-
## [1.3.8] - 2026-01-29
|
|
1195
|
-
|
|
1196
|
-
### Fixed
|
|
1197
|
-
|
|
1198
|
-
- `variable-naming-convention` - Skip PascalCase arguments (handled by function-naming-convention)
|
|
1199
|
-
- Avoids duplicate errors between the two rules
|
|
1200
|
-
- Auto-fix correctly updates all references including arguments passed to functions
|
|
1201
|
-
|
|
1202
|
-
---
|
|
1203
|
-
|
|
1204
|
-
## [1.3.7] - 2026-01-29
|
|
1205
|
-
|
|
1206
|
-
### Enhanced
|
|
1207
|
-
|
|
1208
|
-
- `function-naming-convention` - Enforce camelCase for functions with verb prefixes (GetForStatus → getForStatus)
|
|
1209
|
-
- Auto-fix converts PascalCase functions to camelCase and updates all references
|
|
1210
|
-
- React components (PascalCase without verb prefix) still correctly skipped
|
|
1211
|
-
|
|
1212
|
-
---
|
|
1213
|
-
|
|
1214
|
-
## [1.3.6] - 2026-01-29
|
|
1215
|
-
|
|
1216
|
-
### Enhanced
|
|
1217
|
-
|
|
1218
|
-
- `function-naming-convention` - Add "poll" as recognized verb prefix
|
|
1219
|
-
- Functions like pollForStatus, pollDataHandler are now valid
|
|
1220
|
-
|
|
1221
|
-
---
|
|
1222
|
-
|
|
1223
|
-
## [1.3.5] - 2026-01-28
|
|
1224
|
-
|
|
1225
|
-
### Enhanced
|
|
1226
|
-
|
|
1227
|
-
- Improved error messages with examples and helpful context for all rules
|
|
1228
|
-
- Tailwind class order shows recommended order (layout → sizing → spacing → typography → colors → effects → states)
|
|
1229
|
-
- className multiline shows threshold and format example
|
|
1230
|
-
- Import/export format shows single-line example with threshold
|
|
1231
|
-
- Object/array formatting shows format examples with thresholds
|
|
1232
|
-
- Type/Interface/Enum naming shows suggested corrected name
|
|
1233
|
-
- React code order shows full order sequence
|
|
1234
|
-
|
|
1235
|
-
---
|
|
1236
|
-
|
|
1237
|
-
## [1.3.4] - 2026-01-28
|
|
1238
|
-
|
|
1239
|
-
### Enhanced
|
|
1240
|
-
|
|
1241
|
-
- className rules - Smart detection for objects with Tailwind class values (e.g., variants object)
|
|
1242
|
-
- Smart detection for return statements with Tailwind classes
|
|
1243
|
-
- Applies to: classname-multiline, classname-no-extra-spaces, classname-order
|
|
1244
|
-
- `variable-naming-convention` - Add auto-fix for SCREAMING_SNAKE_CASE and snake_case
|
|
1245
|
-
|
|
1246
|
-
---
|
|
1247
|
-
|
|
1248
|
-
## [1.3.3] - 2026-01-28
|
|
1249
|
-
|
|
1250
|
-
### Fixed
|
|
1251
|
-
|
|
1252
|
-
- `function-naming-convention` - Fix overlapping fixes error in auto-fix
|
|
1253
|
-
- Track fixed ranges to prevent duplicate fixes on same node
|
|
1254
|
-
|
|
1255
|
-
---
|
|
1256
|
-
|
|
1257
|
-
## [1.3.2] - 2026-01-28
|
|
1258
|
-
|
|
1259
|
-
### Documentation
|
|
1260
|
-
|
|
1261
|
-
- Add Full Changelog links to all releases in CHANGELOG.md
|
|
1262
|
-
- Enhance release 1.1.0 with full feature details
|
|
1263
|
-
- Enhance release 1.0.14 with full feature details
|
|
1264
|
-
- Add Full Changelog link instructions to AGENTS.md
|
|
1265
|
-
|
|
1266
|
-
---
|
|
1267
|
-
|
|
1268
|
-
## [1.3.1] - 2026-01-28
|
|
1269
|
-
|
|
1270
|
-
### Documentation
|
|
1271
|
-
|
|
1272
|
-
- Add CHANGELOG.md with full release history
|
|
1273
|
-
- Add GitHub Releases guidelines to AGENTS.md
|
|
1274
|
-
|
|
1275
|
-
---
|
|
1276
|
-
|
|
1277
|
-
## [1.3.0] - 2026-01-28
|
|
1278
|
-
|
|
1279
|
-
**New Rules, Auto-Fix Enhancements & Agent Skills Integration**
|
|
1280
|
-
|
|
1281
|
-
**Version Range:** v1.2.1 → v1.3.0
|
|
1282
|
-
|
|
1283
|
-
### Added
|
|
1284
|
-
|
|
1285
|
-
**New Rules (2)**
|
|
1286
|
-
- `classname-multiline` - Enforce multiline className formatting with string/template literal format 🔧
|
|
1287
|
-
- `function-declaration-style` - Auto-fix function declarations to arrow expressions 🔧
|
|
1288
|
-
|
|
1289
|
-
**Agent Skills** - Added Agent Skills open standard support
|
|
1290
|
-
- `test-rule` - Test an ESLint rule after creating or modifying it
|
|
1291
|
-
- `validate-types` - Verify TypeScript definitions match rules in index.js
|
|
1292
|
-
- `review-config` - Review recommended ESLint configurations
|
|
1293
|
-
- `audit-docs` - Verify documentation accuracy across all files
|
|
1294
|
-
- Compatible with Claude Code, Cursor, VS Code, GitHub Copilot, Gemini CLI, and more
|
|
1295
|
-
|
|
1296
|
-
**TypeScript Support**
|
|
1297
|
-
- Added `index.d.ts` with full type definitions for IDE autocomplete
|
|
1298
|
-
- All 61 rule names available as TypeScript literal types
|
|
1299
|
-
|
|
1300
|
-
### Enhanced
|
|
1301
|
-
|
|
1302
|
-
- **`variable-naming-convention`** - Enforce camelCase for all variables including constants
|
|
1303
|
-
- **`function-object-destructure`** - Add auto-fix for arrow expression body callbacks
|
|
1304
|
-
- **`simple-call-single-line`** - Extend to collapse callbacks with params, handle optional chaining
|
|
1305
|
-
- **`function-naming-convention`** - Add auto-fix for missing Handler suffix
|
|
1306
|
-
- **`absolute-imports-only`** - Allow relative imports in entry files (main.tsx/main.ts), add pages folder
|
|
1307
|
-
|
|
1308
|
-
### Fixed
|
|
1309
|
-
|
|
1310
|
-
- Remove space before `?.` when collapsing simple calls to single line
|
|
1311
|
-
- Sync eslint configs and add `@stylistic/semi-style` rule
|
|
1312
|
-
|
|
1313
|
-
### Documentation
|
|
1314
|
-
|
|
1315
|
-
- Reorganized AGENTS.md and CLAUDE.md for better AI agent compatibility
|
|
1316
|
-
- Added git workflow and versioning guidelines
|
|
1317
|
-
- Updated requirements: Node.js 20+, TypeScript 5+, Tailwind CSS 4+
|
|
1318
|
-
|
|
1319
|
-
### Stats
|
|
1320
|
-
|
|
1321
|
-
- Total Rules: 61 (was 56)
|
|
1322
|
-
- All rules are auto-fixable with `eslint --fix`
|
|
1323
|
-
|
|
1324
|
-
**Full Changelog:** [v1.2.1...v1.3.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.1...v1.3.0)
|
|
1325
|
-
|
|
1326
|
-
---
|
|
1327
|
-
|
|
1328
|
-
## [1.2.9] - 2026-01-28
|
|
1329
|
-
|
|
1330
|
-
### Documentation
|
|
1331
|
-
|
|
1332
|
-
- Reorganize AGENTS.md and CLAUDE.md content
|
|
1333
|
-
- Add git workflow and versioning guidelines to AGENTS.md
|
|
1334
|
-
- Add commit approval workflow to CLAUDE.md
|
|
1335
|
-
- Require explicit approval for push and publish steps
|
|
1336
|
-
|
|
1337
|
-
---
|
|
1338
|
-
|
|
1339
|
-
## [1.2.8] - 2026-01-28
|
|
1340
|
-
|
|
1341
|
-
### Added
|
|
1342
|
-
|
|
1343
|
-
- New rule: `function-declaration-style` - Auto-fix function declarations to arrow expressions
|
|
1344
|
-
|
|
1345
|
-
### Enhanced
|
|
1346
|
-
|
|
1347
|
-
- `function-naming-convention` - Add auto-fix for missing Handler suffix
|
|
1348
|
-
- `absolute-imports-only` - Allow relative imports in entry files (main.tsx/main.ts)
|
|
1349
|
-
- `absolute-imports-only` - Add pages folder to default allowed folders
|
|
1350
|
-
- `module-index-exports` - Add pages folder to default module and lazy load folders
|
|
1351
|
-
|
|
1352
|
-
### Documentation
|
|
1353
|
-
|
|
1354
|
-
- Update rule count to 61 across all docs
|
|
1355
|
-
- Add function-declaration-style docs with func-style pairing note
|
|
1356
|
-
- Change Tailwind CSS badge to >=3.0.0
|
|
1357
|
-
|
|
1358
|
-
### Stats
|
|
1359
|
-
|
|
1360
|
-
- Total Rules: 61
|
|
1361
|
-
|
|
1362
|
-
---
|
|
1363
|
-
|
|
1364
|
-
## [1.2.7] - 2026-01-27
|
|
1365
|
-
|
|
1366
|
-
- Minor fixes
|
|
1367
|
-
|
|
1368
|
-
---
|
|
1369
|
-
|
|
1370
|
-
## [1.2.6] - 2026-01-27
|
|
1371
|
-
|
|
1372
|
-
- Minor fixes
|
|
1373
|
-
|
|
1374
|
-
---
|
|
1375
|
-
|
|
1376
|
-
## [1.2.5] - 2026-01-27
|
|
1377
|
-
|
|
1378
|
-
### Documentation
|
|
1379
|
-
|
|
1380
|
-
- Update badges and requirements for Node.js 20, TypeScript 5, Tailwind CSS 4
|
|
1381
|
-
|
|
1382
|
-
---
|
|
1383
|
-
|
|
1384
|
-
## [1.2.4] - 2026-01-27
|
|
1385
|
-
|
|
1386
|
-
### Fixed
|
|
1387
|
-
|
|
1388
|
-
- Sync eslint configs and add semi-style rule
|
|
1389
|
-
- Add missing `component-props-destructure` rule to react config and recommended react config
|
|
1390
|
-
- Add @stylistic/semi-style rule to all configs to enforce semicolons at end of line
|
|
1391
|
-
|
|
1392
|
-
---
|
|
1393
|
-
|
|
1394
|
-
## [1.2.3] - 2026-01-27
|
|
1395
|
-
|
|
1396
|
-
### Fixed
|
|
1397
|
-
|
|
1398
|
-
- `simple-call-single-line` - Remove space before ?. when collapsing simple calls to single line
|
|
1399
|
-
|
|
1400
|
-
---
|
|
1401
|
-
|
|
1402
|
-
## [1.2.2] - 2026-01-27
|
|
1403
|
-
|
|
1404
|
-
### Enhanced
|
|
1405
|
-
|
|
1406
|
-
- `variable-naming-convention` - Enforce camelCase for all variables including constants (no more SCREAMING_SNAKE_CASE)
|
|
1407
|
-
- `function-object-destructure` - Add auto-fix for arrow expression body callbacks
|
|
1408
|
-
- `simple-call-single-line` - Extend to collapse callbacks with params and simple expression bodies, handle optional chaining
|
|
1409
|
-
|
|
1410
|
-
---
|
|
1411
|
-
|
|
1412
|
-
## [1.2.1] - 2026-01-27
|
|
1413
|
-
|
|
1414
|
-
### Added
|
|
1415
|
-
|
|
1416
|
-
- New rule: `classname-multiline` - Enforce multiline className formatting when class count > 3 or length > 80
|
|
1417
|
-
|
|
1418
|
-
### Enhanced
|
|
1419
|
-
|
|
1420
|
-
- JSX className with no expressions uses "..." string literal format
|
|
1421
|
-
- JSX className with expressions uses {`...`} template literal format
|
|
1422
|
-
- Variables/object properties use `...` template literal for multiline
|
|
1423
|
-
- Updated `classname-no-extra-spaces` and `jsx-string-value-trim` to skip multiline format
|
|
1424
|
-
- Upgraded test project to Tailwind CSS v4 with eslint-plugin-tailwindcss@beta
|
|
1425
|
-
|
|
1426
|
-
---
|
|
1427
|
-
|
|
1428
|
-
## [1.2.0] - 2026-01-25
|
|
1429
|
-
|
|
1430
|
-
**React Code Order & TypeScript Enhancement Rules**
|
|
1431
|
-
|
|
1432
|
-
**Version Range:** v1.1.10 → v1.2.0
|
|
1433
|
-
|
|
1434
|
-
### Added
|
|
1435
|
-
|
|
1436
|
-
**New Rules (5)**
|
|
1437
|
-
- `component-props-destructure` - Enforce props destructuring in React components
|
|
1438
|
-
- `component-props-inline-type` - Enforce inline type annotations for component props
|
|
1439
|
-
- `function-object-destructure` - Enforce typed params with body destructuring
|
|
1440
|
-
- `react-code-order` - Enforce consistent ordering of hooks and code blocks
|
|
1441
|
-
- `type-annotation-spacing` - Enforce proper spacing in TypeScript type annotations
|
|
1442
|
-
|
|
1443
|
-
### Stats
|
|
1444
|
-
|
|
1445
|
-
- Total Rules: 56 (was 51)
|
|
1446
|
-
|
|
1447
|
-
**Full Changelog:** [v1.1.10...v1.2.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.10...v1.2.0)
|
|
1448
|
-
|
|
1449
|
-
---
|
|
1450
|
-
|
|
1451
|
-
## [1.1.10] - 2026-01-20
|
|
1452
|
-
|
|
1453
|
-
- Minor fixes
|
|
1454
|
-
|
|
1455
|
-
---
|
|
1456
|
-
|
|
1457
|
-
## [1.1.9] - 2026-01-20
|
|
1458
|
-
|
|
1459
|
-
### Changed
|
|
1460
|
-
|
|
1461
|
-
- Sync default folders between absolute-imports-only and module-index-exports (27 folders)
|
|
1462
|
-
- Reorganize rules export object with alphabetically ordered categories
|
|
1463
|
-
|
|
1464
|
-
---
|
|
1465
|
-
|
|
1466
|
-
## [1.1.8] - 2026-01-20
|
|
1467
|
-
|
|
1468
|
-
### Added
|
|
1469
|
-
|
|
1470
|
-
- TypeScript rules test cases in src/interfaces/, src/enums/, src/types/
|
|
1471
|
-
|
|
1472
|
-
---
|
|
1473
|
-
|
|
1474
|
-
## [1.1.7] - 2026-01-20
|
|
1475
|
-
|
|
1476
|
-
### Changed
|
|
1477
|
-
|
|
1478
|
-
- Add TypeScript formatting rules to recommended and test configs:
|
|
1479
|
-
- enum-format, interface-format, type-format, typescript-definition-location
|
|
1480
|
-
|
|
1481
|
-
---
|
|
1482
|
-
|
|
1483
|
-
## [1.1.6] - 2026-01-20
|
|
1484
|
-
|
|
1485
|
-
### Added
|
|
1486
|
-
|
|
1487
|
-
- New rule: `type-format` - Enforce PascalCase with Type suffix, camelCase properties
|
|
1488
|
-
|
|
1489
|
-
---
|
|
1490
|
-
|
|
1491
|
-
## [1.1.5] - 2026-01-20
|
|
1492
|
-
|
|
1493
|
-
### Added
|
|
1494
|
-
|
|
1495
|
-
- New rule: `enum-format` - Enforce PascalCase with Enum suffix, UPPER_CASE members
|
|
1496
|
-
|
|
1497
|
-
---
|
|
1498
|
-
|
|
1499
|
-
## [1.1.4] - 2026-01-20
|
|
1500
|
-
|
|
1501
|
-
### Added
|
|
1502
|
-
|
|
1503
|
-
- New rule: `interface-format` - Enforce PascalCase with Interface suffix, camelCase properties
|
|
1504
|
-
|
|
1505
|
-
---
|
|
1506
|
-
|
|
1507
|
-
## [1.1.3] - 2026-01-20
|
|
1508
|
-
|
|
1509
|
-
### Added
|
|
1510
|
-
|
|
1511
|
-
- New rule: `typescript-definition-location` - Enforce TypeScript definitions in designated folders
|
|
1512
|
-
|
|
1513
|
-
---
|
|
1514
|
-
|
|
1515
|
-
## [1.1.2] - 2026-01-20
|
|
1516
|
-
|
|
1517
|
-
- Minor fixes
|
|
1518
|
-
|
|
1519
|
-
---
|
|
1520
|
-
|
|
1521
|
-
## [1.1.1] - 2026-01-20
|
|
1522
|
-
|
|
1523
|
-
- Minor fixes
|
|
1524
|
-
|
|
1525
|
-
---
|
|
1526
|
-
|
|
1527
|
-
## [1.1.0] - 2026-01-20
|
|
1528
|
-
|
|
1529
|
-
**TypeScript + Tailwind Support & Configurable Rules**
|
|
1530
|
-
|
|
1531
|
-
**Version Range:** v1.0.17 → v1.1.0
|
|
1532
|
-
|
|
1533
|
-
### Added
|
|
1534
|
-
|
|
1535
|
-
**New Configuration: React + TypeScript + Tailwind** (`react-ts-tw`)
|
|
1536
|
-
- TypeScript parser and TypeScript ESLint plugin support
|
|
1537
|
-
- Tailwind CSS plugin integration
|
|
1538
|
-
- Perfectionist rules for sorting interfaces, enums, and object types
|
|
1539
|
-
- Comprehensive test project with TypeScript components
|
|
1540
|
-
|
|
1541
|
-
**New Rule**
|
|
1542
|
-
- `index-export-style` - Enforce consistent export formatting in index files
|
|
1543
|
-
|
|
1544
|
-
**Configurable Options**
|
|
1545
|
-
- `array-items-per-line` - Added `maxItems` option (default: 3)
|
|
1546
|
-
- `hook-deps-per-line` - Added `maxDeps` option (default: 2)
|
|
1547
|
-
- `multiline-if-conditions` - Added `maxOperands` option (default: 3)
|
|
1548
|
-
- `function-arguments-format` - New rule merging multiline argument rules with customizable options
|
|
1549
|
-
|
|
1550
|
-
**Documentation**
|
|
1551
|
-
- Added AGENTS.md for AI coding agents
|
|
1552
|
-
|
|
1553
|
-
### Changed
|
|
1554
|
-
|
|
1555
|
-
- `export-format` and `import-format` - Made self-sufficient, added `maxSpecifiers` option
|
|
1556
|
-
- `object-property-per-line` - Made self-sufficient, added `minProperties` option
|
|
1557
|
-
- `module-index-exports` - Support TypeScript index files
|
|
1558
|
-
- Migrated to `@stylistic/eslint-plugin` for formatting rules
|
|
1559
|
-
|
|
1560
|
-
### Stats
|
|
1561
|
-
|
|
1562
|
-
- Total Rules: 51 (was 45)
|
|
1563
|
-
- All changes are backward compatible
|
|
1564
|
-
|
|
1565
|
-
**Full Changelog:** [v1.0.17...v1.1.0](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.17...v1.1.0)
|
|
1566
|
-
|
|
1567
|
-
---
|
|
1568
|
-
|
|
1569
|
-
## [1.0.41] - 2026-01-19
|
|
1570
|
-
|
|
1571
|
-
- Minor fixes
|
|
1572
|
-
|
|
1573
|
-
---
|
|
1574
|
-
|
|
1575
|
-
## [1.0.40] - 2026-01-19
|
|
1576
|
-
|
|
1577
|
-
- Minor fixes
|
|
1578
|
-
|
|
1579
|
-
---
|
|
1580
|
-
|
|
1581
|
-
## [1.0.39] - 2026-01-19
|
|
1582
|
-
|
|
1583
|
-
- Minor fixes
|
|
1584
|
-
|
|
1585
|
-
---
|
|
1586
|
-
|
|
1587
|
-
## [1.0.38] - 2026-01-19
|
|
1588
|
-
|
|
1589
|
-
- Minor fixes
|
|
1590
|
-
|
|
1591
|
-
---
|
|
1592
|
-
|
|
1593
|
-
## [1.0.37] - 2026-01-13
|
|
1594
|
-
|
|
1595
|
-
- Minor fixes
|
|
1596
|
-
|
|
1597
|
-
---
|
|
1598
|
-
|
|
1599
|
-
## [1.0.36] - 2026-01-13
|
|
1600
|
-
|
|
1601
|
-
- Minor fixes
|
|
1602
|
-
|
|
1603
|
-
---
|
|
1604
|
-
|
|
1605
|
-
## [1.0.35] - 2026-01-13
|
|
1606
|
-
|
|
1607
|
-
- Minor fixes
|
|
1608
|
-
|
|
1609
|
-
---
|
|
1610
|
-
|
|
1611
|
-
## [1.0.34] - 2026-01-13
|
|
1612
|
-
|
|
1613
|
-
- Minor fixes
|
|
1614
|
-
|
|
1615
|
-
---
|
|
1616
|
-
|
|
1617
|
-
## [1.0.33] - 2026-01-13
|
|
1618
|
-
|
|
1619
|
-
- Minor fixes
|
|
1620
|
-
|
|
1621
|
-
---
|
|
1622
|
-
|
|
1623
|
-
## [1.0.32] - 2026-01-13
|
|
1624
|
-
|
|
1625
|
-
- Minor fixes
|
|
1626
|
-
|
|
1627
|
-
---
|
|
1628
|
-
|
|
1629
|
-
## [1.0.31] - 2026-01-13
|
|
1630
|
-
|
|
1631
|
-
- Minor fixes
|
|
1632
|
-
|
|
1633
|
-
---
|
|
1634
|
-
|
|
1635
|
-
## [1.0.30] - 2026-01-13
|
|
1636
|
-
|
|
1637
|
-
- Minor fixes
|
|
1638
|
-
|
|
1639
|
-
---
|
|
1640
|
-
|
|
1641
|
-
## [1.0.29] - 2026-01-12
|
|
1642
|
-
|
|
1643
|
-
- Minor fixes
|
|
1644
|
-
|
|
1645
|
-
---
|
|
1646
|
-
|
|
1647
|
-
## [1.0.28] - 2026-01-12
|
|
1648
|
-
|
|
1649
|
-
### Changed
|
|
1650
|
-
|
|
1651
|
-
- **BREAKING:** Merge `multiline-argument-newline` and `multiple-arguments-per-line` into `function-arguments-format`
|
|
1652
|
-
- Add customizable options: minArgs (default: 2), skipHooks (default: true), skipSingleArg (default: true)
|
|
1653
|
-
- Remove @stylistic/function-call-argument-newline from recommended config
|
|
1654
|
-
|
|
1655
|
-
---
|
|
1656
|
-
|
|
1657
|
-
## [1.0.27] - 2026-01-12
|
|
1658
|
-
|
|
1659
|
-
### Enhanced
|
|
1660
|
-
|
|
1661
|
-
- `index-export-style` - Handle export padding for all files
|
|
1662
|
-
- Non-index files require blank lines between exports
|
|
1663
|
-
- Index files have no blank lines between exports
|
|
1664
|
-
|
|
1665
|
-
---
|
|
1666
|
-
|
|
1667
|
-
## [1.0.26] - 2026-01-12
|
|
1668
|
-
|
|
1669
|
-
### Documentation
|
|
1670
|
-
|
|
1671
|
-
- Clarify index-export-style and @stylistic relationship
|
|
1672
|
-
- @stylistic handles general blank lines (return, variables, expressions)
|
|
1673
|
-
- index-export-style handles blank line enforcement in index files
|
|
1674
|
-
|
|
1675
|
-
---
|
|
1676
|
-
|
|
1677
|
-
## [1.0.25] - 2026-01-12
|
|
1678
|
-
|
|
1679
|
-
### Enhanced
|
|
1680
|
-
|
|
1681
|
-
- `object-property-per-line` - Made self-sufficient
|
|
1682
|
-
- Rule now handles complete multiline object formatting
|
|
1683
|
-
- Remove dependency on @stylistic/object-curly-newline
|
|
1684
|
-
|
|
1685
|
-
---
|
|
1686
|
-
|
|
1687
|
-
## [1.0.24] - 2026-01-12
|
|
1688
|
-
|
|
1689
|
-
### Enhanced
|
|
1690
|
-
|
|
1691
|
-
- `export-format` and `import-format` - Made self-sufficient
|
|
1692
|
-
- Both now handle collapse (≤ threshold) and expand (> threshold)
|
|
1693
|
-
- Remove dependency on @stylistic/object-curly-newline for imports/exports
|
|
1694
|
-
|
|
1695
|
-
---
|
|
1696
|
-
|
|
1697
|
-
## [1.0.23] - 2026-01-12
|
|
1698
|
-
|
|
1699
|
-
### Changed
|
|
1700
|
-
|
|
1701
|
-
- Migrate to @stylistic/eslint-plugin for formatting rules
|
|
1702
|
-
- Replace 24 deprecated ESLint formatting rules with @stylistic equivalents
|
|
1703
|
-
|
|
1704
|
-
---
|
|
1705
|
-
|
|
1706
|
-
## [1.0.22] - 2026-01-11
|
|
1707
|
-
|
|
1708
|
-
### Enhanced
|
|
1709
|
-
|
|
1710
|
-
- `multiline-if-conditions` - Add maxOperands configuration option (default: 3)
|
|
1711
|
-
|
|
1712
|
-
---
|
|
1713
|
-
|
|
1714
|
-
## [1.0.21] - 2026-01-11
|
|
1715
|
-
|
|
1716
|
-
### Enhanced
|
|
1717
|
-
|
|
1718
|
-
- `hook-deps-per-line` - Add maxDeps configuration option (default: 2)
|
|
1719
|
-
|
|
1720
|
-
---
|
|
1721
|
-
|
|
1722
|
-
## [1.0.20] - 2026-01-11
|
|
1723
|
-
|
|
1724
|
-
### Enhanced
|
|
1725
|
-
|
|
1726
|
-
- `array-items-per-line` - Add maxItems configuration option (default: 3)
|
|
1727
|
-
|
|
1728
|
-
---
|
|
1729
|
-
|
|
1730
|
-
## [1.0.19] - 2026-01-11
|
|
1731
|
-
|
|
1732
|
-
- Version bump
|
|
1733
|
-
|
|
1734
|
-
---
|
|
1735
|
-
|
|
1736
|
-
## [1.0.18] - 2026-01-11
|
|
1737
|
-
|
|
1738
|
-
### Enhanced
|
|
1739
|
-
|
|
1740
|
-
- `import-format` and `export-format` - Add maxSpecifiers option (default: 3)
|
|
1741
|
-
- `object-property-per-line` - Add minProperties option (default: 2)
|
|
1742
|
-
- Remove eslint-plugin-newline dependency (redundant with object-curly-newline)
|
|
1743
|
-
|
|
1744
|
-
---
|
|
1745
|
-
|
|
1746
|
-
## [1.0.17] - 2026-01-11
|
|
1747
|
-
|
|
1748
|
-
### Documentation
|
|
1749
|
-
|
|
1750
|
-
- Update rule count from 47 to 48 in all README files
|
|
1751
|
-
- Add coverage, public, and .vite to eslint config ignores
|
|
1752
|
-
|
|
1753
|
-
---
|
|
1754
|
-
|
|
1755
|
-
## [1.0.16] - 2026-01-09
|
|
1756
|
-
|
|
1757
|
-
**New Rule: index-export-style**
|
|
1758
|
-
|
|
1759
|
-
**Version Range:** v1.0.15 → v1.0.16
|
|
1760
|
-
|
|
1761
|
-
### Added
|
|
1762
|
-
|
|
1763
|
-
**New Rule**
|
|
1764
|
-
- `index-export-style` - Enforce consistent export style in index files 🔧
|
|
1765
|
-
- Support two styles: 'shorthand' (default) and 'import-export'
|
|
1766
|
-
- Shorthand: `export { a } from './file';`
|
|
1767
|
-
- Import-export: `import { a } from './file'; export { a };`
|
|
1768
|
-
- Auto-fixable with eslint --fix
|
|
1769
|
-
- Detects and reports mixed export styles
|
|
1770
|
-
|
|
1771
|
-
### Stats
|
|
1772
|
-
|
|
1773
|
-
- Total Rules: 48 (was 47)
|
|
1774
|
-
|
|
1775
|
-
**Full Changelog:** [v1.0.15...v1.0.16](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.15...v1.0.16)
|
|
1776
|
-
|
|
1777
|
-
---
|
|
1778
|
-
|
|
1779
|
-
## [1.0.15] - 2026-01-09
|
|
1780
|
-
|
|
1781
|
-
### Added
|
|
1782
|
-
|
|
1783
|
-
- Additional perfectionist rules to recommended React config:
|
|
1784
|
-
- perfectionist/sort-array-includes
|
|
1785
|
-
- perfectionist/sort-maps
|
|
1786
|
-
- perfectionist/sort-sets
|
|
1787
|
-
- perfectionist/sort-switch-case
|
|
1788
|
-
- perfectionist/sort-variable-declarations
|
|
1789
|
-
|
|
1790
|
-
---
|
|
1791
|
-
|
|
1792
|
-
## [1.0.14] - 2026-01-06
|
|
1793
|
-
|
|
1794
|
-
**Customizable Rules, Recommended Configs & Documentation Overhaul**
|
|
1795
|
-
|
|
1796
|
-
**Version Range:** v1.0.8 → v1.0.14
|
|
1797
|
-
|
|
1798
|
-
### Added
|
|
1799
|
-
|
|
1800
|
-
**Customizable Folder Options**
|
|
1801
|
-
- `absolute-imports-only` - Add extraAllowedFolders, extraReduxSubfolders, extraDeepImportFolders options
|
|
1802
|
-
- `module-index-exports` - Add extraModuleFolders, extraLazyLoadFolders, extraIgnorePatterns options
|
|
1803
|
-
- Users can now extend default folder lists without replacing them
|
|
1804
|
-
|
|
1805
|
-
**Recommended ESLint Configurations**
|
|
1806
|
-
- Add recommended-configs/react/ folder with model eslint.config.js
|
|
1807
|
-
- Include comprehensive README with installation and plugin documentation
|
|
1808
|
-
|
|
1809
|
-
**Comprehensive Documentation**
|
|
1810
|
-
- Add comprehensive examples for all 47 rules in README
|
|
1811
|
-
- Enhance README with emojis, rules summary table, and introduction section
|
|
1812
|
-
|
|
1813
|
-
### Changed
|
|
1814
|
-
|
|
1815
|
-
- Standardized all internal helper function names with `Handler` suffix
|
|
1816
|
-
|
|
1817
|
-
### Documentation
|
|
1818
|
-
|
|
1819
|
-
- Add comprehensive block comments to all ESLint rules with good/bad examples
|
|
1820
|
-
|
|
1821
|
-
### Stats
|
|
1822
|
-
|
|
1823
|
-
- Total Rules: 47
|
|
1824
|
-
|
|
1825
|
-
**Full Changelog:** [v1.0.8...v1.0.14](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.8...v1.0.14)
|
|
1826
|
-
|
|
1827
|
-
---
|
|
1828
|
-
|
|
1829
|
-
## [1.0.13] - 2026-01-06
|
|
1830
|
-
|
|
1831
|
-
### Added
|
|
1832
|
-
|
|
1833
|
-
- Recommended ESLint configurations for React projects
|
|
1834
|
-
- recommended-configs/react/ folder with model eslint.config.js
|
|
1835
|
-
|
|
1836
|
-
---
|
|
1837
|
-
|
|
1838
|
-
## [1.0.12] - 2026-01-06
|
|
1839
|
-
|
|
1840
|
-
### Documentation
|
|
1841
|
-
|
|
1842
|
-
- Enhance README with emojis, rules summary table, and introduction section
|
|
1843
|
-
|
|
1844
|
-
---
|
|
1845
|
-
|
|
1846
|
-
## [1.0.11] - 2026-01-06
|
|
1847
|
-
|
|
1848
|
-
### Documentation
|
|
1849
|
-
|
|
1850
|
-
- Add comprehensive examples for all 47 rules in README
|
|
1851
|
-
|
|
1852
|
-
---
|
|
1853
|
-
|
|
1854
|
-
## [1.0.10] - 2026-01-06
|
|
1855
|
-
|
|
1856
|
-
### Documentation
|
|
1857
|
-
|
|
1858
|
-
- Update README file and TypeScript rules types
|
|
1859
|
-
|
|
1860
|
-
---
|
|
1861
|
-
|
|
1862
|
-
## [1.0.9] - 2026-01-06
|
|
1863
|
-
|
|
1864
|
-
### Changed
|
|
1865
|
-
|
|
1866
|
-
- Standardize internal helper function names with Handler suffix
|
|
1867
|
-
- All check*, is*, get*, has* functions renamed
|
|
1868
|
-
|
|
1869
|
-
---
|
|
1870
|
-
|
|
1871
|
-
## [1.0.8] - 2026-01-06
|
|
1872
|
-
|
|
1873
|
-
### Documentation
|
|
1874
|
-
|
|
1875
|
-
- Add comprehensive block comments to all ESLint rules
|
|
1876
|
-
- Each rule has title, description, and good/bad code examples
|
|
1877
|
-
|
|
1878
|
-
---
|
|
1879
|
-
|
|
1880
|
-
## [1.0.7] - 2026-01-06
|
|
1881
|
-
|
|
1882
|
-
**TypeScript Type Definitions for IDE Support**
|
|
1883
|
-
|
|
1884
|
-
**Version Range:** v1.0.6 → v1.0.7
|
|
1885
|
-
|
|
1886
|
-
### Added
|
|
1887
|
-
|
|
1888
|
-
**TypeScript Support**
|
|
1889
|
-
- Add TypeScript type definitions for IDE support (index.d.ts)
|
|
1890
|
-
- Export all 47 rule names as literal types for autocomplete
|
|
1891
|
-
- Add PluginRules interface mapping rules to Rule.RuleModule
|
|
1892
|
-
- Include module augmentation for ESLint's Linter.RulesRecord
|
|
1893
|
-
|
|
1894
|
-
### Stats
|
|
1895
|
-
|
|
1896
|
-
- Total Rules: 47
|
|
1897
|
-
|
|
1898
|
-
**Full Changelog:** [v1.0.6...v1.0.7](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.6...v1.0.7)
|
|
1899
|
-
|
|
1900
|
-
---
|
|
1901
|
-
|
|
1902
|
-
## [1.0.6] - 2026-01-06
|
|
1903
|
-
|
|
1904
|
-
**Initial Public Release**
|
|
1905
|
-
|
|
1906
|
-
### Added
|
|
1907
|
-
|
|
1908
|
-
- 45+ auto-fixable ESLint rules for React/JSX projects
|
|
1909
|
-
- Full support for ESLint v9+ flat config
|
|
1910
|
-
- Zero dependencies (except peer dependency on ESLint)
|
|
1911
|
-
|
|
1912
|
-
### Requirements
|
|
1913
|
-
|
|
1914
|
-
- ESLint >= 9.0.0
|
|
1915
|
-
- Node.js >= 20.0.0
|
|
1916
|
-
|
|
1917
|
-
### Stats
|
|
1918
|
-
|
|
1919
|
-
- Total Rules: 45+
|
|
1920
|
-
|
|
1921
|
-
**Full Changelog:** [v1.0.6](https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/releases/tag/v1.0.6)
|
|
1922
|
-
|
|
1923
|
-
---
|
|
1924
|
-
|
|
1925
|
-
## [1.0.5] - 2026-01-06
|
|
1926
|
-
|
|
1927
|
-
- Pre-release version
|
|
1928
|
-
|
|
1929
|
-
---
|
|
1930
|
-
|
|
1931
|
-
## [1.0.4] - 2026-01-06
|
|
1932
|
-
|
|
1933
|
-
- Pre-release version
|
|
1934
|
-
|
|
1935
|
-
---
|
|
1936
|
-
|
|
1937
|
-
## [1.0.3] - 2026-01-06
|
|
1938
|
-
|
|
1939
|
-
- Pre-release version
|
|
1940
|
-
|
|
1941
|
-
---
|
|
1942
|
-
|
|
1943
|
-
## [1.0.2] - 2026-01-06
|
|
1944
|
-
|
|
1945
|
-
- Pre-release version
|
|
1946
|
-
|
|
1947
|
-
---
|
|
1948
|
-
|
|
1949
|
-
[2.0.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.20.0...v2.0.0
|
|
1950
|
-
[1.20.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.19.0...v1.20.0
|
|
1951
|
-
[1.19.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.18.0...v1.19.0
|
|
1952
|
-
[1.18.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.2...v1.18.0
|
|
1953
|
-
[1.17.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.1...v1.17.2
|
|
1954
|
-
[1.17.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.17.0...v1.17.1
|
|
1955
|
-
[1.17.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.16.0...v1.17.0
|
|
1956
|
-
[1.16.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.15.0...v1.16.0
|
|
1957
|
-
[1.15.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.4...v1.15.0
|
|
1958
|
-
[1.14.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.3...v1.14.4
|
|
1959
|
-
[1.14.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.2...v1.14.3
|
|
1960
|
-
[1.14.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.1...v1.14.2
|
|
1961
|
-
[1.14.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.14.0...v1.14.1
|
|
1962
|
-
[1.14.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.13.0...v1.14.0
|
|
1963
|
-
[1.13.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.12.1...v1.13.0
|
|
1964
|
-
[1.12.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.12.0...v1.12.1
|
|
1965
|
-
[1.12.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.9...v1.12.0
|
|
1966
|
-
[1.11.9]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.8...v1.11.9
|
|
1967
|
-
[1.11.8]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.7...v1.11.8
|
|
1968
|
-
[1.11.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.6...v1.11.7
|
|
1969
|
-
[1.11.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.5...v1.11.6
|
|
1970
|
-
[1.11.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.4...v1.11.5
|
|
1971
|
-
[1.11.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.3...v1.11.4
|
|
1972
|
-
[1.11.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.2...v1.11.3
|
|
1973
|
-
[1.11.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.1...v1.11.2
|
|
1974
|
-
[1.11.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.11.0...v1.11.1
|
|
1975
|
-
[1.11.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.10.3...v1.11.0
|
|
1976
|
-
[1.10.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.10.2...v1.10.3
|
|
1977
|
-
[1.10.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.10.1...v1.10.2
|
|
1978
|
-
[1.10.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.10.0...v1.10.1
|
|
1979
|
-
[1.10.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.7...v1.10.0
|
|
1980
|
-
[1.9.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.6...v1.9.7
|
|
1981
|
-
[1.9.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.5...v1.9.6
|
|
1982
|
-
[1.9.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.4...v1.9.5
|
|
1983
|
-
[1.9.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.3...v1.9.4
|
|
1984
|
-
[1.9.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.2...v1.9.3
|
|
1985
|
-
[1.9.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.1...v1.9.2
|
|
1986
|
-
[1.9.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.9.0...v1.9.1
|
|
1987
|
-
[1.9.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.4...v1.9.0
|
|
1988
|
-
[1.8.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.3...v1.8.4
|
|
1989
|
-
[1.8.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.2...v1.8.3
|
|
1990
|
-
[1.8.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.1...v1.8.2
|
|
1991
|
-
[1.8.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.8.0...v1.8.1
|
|
1992
|
-
[1.8.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.6...v1.8.0
|
|
1993
|
-
[1.7.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.5...v1.7.6
|
|
1994
|
-
[1.7.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.4...v1.7.5
|
|
1995
|
-
[1.7.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.3...v1.7.4
|
|
1996
|
-
[1.7.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.2...v1.7.3
|
|
1997
|
-
[1.7.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.1...v1.7.2
|
|
1998
|
-
[1.7.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.7.0...v1.7.1
|
|
1999
|
-
[1.7.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.6...v1.7.0
|
|
2000
|
-
[1.6.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.5...v1.6.6
|
|
2001
|
-
[1.6.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.4...v1.6.5
|
|
2002
|
-
[1.6.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.3...v1.6.4
|
|
2003
|
-
[1.6.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.2...v1.6.3
|
|
2004
|
-
[1.6.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.1...v1.6.2
|
|
2005
|
-
[1.6.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.6.0...v1.6.1
|
|
2006
|
-
[1.6.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.5.2...v1.6.0
|
|
2007
|
-
[1.5.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.5.1...v1.5.2
|
|
2008
|
-
[1.5.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.5.0...v1.5.1
|
|
2009
|
-
[1.5.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.5...v1.5.0
|
|
2010
|
-
[1.4.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.3...v1.4.5
|
|
2011
|
-
[1.4.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.2...v1.4.3
|
|
2012
|
-
[1.4.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.1...v1.4.2
|
|
2013
|
-
[1.4.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.4.0...v1.4.1
|
|
2014
|
-
[1.4.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.11...v1.4.0
|
|
2015
|
-
[1.3.11]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.10...v1.3.11
|
|
2016
|
-
[1.3.10]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.9...v1.3.10
|
|
2017
|
-
[1.3.9]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.8...v1.3.9
|
|
2018
|
-
[1.3.8]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.7...v1.3.8
|
|
2019
|
-
[1.3.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.6...v1.3.7
|
|
2020
|
-
[1.3.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.5...v1.3.6
|
|
2021
|
-
[1.3.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.4...v1.3.5
|
|
2022
|
-
[1.3.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.3...v1.3.4
|
|
2023
|
-
[1.3.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.2...v1.3.3
|
|
2024
|
-
[1.3.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.1...v1.3.2
|
|
2025
|
-
[1.3.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.3.0...v1.3.1
|
|
2026
|
-
[1.3.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.9...v1.3.0
|
|
2027
|
-
[1.2.9]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.8...v1.2.9
|
|
2028
|
-
[1.2.8]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.7...v1.2.8
|
|
2029
|
-
[1.2.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.6...v1.2.7
|
|
2030
|
-
[1.2.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.5...v1.2.6
|
|
2031
|
-
[1.2.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.4...v1.2.5
|
|
2032
|
-
[1.2.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.3...v1.2.4
|
|
2033
|
-
[1.2.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.2...v1.2.3
|
|
2034
|
-
[1.2.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.1...v1.2.2
|
|
2035
|
-
[1.2.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.2.0...v1.2.1
|
|
2036
|
-
[1.2.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.10...v1.2.0
|
|
2037
|
-
[1.1.10]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.9...v1.1.10
|
|
2038
|
-
[1.1.9]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.8...v1.1.9
|
|
2039
|
-
[1.1.8]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.7...v1.1.8
|
|
2040
|
-
[1.1.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.6...v1.1.7
|
|
2041
|
-
[1.1.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.5...v1.1.6
|
|
2042
|
-
[1.1.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.4...v1.1.5
|
|
2043
|
-
[1.1.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.3...v1.1.4
|
|
2044
|
-
[1.1.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.2...v1.1.3
|
|
2045
|
-
[1.1.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.1...v1.1.2
|
|
2046
|
-
[1.1.1]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.1.0...v1.1.1
|
|
2047
|
-
[1.1.0]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.41...v1.1.0
|
|
2048
|
-
[1.0.41]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.40...v1.0.41
|
|
2049
|
-
[1.0.40]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.39...v1.0.40
|
|
2050
|
-
[1.0.39]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.38...v1.0.39
|
|
2051
|
-
[1.0.38]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.37...v1.0.38
|
|
2052
|
-
[1.0.37]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.36...v1.0.37
|
|
2053
|
-
[1.0.36]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.35...v1.0.36
|
|
2054
|
-
[1.0.35]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.34...v1.0.35
|
|
2055
|
-
[1.0.34]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.33...v1.0.34
|
|
2056
|
-
[1.0.33]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.32...v1.0.33
|
|
2057
|
-
[1.0.32]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.31...v1.0.32
|
|
2058
|
-
[1.0.31]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.30...v1.0.31
|
|
2059
|
-
[1.0.30]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.29...v1.0.30
|
|
2060
|
-
[1.0.29]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.28...v1.0.29
|
|
2061
|
-
[1.0.28]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.27...v1.0.28
|
|
2062
|
-
[1.0.27]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.26...v1.0.27
|
|
2063
|
-
[1.0.26]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.25...v1.0.26
|
|
2064
|
-
[1.0.25]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.24...v1.0.25
|
|
2065
|
-
[1.0.24]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.23...v1.0.24
|
|
2066
|
-
[1.0.23]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.22...v1.0.23
|
|
2067
|
-
[1.0.22]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.21...v1.0.22
|
|
2068
|
-
[1.0.21]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.20...v1.0.21
|
|
2069
|
-
[1.0.20]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.19...v1.0.20
|
|
2070
|
-
[1.0.19]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.18...v1.0.19
|
|
2071
|
-
[1.0.18]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.17...v1.0.18
|
|
2072
|
-
[1.0.17]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.16...v1.0.17
|
|
2073
|
-
[1.0.16]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.15...v1.0.16
|
|
2074
|
-
[1.0.15]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.14...v1.0.15
|
|
2075
|
-
[1.0.14]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.13...v1.0.14
|
|
2076
|
-
[1.0.13]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.12...v1.0.13
|
|
2077
|
-
[1.0.12]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.11...v1.0.12
|
|
2078
|
-
[1.0.11]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.10...v1.0.11
|
|
2079
|
-
[1.0.10]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.9...v1.0.10
|
|
2080
|
-
[1.0.9]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.8...v1.0.9
|
|
2081
|
-
[1.0.8]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.7...v1.0.8
|
|
2082
|
-
[1.0.7]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.6...v1.0.7
|
|
2083
|
-
[1.0.6]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.5...v1.0.6
|
|
2084
|
-
[1.0.5]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.4...v1.0.5
|
|
2085
|
-
[1.0.4]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.3...v1.0.4
|
|
2086
|
-
[1.0.3]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/compare/v1.0.2...v1.0.3
|
|
2087
|
-
[1.0.2]: https://github.com/Mohamed-Elhawary/eslint-plugin-code-style/releases/tag/v1.0.2
|