@shriyanss/js-recon 1.3.1 → 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 +45 -0
- package/CLAUDE.md +45 -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 +20 -5
- 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/methodFilter.js +49 -0
- package/build/lazyLoad/methodFilter.js.map +1 -0
- 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 +2 -1
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +2 -1
- 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/utility/getChromiumPath.js +40 -0
- package/build/utility/getChromiumPath.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,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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAuB,EAAE;IAChE,IAAI,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YACf,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,aAAa,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,GAAwB,CAAC,CAAC;IACtC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,UAAyB,EAAiB,EAAE;;IACjF,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACD,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YAC9B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,aAAa,EAAE,IAAI;SACtB,CAAC,CAAC;IACP,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,WAAW,GAAyC,CAAC,MAAC,YAAoB,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;;QAAC,OAAA,CAAC;YAC5G,IAAI,EAAE,MAAA,MAAA,CAAC,CAAC,GAAG,0CAAE,IAAI,mCAAI,CAAC;YACtB,GAAG,EAAE,MAAA,MAAA,CAAC,CAAC,GAAG,0CAAE,MAAM,mCAAI,CAAC;SAC1B,CAAC,CAAA;KAAA,CAAC,CAAC;IAEJ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAEhD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,cAAc,GAA0C,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAW,CAAC,CAAC,IAAI,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC;QAC5E,UAAU,IAAI,SAAS,CAAC;IAC5B,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC3E,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACb,CAAC;QAED,mFAAmF;QACnF,IACI,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAChC,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAC5B,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,eAAe,CAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAuB,CAAC,QAAQ,CAAC,EACvE,CAAC;YACC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAsB,CAAC;YACrD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAA4B,CAAC,KAAK,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAqB,CAAC;YACzC,GAAG,CAAC,IAAI,CACJ,CAAC,CAAC,sBAAsB,CACpB,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CACxF,CACJ,CAAC;YACF,SAAS;QACb,CAAC;QAED,0FAA0F;QAC1F,IACI,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,WAAW;YAChB,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,EAAE,EACrB,CAAC;YACC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAoC,CAAC;YACrD,GAAG,CAAC,IAAI,CACJ,CAAC,CAAC,sBAAsB,CACpB,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,kBAAkB,CAChB,EAAE,CAAC,EAAG,EACN,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CACzE;aACJ,CAAC,CACL,CACJ,CAAC;YACF,SAAS;QACb,CAAC;QAED,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,MAAM,CACR,oDAAoD,CAAC,KAAK,QAAQ,CAAC,IAAW,CAAC;aAC1E,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAC9B,CACJ,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAyB,EAAE,QAAgB,EAAiB,EAAE;IACzF,IAAI,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAE9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAkB,CAAC,CAAC,IAAI,CAAC;QAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,cAAc,QAAQ,6BAA6B,kBAAkB,sBAAsB,CAAC,CACzG,CAAC;YACF,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAI,GAAW,CAAC,GAAG,CAAC,CAAC,CAAC,YAAa,GAAW,CAAC,GAAG,CAAC,IAAI,SAAU,GAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,8BAA8B,QAAQ,aAAa,OAAO,GAAG,CAAC,IAAI,kBAAkB,IAAI,CAAC,CACtG,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAQ,GAAW,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAK,GAAW,CAAC,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAE,GAAW,CAAC,SAAS,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -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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"}
|