@shriyanss/js-recon 1.3.1-beta.2 → 1.4.1-alpha.1
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 +56 -0
- package/CLAUDE.md +50 -0
- package/README.md +1 -0
- package/build/cs_mast/index.js +122 -0
- package/build/cs_mast/index.js.map +1 -0
- package/build/globalConfig.js +2 -2
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +32 -2
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js +6 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/index.js +2 -1
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/methodFilter.js +49 -0
- package/build/lazyLoad/methodFilter.js.map +1 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js +12 -11
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +6 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/techDetect/checkNextJS.js +24 -15
- package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -1
- package/build/lazyLoad/techDetect/checkSvelte.js +17 -0
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
- package/build/lazyLoad/techDetect/index.js +11 -4
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/map/vue_js/vue_resolveHttpClient.js +17 -2
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +22 -2
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
- package/build/refactor/index.js +126 -15
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/next/helpers.js +214 -0
- package/build/refactor/next/helpers.js.map +1 -0
- package/build/refactor/next/index.js +40 -73
- package/build/refactor/next/index.js.map +1 -1
- package/build/refactor/next/transform.js +177 -0
- package/build/refactor/next/transform.js.map +1 -0
- package/build/refactor/next/validator.js +118 -0
- package/build/refactor/next/validator.js.map +1 -0
- package/build/refactor/react/helpers.js +93 -0
- package/build/refactor/react/helpers.js.map +1 -0
- package/build/refactor/react/index.js +186 -589
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/library-classify.js +166 -0
- package/build/refactor/react/library-classify.js.map +1 -0
- package/build/refactor/react/transform.js +839 -0
- package/build/refactor/react/transform.js.map +1 -0
- package/build/refactor/react/validator.js +122 -0
- package/build/refactor/react/validator.js.map +1 -0
- package/build/run/index.js +13 -8
- package/build/run/index.js.map +1 -1
- package/build/utility/getChromiumPath.js +40 -0
- package/build/utility/getChromiumPath.js.map +1 -0
- package/build/utility/heap.js +42 -0
- package/build/utility/heap.js.map +1 -0
- package/build/utility/makeReq.js +11 -2
- package/build/utility/makeReq.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import _traverse from "@babel/traverse";
|
|
2
|
+
import * as t from "@babel/types";
|
|
3
|
+
import { tryExtractTurbopackRequire, tryExtractDefinePropertyExport, isEsModuleMarker, isInteropBoilerplate, tryExtractForInExportLoop, extractExportsFromMap, makeExportStatement, } from "./helpers.js";
|
|
4
|
+
const traverse = _traverse.default;
|
|
5
|
+
/**
|
|
6
|
+
* Transforms a single Turbopack module arrow function into ECMAScript module statements.
|
|
7
|
+
*
|
|
8
|
+
* Passes (top-level only to avoid placing exports inside nested functions):
|
|
9
|
+
* 1. Collect exports from Object.defineProperty(exportsParam, …) patterns + mark nodes for removal.
|
|
10
|
+
* 2. Combined filter + hoist: skip removed nodes; convert runtimeParam.r(N) declarators to imports.
|
|
11
|
+
* 3. Replace remaining inline runtimeParam.r(N) calls with hoisted identifiers.
|
|
12
|
+
* 4. Assemble: prepend import declarations, keep filtered body, append export declarations.
|
|
13
|
+
*/
|
|
14
|
+
export const transformModule = (mod) => {
|
|
15
|
+
const { fnPath, runtimeParam, moduleParam, exportsParam } = mod;
|
|
16
|
+
const body = fnPath.node.body;
|
|
17
|
+
if (!t.isBlockStatement(body))
|
|
18
|
+
return [];
|
|
19
|
+
// ── Pre-scan: find for-in export loops and their map variable declarations ──
|
|
20
|
+
// Map from variable name → the VariableDeclaration node that declares it as an export map.
|
|
21
|
+
// We also track the specific declarator so we can remove just that one if needed.
|
|
22
|
+
const exportMapVarNames = new Set();
|
|
23
|
+
const exportMapDeclNodes = new Map(); // varName → decl node
|
|
24
|
+
for (const stmt of body.body) {
|
|
25
|
+
const mapVarName = tryExtractForInExportLoop(stmt, exportsParam);
|
|
26
|
+
if (mapVarName !== null) {
|
|
27
|
+
exportMapVarNames.add(mapVarName);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
for (const stmt of body.body) {
|
|
31
|
+
if (!t.isVariableDeclaration(stmt))
|
|
32
|
+
continue;
|
|
33
|
+
for (const decl of stmt.declarations) {
|
|
34
|
+
if (t.isIdentifier(decl.id) &&
|
|
35
|
+
exportMapVarNames.has(decl.id.name) &&
|
|
36
|
+
decl.init &&
|
|
37
|
+
t.isObjectExpression(decl.init)) {
|
|
38
|
+
exportMapDeclNodes.set(decl.id.name, stmt);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// ── Pass 1: collect exports, mark statement nodes for removal ────────────────
|
|
43
|
+
const exportMap = new Map(); // exportName → returnExpr
|
|
44
|
+
const stmtsToRemove = new WeakSet();
|
|
45
|
+
for (const stmt of body.body) {
|
|
46
|
+
// Interop boilerplate.
|
|
47
|
+
if (isInteropBoilerplate(stmt, moduleParam)) {
|
|
48
|
+
stmtsToRemove.add(stmt);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (t.isExpressionStatement(stmt)) {
|
|
52
|
+
const expr = stmt.expression;
|
|
53
|
+
// `Object.defineProperty(r, "__esModule", …)` — just an interop marker.
|
|
54
|
+
if (isEsModuleMarker(expr, exportsParam)) {
|
|
55
|
+
stmtsToRemove.add(stmt);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// Direct `Object.defineProperty(r, "name", { get: fn })`.
|
|
59
|
+
const direct = tryExtractDefinePropertyExport(expr, exportsParam);
|
|
60
|
+
if (direct) {
|
|
61
|
+
exportMap.set(direct.exportName, direct.returnExpr);
|
|
62
|
+
stmtsToRemove.add(stmt);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// SequenceExpression: may mix esModule markers and export definitions.
|
|
66
|
+
if (t.isSequenceExpression(expr)) {
|
|
67
|
+
const kept = [];
|
|
68
|
+
for (const sub of expr.expressions) {
|
|
69
|
+
if (isEsModuleMarker(sub, exportsParam))
|
|
70
|
+
continue;
|
|
71
|
+
const match = tryExtractDefinePropertyExport(sub, exportsParam);
|
|
72
|
+
if (match) {
|
|
73
|
+
exportMap.set(match.exportName, match.returnExpr);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
kept.push(sub);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (kept.length === 0) {
|
|
80
|
+
stmtsToRemove.add(stmt);
|
|
81
|
+
}
|
|
82
|
+
else if (kept.length < expr.expressions.length) {
|
|
83
|
+
// Trim the sequence in-place.
|
|
84
|
+
stmt.expression =
|
|
85
|
+
kept.length === 1 ? kept[0] : t.sequenceExpression(kept);
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ForInStatement: `for (var k in mapVar) Object.defineProperty(exportsParam, k, …)`.
|
|
91
|
+
const mapVarName = tryExtractForInExportLoop(stmt, exportsParam);
|
|
92
|
+
if (mapVarName !== null) {
|
|
93
|
+
stmtsToRemove.add(stmt);
|
|
94
|
+
const declNode = exportMapDeclNodes.get(mapVarName);
|
|
95
|
+
if (declNode) {
|
|
96
|
+
// Extract exports from the map object.
|
|
97
|
+
for (const decl of declNode.declarations) {
|
|
98
|
+
if (t.isIdentifier(decl.id, { name: mapVarName }) && decl.init && t.isObjectExpression(decl.init)) {
|
|
99
|
+
const extracted = extractExportsFromMap(decl.init);
|
|
100
|
+
for (const [name, expr] of extracted)
|
|
101
|
+
exportMap.set(name, expr);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Mark the map variable declaration for removal.
|
|
106
|
+
if (declNode.declarations.length === 1) {
|
|
107
|
+
stmtsToRemove.add(declNode);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Multiple declarators: remove only the export-map one.
|
|
111
|
+
declNode.declarations = declNode.declarations.filter((d) => !t.isIdentifier(d.id, { name: mapVarName }));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// ── Pass 2: combined filter + require hoisting ───────────────────────────────
|
|
117
|
+
const hoistedImports = new Map(); // specifier → importName
|
|
118
|
+
const importNameByNumId = new Map(); // numId → importName
|
|
119
|
+
const filteredBody = [];
|
|
120
|
+
for (const stmt of body.body) {
|
|
121
|
+
if (stmtsToRemove.has(stmt))
|
|
122
|
+
continue;
|
|
123
|
+
if (t.isVariableDeclaration(stmt)) {
|
|
124
|
+
const keptDeclarators = [];
|
|
125
|
+
for (const decl of stmt.declarations) {
|
|
126
|
+
if (!t.isIdentifier(decl.id) || !decl.init) {
|
|
127
|
+
keptDeclarators.push(decl);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const numId = tryExtractTurbopackRequire(decl.init, runtimeParam);
|
|
131
|
+
if (numId === null) {
|
|
132
|
+
keptDeclarators.push(decl);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const spec = `./${numId}.js`;
|
|
136
|
+
if (!hoistedImports.has(spec)) {
|
|
137
|
+
hoistedImports.set(spec, decl.id.name);
|
|
138
|
+
importNameByNumId.set(numId, decl.id.name);
|
|
139
|
+
}
|
|
140
|
+
// Declarator removed — becomes a static import.
|
|
141
|
+
}
|
|
142
|
+
if (keptDeclarators.length > 0) {
|
|
143
|
+
filteredBody.push(t.variableDeclaration(stmt.kind, keptDeclarators));
|
|
144
|
+
}
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
filteredBody.push(stmt);
|
|
148
|
+
}
|
|
149
|
+
// ── Pass 3: replace remaining inline runtimeParam.r(N) calls ────────────────
|
|
150
|
+
body.body = filteredBody;
|
|
151
|
+
fnPath.traverse({
|
|
152
|
+
CallExpression(p) {
|
|
153
|
+
const numId = tryExtractTurbopackRequire(p.node, runtimeParam);
|
|
154
|
+
if (numId === null)
|
|
155
|
+
return;
|
|
156
|
+
let name = importNameByNumId.get(numId);
|
|
157
|
+
if (!name) {
|
|
158
|
+
name = `_jsr_module_${numId}`;
|
|
159
|
+
hoistedImports.set(`./${numId}.js`, name);
|
|
160
|
+
importNameByNumId.set(numId, name);
|
|
161
|
+
}
|
|
162
|
+
p.replaceWith(t.identifier(name));
|
|
163
|
+
p.skip();
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
// ── Step 4: assemble — prepend imports, filtered body, append exports ────────
|
|
167
|
+
const importStmts = [];
|
|
168
|
+
for (const [spec, name] of hoistedImports) {
|
|
169
|
+
importStmts.push(t.importDeclaration([t.importNamespaceSpecifier(t.identifier(name))], t.stringLiteral(spec)));
|
|
170
|
+
}
|
|
171
|
+
const exportStmts = [];
|
|
172
|
+
for (const [exportName, returnExpr] of exportMap) {
|
|
173
|
+
exportStmts.push(makeExportStatement(exportName, returnExpr));
|
|
174
|
+
}
|
|
175
|
+
return [...importStmts, ...body.body, ...exportStmts];
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/refactor/next/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import parser from "@babel/parser";
|
|
3
|
+
import _generator from "@babel/generator";
|
|
4
|
+
import * as t from "@babel/types";
|
|
5
|
+
const generate = _generator.default;
|
|
6
|
+
export const MAX_FIX_ITERATIONS = 10;
|
|
7
|
+
export const tryStrictParse = (code) => {
|
|
8
|
+
try {
|
|
9
|
+
parser.parse(code, {
|
|
10
|
+
sourceType: "module",
|
|
11
|
+
plugins: ["jsx"],
|
|
12
|
+
errorRecovery: false,
|
|
13
|
+
});
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
return [err];
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const applyFixes = (code, statements) => {
|
|
21
|
+
var _a;
|
|
22
|
+
let recoveredAst;
|
|
23
|
+
try {
|
|
24
|
+
recoveredAst = parser.parse(code, {
|
|
25
|
+
sourceType: "module",
|
|
26
|
+
plugins: ["jsx"],
|
|
27
|
+
errorRecovery: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (_b) {
|
|
31
|
+
return statements.slice(0, -1);
|
|
32
|
+
}
|
|
33
|
+
const parseErrors = ((_a = recoveredAst.errors) !== null && _a !== void 0 ? _a : []).map((e) => {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
35
|
+
return ({
|
|
36
|
+
line: (_b = (_a = e.loc) === null || _a === void 0 ? void 0 : _a.line) !== null && _b !== void 0 ? _b : 0,
|
|
37
|
+
col: (_d = (_c = e.loc) === null || _c === void 0 ? void 0 : _c.column) !== null && _d !== void 0 ? _d : 0,
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
if (parseErrors.length === 0)
|
|
41
|
+
return statements;
|
|
42
|
+
let lineOffset = 0;
|
|
43
|
+
const stmtLineRanges = [];
|
|
44
|
+
for (const stmt of statements) {
|
|
45
|
+
const stmtCode = generate(stmt).code;
|
|
46
|
+
const lineCount = stmtCode.split("\n").length;
|
|
47
|
+
stmtLineRanges.push({ start: lineOffset + 1, end: lineOffset + lineCount });
|
|
48
|
+
lineOffset += lineCount;
|
|
49
|
+
}
|
|
50
|
+
const errorStmtIndices = new Set();
|
|
51
|
+
for (const err of parseErrors) {
|
|
52
|
+
for (let i = 0; i < stmtLineRanges.length; i++) {
|
|
53
|
+
if (err.line >= stmtLineRanges[i].start && err.line <= stmtLineRanges[i].end) {
|
|
54
|
+
errorStmtIndices.add(i);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const out = [];
|
|
60
|
+
for (let i = 0; i < statements.length; i++) {
|
|
61
|
+
const stmt = statements[i];
|
|
62
|
+
if (!errorStmtIndices.has(i)) {
|
|
63
|
+
out.push(stmt);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Downgrade `export { ident as "StringKey" }` to `export const StringKey = ident`.
|
|
67
|
+
if (t.isExportNamedDeclaration(stmt) &&
|
|
68
|
+
!stmt.declaration &&
|
|
69
|
+
stmt.specifiers.length === 1 &&
|
|
70
|
+
t.isExportSpecifier(stmt.specifiers[0]) &&
|
|
71
|
+
t.isStringLiteral(stmt.specifiers[0].exported)) {
|
|
72
|
+
const spec = stmt.specifiers[0];
|
|
73
|
+
const propName = spec.exported.value;
|
|
74
|
+
const local = spec.local;
|
|
75
|
+
out.push(t.exportNamedDeclaration(t.variableDeclaration("const", [t.variableDeclarator(t.identifier(propName), local)])));
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Downgrade `export function name() { ... }` to `export const name = function() { ... }`.
|
|
79
|
+
if (t.isExportNamedDeclaration(stmt) &&
|
|
80
|
+
stmt.declaration &&
|
|
81
|
+
t.isFunctionDeclaration(stmt.declaration) &&
|
|
82
|
+
stmt.declaration.id) {
|
|
83
|
+
const fn = stmt.declaration;
|
|
84
|
+
out.push(t.exportNamedDeclaration(t.variableDeclaration("const", [
|
|
85
|
+
t.variableDeclarator(fn.id, t.functionExpression(null, fn.params, fn.body, fn.generator, fn.async)),
|
|
86
|
+
])));
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk.yellow(` [~] Dropping unresolvable statement at index ${i}: ${generate(stmt)
|
|
90
|
+
.code.slice(0, 80)
|
|
91
|
+
.replace(/\s+/g, " ")}`));
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
};
|
|
95
|
+
export const validateAndFix = (statements, moduleId) => {
|
|
96
|
+
let current = [...statements];
|
|
97
|
+
for (let attempt = 0; attempt <= MAX_FIX_ITERATIONS; attempt++) {
|
|
98
|
+
const programNode = t.program(current, [], "module");
|
|
99
|
+
const code = generate(programNode).code;
|
|
100
|
+
const errors = tryStrictParse(code);
|
|
101
|
+
if (errors.length === 0)
|
|
102
|
+
return code;
|
|
103
|
+
if (attempt === MAX_FIX_ITERATIONS) {
|
|
104
|
+
console.log(chalk.red(`[!] Module ${moduleId} could not be fixed after ${MAX_FIX_ITERATIONS} attempts — skipping`));
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
for (const err of errors) {
|
|
108
|
+
const loc = err.loc ? ` at line ${err.loc.line}, col ${err.loc.column}` : "";
|
|
109
|
+
console.log(chalk.red(`[!] Syntax error in module ${moduleId} (attempt ${attempt + 1}/${MAX_FIX_ITERATIONS}):`));
|
|
110
|
+
console.log(chalk.red(` ${err.message}${loc}`));
|
|
111
|
+
if (err.codeFrame)
|
|
112
|
+
console.log(err.codeFrame);
|
|
113
|
+
}
|
|
114
|
+
current = applyFixes(code, current);
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/refactor/next/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as t from "@babel/types";
|
|
2
|
+
export const VALID_IDENT_RE = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
3
|
+
// Returns true if the given ObjectProperty/ObjectMethod sits directly inside
|
|
4
|
+
// the webpack module-map object (var X = { <numId>: fn, … }) and not inside
|
|
5
|
+
// a nested object within a module body.
|
|
6
|
+
export const isInModuleMap = (path) => {
|
|
7
|
+
const objectParent = path.parentPath;
|
|
8
|
+
if (!objectParent || !objectParent.isObjectExpression())
|
|
9
|
+
return false;
|
|
10
|
+
const objHolder = objectParent.parentPath;
|
|
11
|
+
if (!objHolder)
|
|
12
|
+
return false;
|
|
13
|
+
if (objHolder.isVariableDeclarator())
|
|
14
|
+
return true;
|
|
15
|
+
if (objHolder.isAssignmentExpression())
|
|
16
|
+
return true;
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
// Returns { propName, rhs } if expr matches `<exportsParam>.<propName> = <rhs>`.
|
|
20
|
+
export const tryExtractExportsAssignment = (expr, exportsParam) => {
|
|
21
|
+
if (!t.isAssignmentExpression(expr) || expr.operator !== "=")
|
|
22
|
+
return null;
|
|
23
|
+
const left = expr.left;
|
|
24
|
+
if (!t.isMemberExpression(left) || left.computed)
|
|
25
|
+
return null;
|
|
26
|
+
if (!t.isIdentifier(left.object, { name: exportsParam }))
|
|
27
|
+
return null;
|
|
28
|
+
let propName = null;
|
|
29
|
+
if (t.isIdentifier(left.property))
|
|
30
|
+
propName = left.property.name;
|
|
31
|
+
else if (t.isStringLiteral(left.property))
|
|
32
|
+
propName = left.property.value;
|
|
33
|
+
if (!propName)
|
|
34
|
+
return null;
|
|
35
|
+
return { propName, rhs: expr.right };
|
|
36
|
+
};
|
|
37
|
+
// Returns the rhs if expr matches `<moduleParam>.exports = <rhs>`, else null.
|
|
38
|
+
export const tryExtractModuleExportsAssignment = (expr, moduleParam) => {
|
|
39
|
+
if (!t.isAssignmentExpression(expr) || expr.operator !== "=")
|
|
40
|
+
return null;
|
|
41
|
+
const left = expr.left;
|
|
42
|
+
if (!t.isMemberExpression(left) || left.computed)
|
|
43
|
+
return null;
|
|
44
|
+
if (!t.isIdentifier(left.object, { name: moduleParam }))
|
|
45
|
+
return null;
|
|
46
|
+
if (!t.isIdentifier(left.property, { name: "exports" }))
|
|
47
|
+
return null;
|
|
48
|
+
return expr.right;
|
|
49
|
+
};
|
|
50
|
+
// Returns the numeric module ID if expr is `<requireParam>(<NumericLiteral>)`.
|
|
51
|
+
export const tryExtractRequireCall = (expr, requireParam) => {
|
|
52
|
+
if (!t.isCallExpression(expr))
|
|
53
|
+
return null;
|
|
54
|
+
if (!t.isIdentifier(expr.callee, { name: requireParam }))
|
|
55
|
+
return null;
|
|
56
|
+
if (expr.arguments.length !== 1)
|
|
57
|
+
return null;
|
|
58
|
+
if (!t.isNumericLiteral(expr.arguments[0]))
|
|
59
|
+
return null;
|
|
60
|
+
return expr.arguments[0].value;
|
|
61
|
+
};
|
|
62
|
+
// Builds an export statement for `<moduleParam>.exports = <rhs>`.
|
|
63
|
+
// - `<requireParam>(N)` RHS → `export * from "./N.js"` (transparent re-export).
|
|
64
|
+
// - anything else → `export default <rhs>`.
|
|
65
|
+
export const buildModuleExportStatement = (rhs, requireParam) => {
|
|
66
|
+
if (requireParam) {
|
|
67
|
+
const numId = tryExtractRequireCall(rhs, requireParam);
|
|
68
|
+
if (numId !== null) {
|
|
69
|
+
return t.exportAllDeclaration(t.stringLiteral(`./${numId}.js`));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return t.exportDefaultDeclaration(rhs);
|
|
73
|
+
};
|
|
74
|
+
// Builds an ECMAScript-compliant export statement for `<exportsParam>.<propName> = <rhs>`.
|
|
75
|
+
// Forms per MDN export reference:
|
|
76
|
+
// FunctionExpression → export function propName(params) { body }
|
|
77
|
+
// Identifier → export { ident as propName } (string key when needed)
|
|
78
|
+
// Literals / Arrow / everything else → export const propName = <rhs>
|
|
79
|
+
export const makeNamedExportStatement = (propName, rhs) => {
|
|
80
|
+
if (t.isFunctionExpression(rhs)) {
|
|
81
|
+
const fn = rhs;
|
|
82
|
+
return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(propName), fn.params, fn.body, fn.generator, fn.async));
|
|
83
|
+
}
|
|
84
|
+
if (t.isIdentifier(rhs)) {
|
|
85
|
+
const local = rhs;
|
|
86
|
+
const exported = VALID_IDENT_RE.test(propName)
|
|
87
|
+
? t.identifier(propName)
|
|
88
|
+
: t.stringLiteral(propName);
|
|
89
|
+
return t.exportNamedDeclaration(null, [t.exportSpecifier(local, exported)]);
|
|
90
|
+
}
|
|
91
|
+
return t.exportNamedDeclaration(t.variableDeclaration("const", [t.variableDeclarator(t.identifier(propName), rhs)]));
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/refactor/react/helpers.ts"],"names":[],"mappings":"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"}
|