test-gen-js 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/analyzer/componentAnalyzer.d.ts +4 -0
- package/dist/analyzer/componentAnalyzer.d.ts.map +1 -1
- package/dist/analyzer/componentAnalyzer.js +40 -1
- package/dist/analyzer/componentAnalyzer.js.map +1 -1
- package/dist/analyzer/fileAnalyzer.d.ts.map +1 -1
- package/dist/analyzer/fileAnalyzer.js +105 -5
- package/dist/analyzer/fileAnalyzer.js.map +1 -1
- package/dist/cli.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
## [0.3.0] - 2026-01-09
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- 🎉 **HOC Pattern Support** - Now correctly detects and analyzes components wrapped with Higher-Order Components
|
|
22
|
+
- `memo()` and `React.memo()` support
|
|
23
|
+
- `forwardRef()` and `React.forwardRef()` support
|
|
24
|
+
- `lazy()` and `React.lazy()` support
|
|
25
|
+
- Nested HOCs: `memo(forwardRef(() => {}))` support
|
|
26
|
+
- `export default memo(Component)` pattern support
|
|
27
|
+
- `const Wrapped = memo(() => {})` pattern support
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- 🐛 Fixed EJS template HTML escaping issue (`'` → `'`)
|
|
31
|
+
- Changed `<%= %>` to `<%- %>` for code generation
|
|
32
|
+
- 📝 Added Prerequisites section to README
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
18
36
|
## [0.2.1] - 2026-01-08
|
|
19
37
|
|
|
20
38
|
### Fixed
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
import type { NodePath } from '@babel/traverse';
|
|
6
6
|
import * as t from '@babel/types';
|
|
7
7
|
import type { ComponentInfo } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Analyze a HOC-wrapped component (memo, forwardRef, etc.)
|
|
10
|
+
*/
|
|
11
|
+
export declare function analyzeHOCComponent(funcNode: t.ArrowFunctionExpression | t.FunctionExpression, componentName: string, filePath: string, hocName: string): ComponentInfo;
|
|
8
12
|
/**
|
|
9
13
|
* Analyze a component and extract its information
|
|
10
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/componentAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,EAChE,QAAQ,EAAE,MAAM,GACf,aAAa,GAAG,IAAI,CAgDtB"}
|
|
1
|
+
{"version":3,"file":"componentAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/componentAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAExD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,EAC1D,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,aAAa,CA2Bf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,EAChE,QAAQ,EAAE,MAAM,GACf,aAAa,GAAG,IAAI,CAgDtB"}
|
|
@@ -37,9 +37,36 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
37
37
|
};
|
|
38
38
|
})();
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.analyzeHOCComponent = analyzeHOCComponent;
|
|
40
41
|
exports.analyzeComponent = analyzeComponent;
|
|
41
42
|
const t = __importStar(require("@babel/types"));
|
|
42
43
|
const typeExtractor_1 = require("../parser/typeExtractor");
|
|
44
|
+
/**
|
|
45
|
+
* Analyze a HOC-wrapped component (memo, forwardRef, etc.)
|
|
46
|
+
*/
|
|
47
|
+
function analyzeHOCComponent(funcNode, componentName, filePath, hocName) {
|
|
48
|
+
// For forwardRef, the second parameter is the ref
|
|
49
|
+
// For memo, it's just the regular props
|
|
50
|
+
const isForwardRef = hocName === 'forwardRef';
|
|
51
|
+
// Extract props (first parameter)
|
|
52
|
+
const props = extractPropsFromFunc(funcNode, isForwardRef);
|
|
53
|
+
// Extract hooks
|
|
54
|
+
const hooks = extractHooks(funcNode);
|
|
55
|
+
// Extract event handlers
|
|
56
|
+
const events = extractEventsFromProps(props);
|
|
57
|
+
// Check if component accepts children
|
|
58
|
+
const children = props.some((p) => p.name === 'children');
|
|
59
|
+
return {
|
|
60
|
+
name: componentName,
|
|
61
|
+
type: 'arrow',
|
|
62
|
+
props,
|
|
63
|
+
hooks,
|
|
64
|
+
events,
|
|
65
|
+
children,
|
|
66
|
+
imports: [],
|
|
67
|
+
filePath,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
43
70
|
/**
|
|
44
71
|
* Analyze a component and extract its information
|
|
45
72
|
*/
|
|
@@ -92,6 +119,12 @@ function analyzeComponent(nodePath, filePath) {
|
|
|
92
119
|
* Extract props from a function component
|
|
93
120
|
*/
|
|
94
121
|
function extractProps(node) {
|
|
122
|
+
return extractPropsFromFunc(node, false);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Extract props from a function (can handle forwardRef which has ref as second param)
|
|
126
|
+
*/
|
|
127
|
+
function extractPropsFromFunc(node, _isForwardRef = false) {
|
|
95
128
|
const props = [];
|
|
96
129
|
const firstParam = node.params[0];
|
|
97
130
|
if (!firstParam)
|
|
@@ -205,8 +238,14 @@ function findHooks(node, hooks) {
|
|
|
205
238
|
* Extract event handler props (onPress, onClick, etc.)
|
|
206
239
|
*/
|
|
207
240
|
function extractEvents(node) {
|
|
208
|
-
const events = new Set();
|
|
209
241
|
const props = extractProps(node);
|
|
242
|
+
return extractEventsFromProps(props);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Extract event handlers from props array
|
|
246
|
+
*/
|
|
247
|
+
function extractEventsFromProps(props) {
|
|
248
|
+
const events = new Set();
|
|
210
249
|
// Check props for event handlers
|
|
211
250
|
for (const prop of props) {
|
|
212
251
|
if (prop.name.startsWith('on') &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/componentAnalyzer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUH,4CAmDC;
|
|
1
|
+
{"version":3,"file":"componentAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/componentAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/fileAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"fileAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/fileAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,UAAU,CAAC;AAKlB;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwIzE;AAqFD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAClD,OAAO,CAAC,YAAY,EAAE,CAAC,CAGzB"}
|
|
@@ -48,6 +48,8 @@ const path_1 = __importDefault(require("path"));
|
|
|
48
48
|
const parser_1 = require("../parser");
|
|
49
49
|
const componentAnalyzer_1 = require("./componentAnalyzer");
|
|
50
50
|
const functionAnalyzer_1 = require("./functionAnalyzer");
|
|
51
|
+
// Known React HOC names
|
|
52
|
+
const HOC_NAMES = ['memo', 'forwardRef', 'React.memo', 'React.forwardRef', 'lazy', 'React.lazy'];
|
|
51
53
|
/**
|
|
52
54
|
* Analyze a single file
|
|
53
55
|
*/
|
|
@@ -57,6 +59,7 @@ async function analyzeFile(filePath) {
|
|
|
57
59
|
const components = [];
|
|
58
60
|
const functions = [];
|
|
59
61
|
const imports = [];
|
|
62
|
+
const analyzedNames = new Set(); // Track already analyzed components
|
|
60
63
|
// Extract imports
|
|
61
64
|
(0, traverse_1.default)(ast, {
|
|
62
65
|
ImportDeclaration(nodePath) {
|
|
@@ -82,23 +85,27 @@ async function analyzeFile(filePath) {
|
|
|
82
85
|
});
|
|
83
86
|
// Analyze components and functions
|
|
84
87
|
(0, traverse_1.default)(ast, {
|
|
85
|
-
// Function declarations
|
|
88
|
+
// Function declarations (function MyComponent() {})
|
|
86
89
|
FunctionDeclaration(nodePath) {
|
|
87
90
|
if (!nodePath.node.id)
|
|
88
91
|
return;
|
|
89
92
|
const name = nodePath.node.id.name;
|
|
93
|
+
if (analyzedNames.has(name))
|
|
94
|
+
return;
|
|
90
95
|
const isExported = t.isExportNamedDeclaration(nodePath.parent) ||
|
|
91
96
|
t.isExportDefaultDeclaration(nodePath.parent);
|
|
92
97
|
if (isReactComponent(nodePath.node)) {
|
|
93
98
|
const componentInfo = (0, componentAnalyzer_1.analyzeComponent)(nodePath, absolutePath);
|
|
94
99
|
if (componentInfo) {
|
|
95
100
|
components.push(componentInfo);
|
|
101
|
+
analyzedNames.add(name);
|
|
96
102
|
}
|
|
97
103
|
}
|
|
98
104
|
else if (isExported) {
|
|
99
105
|
const functionInfo = (0, functionAnalyzer_1.analyzeFunction)(nodePath, absolutePath);
|
|
100
106
|
if (functionInfo) {
|
|
101
107
|
functions.push(functionInfo);
|
|
108
|
+
analyzedNames.add(name);
|
|
102
109
|
}
|
|
103
110
|
}
|
|
104
111
|
},
|
|
@@ -106,28 +113,55 @@ async function analyzeFile(filePath) {
|
|
|
106
113
|
VariableDeclarator(nodePath) {
|
|
107
114
|
if (!t.isIdentifier(nodePath.node.id))
|
|
108
115
|
return;
|
|
109
|
-
|
|
116
|
+
const name = nodePath.node.id.name;
|
|
117
|
+
if (analyzedNames.has(name))
|
|
118
|
+
return;
|
|
119
|
+
const init = nodePath.node.init;
|
|
120
|
+
// Check if it's a HOC call: const Component = memo(() => {})
|
|
121
|
+
if (t.isCallExpression(init)) {
|
|
122
|
+
const hocResult = analyzeHOCCall(init, name, absolutePath);
|
|
123
|
+
if (hocResult) {
|
|
124
|
+
components.push(hocResult);
|
|
125
|
+
analyzedNames.add(name);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Regular arrow function or function expression
|
|
130
|
+
if (!t.isArrowFunctionExpression(init) && !t.isFunctionExpression(init)) {
|
|
110
131
|
return;
|
|
111
132
|
}
|
|
112
|
-
const name = nodePath.node.id.name;
|
|
113
|
-
const funcNode = nodePath.node.init;
|
|
114
133
|
// Check if exported
|
|
115
134
|
const variableDeclaration = nodePath.parentPath;
|
|
116
135
|
const isExported = variableDeclaration &&
|
|
117
136
|
(t.isExportNamedDeclaration(variableDeclaration.parent) ||
|
|
118
137
|
t.isExportDefaultDeclaration(variableDeclaration.parent));
|
|
119
|
-
if (isReactComponent(
|
|
138
|
+
if (isReactComponent(init)) {
|
|
120
139
|
const componentInfo = (0, componentAnalyzer_1.analyzeComponent)(nodePath, absolutePath);
|
|
121
140
|
if (componentInfo) {
|
|
122
141
|
components.push(componentInfo);
|
|
142
|
+
analyzedNames.add(name);
|
|
123
143
|
}
|
|
124
144
|
}
|
|
125
145
|
else if (isExported) {
|
|
126
146
|
const functionInfo = (0, functionAnalyzer_1.analyzeFunction)(nodePath, absolutePath);
|
|
127
147
|
if (functionInfo) {
|
|
128
148
|
functions.push(functionInfo);
|
|
149
|
+
analyzedNames.add(name);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
// Export default with HOC: export default memo(MyComponent)
|
|
154
|
+
ExportDefaultDeclaration(nodePath) {
|
|
155
|
+
const declaration = nodePath.node.declaration;
|
|
156
|
+
// export default memo(Component) or export default memo(() => {})
|
|
157
|
+
if (t.isCallExpression(declaration)) {
|
|
158
|
+
const hocResult = analyzeHOCCall(declaration, 'default', absolutePath);
|
|
159
|
+
if (hocResult && !analyzedNames.has(hocResult.name)) {
|
|
160
|
+
components.push(hocResult);
|
|
161
|
+
analyzedNames.add(hocResult.name);
|
|
129
162
|
}
|
|
130
163
|
}
|
|
164
|
+
// export default identifier (already handled by FunctionDeclaration)
|
|
131
165
|
},
|
|
132
166
|
});
|
|
133
167
|
// Determine framework and file type
|
|
@@ -142,6 +176,72 @@ async function analyzeFile(filePath) {
|
|
|
142
176
|
imports,
|
|
143
177
|
};
|
|
144
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Check if a CallExpression is a HOC call and extract the component
|
|
181
|
+
*/
|
|
182
|
+
function analyzeHOCCall(callExpr, fallbackName, filePath) {
|
|
183
|
+
const hocName = getHOCName(callExpr.callee);
|
|
184
|
+
if (!hocName)
|
|
185
|
+
return null;
|
|
186
|
+
// Get the inner function from HOC arguments
|
|
187
|
+
const innerFunc = extractInnerFunction(callExpr);
|
|
188
|
+
if (!innerFunc) {
|
|
189
|
+
// HOC wrapping an identifier: memo(MyComponent)
|
|
190
|
+
// Try to get the component name from the argument
|
|
191
|
+
if (callExpr.arguments[0] && t.isIdentifier(callExpr.arguments[0])) {
|
|
192
|
+
const componentName = callExpr.arguments[0].name;
|
|
193
|
+
// Return a basic component info - the actual component will be analyzed separately
|
|
194
|
+
return null; // Let the original component be analyzed
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
// Analyze the inner function as a component
|
|
199
|
+
return (0, componentAnalyzer_1.analyzeHOCComponent)(innerFunc, fallbackName, filePath, hocName);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get HOC name from callee
|
|
203
|
+
*/
|
|
204
|
+
function getHOCName(callee) {
|
|
205
|
+
// memo(), forwardRef()
|
|
206
|
+
if (t.isIdentifier(callee)) {
|
|
207
|
+
if (HOC_NAMES.includes(callee.name)) {
|
|
208
|
+
return callee.name;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// React.memo(), React.forwardRef()
|
|
212
|
+
if (t.isMemberExpression(callee)) {
|
|
213
|
+
if (t.isIdentifier(callee.object) &&
|
|
214
|
+
callee.object.name === 'React' &&
|
|
215
|
+
t.isIdentifier(callee.property)) {
|
|
216
|
+
const fullName = `React.${callee.property.name}`;
|
|
217
|
+
if (HOC_NAMES.includes(fullName)) {
|
|
218
|
+
return callee.property.name;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Extract the inner function from a HOC call
|
|
226
|
+
* Handles nested HOCs: memo(forwardRef((props, ref) => {}))
|
|
227
|
+
*/
|
|
228
|
+
function extractInnerFunction(callExpr) {
|
|
229
|
+
const firstArg = callExpr.arguments[0];
|
|
230
|
+
if (!firstArg)
|
|
231
|
+
return null;
|
|
232
|
+
// Direct function: memo(() => {})
|
|
233
|
+
if (t.isArrowFunctionExpression(firstArg) || t.isFunctionExpression(firstArg)) {
|
|
234
|
+
return firstArg;
|
|
235
|
+
}
|
|
236
|
+
// Nested HOC: memo(forwardRef(() => {}))
|
|
237
|
+
if (t.isCallExpression(firstArg)) {
|
|
238
|
+
const nestedHocName = getHOCName(firstArg.callee);
|
|
239
|
+
if (nestedHocName) {
|
|
240
|
+
return extractInnerFunction(firstArg);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
145
245
|
/**
|
|
146
246
|
* Analyze all files in a directory
|
|
147
247
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/fileAnalyzer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"fileAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/fileAnalyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -14,7 +14,7 @@ const program = new commander_1.Command();
|
|
|
14
14
|
program
|
|
15
15
|
.name('test-gen-js')
|
|
16
16
|
.description('Auto-generate test boilerplate code for JavaScript/TypeScript projects')
|
|
17
|
-
.version('0.
|
|
17
|
+
.version('0.3.0');
|
|
18
18
|
// Generate command
|
|
19
19
|
program
|
|
20
20
|
.command('generate <file>')
|
package/package.json
CHANGED