@js-recon/js-recon 1.3.2 → 1.4.1-alpha.9
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/.claude/settings.local.json +10 -0
- package/.github/workflows/build-and-prettify.yaml +205 -14
- package/.github/workflows/pr_checker.yml +2 -2
- package/.github/workflows/promote-js-recon.yml +104 -0
- package/.github/workflows/publish-js-recon.yml +22 -80
- package/.github/workflows/rules-smoke-test.yaml +79 -0
- package/CHANGELOG.md +171 -4
- package/CLAUDE.md +350 -16
- package/Dockerfile.release +29 -0
- package/README.md +48 -19
- 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/initRules.js +1 -1
- package/build/analyze/helpers/initRules.js.map +1 -1
- package/build/analyze/helpers/schemas.js +6 -2
- 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/analyze/index.js +1 -0
- package/build/analyze/index.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 +213 -0
- package/build/cs_mast/index.js.map +1 -0
- 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 +3 -3
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +210 -10
- 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 +59 -5
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +10 -9
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/index.js +127 -85
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/methodFilter.js +50 -0
- package/build/lazyLoad/methodFilter.js.map +1 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js +69 -48
- package/build/lazyLoad/next_js/NextJsCrawler.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 +66 -13
- 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_getBuildsManifest.js +64 -0
- package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js.map +1 -0
- 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 +16 -7
- 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_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/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/checkNextJS.js +24 -15
- package/build/lazyLoad/techDetect/checkNextJS.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/checkSvelte.js +17 -0
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
- package/build/lazyLoad/techDetect/index.js +33 -5
- 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 +59 -25
- 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_recursiveClientSidePathDownload.js +2 -2
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.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 +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/graphql/resolveGraphql.js +2 -1
- package/build/map/graphql/resolveGraphql.js.map +1 -1
- package/build/map/index.js +38 -0
- package/build/map/index.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 +5 -3
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +5 -3
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
- package/build/mcp/cli.js.map +1 -1
- package/build/refactor/index.js +973 -27
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/next/helpers.js +395 -0
- package/build/refactor/next/helpers.js.map +1 -0
- package/build/refactor/next/index.js +261 -71
- package/build/refactor/next/index.js.map +1 -1
- package/build/refactor/next/transform.js +1027 -0
- package/build/refactor/next/transform.js.map +1 -0
- package/build/refactor/next/validator.js +119 -0
- package/build/refactor/next/validator.js.map +1 -0
- package/build/refactor/react/helpers.js +106 -0
- package/build/refactor/react/helpers.js.map +1 -0
- package/build/refactor/react/index.js +290 -585
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/library-classify.js +397 -0
- package/build/refactor/react/library-classify.js.map +1 -0
- package/build/refactor/react/transform.js +1852 -0
- package/build/refactor/react/transform.js.map +1 -0
- package/build/refactor/react/validator.js +123 -0
- package/build/refactor/react/validator.js.map +1 -0
- package/build/refactor/react-vite/index.js +652 -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 +250 -0
- package/build/refactor/remote/cache.js.map +1 -0
- package/build/refactor/remote/config.js +63 -0
- package/build/refactor/remote/config.js.map +1 -0
- package/build/refactor/remote/hf-client.js +202 -0
- package/build/refactor/remote/hf-client.js.map +1 -0
- 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 +15 -4
- package/build/report/utility/genHtml.js.map +1 -1
- package/build/run/bundler-detect.js +154 -0
- package/build/run/bundler-detect.js.map +1 -0
- package/build/run/index.js +208 -16
- package/build/run/index.js.map +1 -1
- package/build/sourcemaps/index.js +89 -0
- package/build/sourcemaps/index.js.map +1 -0
- 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/banner.js +68 -0
- package/build/utility/banner.js.map +1 -0
- package/build/utility/getChromiumPath.js +40 -0
- package/build/utility/getChromiumPath.js.map +1 -0
- package/build/utility/globals.js +7 -0
- package/build/utility/globals.js.map +1 -1
- package/build/utility/makeReq.js +21 -11
- 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 +14 -8
- package/scripts/smoke-test.js +74 -0
- package/urls.txt +5 -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
|
}
|
|
@@ -44,14 +44,23 @@ const extractImports = (content, fileUrl, baseUrl) => {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
// Vite __vite_mapDeps initialiser: m.f=["assets/chunk1.js","assets/chunk2.js",...]
|
|
47
|
+
// SvelteKit uses relative paths ("../nodes/0.js") while Vue/React use root-relative
|
|
48
|
+
// ("/assets/chunk.js"). Resolve with fileUrl as base so both work correctly.
|
|
47
49
|
const mapDepsMatch = content.match(/m\.f\s*=\s*(\[[^\]]+\])/);
|
|
48
50
|
if (mapDepsMatch) {
|
|
49
51
|
try {
|
|
50
52
|
const arr = JSON.parse(mapDepsMatch[1]);
|
|
51
53
|
for (const p of arr) {
|
|
52
54
|
try {
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
+
// Explicit relative paths (starting with ./ or ../) → resolve against
|
|
56
|
+
// the file that contains the mapDeps table, so "../nodes/0.js" in
|
|
57
|
+
// _app/immutable/entry/app.js correctly becomes
|
|
58
|
+
// _app/immutable/nodes/0.js rather than /nodes/0.js.
|
|
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;
|
|
55
64
|
found.push(resolved);
|
|
56
65
|
}
|
|
57
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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"}
|
|
@@ -21,6 +21,7 @@ import { getJsUrls, pushToJsUrls } from "../globals.js";
|
|
|
21
21
|
* @returns {Promise<string[]>} - A promise that resolves to an array of absolute URLs pointing to JavaScript files found in the page.
|
|
22
22
|
*/
|
|
23
23
|
const svelte_getFromPageSource = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
var _a;
|
|
24
25
|
console.log(chalk.cyan("[i] Analyzing page source"));
|
|
25
26
|
let foundUrls = [];
|
|
26
27
|
const pageSource = yield makeRequest(url, {});
|
|
@@ -55,6 +56,21 @@ const svelte_getFromPageSource = (url) => __awaiter(void 0, void 0, void 0, func
|
|
|
55
56
|
foundUrls.push(yield resolvePath(url, srcAttr));
|
|
56
57
|
}
|
|
57
58
|
}
|
|
59
|
+
else {
|
|
60
|
+
// SvelteKit adapter-node boots the client via an inline <script> block using
|
|
61
|
+
// Promise.all([import("./_app/immutable/entry/start.js"), ...]) — no src attribute.
|
|
62
|
+
// Extract the string arguments from every import("...") call in the tag body.
|
|
63
|
+
const body = (_a = $(scriptTag).html()) !== null && _a !== void 0 ? _a : "";
|
|
64
|
+
for (const m of body.matchAll(/\bimport\(\s*["']([^"']+\.js)["']\s*\)/g)) {
|
|
65
|
+
const importPath = m[1];
|
|
66
|
+
if (importPath.startsWith("http")) {
|
|
67
|
+
foundUrls.push(importPath);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
foundUrls.push(yield resolvePath(url, importPath));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
58
74
|
}
|
|
59
75
|
// parse astro-island component-url and renderer-url attributes (Astro island hydration)
|
|
60
76
|
const astroIslands = $("astro-island");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte_getFromPageSource.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_getFromPageSource.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,CAAO,GAAG,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"svelte_getFromPageSource.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_getFromPageSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
import resolvePath from "../../utility/resolvePath.js";
|
|
13
|
+
/**
|
|
14
|
+
* Probes the SvelteKit-specific version.json endpoint.
|
|
15
|
+
*
|
|
16
|
+
* SvelteKit serves `/<appDir>/version.json` to let clients detect new deployments
|
|
17
|
+
* (via the `updated` store). This file is never referenced in page HTML or JS source,
|
|
18
|
+
* so string analysis and link/script tag scanning both miss it. It must be probed
|
|
19
|
+
* directly once the framework is identified and the appDir is known.
|
|
20
|
+
*
|
|
21
|
+
* @param baseUrl - The base URL of the target app
|
|
22
|
+
* @param appDir - SvelteKit's appDir (default: "_app")
|
|
23
|
+
* @returns Array containing the version.json URL if the endpoint responds 200, otherwise empty
|
|
24
|
+
*/
|
|
25
|
+
const svelte_getVersionJson = (baseUrl_1, ...args_1) => __awaiter(void 0, [baseUrl_1, ...args_1], void 0, function* (baseUrl, appDir = "_app") {
|
|
26
|
+
const versionJsonUrl = yield resolvePath(baseUrl, `/${appDir}/version.json`);
|
|
27
|
+
try {
|
|
28
|
+
const res = yield makeRequest(versionJsonUrl, {});
|
|
29
|
+
if (res && res.status === 200) {
|
|
30
|
+
console.log(chalk.green(`[✓] Found SvelteKit version.json at ${versionJsonUrl}`));
|
|
31
|
+
return [versionJsonUrl];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (_a) {
|
|
35
|
+
// Not found or unreachable — silently skip
|
|
36
|
+
}
|
|
37
|
+
return [];
|
|
38
|
+
});
|
|
39
|
+
export default svelte_getVersionJson;
|
|
40
|
+
//# sourceMappingURL=svelte_getVersionJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svelte_getVersionJson.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_getVersionJson.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,8BAA8B,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,qBAAqB,GAAG,uBAAoE,EAAE,8DAA/D,OAAe,EAAE,SAAiB,MAAM;IACzE,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,MAAM,eAAe,CAAC,CAAC;IAE7E,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,cAAc,EAAE,CAAC,CAAC,CAAC;YAClF,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAAC,WAAM,CAAC;QACL,2CAA2C;IAC/C,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC,CAAA,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -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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"}
|