@shriyanss/js-recon 1.2.2-alpha.8 → 1.3.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 +69 -0
- package/build/analyze/engine/astEngine.js +32 -26
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/schemas.js +1 -0
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +4 -2
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +12 -4
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/globalConfig.js +1 -1
- package/build/index.js +22 -2
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +74 -80
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/globals.js +32 -1
- package/build/lazyLoad/globals.js.map +1 -1
- package/build/lazyLoad/index.js +53 -128
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +248 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -0
- package/build/lazyLoad/next_js/next_GetJSScript.js +9 -8
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +4 -2
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +8 -3
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
- package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
- package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/next_js/next_promiseResolve.js +54 -45
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/react/react_getScriptTags.js +29 -0
- package/build/lazyLoad/react/react_getScriptTags.js.map +1 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js +44 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js +188 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js +70 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNextJS.js +45 -0
- package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js +39 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkReact.js +44 -0
- package/build/lazyLoad/techDetect/checkReact.js.map +1 -0
- package/build/lazyLoad/techDetect/checkSvelte.js +69 -0
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -0
- package/build/lazyLoad/techDetect/checkVueJS.js +118 -0
- package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -0
- package/build/lazyLoad/techDetect/index.js +14 -254
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +122 -54
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +6 -0
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +68 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +122 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/vue/vue_jsImports.js +40 -29
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- package/build/lazyLoad/vue/vue_pageSrc.js +60 -0
- package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +8 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +136 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js +57 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
- package/build/map/index.js +19 -0
- package/build/map/index.js.map +1 -1
- package/build/map/next_js/getExports.js +3 -1
- package/build/map/next_js/getExports.js.map +1 -1
- package/build/map/next_js/getTurbopackConnections.js +255 -0
- package/build/map/next_js/getTurbopackConnections.js.map +1 -0
- package/build/map/next_js/getWebpackConnections.js +3 -4
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +14 -10
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.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/utils.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +293 -0
- package/build/map/vue_js/getViteConnections.js.map +1 -0
- package/build/map/vue_js/interactive.js +39 -0
- package/build/map/vue_js/interactive.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js +285 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js +39 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js +11 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
- package/build/mcp/cli.js +381 -0
- package/build/mcp/cli.js.map +1 -0
- package/build/mcp/commands.js +147 -0
- package/build/mcp/commands.js.map +1 -0
- package/build/mcp/config.js +68 -0
- package/build/mcp/config.js.map +1 -0
- package/build/mcp/index.js +29 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/providers.js +153 -0
- package/build/mcp/providers.js.map +1 -0
- package/build/mcp/tools.js +185 -0
- package/build/mcp/tools.js.map +1 -0
- package/build/run/index.js +35 -16
- package/build/run/index.js.map +1 -1
- package/build/utility/makeReq.js +25 -55
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/puppeteerInstance.js +5 -0
- package/build/utility/puppeteerInstance.js.map +1 -0
- package/contributing/nextjs.md +410 -0
- package/package.json +11 -4
|
@@ -25,103 +25,97 @@ import { getScope, getMaxReqQueue } from "./globals.js"; // Import scope and max
|
|
|
25
25
|
* @param {string} output - The directory where the downloaded JS chunks should be written.
|
|
26
26
|
* @returns {Promise<void>} - Resolves once all eligible files have been downloaded and saved.
|
|
27
27
|
*/
|
|
28
|
+
// Files larger than this skip Prettier — minified bundles gain nothing from formatting
|
|
29
|
+
// and Prettier's internal AST for a 2 MB file can consume hundreds of MB.
|
|
30
|
+
const PRETTIER_SIZE_LIMIT = 500 * 1024; // 500 KB
|
|
28
31
|
const downloadFiles = (urls, output) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
32
|
console.log(chalk.cyan(`[i] Attempting to download ${urls.length} JS chunks`));
|
|
30
33
|
fs.mkdirSync(output, { recursive: true });
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
let ignoredJSDomains = [];
|
|
34
|
+
const ignoredJSFiles = [];
|
|
35
|
+
const ignoredJSDomains = [];
|
|
34
36
|
let download_count = 0;
|
|
35
|
-
let
|
|
36
|
-
const
|
|
37
|
+
let cursor = 0;
|
|
38
|
+
const concurrency = Math.max(1, getMaxReqQueue());
|
|
39
|
+
const processOne = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
var _a, _b;
|
|
37
41
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
ignoredJSDomains.push(host);
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
42
|
+
if (!url.match(/(\.js|\.json|\.js\.map)/)) {
|
|
43
|
+
console.log(chalk.yellow(`[i] Ignored ${url}`));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const { host, directory } = getURLDirectory(url);
|
|
47
|
+
if (!getScope().includes("*") && !getScope().includes(host)) {
|
|
48
|
+
ignoredJSFiles.push(url);
|
|
49
|
+
if (!ignoredJSDomains.includes(host)) {
|
|
50
|
+
ignoredJSDomains.push(host);
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const childDir = path.join(output, host, directory);
|
|
55
|
+
fs.mkdirSync(childDir, { recursive: true });
|
|
56
|
+
let res;
|
|
57
|
+
try {
|
|
58
|
+
res = yield makeRequest(url, {});
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.error(chalk.red(`[!] Failed to download: ${url}`));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!res) {
|
|
65
|
+
console.error(chalk.red(`[!] Failed to download: ${url}`));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const rawText = yield res.text();
|
|
69
|
+
const file = url.match(/\.json/) ? rawText : `// File Source: ${url}\n${rawText}`;
|
|
70
|
+
let filename;
|
|
71
|
+
try {
|
|
72
|
+
filename = (_b = (_a = url
|
|
73
|
+
.split("/")
|
|
74
|
+
.pop()) === null || _a === void 0 ? void 0 : _a.match(/[a-zA-Z0-9\.\-_]+\.js(on)?(\.map)?/)) === null || _b === void 0 ? void 0 : _b[0];
|
|
75
|
+
}
|
|
76
|
+
catch (_c) {
|
|
77
|
+
for (const chunk of url.split("/")) {
|
|
78
|
+
if (chunk.match(/\.js(on)?$/)) {
|
|
79
|
+
filename = chunk;
|
|
80
|
+
break;
|
|
60
81
|
}
|
|
61
|
-
queue++; // acquire a slot in the queue
|
|
62
|
-
res = yield makeRequest(url, {});
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
console.error(chalk.red(`[!] Failed to download: ${url}`));
|
|
66
82
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
}
|
|
84
|
+
if (!filename) {
|
|
85
|
+
console.warn(chalk.yellow(`[!] Could not determine filename for URL: ${url}. Skipping.`));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const filePath = path.join(childDir, filename);
|
|
89
|
+
try {
|
|
90
|
+
if (url.match(/\.json/) || url.match(/\.js\.map/)) {
|
|
91
|
+
const formatted = file.length <= PRETTIER_SIZE_LIMIT ? yield prettier.format(file, { parser: "json" }) : file;
|
|
92
|
+
fs.writeFileSync(filePath, formatted);
|
|
74
93
|
}
|
|
75
94
|
else {
|
|
76
|
-
|
|
95
|
+
const formatted = file.length <= PRETTIER_SIZE_LIMIT ? yield prettier.format(file, { parser: "babel" }) : file;
|
|
96
|
+
fs.writeFileSync(filePath, formatted);
|
|
77
97
|
}
|
|
78
|
-
let filename;
|
|
79
|
-
try {
|
|
80
|
-
filename = url
|
|
81
|
-
.split("/")
|
|
82
|
-
.pop()
|
|
83
|
-
.match(/[a-zA-Z0-9\.\-_]+\.js(on)?(\.map)?/)[0];
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
// split the URL into multiple chunks. then iterate
|
|
87
|
-
// through it, and find whatever matches with JS or JSON ext
|
|
88
|
-
const chunks = url.split("/");
|
|
89
|
-
for (const chunk of chunks) {
|
|
90
|
-
if (chunk.match(/\.js(on)?$/)) {
|
|
91
|
-
filename = chunk;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (!filename) {
|
|
97
|
-
// Handle cases where filename might not be found
|
|
98
|
-
console.warn(chalk.yellow(`[!] Could not determine filename for URL: ${url}. Skipping.`));
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const filePath = path.join(childDir, filename);
|
|
102
|
-
try {
|
|
103
|
-
// if it's json, then use different parser
|
|
104
|
-
if (url.match(/\.json/) || url.match(/\.js\.map/)) {
|
|
105
|
-
fs.writeFileSync(filePath, yield prettier.format(file, { parser: "json" }));
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
fs.writeFileSync(filePath, yield prettier.format(file, { parser: "babel" }));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
console.error(chalk.red(`[!] Failed to write file: ${filePath}`));
|
|
113
|
-
}
|
|
114
|
-
download_count++;
|
|
115
98
|
}
|
|
116
|
-
|
|
117
|
-
console.
|
|
99
|
+
catch (_d) {
|
|
100
|
+
console.error(chalk.red(`[!] Failed to write file: ${filePath}`));
|
|
118
101
|
}
|
|
102
|
+
download_count++;
|
|
119
103
|
}
|
|
120
104
|
catch (err) {
|
|
121
105
|
console.error(chalk.red(`[!] Failed to download: ${url} : ${err}`));
|
|
122
106
|
}
|
|
123
|
-
})
|
|
124
|
-
|
|
107
|
+
});
|
|
108
|
+
// Worker pool: each worker processes one file end-to-end before taking the next.
|
|
109
|
+
// This bounds peak memory to (concurrency × largest_file) rather than all files at once.
|
|
110
|
+
const worker = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
while (true) {
|
|
112
|
+
const idx = cursor++;
|
|
113
|
+
if (idx >= urls.length)
|
|
114
|
+
break;
|
|
115
|
+
yield processOne(urls[idx]);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
yield Promise.all(Array.from({ length: concurrency }, () => worker()));
|
|
125
119
|
if (ignoredJSFiles.length > 0) {
|
|
126
120
|
console.log(chalk.yellow(`[i] Ignored ${ignoredJSFiles.length} JS files across ${ignoredJSDomains.length} domain(s) - ${ignoredJSDomains.join(", ")}`));
|
|
127
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadFilesUtil.js","sourceRoot":"","sources":["../../src/lazyLoad/downloadFilesUtil.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC,CAAC,2CAA2C;AAEpG;;;;;;;;;;GAUG;AACH,MAAM,aAAa,GAAG,CAAO,IAAc,EAAE,MAAc,EAAE,EAAE;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;IAC/E,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,
|
|
1
|
+
{"version":3,"file":"downloadFilesUtil.js","sourceRoot":"","sources":["../../src/lazyLoad/downloadFilesUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import chalk from "chalk";
|
|
11
|
-
import puppeteer from "puppeteer";
|
|
12
11
|
import * as globalsUtil from "../utility/globals.js";
|
|
12
|
+
import puppeteer from "../utility/puppeteerInstance.js";
|
|
13
13
|
/**
|
|
14
14
|
* Downloads all the lazy loaded JS files from a given URL.
|
|
15
15
|
* @param {string} url - The URL of the webpage to fetch and parse.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadLoadedJsUtil.js","sourceRoot":"","sources":["../../src/lazyLoad/downloadLoadedJsUtil.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"downloadLoadedJsUtil.js","sourceRoot":"","sources":["../../src/lazyLoad/downloadLoadedJsUtil.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AACrD,OAAO,SAAS,MAAM,iCAAiC,CAAC;AAExD;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAO,GAAG,EAAE,EAAE;IACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,gCAAgC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE;KAC5F,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC,2CAA2C;IACnE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAO,OAAO,EAAE,EAAE;QACjC,sBAAsB;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,6CAA6C;QAE5E,wDAAwD;QACxD,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,EAAE,CAAC;YACzF,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC,CAAA,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAEtB,OAAO,aAAa,CAAC;AACzB,CAAC,CAAA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -6,6 +6,8 @@ let js_urls = [];
|
|
|
6
6
|
let json_urls = [];
|
|
7
7
|
/** Maximum number of concurrent requests allowed */
|
|
8
8
|
let max_req_queue;
|
|
9
|
+
/** List of URLs which has been crawled */
|
|
10
|
+
let crawled_urls = [];
|
|
9
11
|
/**
|
|
10
12
|
* Gets the current scope configuration.
|
|
11
13
|
* @returns Array of domains in scope
|
|
@@ -41,7 +43,14 @@ export const clearJsUrls = () => {
|
|
|
41
43
|
* @param url - JavaScript URL to add
|
|
42
44
|
*/
|
|
43
45
|
export const pushToJsUrls = (url) => {
|
|
44
|
-
|
|
46
|
+
if (Array.isArray(url)) {
|
|
47
|
+
js_urls.push(...url);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
js_urls.push(url);
|
|
51
|
+
}
|
|
52
|
+
// Remove duplicates
|
|
53
|
+
js_urls = [...new Set(js_urls)];
|
|
45
54
|
};
|
|
46
55
|
/**
|
|
47
56
|
* Gets the current array of JSON URLs.
|
|
@@ -73,4 +82,26 @@ export const getMaxReqQueue = () => max_req_queue;
|
|
|
73
82
|
export const setMaxReqQueue = (newMax) => {
|
|
74
83
|
max_req_queue = newMax;
|
|
75
84
|
};
|
|
85
|
+
/**
|
|
86
|
+
* Checks if a URL is already in the crawled URLs list.
|
|
87
|
+
* @param url - URL to check
|
|
88
|
+
* @returns True if URL is already crawled, false otherwise
|
|
89
|
+
*/
|
|
90
|
+
export const presentInCrawledUrls = (url) => {
|
|
91
|
+
return crawled_urls.includes(url);
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Adds a URL to the crawled URLs list if it's not already present.
|
|
95
|
+
* @param url - URL to add to crawled list
|
|
96
|
+
*/
|
|
97
|
+
export const addCrawledUrl = (url) => {
|
|
98
|
+
if (Array.isArray(url)) {
|
|
99
|
+
crawled_urls.push(...url);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
if (!presentInCrawledUrls(url)) {
|
|
103
|
+
crawled_urls.push(url);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
76
107
|
//# sourceMappingURL=globals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/lazyLoad/globals.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,IAAI,KAAK,GAAa,EAAE,CAAC;AACzB,qEAAqE;AACrE,IAAI,OAAO,GAAa,EAAE,CAAC;AAC3B,+DAA+D;AAC/D,IAAI,SAAS,GAAa,EAAE,CAAC;AAC7B,oDAAoD;AACpD,IAAI,aAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/lazyLoad/globals.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,IAAI,KAAK,GAAa,EAAE,CAAC;AACzB,qEAAqE;AACrE,IAAI,OAAO,GAAa,EAAE,CAAC;AAC3B,+DAA+D;AAC/D,IAAI,SAAS,GAAa,EAAE,CAAC;AAC7B,oDAAoD;AACpD,IAAI,aAAqB,CAAC;AAC1B,0CAA0C;AAC1C,IAAI,YAAY,GAAa,EAAE,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAa,EAAE,CAAC,KAAK,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAkB,EAAQ,EAAE;IACjD,KAAK,GAAG,QAAQ,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;IAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAa,EAAE,CAAC,OAAO,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAS,EAAE;IAClC,OAAO,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAsB,EAAQ,EAAE;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,oBAAoB;IACpB,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAa,EAAE,CAAC,SAAS,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAS,EAAE;IACpC,SAAS,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;IAChD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE,CAAC,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAQ,EAAE;IACnD,aAAa,GAAG,MAAM,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAW,EAAE;IACzD,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAsB,EAAQ,EAAE;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;AACL,CAAC,CAAC"}
|
package/build/lazyLoad/index.js
CHANGED
|
@@ -15,14 +15,8 @@ import _traverse from "@babel/traverse";
|
|
|
15
15
|
const traverse = _traverse.default;
|
|
16
16
|
import { URL } from "url";
|
|
17
17
|
// Next.js
|
|
18
|
-
import
|
|
19
|
-
import next_getJSScript from "./next_js/next_GetJSScript.js";
|
|
20
|
-
import next_GetLazyResourcesWebpackJs from "./next_js/next_GetLazyResourcesWebpackJs.js";
|
|
21
|
-
import next_getLazyResourcesBuildManifestJs from "./next_js/next_GetLazyResourcesBuildManifestJs.js";
|
|
18
|
+
import NextJsCrawler from "./next_js/NextJsCrawler.js";
|
|
22
19
|
import { next_buildId_RSC } from "./next_js/next_buildId.js";
|
|
23
|
-
import next_promiseResolve from "./next_js/next_promiseResolve.js";
|
|
24
|
-
import next_parseLayoutJs from "./next_js/next_parseLayoutJs.js";
|
|
25
|
-
import next_scriptTagsSubsequentRequests from "./next_js/next_scriptTagsSubsequentRequests.js";
|
|
26
20
|
// Nuxt.js
|
|
27
21
|
import nuxt_getFromPageSource from "./nuxt_js/nuxt_getFromPageSource.js";
|
|
28
22
|
import nuxt_stringAnalysisJSFiles from "./nuxt_js/nuxt_stringAnalysisJSFiles.js";
|
|
@@ -33,9 +27,13 @@ import svelte_stringAnalysisJSFiles from "./svelte/svelte_stringAnalysisJSFiles.
|
|
|
33
27
|
// Angular
|
|
34
28
|
import angular_getFromPageSource from "./angular/angular_getFromPageSource.js";
|
|
35
29
|
import angular_getFromMainJs from "./angular/angular_getFromMainJs.js";
|
|
36
|
-
|
|
37
|
-
import
|
|
38
|
-
import
|
|
30
|
+
// Vue
|
|
31
|
+
import vue_discoverJsFiles from "./vue/vue_discoverJsFiles.js";
|
|
32
|
+
import vue_recursiveClientSidePathDownload from "./vue/vue_recursiveClientSidePathDownload.js";
|
|
33
|
+
// React
|
|
34
|
+
import react_getScriptTags from "./react/react_getScriptTags.js";
|
|
35
|
+
import react_webpackChunkPaths from "./react/react_webpackChunkPaths.js";
|
|
36
|
+
import react_sourcemapUrls from "./react/react_sourcemapUrls.js";
|
|
39
37
|
// generic
|
|
40
38
|
import downloadFiles from "./downloadFilesUtil.js";
|
|
41
39
|
import downloadLoadedJs from "./downloadLoadedJsUtil.js";
|
|
@@ -47,7 +45,6 @@ import { extractSources } from "./sourcemap.js";
|
|
|
47
45
|
// import global vars
|
|
48
46
|
import * as lazyLoadGlobals from "./globals.js";
|
|
49
47
|
import * as globals from "../utility/globals.js";
|
|
50
|
-
import next_bruteForceJsFiles from "./next_js/next_bruteForceJsFiles.js";
|
|
51
48
|
const getMapFilesRecursively = (dir) => {
|
|
52
49
|
const entries = readdirSync(dir, { withFileTypes: true });
|
|
53
50
|
const mapFiles = [];
|
|
@@ -82,7 +79,9 @@ const extractSourceMaps = (assetsDir, outputDir) => __awaiter(void 0, void 0, vo
|
|
|
82
79
|
counter++;
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
|
-
|
|
82
|
+
if (counter !== 0) {
|
|
83
|
+
console.log(chalk.green(`[✓] Found ${counter} files from source maps - written to ${outputDir}`));
|
|
84
|
+
}
|
|
86
85
|
});
|
|
87
86
|
/**
|
|
88
87
|
* Downloads the required JavaScript files for a given URL
|
|
@@ -96,7 +95,7 @@ const extractSourceMaps = (assetsDir, outputDir) => __awaiter(void 0, void 0, vo
|
|
|
96
95
|
* @param {boolean} insecure If true, then disable SSL certificate verification
|
|
97
96
|
* @returns {Promise<void>} A Promise that resolves when the download is complete
|
|
98
97
|
*/
|
|
99
|
-
const lazyLoad = (
|
|
98
|
+
const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subsequentRequestsFlag_1, urlsFile_1, insecure_1, buildId_1, sourcemapDir_1, research_1, researchOutput_1, maxIterations_1, ...args_1) => __awaiter(void 0, [url_1, output_1, strictScope_1, inputScope_1, threads_1, subsequentRequestsFlag_1, urlsFile_1, insecure_1, buildId_1, sourcemapDir_1, research_1, researchOutput_1, maxIterations_1, ...args_1], void 0, function* (url, output, strictScope, inputScope, threads, subsequentRequestsFlag, urlsFile, insecure, buildId, sourcemapDir, research, researchOutput, maxIterations, maxJsSizeMb = 2) {
|
|
100
99
|
console.log(chalk.cyan("[i] Loading 'Lazy Load' module"));
|
|
101
100
|
if (globals.getDisableSandbox()) {
|
|
102
101
|
console.log(chalk.yellow("[!] Browser sandbox disabled"));
|
|
@@ -140,84 +139,19 @@ const lazyLoad = (url, output, strictScope, inputScope, threads, subsequentReque
|
|
|
140
139
|
if (tech.name === "next") {
|
|
141
140
|
console.log(chalk.green("[✓] Next.js detected"));
|
|
142
141
|
console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
);
|
|
154
|
-
// another run for to get the HTML from client side paths
|
|
155
|
-
// and parse the script tags
|
|
156
|
-
scriptTagsSubsequentRequests = yield next_scriptTagsSubsequentRequests(url, urlsFile);
|
|
157
|
-
}
|
|
158
|
-
// download the resources
|
|
159
|
-
// but combine them first
|
|
160
|
-
let jsFilesToDownload = [
|
|
161
|
-
...(jsFilesFromScriptTag || []),
|
|
162
|
-
...(lazyResourcesFromWebpack || []),
|
|
163
|
-
...(lazyResourcesFromBuildManifest || []),
|
|
164
|
-
...(lazyResourcesFromSubsequentRequests || []),
|
|
165
|
-
...(scriptTagsSubsequentRequests || []),
|
|
166
|
-
];
|
|
167
|
-
// Ensure js_urls from globals are included if next_getJSScript or next_getLazyResources populated it.
|
|
168
|
-
// This is because those functions now push to the global js_urls via setters.
|
|
169
|
-
// The return values of next_getJSScript and next_getLazyResources might be the same array instance
|
|
170
|
-
// or a new one depending on their implementation, so explicitly get the global one here.
|
|
171
|
-
jsFilesToDownload.push(...lazyLoadGlobals.getJsUrls());
|
|
172
|
-
// also, download the JSON files, so push those as well into this list
|
|
173
|
-
jsFilesToDownload.push(...lazyLoadGlobals.getJsonUrls());
|
|
174
|
-
// dedupe the files
|
|
175
|
-
jsFilesToDownload = [...new Set(jsFilesToDownload)];
|
|
176
|
-
// JS files are also loaded like:
|
|
177
|
-
// e.v((t) =>
|
|
178
|
-
// Promise.all(
|
|
179
|
-
// [
|
|
180
|
-
// "static/chunks/8c89748310820503.js",
|
|
181
|
-
// "static/chunks/cc50acdcbae71ebc.js",
|
|
182
|
-
// "static/chunks/bedf897aaa1cca78.js",
|
|
183
|
-
// ].map((t) => e.l(t)),
|
|
184
|
-
// ).then(() => t(58485)),
|
|
185
|
-
// );
|
|
186
|
-
// this behavior was found in my own site, which uses turbopack instead of webpack
|
|
187
|
-
// so, to resolve everything, we need to go through all the files' content
|
|
188
|
-
// and AST search for this pattern
|
|
189
|
-
const jsFilesFrom_next_promiseResolve = yield next_promiseResolve(jsFilesToDownload);
|
|
190
|
-
jsFilesToDownload.push(...jsFilesFrom_next_promiseResolve);
|
|
191
|
-
// another method found during research:
|
|
192
|
-
// when an app is built with turbopack, the .js.map files are present, but unlike webpack,
|
|
193
|
-
// they aren't present on the bottom of the file
|
|
194
|
-
// so, the way to find them is to just append `.map` on found JS files and bruteforce them
|
|
195
|
-
const jsFilesSourcemaps = yield next_bruteForceJsFiles(jsFilesToDownload);
|
|
196
|
-
jsFilesToDownload.push(...jsFilesSourcemaps);
|
|
197
|
-
// layout.*.js contains some UI builder elements
|
|
198
|
-
// parsing those gives us some client-side paths
|
|
199
|
-
// for example, the following code snippet is extracted, and returns a valid client side-path:
|
|
200
|
-
// (0, r.jsx)("div", {
|
|
201
|
-
// className: "border-b border-gray-600 pb-2",
|
|
202
|
-
// children: (0, r.jsxs)(l(), {
|
|
203
|
-
// href: "/profile/".concat(t.auth.username),
|
|
204
|
-
// className: "flex flex-row space-x-2 items-center",
|
|
205
|
-
// onClick: () => a(!1),
|
|
206
|
-
// children: [
|
|
207
|
-
// (0, r.jsx)(er.A, { size: "20" }),
|
|
208
|
-
// (0, r.jsx)("p", { children: "Profile" }),
|
|
209
|
-
// ],
|
|
210
|
-
// }),
|
|
211
|
-
// }),
|
|
212
|
-
// it is often nested in element names `children`, which is mostly an array
|
|
213
|
-
// e.g.
|
|
214
|
-
// children: [..., (0, r.jsx)("div", {...}), ....]
|
|
215
|
-
// so, we need to parse this to find such patterns
|
|
216
|
-
const layoutJsFiles = yield next_parseLayoutJs(url, jsFilesToDownload);
|
|
217
|
-
jsFilesToDownload.push(...layoutJsFiles);
|
|
142
|
+
const crawler = new NextJsCrawler({
|
|
143
|
+
url,
|
|
144
|
+
output,
|
|
145
|
+
subsequentRequestsFlag,
|
|
146
|
+
urlsFile,
|
|
147
|
+
threads,
|
|
148
|
+
research,
|
|
149
|
+
maxIterations,
|
|
150
|
+
});
|
|
151
|
+
const jsFilesToDownload = yield crawler.crawl();
|
|
218
152
|
// dedupe the files
|
|
219
|
-
|
|
220
|
-
yield downloadFiles(
|
|
153
|
+
const dedupedFiles = [...new Set(jsFilesToDownload)];
|
|
154
|
+
yield downloadFiles(dedupedFiles, output);
|
|
221
155
|
if (buildId) {
|
|
222
156
|
// get the buildId
|
|
223
157
|
// the directory is the output <output>/<host.replace(":", "_")>/___subsequent_requests
|
|
@@ -228,50 +162,23 @@ const lazyLoad = (url, output, strictScope, inputScope, threads, subsequentReque
|
|
|
228
162
|
fs.writeFileSync(path.join(output, new URL(url).host.replace(":", "_") + "/BUILD_ID"), buildId);
|
|
229
163
|
}
|
|
230
164
|
}
|
|
165
|
+
// if the research mode is enabled, then write the technique efficiency to a file
|
|
166
|
+
if (research) {
|
|
167
|
+
// prettify the JSON and write
|
|
168
|
+
fs.writeFileSync(researchOutput, JSON.stringify(crawler.techniqueEfficiencyMapping, null, 4));
|
|
169
|
+
console.log(chalk.green("[✓] Research mode enabled. Technique efficiency written to " + researchOutput));
|
|
170
|
+
}
|
|
231
171
|
// extract the source maps
|
|
232
172
|
yield extractSourceMaps(output, sourcemapDir);
|
|
233
173
|
}
|
|
234
174
|
else if (tech.name === "vue") {
|
|
235
175
|
console.log(chalk.green("[✓] Vue.js detected"));
|
|
236
176
|
console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
// method 1: through runtime.<hash>.js
|
|
243
|
-
// for this, first get the contents of `/`, and find runtime.<hash>.js file
|
|
244
|
-
/* ==========================
|
|
245
|
-
* IMPORTANT: THE FOLLOWING MODULE IS INCOMPLETE
|
|
246
|
-
* JUST NEED TO COMPLETE IT
|
|
247
|
-
* DO NOT PERMANENTLY DELETE IT
|
|
248
|
-
* ==========================
|
|
249
|
-
*/
|
|
250
|
-
// const runtimeJsFiles = await vue_runtimeJs(url);
|
|
251
|
-
// jsFilesToDownload.push(...runtimeJsFiles);
|
|
252
|
-
// another method: this is when the application only loads a single JS file
|
|
253
|
-
// everything is there right in that file
|
|
254
|
-
// the following method was tested on an app running in dev mode
|
|
255
|
-
// effectiveness in prod mode is unknown atm
|
|
256
|
-
const jsFilesFromSingleJsFile = yield vue_singleJsFileOnHome(url);
|
|
257
|
-
jsFilesToDownload.push(...jsFilesFromSingleJsFile);
|
|
258
|
-
if (jsFilesFromSingleJsFile.length > 0) {
|
|
259
|
-
console.log(chalk.green(`[✓] Found ${jsFilesFromSingleJsFile.length} files from the single JS file on home`));
|
|
260
|
-
}
|
|
261
|
-
// now, get the import statements from the JS files
|
|
262
|
-
const foundJsFilesFromImport = yield vue_jsImports(url, jsFilesToDownload);
|
|
263
|
-
jsFilesToDownload.push(...foundJsFilesFromImport);
|
|
264
|
-
if (foundJsFilesFromImport.length > 0) {
|
|
265
|
-
console.log(chalk.green(`[✓] Found ${foundJsFilesFromImport.length} files from import statements`));
|
|
266
|
-
}
|
|
267
|
-
// check if those have sourcemaps
|
|
268
|
-
const reconstructSourceMaps = yield vue_reconstructSourceMaps(url, jsFilesToDownload);
|
|
269
|
-
jsFilesToDownload.push(...reconstructSourceMaps);
|
|
270
|
-
if (reconstructSourceMaps.length > 0) {
|
|
271
|
-
console.log(chalk.green(`[✓] Found ${reconstructSourceMaps.length} files from reconstructing source maps`));
|
|
272
|
-
}
|
|
273
|
-
// dedupe the list
|
|
274
|
-
jsFilesToDownload = [...new Set(jsFilesToDownload)];
|
|
177
|
+
// run the full discovery pipeline against the entry URL
|
|
178
|
+
const { jsFiles, clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb);
|
|
179
|
+
// recurse the same pipeline through every client-side path we found
|
|
180
|
+
const recursivelyDiscovered = yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb);
|
|
181
|
+
const jsFilesToDownload = [...new Set([...jsFiles, ...recursivelyDiscovered])];
|
|
275
182
|
// finally, download these
|
|
276
183
|
yield downloadFiles(jsFilesToDownload, output);
|
|
277
184
|
// extract the source maps
|
|
@@ -336,6 +243,24 @@ const lazyLoad = (url, output, strictScope, inputScope, threads, subsequentReque
|
|
|
336
243
|
jsFilesToDownload = [...new Set(jsFilesToDownload)];
|
|
337
244
|
yield downloadFiles(jsFilesToDownload, output);
|
|
338
245
|
}
|
|
246
|
+
else if (tech.name === "react") {
|
|
247
|
+
console.log(chalk.green("[✓] React detected"));
|
|
248
|
+
console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
|
|
249
|
+
let jsFilesToDownload = [];
|
|
250
|
+
// get the files from the page source
|
|
251
|
+
const jsFilesFromPageSource = yield react_getScriptTags(url, maxJsSizeMb);
|
|
252
|
+
jsFilesToDownload.push(...jsFilesFromPageSource);
|
|
253
|
+
// find the webpack chunk path builder function
|
|
254
|
+
const getWebpackChunkPaths = yield react_webpackChunkPaths(url, maxJsSizeMb, jsFilesToDownload);
|
|
255
|
+
jsFilesToDownload.push(...getWebpackChunkPaths);
|
|
256
|
+
// check existing JS files for inline sourcemap references
|
|
257
|
+
const sourcemapUrls = yield react_sourcemapUrls(jsFilesToDownload);
|
|
258
|
+
jsFilesToDownload.push(...sourcemapUrls);
|
|
259
|
+
// dedupe the files
|
|
260
|
+
jsFilesToDownload = [...new Set(jsFilesToDownload)];
|
|
261
|
+
yield downloadFiles(jsFilesToDownload, output);
|
|
262
|
+
extractSourceMaps(output, sourcemapDir);
|
|
263
|
+
}
|
|
339
264
|
else {
|
|
340
265
|
console.log(chalk.red("[!] Framework not detected :("));
|
|
341
266
|
console.log(chalk.magenta(CONFIG.notFoundMessage));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lazyLoad/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lazyLoad/index.ts"],"names":[],"mappings":"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"}
|