-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathroadmap-data.json
More file actions
226 lines (226 loc) · 10.2 KB
/
roadmap-data.json
File metadata and controls
226 lines (226 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
{
"features": [
{
"name": "extract-method",
"description": "Extract methods with automatic parameter/return detection",
"why": "Most common refactoring operation needs automation",
"score": 9,
"status": "proposed",
"dependencies": [
"location-based-refactoring-api"
],
"githubIssue": "https://github.com/devill/refakts/issues/4"
},
{
"name": "find-usages",
"description": "Finds all usages of a symbol or file in a code base. **IMPORTANT**: Research existing tools before implementing. Ideally we should integrate something",
"why": "Helps with identifying where a symbol is defined as well as where it is used. Unlocks critical features",
"score": 6,
"status": "proposed",
"note": "Replaces variable-locator. **IMPORTANT**: Once this is implemented variable-locator should be removed.",
"githubIssue": "https://github.com/devill/refakts/issues/2"
},
{
"name": "safe-delete",
"description": "Delete files/symbols with dependency analysis to prevent breaking references",
"why": "Essential safety feature - ensures deletions don't break code by checking all references before removal",
"score": 3,
"status": "proposed",
"dependencies": [
"find-usages"
],
"githubIssue": "https://github.com/devill/refakts/issues/12"
},
{
"name": "safe-delete-auto",
"description": "Safe removal of unused code with impact analysis. When safe-delete is ran with --auto it should remove all unused code automatically",
"why": "Quality maintenance automation - removes manual analysis",
"score": 0,
"status": "proposed",
"dependencies": [
"safe-delete"
]
},
{
"name": "optimize-abstraction-leakage-report",
"description": "Identify highly connected clusters in change frequency graph instead of reporting all pairs",
"why": "The abstraction leakage report can get huge due to the large amount of possible pairs. This could be improved by identifying highly connected clusters in the graph and reporting on them once.",
"score": 1,
"status": "proposed"
},
{
"name": "extract-delegate-class",
"description": "Extract cohesive methods and member from large classes into separate classes/modules",
"why": "Would have automated the manual work of splitting roadmap-manager.ts into focused modules",
"score": 0,
"status": "proposed"
},
{
"name": "auto-import-organizer",
"description": "Automatically add, remove, and organize import statements when moving code between files **IMPORTANT** research existing tools. There might already be command line tools that do this.",
"why": "During modular refactoring, managing imports manually was tedious and error-prone",
"score": 4,
"status": "proposed",
"githubIssue": "https://github.com/devill/refakts/issues/11"
},
{
"name": "extract-field",
"description": "Extract expressions into class fields/properties",
"why": "Allows converting method-local computations into class-level properties for better encapsulation and reusability",
"score": 0,
"status": "proposed"
},
{
"name": "extract-type-alias",
"description": "Extract complex type annotations into named type aliases",
"why": "Critical for TypeScript codebases - improves type reusability and reduces complex inline type definitions",
"score": 1,
"status": "proposed"
},
{
"name": "extract-interface",
"description": "Extract object type patterns into reusable interfaces",
"why": "Essential TypeScript refactoring for creating clean abstractions from inline object types and improving type system organization",
"score": 1,
"status": "proposed"
},
{
"name": "extract-superclass",
"description": "Extract common functionality from multiple classes into a shared base class",
"why": "Fundamental OOP refactoring for eliminating code duplication and establishing proper inheritance hierarchies",
"score": 0,
"status": "proposed"
},
{
"name": "introduce-wrapper-class",
"description": "Introduce a wrapper class that delegates to an existing class",
"why": "Natural counter part of extract delegate class. Helps with separating concerns.",
"score": 0,
"status": "proposed"
},
{
"name": "introduce-destructuring",
"description": "Convert property access patterns to destructuring assignments",
"why": "Modern JavaScript/TypeScript practice - improves code conciseness and readability by eliminating repetitive property access",
"score": 0,
"status": "proposed"
},
{
"name": "change-signature",
"description": "Modify function signatures by adding/removing/reordering parameters and updating all call sites",
"why": "Critical refactoring for API evolution - safely changes function contracts across entire codebase",
"score": 0,
"status": "proposed"
},
{
"name": "pull-members-up",
"description": "Move class methods/properties up the inheritance hierarchy to superclass or interface",
"why": "Essential OOP refactoring for code organization - moves shared functionality to appropriate abstraction levels",
"score": 0,
"status": "proposed"
},
{
"name": "convert-export-type",
"description": "Convert between default and named exports/imports",
"why": "Module system refactoring - essential for organizing TypeScript module boundaries and improving import ergonomics",
"score": 0,
"status": "proposed"
},
{
"name": "move-method-between-classes",
"description": "Move methods from one class to another with automatic reference updates",
"why": "Common refactoring for better class organization - moves methods to their most appropriate class based on data usage",
"score": 1,
"status": "proposed"
},
{
"name": "make-method-static",
"description": "Convert instance methods to static methods when they don't use instance data",
"why": "Performance and clarity improvement - makes method dependencies explicit and enables usage without instantiation",
"score": 0,
"status": "proposed"
},
{
"name": "make-method-non-static",
"description": "Convert static methods to instance methods when they need access to instance data",
"why": "Enables better encapsulation when static methods need to become instance-aware",
"score": 0,
"status": "proposed"
},
{
"name": "transform-parameter",
"description": "Wrap/unwrap parameters with adapter objects to hide complexity or change interfaces",
"why": "Essential for legacy code modernization - hides complex dependencies behind clean interfaces and enables gradual API evolution",
"score": 0,
"status": "proposed"
},
{
"name": "detect-data-class",
"description": "Identify classes that only contain data with getters/setters but no behavior",
"why": "Quality check that suggests moving related behavior into the data class - helps identify anemic domain models",
"score": 0,
"status": "proposed"
},
{
"name": "detect-low-cohesion",
"description": "Identify classes with too many responsibilities by detecting member and function clusters that operate independently",
"why": "Quality check that suggests extract-class or extract-module refactorings - helps identify single responsibility principle violations",
"score": 0,
"status": "proposed"
},
{
"name": "rename-symbol",
"description": "Rename any symbol (functions, classes, interfaces, types, properties, methods, modules) and update all references",
"why": "Current rename command only handles variables. Need generalized renaming for all symbol types to enable comprehensive refactoring workflows",
"score": 1,
"status": "proposed",
"dependencies": [
"find-usages"
]
},
{
"name": "detect-unused-interfaces",
"description": "Find and report interfaces, types, and type aliases that are defined but never used",
"why": "While creating many interfaces during type cleanup, it would have been helpful to automatically detect which interfaces were actually needed vs. created but unused (like EndMatchResult).",
"score": 1,
"status": "proposed"
},
{
"name": "move-file",
"description": "Move modules around without manually updating references",
"why": "Essential for repo reorganization and maintaining import consistency",
"score": 0,
"status": "proposed",
"githubIssue": "https://github.com/devill/refakts/issues/3"
},
{
"name": "introduce-parameter-object",
"description": "Transforms a long list of parameters into an interface with those members. (It can be selected which parameters should be added)",
"why": "Refactoring to fix long parameter lists - improves function signatures and enables easier parameter evolution",
"score": 2,
"status": "proposed"
},
{
"name": "promote-to-class",
"description": "Converts an interface into a class while maintaining type compatibility",
"why": "Essential refactoring for evolving data structures into behavior-rich classes when interfaces need methods or inheritance",
"score": 1,
"status": "proposed"
},
{
"name": "extract-variable-let",
"description": "Extract expressions into mutable variables using let declarations",
"why": "Complements extract-constant for cases where extracted values need to be modified after extraction",
"score": 1,
"status": "proposed"
},
{
"name": "rename-extract-variable-to-extract-constant",
"description": "Rename current extract-variable command to extract-constant to reflect its actual behavior (uses const declarations)",
"why": "The current extract-variable command creates const declarations, so it should be named extract-constant for semantic correctness",
"score": 1,
"status": "proposed"
}
],
"lastUpdated": "2025-07-08T10:41:06.415Z"
}