@shriyanss/js-recon 1.4.1-alpha.1 → 1.4.1-alpha.3
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 +49 -0
- package/CLAUDE.md +39 -2
- package/README.md +2 -0
- package/build/analyze/engine/index.js.map +1 -1
- package/build/analyze/helpers/schemas.js +1 -1
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/analyze/index.js +1 -0
- package/build/analyze/index.js.map +1 -1
- package/build/globalConfig.js +2 -2
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +120 -5
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +1 -1
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/index.js +97 -38
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/methodFilter.js +1 -0
- package/build/lazyLoad/methodFilter.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +69 -48
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js +64 -0
- package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js.map +1 -0
- package/build/lazyLoad/react/react_followImports.js +8 -2
- package/build/lazyLoad/react/react_followImports.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js +16 -0
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_getVersionJson.js +40 -0
- package/build/lazyLoad/svelte/svelte_getVersionJson.js.map +1 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +47 -25
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +2 -2
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
- package/build/map/angular_js/getAngularConnections.js +88 -0
- package/build/map/angular_js/getAngularConnections.js.map +1 -0
- package/build/map/angular_js/interactive.js +4 -0
- package/build/map/angular_js/interactive.js.map +1 -0
- package/build/map/index.js +38 -0
- package/build/map/index.js.map +1 -1
- package/build/refactor/index.js +485 -19
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/react/helpers.js +13 -0
- package/build/refactor/react/helpers.js.map +1 -1
- package/build/refactor/react/index.js +149 -41
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/library-classify.js +232 -1
- package/build/refactor/react/library-classify.js.map +1 -1
- package/build/refactor/react/transform.js +1046 -34
- package/build/refactor/react/transform.js.map +1 -1
- package/build/refactor/react-vite/index.js +618 -0
- package/build/refactor/react-vite/index.js.map +1 -0
- package/build/refactor/react-vite/vendor-analyze.js +336 -0
- package/build/refactor/react-vite/vendor-analyze.js.map +1 -0
- package/build/refactor/remote/cache.js +211 -0
- package/build/refactor/remote/cache.js.map +1 -0
- package/build/refactor/remote/config.js +47 -0
- package/build/refactor/remote/config.js.map +1 -0
- package/build/refactor/remote/hf-client.js +137 -0
- package/build/refactor/remote/hf-client.js.map +1 -0
- package/build/run/index.js +116 -11
- package/build/run/index.js.map +1 -1
- package/build/utility/banner.js +68 -0
- package/build/utility/banner.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
// Refactor module for Vite-bundled React apps.
|
|
2
|
+
//
|
|
3
|
+
// Vite (with rolldown) produces already-split ESM files. Each chunk:
|
|
4
|
+
// - imports rolldown interop helpers from rolldown-runtime-*.js
|
|
5
|
+
// - imports from a vendor chunk (vendor-react-*.js)
|
|
6
|
+
// - uses CJS-interop wrappers: var X = __toESM(getter(), 1)
|
|
7
|
+
// - calls library APIs via (0, X.prop)(args)
|
|
8
|
+
//
|
|
9
|
+
// This module:
|
|
10
|
+
// 1. Analyzes the vendor chunk to classify exports
|
|
11
|
+
// 2. For each app chunk, rewrites (0, X.prop)(args) → prop(args)
|
|
12
|
+
// 3. Applies Passes E/F/G via applyModuleCleanupPasses
|
|
13
|
+
// 4. Rewrites direct vendor imports using vendor export map
|
|
14
|
+
// 5. Cleans up rolldown boilerplate
|
|
15
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
16
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
17
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
18
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
19
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
20
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
21
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
var _a;
|
|
25
|
+
import { parse } from "@babel/parser";
|
|
26
|
+
import _traverse from "@babel/traverse";
|
|
27
|
+
import * as t from "@babel/types";
|
|
28
|
+
import _generator from "@babel/generator";
|
|
29
|
+
import path from "path";
|
|
30
|
+
const traverse = _traverse.default;
|
|
31
|
+
import { applyModuleCleanupPasses } from "../react/transform.js";
|
|
32
|
+
import { REACT_CANONICAL, JSX_RUNTIME_CANONICAL, REACT_DOM_CLIENT_CANONICAL, REACT_ROUTER_DOM_CANONICAL, librarySource, } from "../react/library-classify.js";
|
|
33
|
+
import { analyzeVendorChunk } from "./vendor-analyze.js";
|
|
34
|
+
const generate = (_a = _generator.default) !== null && _a !== void 0 ? _a : _generator;
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// Vite chunk classification helpers
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
/**
|
|
39
|
+
* Identifies the rolldown-runtime chunk. It always has a single import (from itself)
|
|
40
|
+
* and exports __toESM (as 'n') and __commonJS (as 't').
|
|
41
|
+
*/
|
|
42
|
+
function isRolldownRuntimeChunk(filename) {
|
|
43
|
+
return /rolldown[-_]runtime/i.test(path.basename(filename));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Identifies the vendor chunk. Typically vendor-react-*.js
|
|
47
|
+
*/
|
|
48
|
+
function isVendorChunk(filename) {
|
|
49
|
+
return /vendor[-_]react/i.test(path.basename(filename));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Builds a map of chunk-local var name → VendorExportInfo by scanning import
|
|
53
|
+
* declarations against all known vendor chunk export maps.
|
|
54
|
+
*/
|
|
55
|
+
function buildLocalVarToVendorExport(statements, vendorExportMaps) {
|
|
56
|
+
const result = new Map();
|
|
57
|
+
for (const stmt of statements) {
|
|
58
|
+
if (!t.isImportDeclaration(stmt))
|
|
59
|
+
continue;
|
|
60
|
+
const sourceBase = path.basename(stmt.source.value);
|
|
61
|
+
for (const [vendorBasename, exportMap] of vendorExportMaps) {
|
|
62
|
+
if (!sourceBase.includes(vendorBasename.replace(/\.js$/, "")))
|
|
63
|
+
continue;
|
|
64
|
+
for (const spec of stmt.specifiers) {
|
|
65
|
+
if (!t.isImportSpecifier(spec))
|
|
66
|
+
continue;
|
|
67
|
+
const importedName = t.isIdentifier(spec.imported)
|
|
68
|
+
? spec.imported.name
|
|
69
|
+
: spec.imported.value;
|
|
70
|
+
const localName = spec.local.name;
|
|
71
|
+
const exportInfo = exportMap.get(importedName);
|
|
72
|
+
if (exportInfo)
|
|
73
|
+
result.set(localName, exportInfo);
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Finds interop vars and classifies them using vendor export map info.
|
|
82
|
+
*
|
|
83
|
+
* Handles two rolldown patterns:
|
|
84
|
+
* - `var X = toESM(getter(), 1)` — wrapped CJS interop
|
|
85
|
+
* - `var X = getter()` — direct CJS call (no toESM)
|
|
86
|
+
*
|
|
87
|
+
* Returns interopVarNames (set of vars to remove) and varToLib (for Pass D).
|
|
88
|
+
*/
|
|
89
|
+
function detectInteropVars(statements, toEsmLocalName, localVarToVendorExport) {
|
|
90
|
+
const interopVarNames = new Set();
|
|
91
|
+
const varToLib = new Map();
|
|
92
|
+
for (const stmt of statements) {
|
|
93
|
+
if (!t.isVariableDeclaration(stmt))
|
|
94
|
+
continue;
|
|
95
|
+
for (const decl of stmt.declarations) {
|
|
96
|
+
if (!t.isIdentifier(decl.id) || !decl.init)
|
|
97
|
+
continue;
|
|
98
|
+
if (!t.isCallExpression(decl.init))
|
|
99
|
+
continue;
|
|
100
|
+
const callee = decl.init.callee;
|
|
101
|
+
const args = decl.init.arguments;
|
|
102
|
+
const varName = decl.id.name;
|
|
103
|
+
let getterExportInfo;
|
|
104
|
+
// Pattern 1: toESM(getter(), 1)
|
|
105
|
+
if (toEsmLocalName &&
|
|
106
|
+
t.isIdentifier(callee, { name: toEsmLocalName }) &&
|
|
107
|
+
args.length >= 1 &&
|
|
108
|
+
t.isCallExpression(args[0]) &&
|
|
109
|
+
t.isIdentifier(args[0].callee)) {
|
|
110
|
+
const getterName = args[0].callee.name;
|
|
111
|
+
const info = localVarToVendorExport.get(getterName);
|
|
112
|
+
if (info === null || info === void 0 ? void 0 : info.isCjsGetter)
|
|
113
|
+
getterExportInfo = info;
|
|
114
|
+
}
|
|
115
|
+
// Pattern 2: getter() — direct CJS call without toESM wrapper
|
|
116
|
+
if (!getterExportInfo && t.isIdentifier(callee)) {
|
|
117
|
+
const info = localVarToVendorExport.get(callee.name);
|
|
118
|
+
if (info === null || info === void 0 ? void 0 : info.isCjsGetter)
|
|
119
|
+
getterExportInfo = info;
|
|
120
|
+
}
|
|
121
|
+
if (!getterExportInfo)
|
|
122
|
+
continue;
|
|
123
|
+
interopVarNames.add(varName);
|
|
124
|
+
let libType = "unknown";
|
|
125
|
+
if (getterExportInfo.library === "react")
|
|
126
|
+
libType = "react";
|
|
127
|
+
else if (getterExportInfo.library === "react/jsx-runtime")
|
|
128
|
+
libType = "react-jsx-runtime";
|
|
129
|
+
else if (getterExportInfo.library === "react-dom/client")
|
|
130
|
+
libType = "react-dom-client";
|
|
131
|
+
if (libType !== "unknown") {
|
|
132
|
+
varToLib.set(varName, { varName, libType, exportMap: new Map() });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return { interopVarNames, varToLib };
|
|
137
|
+
}
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
// Vite Pass D — rewrite (0, X.prop)(args) → prop(args)
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
/**
|
|
142
|
+
* Rewrites `(0, X.prop)(args)` → `prop(args)` for known library vars.
|
|
143
|
+
* Also rewrites bare `X.prop` member accesses in non-call positions.
|
|
144
|
+
* Returns a Map from library source path → set of used canonical names.
|
|
145
|
+
*/
|
|
146
|
+
function rewriteViteLibraryCalls(statements, varToLib) {
|
|
147
|
+
const usedExports = new Map();
|
|
148
|
+
const record = (libType, name) => {
|
|
149
|
+
const src = librarySource(libType);
|
|
150
|
+
if (!src)
|
|
151
|
+
return;
|
|
152
|
+
if (!usedExports.has(src))
|
|
153
|
+
usedExports.set(src, new Set());
|
|
154
|
+
usedExports.get(src).add(name);
|
|
155
|
+
};
|
|
156
|
+
const resolveViteProp = (varName, prop) => {
|
|
157
|
+
const info = varToLib.get(varName);
|
|
158
|
+
if (!info || info.libType === "unknown")
|
|
159
|
+
return null;
|
|
160
|
+
const isCanonical = (name) => {
|
|
161
|
+
if (info.libType === "react")
|
|
162
|
+
return REACT_CANONICAL.has(name);
|
|
163
|
+
if (info.libType === "react-jsx-runtime")
|
|
164
|
+
return JSX_RUNTIME_CANONICAL.has(name) || name === "Fragment";
|
|
165
|
+
if (info.libType === "react-dom-client")
|
|
166
|
+
return REACT_DOM_CLIENT_CANONICAL.has(name);
|
|
167
|
+
if (info.libType === "react-router-dom")
|
|
168
|
+
return REACT_ROUTER_DOM_CANONICAL.has(name);
|
|
169
|
+
return false;
|
|
170
|
+
};
|
|
171
|
+
if (isCanonical(prop))
|
|
172
|
+
return { canonical: prop, libType: info.libType };
|
|
173
|
+
return null;
|
|
174
|
+
};
|
|
175
|
+
const syntheticFile = t.file(t.program(statements, [], "module"));
|
|
176
|
+
traverse(syntheticFile, {
|
|
177
|
+
CallExpression(p) {
|
|
178
|
+
const callee = p.node.callee;
|
|
179
|
+
// (0, X.prop) form
|
|
180
|
+
if (t.isSequenceExpression(callee) && callee.expressions.length === 2) {
|
|
181
|
+
const [first, second] = callee.expressions;
|
|
182
|
+
if (t.isNumericLiteral(first) &&
|
|
183
|
+
first.value === 0 &&
|
|
184
|
+
t.isMemberExpression(second) &&
|
|
185
|
+
!second.computed &&
|
|
186
|
+
t.isIdentifier(second.object) &&
|
|
187
|
+
t.isIdentifier(second.property)) {
|
|
188
|
+
const varName = second.object.name;
|
|
189
|
+
const prop = second.property.name;
|
|
190
|
+
const resolved = resolveViteProp(varName, prop);
|
|
191
|
+
if (resolved) {
|
|
192
|
+
record(resolved.libType, resolved.canonical);
|
|
193
|
+
p.node.callee = t.identifier(resolved.canonical);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// X.prop form
|
|
199
|
+
if (t.isMemberExpression(callee) &&
|
|
200
|
+
!callee.computed &&
|
|
201
|
+
t.isIdentifier(callee.object) &&
|
|
202
|
+
t.isIdentifier(callee.property)) {
|
|
203
|
+
const varName = callee.object.name;
|
|
204
|
+
const prop = callee.property.name;
|
|
205
|
+
const resolved = resolveViteProp(varName, prop);
|
|
206
|
+
if (resolved) {
|
|
207
|
+
record(resolved.libType, resolved.canonical);
|
|
208
|
+
p.node.callee = t.identifier(resolved.canonical);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
MemberExpression(p) {
|
|
213
|
+
// Non-call positions
|
|
214
|
+
if (t.isCallExpression(p.parent) && p.parent.callee === p.node)
|
|
215
|
+
return;
|
|
216
|
+
if (p.node.computed)
|
|
217
|
+
return;
|
|
218
|
+
if (!t.isIdentifier(p.node.object) || !t.isIdentifier(p.node.property))
|
|
219
|
+
return;
|
|
220
|
+
const varName = p.node.object.name;
|
|
221
|
+
const prop = p.node.property.name;
|
|
222
|
+
const resolved = resolveViteProp(varName, prop);
|
|
223
|
+
if (resolved) {
|
|
224
|
+
record(resolved.libType, resolved.canonical);
|
|
225
|
+
p.replaceWith(t.identifier(resolved.canonical));
|
|
226
|
+
p.skip();
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
return usedExports;
|
|
231
|
+
}
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
// Boilerplate removal
|
|
234
|
+
// ---------------------------------------------------------------------------
|
|
235
|
+
/**
|
|
236
|
+
* Removes the `__vite__mapDeps` const declaration.
|
|
237
|
+
* Pattern: const __vite__mapDeps = (i, m=__vite__mapDeps, d=(m.f||(m.f=[...]))) => ...
|
|
238
|
+
*/
|
|
239
|
+
function removeViteMapDeps(statements) {
|
|
240
|
+
return statements.filter((stmt) => {
|
|
241
|
+
if (!t.isVariableDeclaration(stmt))
|
|
242
|
+
return true;
|
|
243
|
+
return !stmt.declarations.some((d) => t.isIdentifier(d.id) && d.id.name === "__vite__mapDeps");
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Removes modulepreload setup IIFEs.
|
|
248
|
+
* Pattern: (function(){let e=document.createElement(`link`).relList;...})()
|
|
249
|
+
*/
|
|
250
|
+
function removeModulepreloadIIFE(statements) {
|
|
251
|
+
return statements.filter((stmt) => {
|
|
252
|
+
if (!t.isExpressionStatement(stmt))
|
|
253
|
+
return true;
|
|
254
|
+
const expr = stmt.expression;
|
|
255
|
+
if (!t.isCallExpression(expr))
|
|
256
|
+
return true;
|
|
257
|
+
const callee = expr.callee;
|
|
258
|
+
if (!t.isFunctionExpression(callee) && !t.isArrowFunctionExpression(callee))
|
|
259
|
+
return true;
|
|
260
|
+
// Detect modulepreload setup by looking for `relList` or `modulepreload` in body
|
|
261
|
+
try {
|
|
262
|
+
const bodyCode = generate(callee).code;
|
|
263
|
+
if (bodyCode.includes("relList") ||
|
|
264
|
+
bodyCode.includes("modulepreload") ||
|
|
265
|
+
(bodyCode.includes("createElement") && bodyCode.includes("link"))) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch (_a) {
|
|
270
|
+
// skip
|
|
271
|
+
}
|
|
272
|
+
return true;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Simplifies dynamic imports wrapped with __vite__mapDeps preloading helper.
|
|
277
|
+
* Pattern: (0, o.lazy)(() => o(()=>import('./X.js'), __vite__mapDeps([0,1,2])))
|
|
278
|
+
* After Pass D, becomes: lazy(() => o(()=>import('./X.js'), __vite__mapDeps([0,1,2])))
|
|
279
|
+
* We simplify the inner call: lazy(() => import('./X.js'))
|
|
280
|
+
*/
|
|
281
|
+
function simplifyViteMapDepsImports(statements) {
|
|
282
|
+
const syntheticFile = t.file(t.program(statements, [], "module"));
|
|
283
|
+
traverse(syntheticFile, {
|
|
284
|
+
CallExpression(p) {
|
|
285
|
+
// Look for: lazy(() => someWrapper(()=>import('./X.js'), __vite__mapDeps(...)))
|
|
286
|
+
const callee = p.node.callee;
|
|
287
|
+
if (!t.isIdentifier(callee, { name: "lazy" }))
|
|
288
|
+
return;
|
|
289
|
+
if (p.node.arguments.length !== 1)
|
|
290
|
+
return;
|
|
291
|
+
const arg = p.node.arguments[0];
|
|
292
|
+
if (!t.isArrowFunctionExpression(arg))
|
|
293
|
+
return;
|
|
294
|
+
const body = arg.body;
|
|
295
|
+
if (!t.isCallExpression(body))
|
|
296
|
+
return;
|
|
297
|
+
// The inner call has 2 args: ()=>import('./X.js'), __vite__mapDeps(...)
|
|
298
|
+
const innerArgs = body.arguments;
|
|
299
|
+
if (innerArgs.length < 2)
|
|
300
|
+
return;
|
|
301
|
+
const firstInnerArg = innerArgs[0];
|
|
302
|
+
if (!t.isArrowFunctionExpression(firstInnerArg))
|
|
303
|
+
return;
|
|
304
|
+
const innerBody = firstInnerArg.body;
|
|
305
|
+
if (!t.isCallExpression(innerBody))
|
|
306
|
+
return;
|
|
307
|
+
if (!t.isImport(innerBody.callee))
|
|
308
|
+
return;
|
|
309
|
+
// We found: lazy(() => wrapper(() => import('./X.js'), __vite__mapDeps(...)))
|
|
310
|
+
// Simplify to: lazy(() => import('./X.js'))
|
|
311
|
+
p.node.arguments = [t.arrowFunctionExpression([], innerBody)];
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
// ---------------------------------------------------------------------------
|
|
316
|
+
// Import rewriting for direct vendor imports
|
|
317
|
+
// ---------------------------------------------------------------------------
|
|
318
|
+
/**
|
|
319
|
+
* Rewrites vendor imports using all known vendor export maps.
|
|
320
|
+
* Removes all vendor chunk imports and replaces direct (non-CJS-getter) exports
|
|
321
|
+
* with proper library imports. Returns new statement list and rename map.
|
|
322
|
+
*/
|
|
323
|
+
function rewriteVendorImports(statements, vendorExportMaps) {
|
|
324
|
+
const renames = new Map(); // localSpecifier → canonicalName
|
|
325
|
+
const newLibImports = new Map(); // libraryPath → set of canonical names
|
|
326
|
+
const vendorSources = new Set(); // exact source values to remove
|
|
327
|
+
for (const stmt of statements) {
|
|
328
|
+
if (!t.isImportDeclaration(stmt))
|
|
329
|
+
continue;
|
|
330
|
+
const source = stmt.source.value;
|
|
331
|
+
const sourceBase = path.basename(source);
|
|
332
|
+
let exportMap;
|
|
333
|
+
for (const [vendorBasename, map] of vendorExportMaps) {
|
|
334
|
+
if (sourceBase.includes(vendorBasename.replace(/\.js$/, ""))) {
|
|
335
|
+
exportMap = map;
|
|
336
|
+
vendorSources.add(source);
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (!exportMap)
|
|
341
|
+
continue;
|
|
342
|
+
for (const spec of stmt.specifiers) {
|
|
343
|
+
if (!t.isImportSpecifier(spec))
|
|
344
|
+
continue;
|
|
345
|
+
const importedName = t.isIdentifier(spec.imported)
|
|
346
|
+
? spec.imported.name
|
|
347
|
+
: spec.imported.value;
|
|
348
|
+
const localName = spec.local.name;
|
|
349
|
+
const exportInfo = exportMap.get(importedName);
|
|
350
|
+
if (!exportInfo || exportInfo.isCjsGetter)
|
|
351
|
+
continue;
|
|
352
|
+
// Direct export (react-router-dom component or similar)
|
|
353
|
+
const libPath = exportInfo.library;
|
|
354
|
+
if (!newLibImports.has(libPath))
|
|
355
|
+
newLibImports.set(libPath, new Set());
|
|
356
|
+
newLibImports.get(libPath).add(exportInfo.canonicalName);
|
|
357
|
+
if (localName !== exportInfo.canonicalName) {
|
|
358
|
+
renames.set(localName, exportInfo.canonicalName);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
// Remove all vendor import statements (identified by exact source value)
|
|
363
|
+
const filtered = statements.filter((stmt) => {
|
|
364
|
+
if (!t.isImportDeclaration(stmt))
|
|
365
|
+
return true;
|
|
366
|
+
return !vendorSources.has(stmt.source.value);
|
|
367
|
+
});
|
|
368
|
+
// Build new import declarations for direct exports
|
|
369
|
+
const libImportStmts = [];
|
|
370
|
+
for (const [libPath, canonicalNames] of newLibImports) {
|
|
371
|
+
if (canonicalNames.size === 0)
|
|
372
|
+
continue;
|
|
373
|
+
const specifiers = Array.from(canonicalNames).map((name) => t.importSpecifier(t.identifier(name), t.identifier(name)));
|
|
374
|
+
libImportStmts.push(t.importDeclaration(specifiers, t.stringLiteral(libPath)));
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
newStatements: [...libImportStmts, ...filtered],
|
|
378
|
+
renames,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Renames usages of old identifier names to new names throughout statements.
|
|
383
|
+
*/
|
|
384
|
+
function applyRenames(statements, renames) {
|
|
385
|
+
if (renames.size === 0)
|
|
386
|
+
return;
|
|
387
|
+
const syntheticFile = t.file(t.program(statements, [], "module"));
|
|
388
|
+
traverse(syntheticFile, {
|
|
389
|
+
Identifier(p) {
|
|
390
|
+
var _a, _b;
|
|
391
|
+
const newName = renames.get(p.node.name);
|
|
392
|
+
if (!newName)
|
|
393
|
+
return;
|
|
394
|
+
// Skip binding declarations and import specifiers
|
|
395
|
+
if ((_a = p.parentPath) === null || _a === void 0 ? void 0 : _a.isImportSpecifier())
|
|
396
|
+
return;
|
|
397
|
+
if ((_b = p.parentPath) === null || _b === void 0 ? void 0 : _b.isImportDefaultSpecifier())
|
|
398
|
+
return;
|
|
399
|
+
p.node.name = newName;
|
|
400
|
+
},
|
|
401
|
+
JSXIdentifier(p) {
|
|
402
|
+
const newName = renames.get(p.node.name);
|
|
403
|
+
if (!newName)
|
|
404
|
+
return;
|
|
405
|
+
p.node.name = newName;
|
|
406
|
+
},
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
// ---------------------------------------------------------------------------
|
|
410
|
+
// Build new library import declarations from usedExports
|
|
411
|
+
// ---------------------------------------------------------------------------
|
|
412
|
+
function buildLibImportStatements(usedExports) {
|
|
413
|
+
const decls = [];
|
|
414
|
+
for (const [libPath, names] of usedExports) {
|
|
415
|
+
if (names.size === 0)
|
|
416
|
+
continue;
|
|
417
|
+
const specifiers = Array.from(names).map((name) => t.importSpecifier(t.identifier(name), t.identifier(name)));
|
|
418
|
+
decls.push(t.importDeclaration(specifiers, t.stringLiteral(libPath)));
|
|
419
|
+
}
|
|
420
|
+
return decls;
|
|
421
|
+
}
|
|
422
|
+
// ---------------------------------------------------------------------------
|
|
423
|
+
// Prune unused named imports (Pass H equivalent)
|
|
424
|
+
// ---------------------------------------------------------------------------
|
|
425
|
+
function collectReferencedNames(stmts) {
|
|
426
|
+
const names = new Set();
|
|
427
|
+
const syntheticFile = t.file(t.program(stmts, [], "module"));
|
|
428
|
+
traverse(syntheticFile, {
|
|
429
|
+
Identifier(p) {
|
|
430
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
431
|
+
if ((_a = p.parentPath) === null || _a === void 0 ? void 0 : _a.isImportSpecifier())
|
|
432
|
+
return;
|
|
433
|
+
if ((_b = p.parentPath) === null || _b === void 0 ? void 0 : _b.isImportDefaultSpecifier())
|
|
434
|
+
return;
|
|
435
|
+
if ((_c = p.parentPath) === null || _c === void 0 ? void 0 : _c.isImportNamespaceSpecifier())
|
|
436
|
+
return;
|
|
437
|
+
if (((_d = p.parentPath) === null || _d === void 0 ? void 0 : _d.isMemberExpression()) &&
|
|
438
|
+
!p.parent.computed &&
|
|
439
|
+
p.parentPath.get("property") === p)
|
|
440
|
+
return;
|
|
441
|
+
if (((_e = p.parentPath) === null || _e === void 0 ? void 0 : _e.isObjectProperty()) &&
|
|
442
|
+
!p.parent.computed &&
|
|
443
|
+
p.parentPath.get("key") === p)
|
|
444
|
+
return;
|
|
445
|
+
if ((_f = p.parentPath) === null || _f === void 0 ? void 0 : _f.isJSXAttribute())
|
|
446
|
+
return;
|
|
447
|
+
if (((_g = p.parentPath) === null || _g === void 0 ? void 0 : _g.isJSXOpeningElement()) || ((_h = p.parentPath) === null || _h === void 0 ? void 0 : _h.isJSXClosingElement()))
|
|
448
|
+
return;
|
|
449
|
+
names.add(p.node.name);
|
|
450
|
+
},
|
|
451
|
+
JSXIdentifier(p) {
|
|
452
|
+
names.add(p.node.name);
|
|
453
|
+
},
|
|
454
|
+
});
|
|
455
|
+
return names;
|
|
456
|
+
}
|
|
457
|
+
function pruneUnusedNamedImports(importStmts, bodyStmts) {
|
|
458
|
+
const refs = collectReferencedNames(bodyStmts);
|
|
459
|
+
return importStmts
|
|
460
|
+
.map((stmt) => {
|
|
461
|
+
if (!t.isImportDeclaration(stmt))
|
|
462
|
+
return stmt;
|
|
463
|
+
const prunedSpecifiers = stmt.specifiers.filter((spec) => {
|
|
464
|
+
if (t.isImportNamespaceSpecifier(spec))
|
|
465
|
+
return true;
|
|
466
|
+
if (t.isImportDefaultSpecifier(spec))
|
|
467
|
+
return true;
|
|
468
|
+
if (t.isImportSpecifier(spec)) {
|
|
469
|
+
const localName = t.isIdentifier(spec.local) ? spec.local.name : null;
|
|
470
|
+
return localName ? refs.has(localName) : true;
|
|
471
|
+
}
|
|
472
|
+
return true;
|
|
473
|
+
});
|
|
474
|
+
if (prunedSpecifiers.length === 0)
|
|
475
|
+
return null;
|
|
476
|
+
if (prunedSpecifiers.length === stmt.specifiers.length)
|
|
477
|
+
return stmt;
|
|
478
|
+
return t.importDeclaration(prunedSpecifiers, stmt.source);
|
|
479
|
+
})
|
|
480
|
+
.filter(Boolean);
|
|
481
|
+
}
|
|
482
|
+
// ---------------------------------------------------------------------------
|
|
483
|
+
// Main refactor function
|
|
484
|
+
// ---------------------------------------------------------------------------
|
|
485
|
+
/**
|
|
486
|
+
* Refactors Vite-bundled React app chunks.
|
|
487
|
+
*
|
|
488
|
+
* @param chunks - Mapped chunks from the Vite app (vendor + app chunks)
|
|
489
|
+
* @param libSigs - Optional set of library signatures for module stripping (not used for Vite)
|
|
490
|
+
* @returns Record<filename, refactoredCode>
|
|
491
|
+
*/
|
|
492
|
+
export default function refactorVite(chunks, _libSigs) {
|
|
493
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
494
|
+
var _a, _b, _c, _d, _e;
|
|
495
|
+
const result = {};
|
|
496
|
+
// Step 1: Collect all vendor chunks and detect the rolldown runtime chunk
|
|
497
|
+
const vendorChunks = new Map(); // basename → code
|
|
498
|
+
for (const [, chunk] of Object.entries(chunks)) {
|
|
499
|
+
const filename = (_b = (_a = chunk.file) !== null && _a !== void 0 ? _a : chunk.id) !== null && _b !== void 0 ? _b : "";
|
|
500
|
+
const basename = path.basename(filename);
|
|
501
|
+
if (isVendorChunk(basename)) {
|
|
502
|
+
vendorChunks.set(basename, (_c = chunk.code) !== null && _c !== void 0 ? _c : "");
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
// Step 2: Analyze all vendor chunks
|
|
506
|
+
const vendorExportMaps = new Map();
|
|
507
|
+
for (const [basename, code] of vendorChunks) {
|
|
508
|
+
vendorExportMaps.set(basename, analyzeVendorChunk(code));
|
|
509
|
+
}
|
|
510
|
+
// Step 3: Process each non-vendor, non-runtime chunk
|
|
511
|
+
for (const [chunkKey, chunk] of Object.entries(chunks)) {
|
|
512
|
+
const filename = (_e = (_d = chunk.file) !== null && _d !== void 0 ? _d : chunk.id) !== null && _e !== void 0 ? _e : chunkKey;
|
|
513
|
+
const basename = path.basename(filename);
|
|
514
|
+
// Skip vendor and runtime chunks (they're not app code)
|
|
515
|
+
if (isVendorChunk(basename))
|
|
516
|
+
continue;
|
|
517
|
+
if (isRolldownRuntimeChunk(basename))
|
|
518
|
+
continue;
|
|
519
|
+
const code = chunk.code;
|
|
520
|
+
if (!code || code.trim().length === 0)
|
|
521
|
+
continue;
|
|
522
|
+
let ast;
|
|
523
|
+
try {
|
|
524
|
+
ast = parse(code, {
|
|
525
|
+
sourceType: "module",
|
|
526
|
+
plugins: ["jsx"],
|
|
527
|
+
errorRecovery: true,
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
catch (_f) {
|
|
531
|
+
// If parsing fails, keep the original code
|
|
532
|
+
result[chunkKey] = code;
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
let statements = ast.program.body;
|
|
536
|
+
// Step 3a: Find rolldown-runtime import to identify __toESM local name
|
|
537
|
+
let toEsmLocalName = null;
|
|
538
|
+
for (const stmt of statements) {
|
|
539
|
+
if (!t.isImportDeclaration(stmt))
|
|
540
|
+
continue;
|
|
541
|
+
if (!stmt.source.value.includes("rolldown-runtime"))
|
|
542
|
+
continue;
|
|
543
|
+
for (const spec of stmt.specifiers) {
|
|
544
|
+
if (!t.isImportSpecifier(spec))
|
|
545
|
+
continue;
|
|
546
|
+
const imported = t.isIdentifier(spec.imported)
|
|
547
|
+
? spec.imported.name
|
|
548
|
+
: spec.imported.value;
|
|
549
|
+
// rolldown exports __toESM as 'n'
|
|
550
|
+
if (imported === "n") {
|
|
551
|
+
toEsmLocalName = spec.local.name;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
// Step 3b: Build local var → vendor export info from import statements
|
|
556
|
+
const localVarToVendorExport = buildLocalVarToVendorExport(statements, vendorExportMaps);
|
|
557
|
+
// Step 3c: Detect interop vars and classify them using vendor export info
|
|
558
|
+
const { interopVarNames, varToLib } = detectInteropVars(statements, toEsmLocalName, localVarToVendorExport);
|
|
559
|
+
// Step 3d: Vite Pass D — rewrite (0, X.prop)(args) → prop(args)
|
|
560
|
+
const usedExports = rewriteViteLibraryCalls(statements, varToLib);
|
|
561
|
+
// Step 3e: Build new library import declarations from usedExports
|
|
562
|
+
const libImportDecls = buildLibImportStatements(usedExports);
|
|
563
|
+
// Step 3f: Apply cleanup passes E/F/G
|
|
564
|
+
const bodyStatements = statements.filter((s) => !t.isImportDeclaration(s));
|
|
565
|
+
const cleanedBody = applyModuleCleanupPasses(bodyStatements);
|
|
566
|
+
// Step 3g: Apply Pass H (prune unused imports)
|
|
567
|
+
const prunedLibImports = pruneUnusedNamedImports(libImportDecls, cleanedBody);
|
|
568
|
+
// Step 3h: Simplify __vite__mapDeps lazy imports
|
|
569
|
+
simplifyViteMapDepsImports(cleanedBody);
|
|
570
|
+
// Step 3i: Remove Vite boilerplate from body
|
|
571
|
+
const cleanedBodyNoBoilerplate = removeViteMapDeps(removeModulepreloadIIFE(cleanedBody));
|
|
572
|
+
// Step 3j: Rewrite direct vendor imports using all vendor export maps
|
|
573
|
+
const vendorImportStmts = statements.filter((s) => t.isImportDeclaration(s));
|
|
574
|
+
const vendorResult = vendorExportMaps.size > 0
|
|
575
|
+
? rewriteVendorImports(vendorImportStmts, vendorExportMaps)
|
|
576
|
+
: { newStatements: vendorImportStmts, renames: new Map() };
|
|
577
|
+
// Remove rolldown-runtime imports from the resulting statement list
|
|
578
|
+
const filteredNonVendorImports = vendorResult.newStatements.filter((s) => {
|
|
579
|
+
if (!t.isImportDeclaration(s))
|
|
580
|
+
return true;
|
|
581
|
+
return !s.source.value.includes("rolldown-runtime");
|
|
582
|
+
});
|
|
583
|
+
const vendorRenames = vendorResult.renames;
|
|
584
|
+
// Remove interop var declarators from body.
|
|
585
|
+
// When a declaration mixes interop and non-interop declarators, keep non-interop ones.
|
|
586
|
+
const bodyWithoutInteropVars = cleanedBodyNoBoilerplate
|
|
587
|
+
.map((stmt) => {
|
|
588
|
+
if (!t.isVariableDeclaration(stmt))
|
|
589
|
+
return stmt;
|
|
590
|
+
const keptDeclarators = stmt.declarations.filter((d) => !(t.isIdentifier(d.id) && interopVarNames.has(d.id.name)));
|
|
591
|
+
if (keptDeclarators.length === 0)
|
|
592
|
+
return null; // all interop — drop statement
|
|
593
|
+
if (keptDeclarators.length === stmt.declarations.length)
|
|
594
|
+
return stmt; // unchanged
|
|
595
|
+
return t.variableDeclaration(stmt.kind, keptDeclarators);
|
|
596
|
+
})
|
|
597
|
+
.filter(Boolean);
|
|
598
|
+
// Apply vendor renames to the body
|
|
599
|
+
applyRenames(bodyWithoutInteropVars, vendorRenames);
|
|
600
|
+
// Step 3k: Assemble final statement list
|
|
601
|
+
const finalStatements = [
|
|
602
|
+
...filteredNonVendorImports,
|
|
603
|
+
...prunedLibImports,
|
|
604
|
+
...bodyWithoutInteropVars,
|
|
605
|
+
];
|
|
606
|
+
// Step 3l: Generate code
|
|
607
|
+
try {
|
|
608
|
+
const generated = generate(t.file(t.program(finalStatements, [], "module"))).code;
|
|
609
|
+
result[chunkKey] = generated;
|
|
610
|
+
}
|
|
611
|
+
catch (_g) {
|
|
612
|
+
result[chunkKey] = code; // fallback to original
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
return result;
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/refactor/react-vite/index.ts"],"names":[],"mappings":"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"}
|