@shriyanss/js-recon 1.4.1-alpha.4 → 1.4.1-alpha.5
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/.github/workflows/build-and-prettify.yaml +187 -1
- package/.github/workflows/publish-js-recon.yml +0 -1
- package/.github/workflows/rules-smoke-test.yaml +79 -0
- package/CHANGELOG.md +40 -0
- package/CLAUDE.md +184 -8
- package/README.md +18 -17
- package/build/analyze/engine/csMastSEngine.js +129 -0
- package/build/analyze/engine/csMastSEngine.js.map +1 -0
- package/build/analyze/engine/index.js +15 -0
- package/build/analyze/engine/index.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js +2 -1
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +2 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js +2 -1
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/taintFlow.js +11 -2
- package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -1
- package/build/analyze/helpers/schemas.js +5 -1
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/analyze/helpers/validate.js +3 -3
- package/build/analyze/helpers/validate.js.map +1 -1
- package/build/completion/index.js +432 -0
- package/build/completion/index.js.map +1 -0
- package/build/cs_mast/index.js +94 -3
- package/build/cs_mast/index.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +2 -1
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_jsonParse.js +2 -1
- package/build/endpoints/next_js/client_jsonParse.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js +2 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +2 -1
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/fingerprint/index.js +56 -33
- package/build/fingerprint/index.js.map +1 -1
- package/build/globalConfig.js +1 -1
- package/build/index.js +67 -6
- package/build/index.js.map +1 -1
- package/build/lazyLoad/angular/angular_getFromMainJs.js +2 -1
- package/build/lazyLoad/angular/angular_getFromMainJs.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +6 -5
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js +56 -7
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +9 -8
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/index.js +28 -1
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +36 -34
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +63 -15
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_parseLayoutJs.js +80 -68
- package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_promiseResolve.js +22 -16
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js +49 -47
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +3 -1
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +3 -2
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/react/react_followImports.js +12 -9
- package/build/lazyLoad/react/react_followImports.js.map +1 -1
- package/build/lazyLoad/react/react_webpackChunkPaths.js +175 -123
- package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +3 -2
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/techDetect/checkAngularJS.js +27 -6
- package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -1
- package/build/lazyLoad/techDetect/checkReact.js +8 -0
- package/build/lazyLoad/techDetect/checkReact.js.map +1 -1
- package/build/lazyLoad/techDetect/index.js +23 -2
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +2 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +2 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +22 -10
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -1
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +2 -1
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
- package/build/lazyLoad/vue/vue_jsImports.js +2 -1
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- package/build/lazyLoad/vue/vue_viteMapDeps.js +62 -54
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -1
- package/build/map/angular_js/getAngularConnections.js +1 -1
- package/build/map/angular_js/getAngularConnections.js.map +1 -1
- package/build/map/graphql/resolveGraphql.js +2 -1
- package/build/map/graphql/resolveGraphql.js.map +1 -1
- package/build/map/next_js/getExports.js +2 -1
- package/build/map/next_js/getExports.js.map +1 -1
- package/build/map/next_js/getFetchInstances.js +2 -1
- package/build/map/next_js/getFetchInstances.js.map +1 -1
- package/build/map/next_js/getTurbopackConnections.js +2 -1
- package/build/map/next_js/getTurbopackConnections.js.map +1 -1
- package/build/map/next_js/getWebpackConnections.js +2 -1
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/resolveAxios.js +2 -1
- package/build/map/next_js/resolveAxios.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js +2 -1
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js.map +1 -1
- package/build/map/next_js/resolveFetch.js +2 -1
- package/build/map/next_js/resolveFetch.js.map +1 -1
- package/build/map/next_js/resolveNewRequest.js +2 -1
- package/build/map/next_js/resolveNewRequest.js.map +1 -1
- package/build/map/next_js/resolveServerActions.js +2 -1
- package/build/map/next_js/resolveServerActions.js.map +1 -1
- package/build/map/next_js/utils.js +2 -1
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/react_js/getReactConnections.js +5 -4
- package/build/map/react_js/getReactConnections.js.map +1 -1
- package/build/map/vue_js/crossFileResolver.js +3 -2
- package/build/map/vue_js/crossFileResolver.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +5 -4
- package/build/map/vue_js/getViteConnections.js.map +1 -1
- package/build/map/vue_js/taint_utils.js +2 -1
- package/build/map/vue_js/taint_utils.js.map +1 -1
- package/build/map/vue_js/vue_resolveFetch.js +3 -2
- package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
- package/build/map/vue_js/vue_resolveHttpClient.js +3 -2
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +3 -2
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
- package/build/refactor/index.js +399 -60
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/next/helpers.js +194 -13
- package/build/refactor/next/helpers.js.map +1 -1
- package/build/refactor/next/index.js +223 -36
- package/build/refactor/next/index.js.map +1 -1
- package/build/refactor/next/transform.js +905 -55
- package/build/refactor/next/transform.js.map +1 -1
- package/build/refactor/react/index.js +3 -3
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/transform.js +2 -1
- package/build/refactor/react/transform.js.map +1 -1
- package/build/refactor/react/validator.js +2 -1
- package/build/refactor/react/validator.js.map +1 -1
- package/build/refactor/react-vite/index.js +39 -5
- package/build/refactor/react-vite/index.js.map +1 -1
- package/build/refactor/react-vite/vendor-analyze.js +3 -3
- package/build/refactor/react-vite/vendor-analyze.js.map +1 -1
- package/build/refactor/remote/config.js +17 -1
- package/build/refactor/remote/config.js.map +1 -1
- package/build/refactor/remote/hf-client.js +27 -2
- package/build/refactor/remote/hf-client.js.map +1 -1
- package/build/refactor/remote/version-detect.js +355 -0
- package/build/refactor/remote/version-detect.js.map +1 -0
- package/build/refactor/vue/index.js +176 -0
- package/build/refactor/vue/index.js.map +1 -0
- package/build/refactor/vue/vendor-analyze-vue.js +271 -0
- package/build/refactor/vue/vendor-analyze-vue.js.map +1 -0
- package/build/refactor/vue/vite.js +216 -0
- package/build/refactor/vue/vite.js.map +1 -0
- package/build/report/utility/genHtml.js +14 -3
- package/build/report/utility/genHtml.js.map +1 -1
- package/build/run/bundler-detect.js +140 -0
- package/build/run/bundler-detect.js.map +1 -0
- package/build/run/index.js +91 -5
- package/build/run/index.js.map +1 -1
- package/build/strings/index.js +6 -2
- package/build/strings/index.js.map +1 -1
- package/build/strings/trufflehog.js +71 -0
- package/build/strings/trufflehog.js.map +1 -0
- package/build/utility/makeReq.js +10 -9
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/postmanGenerator.js +2 -2
- package/build/utility/postmanGenerator.js.map +1 -1
- package/build/utility/puppeteerInstance.js +7 -1
- package/build/utility/puppeteerInstance.js.map +1 -1
- package/package.json +9 -5
- package/scripts/smoke-test.js +74 -0
|
@@ -17,8 +17,8 @@ import chalk from "chalk";
|
|
|
17
17
|
*/
|
|
18
18
|
const extractImports = (content, fileUrl, baseUrl) => {
|
|
19
19
|
const found = [];
|
|
20
|
-
// Static imports: from "..."
|
|
21
|
-
for (const m of content.matchAll(/\bfrom\s*["']([^"']+\.js)["']/g)) {
|
|
20
|
+
// Static imports: from "..." / from '...' / from `...`
|
|
21
|
+
for (const m of content.matchAll(/\bfrom\s*["'`]([^"'`]+\.m?js)["'`]/g)) {
|
|
22
22
|
try {
|
|
23
23
|
found.push(new URL(m[1], fileUrl).href);
|
|
24
24
|
}
|
|
@@ -26,7 +26,7 @@ const extractImports = (content, fileUrl, baseUrl) => {
|
|
|
26
26
|
/* skip */
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
for (const m of content.matchAll(/\bimport\s*["']([^"']+\.js)["']/g)) {
|
|
29
|
+
for (const m of content.matchAll(/\bimport\s*["'`]([^"'`]+\.m?js)["'`]/g)) {
|
|
30
30
|
try {
|
|
31
31
|
found.push(new URL(m[1], fileUrl).href);
|
|
32
32
|
}
|
|
@@ -34,8 +34,8 @@ const extractImports = (content, fileUrl, baseUrl) => {
|
|
|
34
34
|
/* skip */
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
// Dynamic imports: import("...")
|
|
38
|
-
for (const m of content.matchAll(/\bimport\s*\(\s*["']([^"']+\.js)["']\s*\)/g)) {
|
|
37
|
+
// Dynamic imports: import("...") / import('...') / import(`...`)
|
|
38
|
+
for (const m of content.matchAll(/\bimport\s*\(\s*["'`]([^"'`]+\.m?js)["'`]\s*\)/g)) {
|
|
39
39
|
try {
|
|
40
40
|
found.push(new URL(m[1], fileUrl).href);
|
|
41
41
|
}
|
|
@@ -52,12 +52,15 @@ const extractImports = (content, fileUrl, baseUrl) => {
|
|
|
52
52
|
const arr = JSON.parse(mapDepsMatch[1]);
|
|
53
53
|
for (const p of arr) {
|
|
54
54
|
try {
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
// file that contains the mapDeps table, so "../nodes/0.js" in
|
|
55
|
+
// Explicit relative paths (starting with ./ or ../) → resolve against
|
|
56
|
+
// the file that contains the mapDeps table, so "../nodes/0.js" in
|
|
58
57
|
// _app/immutable/entry/app.js correctly becomes
|
|
59
58
|
// _app/immutable/nodes/0.js rather than /nodes/0.js.
|
|
60
|
-
|
|
59
|
+
// Everything else (absolute /assets/x.js or bare assets/x.js) →
|
|
60
|
+
// resolve against the origin root, because Vite emits mapDeps paths
|
|
61
|
+
// relative to the site root, not relative to the chunk's own directory.
|
|
62
|
+
const isFileRelative = p.startsWith("./") || p.startsWith("../");
|
|
63
|
+
const resolved = isFileRelative ? new URL(p, fileUrl).href : new URL(p, baseUrl).href;
|
|
61
64
|
found.push(resolved);
|
|
62
65
|
}
|
|
63
66
|
catch (_d) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react_followImports.js","sourceRoot":"","sources":["../../../src/lazyLoad/react/react_followImports.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAY,EAAE;IACnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,
|
|
1
|
+
{"version":3,"file":"react_followImports.js","sourceRoot":"","sources":["../../../src/lazyLoad/react/react_followImports.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,132 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
var _a;
|
|
10
11
|
import makeRequest from "../../utility/makeReq.js";
|
|
11
12
|
import chalk from "chalk";
|
|
12
13
|
import _traverse from "@babel/traverse";
|
|
13
14
|
import parser from "@babel/parser";
|
|
14
15
|
import execFunc from "../../utility/runSandboxed.js";
|
|
15
|
-
const traverse = _traverse.default;
|
|
16
|
+
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
17
|
+
/**
|
|
18
|
+
* Pure parser: extracts `[chunkId, chunkName]` entries from webpack's
|
|
19
|
+
* FunctionExpression object-map pattern:
|
|
20
|
+
* function(e) { return ({123: "name", ...}[e] || e) + ".js"; }
|
|
21
|
+
* Returns entries from the first qualifying object map (≥ 3 numeric-keyed string entries).
|
|
22
|
+
*/
|
|
23
|
+
export const extractObjectMapChunkEntries = (jsContent) => {
|
|
24
|
+
const result = [];
|
|
25
|
+
let ast;
|
|
26
|
+
try {
|
|
27
|
+
ast = parser.parse(jsContent, {
|
|
28
|
+
sourceType: "unambiguous",
|
|
29
|
+
plugins: ["jsx", "typescript"],
|
|
30
|
+
errorRecovery: true,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
traverse(ast, {
|
|
37
|
+
FunctionExpression(path) {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const start = (_a = path.node.start) !== null && _a !== void 0 ? _a : 0;
|
|
40
|
+
const end = (_b = path.node.end) !== null && _b !== void 0 ? _b : jsContent.length;
|
|
41
|
+
const source = jsContent.slice(start, end);
|
|
42
|
+
if (!source.match(/\|\|\s*e/) || !source.includes('".js"'))
|
|
43
|
+
return;
|
|
44
|
+
path.traverse({
|
|
45
|
+
ObjectExpression(objPath) {
|
|
46
|
+
const props = objPath.node.properties;
|
|
47
|
+
if (props.length < 3)
|
|
48
|
+
return;
|
|
49
|
+
const entries = [];
|
|
50
|
+
for (const prop of props) {
|
|
51
|
+
if (prop.type !== "ObjectProperty")
|
|
52
|
+
continue;
|
|
53
|
+
const key = prop.key;
|
|
54
|
+
const value = prop.value;
|
|
55
|
+
if (value.type !== "StringLiteral")
|
|
56
|
+
continue;
|
|
57
|
+
let keyNum = null;
|
|
58
|
+
if (key.type === "NumericLiteral")
|
|
59
|
+
keyNum = key.value;
|
|
60
|
+
else if (key.type === "StringLiteral" && /^\d+$/.test(key.value))
|
|
61
|
+
keyNum = parseInt(key.value);
|
|
62
|
+
else if (key.type === "Identifier" && /^\d+$/.test(key.name))
|
|
63
|
+
keyNum = parseInt(key.name);
|
|
64
|
+
if (keyNum === null)
|
|
65
|
+
continue;
|
|
66
|
+
entries.push([keyNum, value.value]);
|
|
67
|
+
}
|
|
68
|
+
if (entries.length >= 3) {
|
|
69
|
+
result.push(...entries);
|
|
70
|
+
objPath.stop();
|
|
71
|
+
path.stop();
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
return result;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Pure parser: extracts chunk filenames from webpack's ArrowFunctionExpression
|
|
81
|
+
* if-chain pattern:
|
|
82
|
+
* (e) => { if (123 === e) return "name.js"; if (456 === e) return "other.js"; ... }
|
|
83
|
+
* Returns filenames only when there are at least 3 qualifying if-statements.
|
|
84
|
+
*/
|
|
85
|
+
export const extractIfChainChunkFilenames = (jsContent) => {
|
|
86
|
+
const result = [];
|
|
87
|
+
let ast;
|
|
88
|
+
try {
|
|
89
|
+
ast = parser.parse(jsContent, {
|
|
90
|
+
sourceType: "unambiguous",
|
|
91
|
+
plugins: ["jsx", "typescript"],
|
|
92
|
+
errorRecovery: true,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (_a) {
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
traverse(ast, {
|
|
99
|
+
ArrowFunctionExpression(path) {
|
|
100
|
+
var _a, _b;
|
|
101
|
+
const body = path.node.body;
|
|
102
|
+
if (body.type !== "BlockStatement")
|
|
103
|
+
return;
|
|
104
|
+
// skip expression-body arrows (handled by execFunc path)
|
|
105
|
+
const start = (_a = path.node.start) !== null && _a !== void 0 ? _a : 0;
|
|
106
|
+
const end = (_b = path.node.end) !== null && _b !== void 0 ? _b : jsContent.length;
|
|
107
|
+
const source = jsContent.slice(start, end);
|
|
108
|
+
if (source.match(/"\.js".{0,15}$/))
|
|
109
|
+
return;
|
|
110
|
+
const filenames = [];
|
|
111
|
+
for (const stmt of body.body) {
|
|
112
|
+
if (stmt.type !== "IfStatement")
|
|
113
|
+
continue;
|
|
114
|
+
const test = stmt.test;
|
|
115
|
+
if (test.type !== "BinaryExpression" || test.operator !== "===")
|
|
116
|
+
continue;
|
|
117
|
+
const { left, right } = test;
|
|
118
|
+
const isNumericEqParam = (left.type === "NumericLiteral" && right.type === "Identifier") ||
|
|
119
|
+
(right.type === "NumericLiteral" && left.type === "Identifier");
|
|
120
|
+
if (!isNumericEqParam)
|
|
121
|
+
continue;
|
|
122
|
+
const consequent = stmt.consequent;
|
|
123
|
+
if (consequent.type !== "ReturnStatement" || !consequent.argument)
|
|
124
|
+
continue;
|
|
125
|
+
const arg = consequent.argument;
|
|
126
|
+
if (arg.type !== "StringLiteral" || !arg.value.endsWith(".js"))
|
|
127
|
+
continue;
|
|
128
|
+
filenames.push(arg.value);
|
|
129
|
+
}
|
|
130
|
+
if (filenames.length >= 3)
|
|
131
|
+
result.push(...filenames);
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
return result;
|
|
135
|
+
};
|
|
16
136
|
// url param kept for API consistency with other react_* functions
|
|
17
137
|
const react_webpackChunkPaths = (_url, maxJsSizeMb, jsFiles) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
138
|
let toReturn = [];
|
|
@@ -21,7 +141,6 @@ const react_webpackChunkPaths = (_url, maxJsSizeMb, jsFiles) => __awaiter(void 0
|
|
|
21
141
|
const req = yield makeRequest(jsFile);
|
|
22
142
|
if (!req || req.status !== 200)
|
|
23
143
|
continue;
|
|
24
|
-
// check content-length before downloading body
|
|
25
144
|
const contentLength = req.headers.get("content-length");
|
|
26
145
|
if (contentLength && parseInt(contentLength) > maxJsSizeMb * 1024 * 1024) {
|
|
27
146
|
console.error(chalk.yellow(`[!] Skipping ${jsFile} (too large)`));
|
|
@@ -32,143 +151,76 @@ const react_webpackChunkPaths = (_url, maxJsSizeMb, jsFiles) => __awaiter(void 0
|
|
|
32
151
|
console.error(chalk.yellow(`[!] Skipping ${jsFile} (too large)`));
|
|
33
152
|
continue;
|
|
34
153
|
}
|
|
154
|
+
// pattern 3: FunctionExpression with object map
|
|
155
|
+
const objectMapEntries = extractObjectMapChunkEntries(jsContent);
|
|
156
|
+
if (objectMapEntries.length > 0) {
|
|
157
|
+
console.log(chalk.green(`[✓] Found webpack object-map chunk path builder in ${jsFile}`));
|
|
158
|
+
for (const [, chunkName] of objectMapEntries) {
|
|
159
|
+
try {
|
|
160
|
+
const finalUrl = new URL("../" + chunkName + ".js", jsFile).href;
|
|
161
|
+
toReturn.push(finalUrl);
|
|
162
|
+
}
|
|
163
|
+
catch (_a) {
|
|
164
|
+
// skip filenames that fail URL resolution
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// pattern 2: ArrowFunctionExpression if-chain
|
|
169
|
+
const ifChainFilenames = extractIfChainChunkFilenames(jsContent);
|
|
170
|
+
if (ifChainFilenames.length > 0) {
|
|
171
|
+
console.log(chalk.green(`[✓] Found webpack if-chain chunk path builder in ${jsFile}`));
|
|
172
|
+
for (const filename of ifChainFilenames) {
|
|
173
|
+
try {
|
|
174
|
+
const output = filename.startsWith("/") ||
|
|
175
|
+
filename.startsWith("http") ||
|
|
176
|
+
filename.startsWith("./") ||
|
|
177
|
+
filename.startsWith("../")
|
|
178
|
+
? filename
|
|
179
|
+
: "../" + filename;
|
|
180
|
+
const finalUrl = new URL(output, jsFile).href;
|
|
181
|
+
toReturn.push(finalUrl);
|
|
182
|
+
}
|
|
183
|
+
catch (_b) {
|
|
184
|
+
// skip filenames that fail URL resolution
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// pattern 1: ArrowFunctionExpression expression body via execFunc
|
|
35
189
|
const ast = parser.parse(jsContent, {
|
|
36
190
|
sourceType: "unambiguous",
|
|
37
191
|
plugins: ["jsx", "typescript"],
|
|
38
192
|
errorRecovery: true,
|
|
39
193
|
});
|
|
40
|
-
// find arrow functions that look like webpack chunk path builders:
|
|
41
|
-
// pattern 1: x.x = (e) => "prefix/" + ({...}[e] || e) + "." + {...}[e] + ".js"
|
|
42
|
-
// pattern 2: x.x = (e) => { if (N === e) return "file.js"; ... }
|
|
43
|
-
// pattern 3: x.x = function(e) { return ({N: "name", ...}[e] || e) + ".js"; }
|
|
44
194
|
traverse(ast, {
|
|
45
|
-
FunctionExpression(path) {
|
|
46
|
-
var _a, _b;
|
|
47
|
-
const start = (_a = path.node.start) !== null && _a !== void 0 ? _a : 0;
|
|
48
|
-
const end = (_b = path.node.end) !== null && _b !== void 0 ? _b : jsContent.length;
|
|
49
|
-
const source = jsContent.slice(start, end);
|
|
50
|
-
if (!source.match(/\|\|\s*e/) || !source.includes('".js"'))
|
|
51
|
-
return;
|
|
52
|
-
const chunkMap = [];
|
|
53
|
-
path.traverse({
|
|
54
|
-
ObjectExpression(objPath) {
|
|
55
|
-
const props = objPath.node.properties;
|
|
56
|
-
if (props.length < 3)
|
|
57
|
-
return;
|
|
58
|
-
const entries = [];
|
|
59
|
-
for (const prop of props) {
|
|
60
|
-
if (prop.type !== "ObjectProperty")
|
|
61
|
-
continue;
|
|
62
|
-
const key = prop.key;
|
|
63
|
-
const value = prop.value;
|
|
64
|
-
if (value.type !== "StringLiteral")
|
|
65
|
-
continue;
|
|
66
|
-
let keyNum = null;
|
|
67
|
-
if (key.type === "NumericLiteral")
|
|
68
|
-
keyNum = key.value;
|
|
69
|
-
else if (key.type === "StringLiteral" && /^\d+$/.test(key.value))
|
|
70
|
-
keyNum = parseInt(key.value);
|
|
71
|
-
else if (key.type === "Identifier" && /^\d+$/.test(key.name))
|
|
72
|
-
keyNum = parseInt(key.name);
|
|
73
|
-
if (keyNum === null)
|
|
74
|
-
continue;
|
|
75
|
-
entries.push([keyNum, value.value]);
|
|
76
|
-
}
|
|
77
|
-
if (entries.length >= 3) {
|
|
78
|
-
chunkMap.push(...entries);
|
|
79
|
-
objPath.stop();
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
if (chunkMap.length === 0)
|
|
84
|
-
return;
|
|
85
|
-
console.log(chalk.green(`[✓] Found webpack object-map chunk path builder in ${jsFile}`));
|
|
86
|
-
console.log(chalk.yellow(source.slice(0, 200) + (source.length > 200 ? "..." : "")));
|
|
87
|
-
for (const [, chunkName] of chunkMap) {
|
|
88
|
-
try {
|
|
89
|
-
const output = "../" + chunkName + ".js";
|
|
90
|
-
const finalUrl = new URL(output, jsFile).href;
|
|
91
|
-
toReturn.push(finalUrl);
|
|
92
|
-
}
|
|
93
|
-
catch (_c) {
|
|
94
|
-
// skip filenames that fail URL resolution
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
195
|
ArrowFunctionExpression(path) {
|
|
99
196
|
var _a, _b;
|
|
100
197
|
const start = (_a = path.node.start) !== null && _a !== void 0 ? _a : 0;
|
|
101
198
|
const end = (_b = path.node.end) !== null && _b !== void 0 ? _b : jsContent.length;
|
|
102
199
|
const source = jsContent.slice(start, end);
|
|
103
|
-
if (source.match(/"\.js".{0,15}$/))
|
|
104
|
-
// pattern 1: expression body returning computed path
|
|
105
|
-
console.log(chalk.green(`[✓] Found webpack chunk path builder in ${jsFile}`));
|
|
106
|
-
console.log(chalk.yellow(source.slice(0, 200) + (source.length > 200 ? "..." : "")));
|
|
107
|
-
const urlBuilderFunc = `(() => (${source}))()`;
|
|
108
|
-
const integers = source.match(/\d+/g);
|
|
109
|
-
if (!integers)
|
|
110
|
-
return;
|
|
111
|
-
for (const i of integers) {
|
|
112
|
-
try {
|
|
113
|
-
let output = execFunc(urlBuilderFunc, parseInt(i));
|
|
114
|
-
if (typeof output !== "string" || output.includes("undefined"))
|
|
115
|
-
continue;
|
|
116
|
-
if (!(output.startsWith("/") ||
|
|
117
|
-
output.startsWith("http") ||
|
|
118
|
-
output.startsWith("./") ||
|
|
119
|
-
output.startsWith("../"))) {
|
|
120
|
-
output = "../" + output;
|
|
121
|
-
}
|
|
122
|
-
const finalUrl = new URL(output, jsFile).href;
|
|
123
|
-
toReturn.push(finalUrl);
|
|
124
|
-
}
|
|
125
|
-
catch (_c) {
|
|
126
|
-
// skip integers that cause errors in sandboxed execution
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// pattern 2: block body with if-chain of literal filename returns
|
|
132
|
-
const body = path.node.body;
|
|
133
|
-
if (body.type !== "BlockStatement")
|
|
200
|
+
if (!source.match(/"\.js".{0,15}$/))
|
|
134
201
|
return;
|
|
135
|
-
|
|
136
|
-
for (const stmt of body.body) {
|
|
137
|
-
if (stmt.type !== "IfStatement")
|
|
138
|
-
continue;
|
|
139
|
-
const test = stmt.test;
|
|
140
|
-
if (test.type !== "BinaryExpression" || test.operator !== "===")
|
|
141
|
-
continue;
|
|
142
|
-
const { left, right } = test;
|
|
143
|
-
const isNumericEqParam = (left.type === "NumericLiteral" && right.type === "Identifier") ||
|
|
144
|
-
(right.type === "NumericLiteral" && left.type === "Identifier");
|
|
145
|
-
if (!isNumericEqParam)
|
|
146
|
-
continue;
|
|
147
|
-
const consequent = stmt.consequent;
|
|
148
|
-
if (consequent.type !== "ReturnStatement" || !consequent.argument)
|
|
149
|
-
continue;
|
|
150
|
-
const arg = consequent.argument;
|
|
151
|
-
if (arg.type !== "StringLiteral" || !arg.value.endsWith(".js"))
|
|
152
|
-
continue;
|
|
153
|
-
filenames.push(arg.value);
|
|
154
|
-
}
|
|
155
|
-
if (filenames.length < 3)
|
|
156
|
-
return;
|
|
157
|
-
console.log(chalk.green(`[✓] Found webpack if-chain chunk path builder in ${jsFile}`));
|
|
202
|
+
console.log(chalk.green(`[✓] Found webpack chunk path builder in ${jsFile}`));
|
|
158
203
|
console.log(chalk.yellow(source.slice(0, 200) + (source.length > 200 ? "..." : "")));
|
|
159
|
-
|
|
204
|
+
const urlBuilderFunc = `(() => (${source}))()`;
|
|
205
|
+
const integers = source.match(/\d+/g);
|
|
206
|
+
if (!integers)
|
|
207
|
+
return;
|
|
208
|
+
for (const i of integers) {
|
|
160
209
|
try {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
210
|
+
let output = execFunc(urlBuilderFunc, parseInt(i));
|
|
211
|
+
if (typeof output !== "string" || output.includes("undefined"))
|
|
212
|
+
continue;
|
|
213
|
+
if (!(output.startsWith("/") ||
|
|
214
|
+
output.startsWith("http") ||
|
|
215
|
+
output.startsWith("./") ||
|
|
216
|
+
output.startsWith("../"))) {
|
|
217
|
+
output = "../" + output;
|
|
218
|
+
}
|
|
167
219
|
const finalUrl = new URL(output, jsFile).href;
|
|
168
220
|
toReturn.push(finalUrl);
|
|
169
221
|
}
|
|
170
|
-
catch (
|
|
171
|
-
// skip
|
|
222
|
+
catch (_c) {
|
|
223
|
+
// skip integers that cause errors in sandboxed execution
|
|
172
224
|
}
|
|
173
225
|
}
|
|
174
226
|
},
|
|
@@ -181,7 +233,7 @@ const react_webpackChunkPaths = (_url, maxJsSizeMb, jsFiles) => __awaiter(void 0
|
|
|
181
233
|
if (toReturn.length > 0) {
|
|
182
234
|
console.log(chalk.green(`[✓] Found ${toReturn.length} webpack chunk JS files`));
|
|
183
235
|
}
|
|
184
|
-
toReturn = [...new Set(toReturn)];
|
|
236
|
+
toReturn = [...new Set(toReturn)];
|
|
185
237
|
return toReturn;
|
|
186
238
|
});
|
|
187
239
|
export default react_webpackChunkPaths;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react_webpackChunkPaths.js","sourceRoot":"","sources":["../../../src/lazyLoad/react/react_webpackChunkPaths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react_webpackChunkPaths.js","sourceRoot":"","sources":["../../../src/lazyLoad/react/react_webpackChunkPaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
var _a;
|
|
10
11
|
import chalk from "chalk";
|
|
11
12
|
import makeRequest from "../../utility/makeReq.js";
|
|
12
13
|
import { getJsUrls, pushToJsUrls } from "../globals.js";
|
|
@@ -14,7 +15,7 @@ import resolvePath from "../../utility/resolvePath.js";
|
|
|
14
15
|
// for parsing
|
|
15
16
|
import parser from "@babel/parser";
|
|
16
17
|
import _traverse from "@babel/traverse";
|
|
17
|
-
const traverse = _traverse.default;
|
|
18
|
+
const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
|
|
18
19
|
let analyzedFiles = [];
|
|
19
20
|
let filesFound = [];
|
|
20
21
|
let mapFilesFound = [];
|
|
@@ -26,7 +27,7 @@ let mapFilesFound = [];
|
|
|
26
27
|
* @returns {Promise<FoundJsFiles>} - A promise that resolves to an object containing
|
|
27
28
|
* all the strings that end with ".js".
|
|
28
29
|
*/
|
|
29
|
-
const parseJSFileContent = (content) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
export const parseJSFileContent = (content) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
31
|
try {
|
|
31
32
|
const ast = parser.parse(content, {
|
|
32
33
|
sourceType: "module",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_stringAnalysisJSFiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"svelte_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_stringAnalysisJSFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,19 +11,40 @@ import makeRequest from "../../utility/makeReq.js";
|
|
|
11
11
|
const checkAngularJS = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
12
|
let detected = false;
|
|
13
13
|
let evidence = "";
|
|
14
|
-
//
|
|
14
|
+
// Fast path: HTML-level Angular signals that require no extra network request.
|
|
15
|
+
// data-beasties-container is added by Angular's Beasties SSR/prerendering package.
|
|
16
|
+
if ($("html[data-beasties-container]").length > 0) {
|
|
17
|
+
return { detected: true, evidence: "data-beasties-container" };
|
|
18
|
+
}
|
|
19
|
+
// ng-version is set by the Angular runtime on the root component element after
|
|
20
|
+
// bootstrapping. Present only in the Puppeteer-rendered DOM, not raw static HTML.
|
|
21
|
+
const ngVersionEl = $("[ng-version]");
|
|
22
|
+
if (ngVersionEl.length > 0) {
|
|
23
|
+
const ver = ngVersionEl.attr("ng-version");
|
|
24
|
+
return { detected: true, evidence: `ng-version="${ver}"` };
|
|
25
|
+
}
|
|
26
|
+
// Angular view encapsulation adds _nghost-* attributes to host elements.
|
|
27
|
+
// This is reliable for rendered pages (Puppeteer) but absent in raw HTML.
|
|
28
|
+
const ngHostEl = $("[class]").filter((_, el) => {
|
|
29
|
+
const cls = $(el).attr("class") || "";
|
|
30
|
+
return /_nghost-/.test(cls);
|
|
31
|
+
});
|
|
32
|
+
if (ngHostEl.length > 0) {
|
|
33
|
+
return { detected: true, evidence: "_nghost-* view encapsulation attribute" };
|
|
34
|
+
}
|
|
35
|
+
// Second pass: look for main.js or main-HASH.js in script src and check its content
|
|
36
|
+
// for Angular runtime patterns. Matches both production (hashed) and development builds.
|
|
15
37
|
let hasMainJs = false;
|
|
16
38
|
let mainJsURL = undefined;
|
|
17
39
|
$("script").each((_, el) => {
|
|
18
|
-
const tag = $(el).get(0).tagName;
|
|
19
40
|
const attribs = el.attribs;
|
|
20
41
|
if (attribs) {
|
|
21
42
|
for (const [attrName, attrValue] of Object.entries(attribs)) {
|
|
22
43
|
if (attrName === "src") {
|
|
23
44
|
// @ts-ignore
|
|
24
|
-
|
|
45
|
+
// Match main.js (dev builds) and main-HASH.js (production builds)
|
|
46
|
+
if (/(?:^|\/)main(-[a-zA-Z0-9]+)?\.js(\?.*)?$/.test(attrValue)) {
|
|
25
47
|
hasMainJs = true;
|
|
26
|
-
// if the url starts with `main-...`, then build the full url
|
|
27
48
|
if (!attrValue.startsWith("http")) {
|
|
28
49
|
mainJsURL = new URL(attrValue, url).href;
|
|
29
50
|
}
|
|
@@ -41,11 +62,11 @@ const checkAngularJS = ($, url) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
41
62
|
const mainJsBody = yield mainJsRes.text();
|
|
42
63
|
// check if the traces of angular js are present
|
|
43
64
|
// using regex for this, as this is simple and fast
|
|
44
|
-
//
|
|
45
|
-
// if lazyload enabled, need to check routerlink: `["routerLink",`
|
|
65
|
+
// Zone.js patterns (present in Zone.js-based Angular apps)
|
|
46
66
|
const isAngularZoneRegex = /isAngularZone\(\)/;
|
|
47
67
|
const isAngularZoneRegex2 = /"isAngularZone"/;
|
|
48
68
|
const ngZoneRegex = /this\.ngZone/;
|
|
69
|
+
// Angular router pattern
|
|
49
70
|
const routerLinkRegex = /"routerLink"/;
|
|
50
71
|
if (isAngularZoneRegex.test(mainJsBody)) {
|
|
51
72
|
detected = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAngularJS.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkAngularJS.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD,MAAM,cAAc,GAAG,CAAO,CAAqB,EAAE,GAAW,EAAE,EAAE;IAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,
|
|
1
|
+
{"version":3,"file":"checkAngularJS.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkAngularJS.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,10 @@ const REACT_MARKERS = [
|
|
|
14
14
|
"react-jsx-runtime.production",
|
|
15
15
|
"react-dom.production",
|
|
16
16
|
"__reactRouterVersion",
|
|
17
|
+
// Vite React plugin dev-mode HMR runtime — present in the inline <script> block
|
|
18
|
+
// that @vitejs/plugin-react / plugin-react-swc injects into every dev-served page.
|
|
19
|
+
"@react-refresh",
|
|
20
|
+
"injectIntoGlobalHook",
|
|
17
21
|
];
|
|
18
22
|
const matchesReact = (body) => {
|
|
19
23
|
for (const marker of REACT_MARKERS) {
|
|
@@ -36,6 +40,10 @@ const fetchAndCheck = (src, url) => __awaiter(void 0, void 0, void 0, function*
|
|
|
36
40
|
if (/react/i.test(filename)) {
|
|
37
41
|
return `React-named file referenced: ${src}`;
|
|
38
42
|
}
|
|
43
|
+
// Fast path: Vite React plugin dev-mode HMR endpoint (/@react-refresh)
|
|
44
|
+
if (resolvedUrl.includes("/@react-refresh")) {
|
|
45
|
+
return `Vite React dev HMR endpoint referenced: ${src}`;
|
|
46
|
+
}
|
|
39
47
|
const res = yield makeRequest(resolvedUrl, {});
|
|
40
48
|
if (!res)
|
|
41
49
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkReact.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkReact.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkReact.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkReact.ts"],"names":[],"mappings":"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"}
|