@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
|
@@ -0,0 +1,248 @@
|
|
|
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 chalk from "chalk";
|
|
11
|
+
import { URL } from "url";
|
|
12
|
+
import next_getJSScript from "./next_GetJSScript.js";
|
|
13
|
+
import next_GetLazyResourcesWebpackJs from "./next_GetLazyResourcesWebpackJs.js";
|
|
14
|
+
import next_getLazyResourcesBuildManifestJs from "./next_GetLazyResourcesBuildManifestJs.js";
|
|
15
|
+
import subsequentRequests from "./next_SubsequentRequests.js";
|
|
16
|
+
import next_promiseResolve from "./next_promiseResolve.js";
|
|
17
|
+
import next_parseLayoutJs from "./next_parseLayoutJs.js";
|
|
18
|
+
import next_scriptTagsSubsequentRequests from "./next_scriptTagsSubsequentRequests.js";
|
|
19
|
+
import next_bruteForceJsFiles from "./next_bruteForceJsFiles.js";
|
|
20
|
+
import next_getClientSidePaths from "./next_getClientSidePaths.js";
|
|
21
|
+
import * as lazyLoadGlobals from "../globals.js";
|
|
22
|
+
/**
|
|
23
|
+
* Encapsulates the Next.js JS file discovery logic with recursive crawling.
|
|
24
|
+
*
|
|
25
|
+
* After running all discovery methods once, the crawler re-runs path-sensitive
|
|
26
|
+
* methods (promiseResolve, parseLayoutJs, getJSScript) on any *newly* found
|
|
27
|
+
* URLs until no new JS files are discovered, ensuring full coverage.
|
|
28
|
+
*/
|
|
29
|
+
class NextJsCrawler {
|
|
30
|
+
constructor(options) {
|
|
31
|
+
this.url = options.url;
|
|
32
|
+
this.output = options.output;
|
|
33
|
+
this.subsequentRequestsFlag = options.subsequentRequestsFlag;
|
|
34
|
+
this.urlsFile = options.urlsFile;
|
|
35
|
+
this.threads = options.threads;
|
|
36
|
+
this.research = options.research;
|
|
37
|
+
this.MAX_ITERATIONS = options.maxIterations;
|
|
38
|
+
this.discoveredUrls = new Set();
|
|
39
|
+
this.visitedPageUrls = new Set();
|
|
40
|
+
this.techniqueEfficiencyMapping = {};
|
|
41
|
+
}
|
|
42
|
+
// ── helpers ──────────────────────────────────────────────────────────
|
|
43
|
+
/** Register newly found URLs and return only the ones that are truly new. */
|
|
44
|
+
registerUrls(urls) {
|
|
45
|
+
const newUrls = [];
|
|
46
|
+
for (const u of urls) {
|
|
47
|
+
if (!this.discoveredUrls.has(u)) {
|
|
48
|
+
this.discoveredUrls.add(u);
|
|
49
|
+
newUrls.push(u);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return newUrls;
|
|
53
|
+
}
|
|
54
|
+
/** Snapshot the current size so we can detect growth. */
|
|
55
|
+
get size() {
|
|
56
|
+
return this.discoveredUrls.size;
|
|
57
|
+
}
|
|
58
|
+
// ── initial discovery (run-once methods) ─────────────────────────────
|
|
59
|
+
/**
|
|
60
|
+
* Runs the heavyweight / one-shot discovery methods that only need to
|
|
61
|
+
* execute once (puppeteer-based webpack analysis, build-manifest, etc.).
|
|
62
|
+
*/
|
|
63
|
+
initialDiscovery() {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
// 1. Script tags on the landing page
|
|
66
|
+
const jsFromScriptTag = yield next_getJSScript(this.url);
|
|
67
|
+
this.techniqueEfficiencyMapping["next_getJSScript"] = [
|
|
68
|
+
...(this.techniqueEfficiencyMapping["next_getJSScript"] || []),
|
|
69
|
+
...jsFromScriptTag,
|
|
70
|
+
];
|
|
71
|
+
this.registerUrls(jsFromScriptTag);
|
|
72
|
+
this.visitedPageUrls.add(this.url);
|
|
73
|
+
// 1b. Client-side paths from <a href> tags on the landing page.
|
|
74
|
+
// These are page URLs (not JS), so they'll be picked up by the
|
|
75
|
+
// recursivePass loop which visits any newly registered non-JS URL.
|
|
76
|
+
const pathsFromAnchors = yield next_getClientSidePaths(this.url);
|
|
77
|
+
this.techniqueEfficiencyMapping["next_getClientSidePaths"] = [
|
|
78
|
+
...(this.techniqueEfficiencyMapping["next_getClientSidePaths"] || []),
|
|
79
|
+
...pathsFromAnchors,
|
|
80
|
+
];
|
|
81
|
+
this.registerUrls(pathsFromAnchors);
|
|
82
|
+
// 2. Webpack runtime analysis (puppeteer – expensive, run once)
|
|
83
|
+
const jsFromWebpack = yield next_GetLazyResourcesWebpackJs(this.url);
|
|
84
|
+
this.techniqueEfficiencyMapping["next_GetLazyResourcesWebpackJs"] = jsFromWebpack;
|
|
85
|
+
lazyLoadGlobals.pushToJsUrls(jsFromWebpack);
|
|
86
|
+
this.registerUrls(jsFromWebpack);
|
|
87
|
+
// 3. _buildManifest.js
|
|
88
|
+
const jsFromBuildManifest = yield next_getLazyResourcesBuildManifestJs(this.url);
|
|
89
|
+
this.techniqueEfficiencyMapping["next_getLazyResourcesBuildManifestJs"] = jsFromBuildManifest;
|
|
90
|
+
lazyLoadGlobals.pushToJsUrls(jsFromBuildManifest);
|
|
91
|
+
this.registerUrls(jsFromBuildManifest);
|
|
92
|
+
// 4. Subsequent requests (RSC / script-tags on known endpoints)
|
|
93
|
+
if (this.subsequentRequestsFlag) {
|
|
94
|
+
const jsFromSubsequent = yield subsequentRequests(this.url, this.urlsFile, this.threads, this.output, lazyLoadGlobals.getJsUrls());
|
|
95
|
+
this.techniqueEfficiencyMapping["subsequentRequests"] = [...jsFromSubsequent];
|
|
96
|
+
this.registerUrls([...jsFromSubsequent]);
|
|
97
|
+
const jsFromScriptTagsSR = yield next_scriptTagsSubsequentRequests(this.url, this.urlsFile);
|
|
98
|
+
this.techniqueEfficiencyMapping["next_scriptTagsSubsequentRequests"] = jsFromScriptTagsSR;
|
|
99
|
+
lazyLoadGlobals.pushToJsUrls(jsFromScriptTagsSR);
|
|
100
|
+
this.registerUrls(jsFromScriptTagsSR);
|
|
101
|
+
}
|
|
102
|
+
// Also pull in anything the globals accumulated
|
|
103
|
+
this.registerUrls(lazyLoadGlobals.getJsUrls());
|
|
104
|
+
this.registerUrls(lazyLoadGlobals.getJsonUrls());
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// ── recursive discovery ──────────────────────────────────────────────
|
|
108
|
+
/**
|
|
109
|
+
* Runs the lightweight methods that can discover *more* URLs from an
|
|
110
|
+
* existing set of JS file URLs. These are cheap enough to repeat.
|
|
111
|
+
*
|
|
112
|
+
* @param jsUrls The JS URLs to analyse in this pass.
|
|
113
|
+
* @returns Newly discovered URLs in this pass.
|
|
114
|
+
*/
|
|
115
|
+
recursivePass(jsUrls) {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
let newInThisPass = [];
|
|
118
|
+
// Promise.all pattern analysis on JS file contents
|
|
119
|
+
const jsFromPromise = yield next_promiseResolve(jsUrls);
|
|
120
|
+
this.techniqueEfficiencyMapping["next_promiseResolve"] = [
|
|
121
|
+
...(this.techniqueEfficiencyMapping["next_promiseResolve"] || []),
|
|
122
|
+
...jsFromPromise,
|
|
123
|
+
];
|
|
124
|
+
newInThisPass.push(...this.registerUrls(jsFromPromise));
|
|
125
|
+
// Layout.js parsing → discovers new client-side page paths → visits them
|
|
126
|
+
const jsFromLayout = yield next_parseLayoutJs(this.url, jsUrls);
|
|
127
|
+
this.techniqueEfficiencyMapping["next_parseLayoutJs"] = [
|
|
128
|
+
...(this.techniqueEfficiencyMapping["next_parseLayoutJs"] || []),
|
|
129
|
+
...jsFromLayout,
|
|
130
|
+
];
|
|
131
|
+
newInThisPass.push(...this.registerUrls(jsFromLayout));
|
|
132
|
+
// Build a queue of unvisited page URLs to walk. Seed it with:
|
|
133
|
+
// - unvisited page URLs from the input batch (anchor-derived URLs
|
|
134
|
+
// registered by initialDiscovery, or pages from earlier passes
|
|
135
|
+
// that haven't been visited yet)
|
|
136
|
+
// - new page URLs discovered above (parseLayoutJs etc.)
|
|
137
|
+
// For every page URL visited we run script-tag extraction AND
|
|
138
|
+
// <a href> extraction, then enqueue any new page URLs that surfaces.
|
|
139
|
+
// visitedPageUrls breaks cycles.
|
|
140
|
+
const isPageUrl = (u) => {
|
|
141
|
+
let parsed;
|
|
142
|
+
try {
|
|
143
|
+
parsed = new URL(u);
|
|
144
|
+
}
|
|
145
|
+
catch (_a) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return !parsed.pathname.endsWith(".js") && !parsed.pathname.endsWith(".js.map");
|
|
149
|
+
};
|
|
150
|
+
const pageQueue = [];
|
|
151
|
+
const enqueued = new Set();
|
|
152
|
+
const enqueueIfPage = (u) => {
|
|
153
|
+
if (this.visitedPageUrls.has(u) || enqueued.has(u))
|
|
154
|
+
return;
|
|
155
|
+
if (!isPageUrl(u))
|
|
156
|
+
return;
|
|
157
|
+
enqueued.add(u);
|
|
158
|
+
pageQueue.push(u);
|
|
159
|
+
};
|
|
160
|
+
for (const u of jsUrls)
|
|
161
|
+
enqueueIfPage(u);
|
|
162
|
+
for (const u of newInThisPass)
|
|
163
|
+
enqueueIfPage(u);
|
|
164
|
+
for (const u of pageQueue) {
|
|
165
|
+
if (this.visitedPageUrls.has(u))
|
|
166
|
+
continue;
|
|
167
|
+
this.visitedPageUrls.add(u);
|
|
168
|
+
const extra = yield next_getJSScript(u);
|
|
169
|
+
// If return value is invalid, log and crash
|
|
170
|
+
if (!extra || !Array.isArray(extra)) {
|
|
171
|
+
console.error(`[NextJsCrawler] Invalid return value from next_getJSScript for URL: ${u}`);
|
|
172
|
+
console.error(`[NextJsCrawler] Returned value:`, extra);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
this.techniqueEfficiencyMapping["next_getJSScript"] = [
|
|
176
|
+
...(this.techniqueEfficiencyMapping["next_getJSScript"] || []),
|
|
177
|
+
...extra,
|
|
178
|
+
];
|
|
179
|
+
const newFromScripts = this.registerUrls(extra);
|
|
180
|
+
newInThisPass.push(...newFromScripts);
|
|
181
|
+
for (const x of newFromScripts)
|
|
182
|
+
enqueueIfPage(x);
|
|
183
|
+
// Harvest <a href> links from this page so we keep expanding
|
|
184
|
+
// the crawl frontier.
|
|
185
|
+
const morePaths = yield next_getClientSidePaths(u);
|
|
186
|
+
this.techniqueEfficiencyMapping["next_getClientSidePaths"] = [
|
|
187
|
+
...(this.techniqueEfficiencyMapping["next_getClientSidePaths"] || []),
|
|
188
|
+
...morePaths,
|
|
189
|
+
];
|
|
190
|
+
const newFromAnchors = this.registerUrls(morePaths);
|
|
191
|
+
newInThisPass.push(...newFromAnchors);
|
|
192
|
+
for (const x of newFromAnchors)
|
|
193
|
+
enqueueIfPage(x);
|
|
194
|
+
}
|
|
195
|
+
return newInThisPass;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// ── public API ───────────────────────────────────────────────────────
|
|
199
|
+
/**
|
|
200
|
+
* Main entry-point. Runs initial discovery, then iterates recursive
|
|
201
|
+
* passes until convergence (no new URLs) or the iteration cap.
|
|
202
|
+
*
|
|
203
|
+
* @returns The complete, deduplicated list of JS/asset URLs to download.
|
|
204
|
+
*/
|
|
205
|
+
crawl() {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
+
// Phase 1 – initial heavyweight discovery
|
|
208
|
+
yield this.initialDiscovery();
|
|
209
|
+
// Phase 2 – recursive lightweight passes
|
|
210
|
+
let currentBatch = [...this.discoveredUrls];
|
|
211
|
+
let iteration = 0;
|
|
212
|
+
while (iteration < this.MAX_ITERATIONS) {
|
|
213
|
+
iteration++;
|
|
214
|
+
const sizeBefore = this.size;
|
|
215
|
+
console.log(chalk.cyan(`[i] Recursive crawl pass ${iteration} – ${sizeBefore} URLs known`));
|
|
216
|
+
const newUrls = yield this.recursivePass(currentBatch);
|
|
217
|
+
if (newUrls.length === 0) {
|
|
218
|
+
console.log(chalk.green(`[✓] Recursive crawl converged after ${iteration} pass(es)`));
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
console.log(chalk.green(`[+] Pass ${iteration} discovered ${newUrls.length} new URL(s)`));
|
|
222
|
+
// Next pass only analyses the newly found URLs
|
|
223
|
+
currentBatch = newUrls;
|
|
224
|
+
}
|
|
225
|
+
if (iteration >= this.MAX_ITERATIONS) {
|
|
226
|
+
console.log(chalk.yellow(`[!] Reached max recursive crawl iterations (${this.MAX_ITERATIONS})`));
|
|
227
|
+
}
|
|
228
|
+
// Phase 3 – brute-force .map files on the final set
|
|
229
|
+
const allJsUrls = [...this.discoveredUrls].filter((u) => u.endsWith(".js") || u.endsWith(".js.map"));
|
|
230
|
+
const jsFromBrute = yield next_bruteForceJsFiles(allJsUrls);
|
|
231
|
+
this.techniqueEfficiencyMapping["next_bruteForceJsFiles"] = jsFromBrute;
|
|
232
|
+
this.registerUrls(jsFromBrute);
|
|
233
|
+
// Only return downloadable assets. Anchor-derived page URLs live in
|
|
234
|
+
// discoveredUrls to drive the crawl, but must not reach downloadFiles.
|
|
235
|
+
return [...this.discoveredUrls].filter((u) => {
|
|
236
|
+
try {
|
|
237
|
+
const p = new URL(u).pathname;
|
|
238
|
+
return p.endsWith(".js") || p.endsWith(".js.map");
|
|
239
|
+
}
|
|
240
|
+
catch (_a) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
export default NextJsCrawler;
|
|
248
|
+
//# sourceMappingURL=NextJsCrawler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextJsCrawler.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/NextJsCrawler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,8BAA8B,MAAM,qCAAqC,CAAC;AACjF,OAAO,oCAAoC,MAAM,2CAA2C,CAAC;AAC7F,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AACvF,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,eAAe,MAAM,eAAe,CAAC;AAYjD;;;;;;GAMG;AACH,MAAM,aAAa;IAoBf,YAAY,OAA6B;QACrC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAE5C,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;IACzC,CAAC;IAED,wEAAwE;IAExE,6EAA6E;IACrE,YAAY,CAAC,IAAc;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,yDAAyD;IACzD,IAAY,IAAI;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,wEAAwE;IAExE;;;OAGG;IACW,gBAAgB;;YAC1B,qCAAqC;YACrC,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,GAAG;gBAClD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAC9D,GAAG,eAAe;aACrB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEnC,gEAAgE;YAChE,+DAA+D;YAC/D,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,GAAG;gBACzD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;gBACrE,GAAG,gBAAgB;aACtB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAEpC,gEAAgE;YAChE,MAAM,aAAa,GAAG,MAAM,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,0BAA0B,CAAC,gCAAgC,CAAC,GAAG,aAAa,CAAC;YAClF,eAAe,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEjC,uBAAuB;YACvB,MAAM,mBAAmB,GAAG,MAAM,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,IAAI,CAAC,0BAA0B,CAAC,sCAAsC,CAAC,GAAG,mBAAmB,CAAC;YAC9F,eAAe,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAEvC,gEAAgE;YAChE,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAC7C,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,eAAe,CAAC,SAAS,EAAE,CAC9B,CAAC;gBACF,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;gBAC9E,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;gBAEzC,MAAM,kBAAkB,GAAG,MAAM,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5F,IAAI,CAAC,0BAA0B,CAAC,mCAAmC,CAAC,GAAG,kBAAkB,CAAC;gBAC1F,eAAe,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBACjD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAC1C,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,CAAC;KAAA;IAED,wEAAwE;IAExE;;;;;;OAMG;IACW,aAAa,CAAC,MAAgB;;YACxC,IAAI,aAAa,GAAa,EAAE,CAAC;YAEjC,mDAAmD;YACnD,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,GAAG;gBACrD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;gBACjE,GAAG,aAAa;aACnB,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;YAExD,yEAAyE;YACzE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,GAAG;gBACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBAChE,GAAG,YAAY;aAClB,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;YAEvD,8DAA8D;YAC9D,oEAAoE;YACpE,mEAAmE;YACnE,qCAAqC;YACrC,0DAA0D;YAC1D,8DAA8D;YAC9D,qEAAqE;YACrE,iCAAiC;YACjC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE;gBACrC,IAAI,MAAW,CAAC;gBAChB,IAAI,CAAC;oBACD,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;gBAAC,WAAM,CAAC;oBACL,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpF,CAAC,CAAC;YAEF,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE;gBAChC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO;gBAC3D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAAE,OAAO;gBAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC,CAAC;YAEF,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,aAAa;gBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YAEhD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAExC,4CAA4C;gBAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,EAAE,CAAC,CAAC;oBAC1F,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;gBAED,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,GAAG;oBAClD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;oBAC9D,GAAG,KAAK;iBACX,CAAC;gBAEF,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAChD,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBACtC,KAAK,MAAM,CAAC,IAAI,cAAc;oBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;gBAEjD,6DAA6D;gBAC7D,sBAAsB;gBACtB,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,GAAG;oBACzD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;oBACrE,GAAG,SAAS;iBACf,CAAC;gBACF,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACpD,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBACtC,KAAK,MAAM,CAAC,IAAI,cAAc;oBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,aAAa,CAAC;QACzB,CAAC;KAAA;IAED,wEAAwE;IAExE;;;;;OAKG;IACG,KAAK;;YACP,0CAA0C;YAC1C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,yCAAyC;YACzC,IAAI,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,OAAO,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrC,SAAS,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;gBAE7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,MAAM,UAAU,aAAa,CAAC,CAAC,CAAC;gBAE5F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,SAAS,WAAW,CAAC,CAAC,CAAC;oBACtF,MAAM;gBACV,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,SAAS,eAAe,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;gBAE1F,+CAA+C;gBAC/C,YAAY,GAAG,OAAO,CAAC;YAC3B,CAAC;YAED,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YACrG,CAAC;YAED,oDAAoD;YACpD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACrG,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,GAAG,WAAW,CAAC;YACxE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE/B,oEAAoE;YACpE,uEAAuE;YACvE,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC;oBACD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC9B,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtD,CAAC;gBAAC,WAAM,CAAC;oBACL,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;CACJ;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { URL } from "url";
|
|
11
11
|
import * as cheerio from "cheerio";
|
|
12
12
|
import makeRequest from "../../utility/makeReq.js";
|
|
13
|
-
import { getJsUrls
|
|
13
|
+
import { getJsUrls } from "../globals.js";
|
|
14
14
|
/**
|
|
15
15
|
* Scrapes all lazy-loaded JavaScript file URLs from the provided Next.js page.
|
|
16
16
|
*
|
|
@@ -23,6 +23,7 @@ import { getJsUrls, pushToJsUrls } from "../globals.js";
|
|
|
23
23
|
* pointing to JavaScript files found in the page.
|
|
24
24
|
*/
|
|
25
25
|
const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const toReturn = [];
|
|
26
27
|
// get the page source
|
|
27
28
|
const res = yield makeRequest(url, {});
|
|
28
29
|
const pageSource = yield res.text();
|
|
@@ -40,7 +41,7 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
40
41
|
if (src.startsWith("/")) {
|
|
41
42
|
const absoluteUrl = new URL(url).origin + src;
|
|
42
43
|
if (!getJsUrls().includes(absoluteUrl)) {
|
|
43
|
-
|
|
44
|
+
toReturn.push(absoluteUrl);
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
else if (src.startsWith("http")) {
|
|
@@ -48,7 +49,7 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
48
49
|
const ext = urlObj.pathname.split(".").pop();
|
|
49
50
|
if (ext === "js") {
|
|
50
51
|
if (!getJsUrls().includes(src)) {
|
|
51
|
-
|
|
52
|
+
toReturn.push(src);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
}
|
|
@@ -59,12 +60,12 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
59
60
|
pathParts.pop(); // remove filename from last
|
|
60
61
|
const directory = new URL(url).origin + pathParts.join("/") + "/";
|
|
61
62
|
if (!getJsUrls().includes(directory + src)) {
|
|
62
|
-
|
|
63
|
+
toReturn.push(directory + src);
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
else {
|
|
66
67
|
if (!getJsUrls().includes(src)) {
|
|
67
|
-
|
|
68
|
+
toReturn.push(src);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -72,7 +73,7 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
72
73
|
// if the script tag is inline, it could contain static JS URL
|
|
73
74
|
// to get these, simply regex from the JS script
|
|
74
75
|
const js_script = $(scriptTag).html();
|
|
75
|
-
const matches = js_script.match(/static\/chunks\/[a-zA-Z0-9_
|
|
76
|
+
const matches = js_script.match(/static\/chunks\/[a-zA-Z0-9_\-~.]+\.js/g);
|
|
76
77
|
if (matches) {
|
|
77
78
|
const uniqueMatches = [...new Set(matches)];
|
|
78
79
|
for (const match of uniqueMatches) {
|
|
@@ -90,7 +91,7 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
90
91
|
}
|
|
91
92
|
if (js_path_dir) {
|
|
92
93
|
// Ensure js_path_dir was found
|
|
93
|
-
|
|
94
|
+
toReturn.push(js_path_dir + "/" + filename);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
}
|
|
@@ -98,7 +99,7 @@ const next_getJSScript = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
98
99
|
}
|
|
99
100
|
// causes too much noise after using it with subsequent requests
|
|
100
101
|
// console.log(chalk.green(`[✓] Found ${getJsUrls().length} JS files from the script tags`));
|
|
101
|
-
return
|
|
102
|
+
return toReturn;
|
|
102
103
|
});
|
|
103
104
|
export default next_getJSScript;
|
|
104
105
|
//# sourceMappingURL=next_GetJSScript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next_GetJSScript.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_GetJSScript.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"next_GetJSScript.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_GetJSScript.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import chalk from "chalk";
|
|
11
|
-
import puppeteer from "
|
|
11
|
+
import puppeteer from "../../utility/puppeteerInstance.js";
|
|
12
12
|
import parser from "@babel/parser";
|
|
13
13
|
import _traverse from "@babel/traverse";
|
|
14
14
|
const traverse = _traverse.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next_GetLazyResourcesWebpackJs.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"next_GetLazyResourcesWebpackJs.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,9 @@ let max_queue;
|
|
|
22
22
|
*/
|
|
23
23
|
const findStaticFiles = (js_content) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
24
|
// do some regex-ing
|
|
25
|
-
|
|
25
|
+
// include `~` because Turbopack content-hashed filenames use it as a separator
|
|
26
|
+
// (e.g. `static/chunks/18865ghy~7gi9.js`)
|
|
27
|
+
const matches = [...js_content.matchAll(/\/?static\/chunks\/[a-zA-Z0-9\._\-\/~]+\.js/g)];
|
|
26
28
|
// return matches
|
|
27
29
|
let toReturn = [];
|
|
28
30
|
for (const match of matches) {
|
|
@@ -117,7 +119,7 @@ const subsequentRequests = (url, urlsFile, threads, output, js_urls) => __awaite
|
|
|
117
119
|
const req = yield makeRequest(reqUrl);
|
|
118
120
|
const resText = yield req.text();
|
|
119
121
|
const $ = cheerio.load(resText);
|
|
120
|
-
const extract_regex = /static\/chunks\/[a-zA-Z0-9_
|
|
122
|
+
const extract_regex = /static\/chunks\/[a-zA-Z0-9_\-~.]+\.js/g;
|
|
121
123
|
// find all script tags
|
|
122
124
|
$("script").each((_, script) => {
|
|
123
125
|
// make sure that is doesn't have src attribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next_SubsequentRequests.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_SubsequentRequests.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAO,UAAU,EAAE,EAAE;IACzC,oBAAoB;IACpB,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"next_SubsequentRequests.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_SubsequentRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,14 @@ const next_bruteForceJsFiles = (urls) => __awaiter(void 0, void 0, void 0, funct
|
|
|
16
16
|
let foundSourceMaps = [];
|
|
17
17
|
for (const mapFile of mapFiles) {
|
|
18
18
|
const req = yield makeRequest(mapFile);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
if (req) {
|
|
20
|
+
const status = req.status;
|
|
21
|
+
if (status === 200) {
|
|
22
|
+
foundSourceMaps.push(mapFile);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.log(chalk.red(`[!] Failed to request ${mapFile}`));
|
|
22
27
|
}
|
|
23
28
|
}
|
|
24
29
|
if (foundSourceMaps.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next_bruteForceJsFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_bruteForceJsFiles.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,sBAAsB,GAAG,CAAO,IAAc,EAAE,EAAE;IACpD,yDAAyD;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;IAEjD,IAAI,eAAe,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"next_bruteForceJsFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_bruteForceJsFiles.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,sBAAsB,GAAG,CAAO,IAAc,EAAE,EAAE;IACpD,yDAAyD;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;IAEjD,IAAI,eAAe,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAE1B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACnD,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,eAAe,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;IAC5E,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAA,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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 chalk from "chalk";
|
|
11
|
+
import * as cheerio from "cheerio";
|
|
12
|
+
import { URL } from "url";
|
|
13
|
+
import makeRequest from "../../utility/makeReq.js";
|
|
14
|
+
/**
|
|
15
|
+
* Extracts client-side paths from a page's HTML by parsing <a href> tags.
|
|
16
|
+
*
|
|
17
|
+
* Only returns URLs that share the base URL's origin. Accepted href forms:
|
|
18
|
+
* - root-relative (`/foo/bar`)
|
|
19
|
+
* - relative (`./foo`, `../foo`, `foo`)
|
|
20
|
+
* - absolute (`https://same-origin/foo`)
|
|
21
|
+
*
|
|
22
|
+
* Skips mailto:, tel:, javascript:, data:, protocol-relative (`//`), and
|
|
23
|
+
* fragment-only links.
|
|
24
|
+
*/
|
|
25
|
+
const next_getClientSidePaths = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const found = new Set();
|
|
27
|
+
let baseOrigin;
|
|
28
|
+
try {
|
|
29
|
+
baseOrigin = new URL(url).origin;
|
|
30
|
+
}
|
|
31
|
+
catch (_a) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
const req = yield makeRequest(url);
|
|
35
|
+
if (!req || !req.ok)
|
|
36
|
+
return [];
|
|
37
|
+
let html;
|
|
38
|
+
try {
|
|
39
|
+
html = yield req.text();
|
|
40
|
+
}
|
|
41
|
+
catch (_b) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const $ = cheerio.load(html);
|
|
45
|
+
$("a[href]").each((_, a) => {
|
|
46
|
+
const href = $(a).attr("href");
|
|
47
|
+
if (!href)
|
|
48
|
+
return;
|
|
49
|
+
const trimmed = href.trim();
|
|
50
|
+
if (!trimmed)
|
|
51
|
+
return;
|
|
52
|
+
if (trimmed.startsWith("#") ||
|
|
53
|
+
trimmed.startsWith("//") ||
|
|
54
|
+
trimmed.startsWith("mailto:") ||
|
|
55
|
+
trimmed.startsWith("tel:") ||
|
|
56
|
+
trimmed.startsWith("javascript:") ||
|
|
57
|
+
trimmed.startsWith("data:")) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const isRootRelative = trimmed.startsWith("/");
|
|
61
|
+
const isRelative = trimmed.startsWith(".") || /^[a-zA-Z0-9_\-]/.test(trimmed);
|
|
62
|
+
const isAbsolute = /^https?:\/\//i.test(trimmed);
|
|
63
|
+
if (!isRootRelative && !isRelative && !isAbsolute)
|
|
64
|
+
return;
|
|
65
|
+
let resolved;
|
|
66
|
+
try {
|
|
67
|
+
resolved = new URL(trimmed, url);
|
|
68
|
+
}
|
|
69
|
+
catch (_a) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (resolved.origin !== baseOrigin)
|
|
73
|
+
return;
|
|
74
|
+
resolved.hash = "";
|
|
75
|
+
found.add(resolved.href);
|
|
76
|
+
});
|
|
77
|
+
if (found.size > 0) {
|
|
78
|
+
console.log(chalk.green(`[✓] Found ${found.size} client-side path(s) on ${url}`));
|
|
79
|
+
}
|
|
80
|
+
return [...found];
|
|
81
|
+
});
|
|
82
|
+
export default next_getClientSidePaths;
|
|
83
|
+
//# sourceMappingURL=next_getClientSidePaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next_getClientSidePaths.js","sourceRoot":"","sources":["../../../src/lazyLoad/next_js/next_getClientSidePaths.ts"],"names":[],"mappings":"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"}
|