@js-recon/js-recon 1.4.2 → 1.4.4

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.
Files changed (103) hide show
  1. package/.github/workflows/build-and-prettify.yaml +6 -6
  2. package/.github/workflows/rules-smoke-test.yaml +2 -2
  3. package/CHANGELOG.md +30 -0
  4. package/Dockerfile +13 -2
  5. package/Dockerfile.release +12 -2
  6. package/Dockerfile.w-rules +0 -1
  7. package/README.md +52 -0
  8. package/build/analyze/helpers/initRules.js +34 -16
  9. package/build/analyze/helpers/initRules.js.map +1 -1
  10. package/build/completion/index.js +44 -3
  11. package/build/completion/index.js.map +1 -1
  12. package/build/config/applicationConfig.js +493 -0
  13. package/build/config/applicationConfig.js.map +1 -0
  14. package/build/fingerprint/index.js +8 -19
  15. package/build/fingerprint/index.js.map +1 -1
  16. package/build/globalConfig.js +1 -1
  17. package/build/index.js +62 -9
  18. package/build/index.js.map +1 -1
  19. package/build/lazyLoad/downloadFilesUtil.js +40 -32
  20. package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
  21. package/build/lazyLoad/downloadQueue.js +150 -50
  22. package/build/lazyLoad/downloadQueue.js.map +1 -1
  23. package/build/lazyLoad/downloadResponse.js +112 -0
  24. package/build/lazyLoad/downloadResponse.js.map +1 -0
  25. package/build/lazyLoad/globals.js +4 -0
  26. package/build/lazyLoad/globals.js.map +1 -1
  27. package/build/lazyLoad/index.js +188 -115
  28. package/build/lazyLoad/index.js.map +1 -1
  29. package/build/lazyLoad/next_js/NextJsCrawler.js +3 -2
  30. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
  31. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +8 -9
  32. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
  33. package/build/lazyLoad/next_js/next_SubsequentRequests.js +93 -93
  34. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
  35. package/build/lazyLoad/outputPath.js +92 -0
  36. package/build/lazyLoad/outputPath.js.map +1 -0
  37. package/build/lazyLoad/react/react_followImports.js +15 -5
  38. package/build/lazyLoad/react/react_followImports.js.map +1 -1
  39. package/build/lazyLoad/react/react_getScriptTags.js +11 -6
  40. package/build/lazyLoad/react/react_getScriptTags.js.map +1 -1
  41. package/build/lazyLoad/react/react_sourcemapUrls.js +3 -2
  42. package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -1
  43. package/build/lazyLoad/react/react_webpackChunkPaths.js +2 -1
  44. package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -1
  45. package/build/lazyLoad/techDetect/index.js +93 -59
  46. package/build/lazyLoad/techDetect/index.js.map +1 -1
  47. package/build/lazyLoad/vue/vue_RuntimeJs.js +20 -15
  48. package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
  49. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +8 -3
  50. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
  51. package/build/lazyLoad/vue/vue_discoverJsFiles.js +10 -9
  52. package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -1
  53. package/build/lazyLoad/vue/vue_getClientSidePaths.js +69 -45
  54. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
  55. package/build/lazyLoad/vue/vue_jsImports.js +3 -2
  56. package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
  57. package/build/lazyLoad/vue/vue_pageSrc.js +2 -1
  58. package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -1
  59. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +4 -3
  60. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
  61. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +9 -20
  62. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
  63. package/build/lazyLoad/vue/vue_severalJsFilesHome.js +2 -1
  64. package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -1
  65. package/build/lazyLoad/vue/vue_stringJsFiles.js +28 -25
  66. package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
  67. package/build/lazyLoad/vue/vue_viteMapDeps.js +8 -2
  68. package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -1
  69. package/build/proxy/checkFeasibility.js +8 -4
  70. package/build/proxy/checkFeasibility.js.map +1 -1
  71. package/build/proxy/checkFireWallBlocking.js +23 -13
  72. package/build/proxy/checkFireWallBlocking.js.map +1 -1
  73. package/build/proxy/detectBlockedResponse.js +203 -0
  74. package/build/proxy/detectBlockedResponse.js.map +1 -0
  75. package/build/proxy/genReq.js +434 -127
  76. package/build/proxy/genReq.js.map +1 -1
  77. package/build/proxy/oxylabsFallback.js +110 -0
  78. package/build/proxy/oxylabsFallback.js.map +1 -0
  79. package/build/proxy/proxyFeasibilityRequest.js +11 -9
  80. package/build/proxy/proxyFeasibilityRequest.js.map +1 -1
  81. package/build/run/cancellableStep.js +27 -0
  82. package/build/run/cancellableStep.js.map +1 -0
  83. package/build/run/index.js +80 -85
  84. package/build/run/index.js.map +1 -1
  85. package/build/run/outputDirectory.js +377 -0
  86. package/build/run/outputDirectory.js.map +1 -0
  87. package/build/sourcemaps/index.js +109 -23
  88. package/build/sourcemaps/index.js.map +1 -1
  89. package/build/strings/index.js +12 -5
  90. package/build/strings/index.js.map +1 -1
  91. package/build/utility/downloadProgress.js +99 -0
  92. package/build/utility/downloadProgress.js.map +1 -0
  93. package/build/utility/makeReq.js +490 -257
  94. package/build/utility/makeReq.js.map +1 -1
  95. package/build/utility/progressLog.js +64 -4
  96. package/build/utility/progressLog.js.map +1 -1
  97. package/build/utility/targetInputs.js +177 -0
  98. package/build/utility/targetInputs.js.map +1 -0
  99. package/build/utility/urlUtils.js +37 -1
  100. package/build/utility/urlUtils.js.map +1 -1
  101. package/config.dist.yaml +251 -0
  102. package/docker-entrypoint.sh +16 -0
  103. package/package.json +2 -2
@@ -50,6 +50,11 @@ import { extractSourceMaps } from "../sourcemaps/index.js";
50
50
  import * as lazyLoadGlobals from "./globals.js";
51
51
  import * as globals from "../utility/globals.js";
52
52
  import { shouldRunMethod } from "./methodFilter.js";
53
+ import DownloadProgress from "../utility/downloadProgress.js";
54
+ import { progressLog, progressWarn } from "../utility/progressLog.js";
55
+ import { resolveHostOutputDirectory } from "./outputPath.js";
56
+ import { withRequestSignal } from "../utility/makeReq.js";
57
+ import { resolveTargetInputs } from "../utility/targetInputs.js";
53
58
  /**
54
59
  * Downloads the required JavaScript files for a given URL
55
60
  * @param {string} url The URL to download the JS files from
@@ -62,10 +67,37 @@ import { shouldRunMethod } from "./methodFilter.js";
62
67
  * @param {boolean} insecure If true, then disable SSL certificate verification
63
68
  * @returns {Promise<void>} A Promise that resolves when the download is complete
64
69
  */
65
- 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, hardTimeoutMs = 30 * 60 * 1000, maxPageVisits = 200, includeMethods = [], excludeMethods = [], detectionTimeoutMs = 30 * 1000) {
70
+ 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, hardTimeoutMs = 30 * 60 * 1000, maxPageVisits = 200, includeMethods = [], excludeMethods = [], detectionTimeoutMs = 30 * 1000, cancellationSignal, isBatch = false) {
71
+ const resolvedTargets = resolveTargetInputs(url);
66
72
  // Hoisted so the timeout handler can stop discovery and drain downloads.
67
73
  let activeCrawler = null;
68
74
  let activeQueue = null;
75
+ let activeDownloadProgress = null;
76
+ let activeDetectionController = null;
77
+ let hardTimeoutReached = false;
78
+ const workController = new AbortController();
79
+ const requestCancellation = () => {
80
+ hardTimeoutReached = true;
81
+ workController.abort();
82
+ activeDetectionController === null || activeDetectionController === void 0 ? void 0 : activeDetectionController.abort();
83
+ activeCrawler === null || activeCrawler === void 0 ? void 0 : activeCrawler.stop();
84
+ activeDownloadProgress === null || activeDownloadProgress === void 0 ? void 0 : activeDownloadProgress.stop();
85
+ activeDownloadProgress = null;
86
+ };
87
+ const enqueue = (queue, urls) => {
88
+ if (!hardTimeoutReached)
89
+ queue.push(urls);
90
+ };
91
+ const handleExternalCancellation = () => requestCancellation();
92
+ const cleanupActiveWork = () => __awaiter(void 0, void 0, void 0, function* () {
93
+ activeDownloadProgress === null || activeDownloadProgress === void 0 ? void 0 : activeDownloadProgress.stop();
94
+ activeDownloadProgress = null;
95
+ if (hardTimeoutReached)
96
+ yield (activeQueue === null || activeQueue === void 0 ? void 0 : activeQueue.drain().catch(() => undefined));
97
+ });
98
+ cancellationSignal === null || cancellationSignal === void 0 ? void 0 : cancellationSignal.addEventListener("abort", handleExternalCancellation, { once: true });
99
+ if (cancellationSignal === null || cancellationSignal === void 0 ? void 0 : cancellationSignal.aborted)
100
+ requestCancellation();
69
101
  const work = () => __awaiter(void 0, void 0, void 0, function* () {
70
102
  console.log(chalk.cyan("[i] Loading 'Lazy Load' module"));
71
103
  if (globals.getDisableSandbox()) {
@@ -82,52 +114,51 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
82
114
  fs.writeFileSync(globals.getRespCacheFile(), "{}");
83
115
  }
84
116
  }
85
- let urls;
86
- // check if the url is file or a URL
87
- if (fs.existsSync(url)) {
88
- urls = fs.readFileSync(url, "utf8").split("\n");
89
- // remove the empty lines
90
- urls = urls.filter((url) => url.trim() !== "");
91
- }
92
- else if (url.match(/https?:\/\/[a-zA-Z0-9\-_\.:]+/)) {
93
- urls = [url];
94
- }
95
- else {
96
- console.error(chalk.red("[!] Invalid URL or file path"));
97
- process.exit(3);
98
- }
99
- for (const url of urls) {
117
+ for (const url of resolvedTargets.targets) {
118
+ if (hardTimeoutReached)
119
+ break;
100
120
  console.log(chalk.cyan(`[i] Processing ${url}`));
121
+ lazyLoadGlobals.clearJsUrls();
122
+ lazyLoadGlobals.clearJsonUrls();
123
+ lazyLoadGlobals.clearCrawledUrls();
101
124
  if (strictScope) {
102
- lazyLoadGlobals.pushToScope(new URL(url).host);
125
+ lazyLoadGlobals.setScope([new URL(url).host]);
103
126
  }
104
127
  else {
105
- lazyLoadGlobals.setScope(inputScope);
128
+ lazyLoadGlobals.setScope([...inputScope]);
106
129
  }
107
130
  lazyLoadGlobals.setMaxReqQueue(threads);
131
+ globals.setTech("");
108
132
  let tech;
109
- if (detectionTimeoutMs > 0) {
110
- let timedOut = false;
111
- tech = yield Promise.race([
112
- frameworkDetect(url),
113
- new Promise((resolve) => setTimeout(() => {
114
- timedOut = true;
115
- resolve(null);
116
- }, detectionTimeoutMs)),
117
- ]);
118
- if (timedOut) {
119
- console.error(chalk.yellow(`[!] Framework detection timed out after ${detectionTimeoutMs}ms; treating as not detected`));
120
- }
133
+ const detectionController = new AbortController();
134
+ activeDetectionController = detectionController;
135
+ let detectionTimedOut = false;
136
+ const detectionTimeoutHandle = detectionTimeoutMs > 0
137
+ ? setTimeout(() => {
138
+ detectionTimedOut = true;
139
+ detectionController.abort();
140
+ }, detectionTimeoutMs)
141
+ : undefined;
142
+ try {
143
+ tech = yield frameworkDetect(url, detectionController.signal);
121
144
  }
122
- else {
123
- tech = yield frameworkDetect(url);
145
+ finally {
146
+ if (detectionTimeoutHandle !== undefined)
147
+ clearTimeout(detectionTimeoutHandle);
148
+ if (activeDetectionController === detectionController)
149
+ activeDetectionController = null;
124
150
  }
151
+ if (detectionTimedOut) {
152
+ console.error(chalk.yellow(`[!] Framework detection timed out after ${detectionTimeoutMs}ms; treating as not detected`));
153
+ }
154
+ if (hardTimeoutReached)
155
+ break;
125
156
  globals.setTech(tech ? tech.name : "");
126
157
  if (tech) {
127
158
  if (tech.name === "next") {
128
159
  console.log(chalk.green("[✓] Next.js detected"));
129
160
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
130
- activeQueue = new DownloadQueue(output, threads);
161
+ activeQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
131
162
  const crawler = new NextJsCrawler({
132
163
  url,
133
164
  output,
@@ -137,24 +168,36 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
137
168
  research,
138
169
  maxIterations,
139
170
  maxPageVisits,
140
- onUrlsDiscovered: (urls) => activeQueue.push(urls),
171
+ onUrlsDiscovered: (urls) => enqueue(activeQueue, urls),
141
172
  includeMethods,
142
173
  excludeMethods,
174
+ isBatch,
143
175
  });
144
176
  activeCrawler = crawler;
145
- yield crawler.crawl();
146
- activeCrawler = null; // done — prevent timeout handler from calling stop()
177
+ try {
178
+ yield crawler.crawl();
179
+ }
180
+ finally {
181
+ activeCrawler = null; // done — prevent timeout handler from calling stop()
182
+ }
183
+ if (hardTimeoutReached)
184
+ return;
147
185
  yield activeQueue.drain();
186
+ if (hardTimeoutReached)
187
+ return;
148
188
  activeQueue.printSummary();
149
189
  activeQueue = null;
150
190
  if (buildId) {
151
191
  // get the buildId
152
192
  // the directory is the output <output>/<host.replace(":", "_")>/___subsequent_requests
153
- const buildId = yield next_buildId_RSC(output + "/" + new URL(url).host.replace(":", "_") + "/___subsequent_requests");
193
+ const targetOutputDir = resolveHostOutputDirectory(output, new URL(url).host, isBatch);
194
+ const buildId = yield next_buildId_RSC(path.join(targetOutputDir, "___subsequent_requests"));
195
+ if (hardTimeoutReached)
196
+ return;
154
197
  if (buildId) {
155
198
  console.log(chalk.cyan("[+] Found buildId: " + buildId));
156
199
  // now, write it to a file
157
- fs.writeFileSync(path.join(output, new URL(url).host.replace(":", "_") + "/BUILD_ID"), buildId);
200
+ fs.writeFileSync(path.join(targetOutputDir, "BUILD_ID"), buildId);
158
201
  }
159
202
  }
160
203
  // if the research mode is enabled, then write the technique efficiency to a file
@@ -169,14 +212,20 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
169
212
  else if (tech.name === "vue") {
170
213
  console.log(chalk.green("[✓] Vue.js detected"));
171
214
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
172
- activeQueue = new DownloadQueue(output, threads);
215
+ activeQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
173
216
  const queue = activeQueue;
174
- const onFilesDiscovered = (files) => queue.push(files);
217
+ const onFilesDiscovered = (files) => enqueue(queue, files);
175
218
  // run the full discovery pipeline against the entry URL
176
219
  const { clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods, threads);
220
+ if (hardTimeoutReached)
221
+ return;
177
222
  // recurse the same pipeline through every client-side path we found
178
223
  yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods);
224
+ if (hardTimeoutReached)
225
+ return;
179
226
  yield queue.drain();
227
+ if (hardTimeoutReached)
228
+ return;
180
229
  queue.printSummary();
181
230
  // extract the source maps
182
231
  yield extractSourceMaps(output, join(output, sourcemapDir));
@@ -184,17 +233,17 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
184
233
  else if (tech.name === "nuxt") {
185
234
  console.log(chalk.green("[✓] Nuxt.js detected"));
186
235
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
187
- const queue = new DownloadQueue(output, threads);
236
+ const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
188
237
  activeQueue = queue;
189
238
  // find the files from the page source
190
239
  const jsFilesFromPageSource = shouldRunMethod("nuxt_getFromPageSource", includeMethods, excludeMethods)
191
240
  ? yield nuxt_getFromPageSource(url)
192
241
  : [];
193
- queue.push(jsFilesFromPageSource);
242
+ enqueue(queue, jsFilesFromPageSource);
194
243
  const jsFilesFromStringAnalysis = shouldRunMethod("nuxt_stringAnalysisJSFiles", includeMethods, excludeMethods)
195
244
  ? yield nuxt_stringAnalysisJSFiles(url, threads)
196
245
  : [];
197
- queue.push(jsFilesFromStringAnalysis);
246
+ enqueue(queue, jsFilesFromStringAnalysis);
198
247
  const firstBatch = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
199
248
  let jsFilesFromAST = [];
200
249
  if (shouldRunMethod("nuxt_astParse", includeMethods, excludeMethods)) {
@@ -203,25 +252,27 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
203
252
  jsFilesFromAST.push(...(yield nuxt_astParse(jsFile)));
204
253
  }
205
254
  }
206
- queue.push(jsFilesFromAST);
207
- queue.push(lazyLoadGlobals.getJsUrls());
255
+ enqueue(queue, jsFilesFromAST);
256
+ enqueue(queue, lazyLoadGlobals.getJsUrls());
208
257
  const buildsManifestFiles = shouldRunMethod("nuxt_getBuildsManifest", includeMethods, excludeMethods)
209
258
  ? yield nuxt_getBuildsManifest(url)
210
259
  : [];
211
- queue.push(buildsManifestFiles);
260
+ enqueue(queue, buildsManifestFiles);
212
261
  yield queue.drain();
262
+ if (hardTimeoutReached)
263
+ return;
213
264
  queue.printSummary();
214
265
  }
215
266
  else if (tech.name === "svelte") {
216
267
  console.log(chalk.green("[✓] Svelte detected"));
217
268
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
218
- const queue = new DownloadQueue(output, threads);
269
+ const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
219
270
  activeQueue = queue;
220
271
  // find the files from the page source
221
272
  const jsFilesFromPageSource = shouldRunMethod("svelte_getFromPageSource", includeMethods, excludeMethods)
222
273
  ? yield svelte_getFromPageSource(url)
223
274
  : [];
224
- queue.push(jsFilesFromPageSource);
275
+ enqueue(queue, jsFilesFromPageSource);
225
276
  // probe /<appDir>/version.json — SvelteKit serves this for the `updated` store
226
277
  // but never references it from HTML or JS, so it is invisible to all other steps
227
278
  const appDir = (() => {
@@ -239,7 +290,7 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
239
290
  ? yield svelte_getVersionJson(url, appDir)
240
291
  : [];
241
292
  if (versionJsonFiles.length > 0) {
242
- queue.push(versionJsonFiles);
293
+ enqueue(queue, versionJsonFiles);
243
294
  }
244
295
  // analyze the strings now
245
296
  let jsFilesFromStringAnalysis = [];
@@ -248,9 +299,9 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
248
299
  const result = yield svelte_stringAnalysisJSFiles(url, threads);
249
300
  jsFilesFromStringAnalysis = result.jsFiles;
250
301
  mapFilesFromStringAnalysis = result.mapFiles;
251
- queue.push(jsFilesFromStringAnalysis);
302
+ enqueue(queue, jsFilesFromStringAnalysis);
252
303
  if (mapFilesFromStringAnalysis.length > 0) {
253
- queue.push(mapFilesFromStringAnalysis);
304
+ enqueue(queue, mapFilesFromStringAnalysis);
254
305
  }
255
306
  }
256
307
  // recursively follow ESM static imports (import ... from "./chunk.js")
@@ -261,13 +312,13 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
261
312
  if (newFiles.length === 0)
262
313
  break;
263
314
  console.log(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
264
- queue.push(newFiles);
315
+ enqueue(queue, newFiles);
265
316
  toFollow = newFiles;
266
317
  }
267
318
  // crawl same-origin HTML pages found via <a href> and <link href>,
268
319
  // running the full JS-discovery pipeline on each
269
320
  const jsFilesFromPageCrawl = shouldRunMethod("svelte_recursivePageCrawl", includeMethods, excludeMethods)
270
- ? yield svelte_recursivePageCrawl(url, maxJsSizeMb, (files) => queue.push(files))
321
+ ? yield svelte_recursivePageCrawl(url, maxJsSizeMb, (files) => enqueue(queue, files))
271
322
  : [];
272
323
  // Svelte/Astro apps use client-side routing — the home page rarely has
273
324
  // <a href> links in its server-rendered HTML. Scan downloaded JS for
@@ -278,31 +329,33 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
278
329
  ? yield svelte_discoverPagesFromJs(url, threads)
279
330
  : [];
280
331
  if (jsFilesFromPathScan.length > 0) {
281
- queue.push(jsFilesFromPathScan);
332
+ enqueue(queue, jsFilesFromPathScan);
282
333
  }
283
334
  // run string analysis once more to catch JS files discovered during page crawl
284
335
  if ((jsFilesFromPageCrawl.length > 0 || jsFilesFromPathScan.length > 0) &&
285
336
  shouldRunMethod("svelte_stringAnalysisJSFiles", includeMethods, excludeMethods)) {
286
337
  const { jsFiles: jsFilesFromStringAnalysis2, mapFiles: mapFilesFromStringAnalysis2 } = yield svelte_stringAnalysisJSFiles(url, threads);
287
- queue.push(jsFilesFromStringAnalysis2);
338
+ enqueue(queue, jsFilesFromStringAnalysis2);
288
339
  if (mapFilesFromStringAnalysis2.length > 0) {
289
- queue.push(mapFilesFromStringAnalysis2);
340
+ enqueue(queue, mapFilesFromStringAnalysis2);
290
341
  }
291
342
  }
292
343
  yield queue.drain();
344
+ if (hardTimeoutReached)
345
+ return;
293
346
  queue.printSummary();
294
347
  yield extractSourceMaps(output, join(output, sourcemapDir));
295
348
  }
296
349
  else if (tech.name === "angular") {
297
350
  console.log(chalk.green("[✓] Angular detected"));
298
351
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
299
- const queue = new DownloadQueue(output, threads);
352
+ const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
300
353
  activeQueue = queue;
301
354
  // find the files from the page source
302
355
  const jsFilesFromPageSource = shouldRunMethod("angular_getFromPageSource", includeMethods, excludeMethods)
303
356
  ? yield angular_getFromPageSource(url)
304
357
  : [];
305
- queue.push(jsFilesFromPageSource);
358
+ enqueue(queue, jsFilesFromPageSource);
306
359
  // files using the main.js
307
360
  if (shouldRunMethod("angular_getFromMainJs", includeMethods, excludeMethods)) {
308
361
  let mainJsUrl;
@@ -314,54 +367,77 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
314
367
  }
315
368
  if (mainJsUrl) {
316
369
  const jsFilesFromMainJs = yield angular_getFromMainJs(mainJsUrl);
317
- queue.push(jsFilesFromMainJs);
370
+ enqueue(queue, jsFilesFromMainJs);
318
371
  // recursively follow chunk-to-chunk imports beyond the first hop
319
372
  if (shouldRunMethod("angular_recursiveChunkImports", includeMethods, excludeMethods)) {
320
373
  const transitiveChunks = yield angular_recursiveChunkImports(jsFilesFromMainJs, threads);
321
- queue.push(transitiveChunks);
374
+ enqueue(queue, transitiveChunks);
322
375
  }
323
376
  }
324
377
  }
325
378
  yield queue.drain();
379
+ if (hardTimeoutReached)
380
+ return;
326
381
  queue.printSummary();
327
382
  }
328
383
  else if (tech.name === "react") {
329
384
  console.log(chalk.green("[✓] React detected"));
330
385
  console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
331
- const queue = new DownloadQueue(output, threads);
386
+ const queue = new DownloadQueue(output, threads, {
387
+ compactOutput: true,
388
+ onProgress: (progress) => activeDownloadProgress === null || activeDownloadProgress === void 0 ? void 0 : activeDownloadProgress.update(progress),
389
+ alreadyBatchTargetRoot: isBatch,
390
+ });
332
391
  activeQueue = queue;
333
392
  // Seed: <script src> tags + <link rel="modulepreload"> (Vite vendor chunks)
334
393
  const jsFilesFromPageSource = shouldRunMethod("react_getScriptTags", includeMethods, excludeMethods)
335
- ? yield react_getScriptTags(url, maxJsSizeMb, output)
394
+ ? yield react_getScriptTags(url, maxJsSizeMb, output, isBatch)
336
395
  : [];
337
- queue.push(jsFilesFromPageSource);
396
+ if (hardTimeoutReached)
397
+ return;
398
+ enqueue(queue, jsFilesFromPageSource);
338
399
  // webpack-style chunk path builders (CRA / custom webpack configs)
339
400
  const webpackChunkPaths = shouldRunMethod("react_webpackChunkPaths", includeMethods, excludeMethods)
340
401
  ? yield react_webpackChunkPaths(url, maxJsSizeMb, jsFilesFromPageSource, threads)
341
402
  : [];
342
- queue.push(webpackChunkPaths);
343
- // Recursively follow ESM imports and Vite __vite_mapDeps references.
344
- // visited starts empty so the seed files are fetched and parsed in the first round.
345
- const visited = new Set();
346
- if (shouldRunMethod("react_followImports", includeMethods, excludeMethods)) {
347
- let toFollow = [...new Set([...jsFilesFromPageSource, ...webpackChunkPaths])];
348
- while (toFollow.length > 0) {
349
- const newFiles = yield react_followImports(toFollow, maxJsSizeMb, url, visited, threads);
350
- if (newFiles.length === 0)
351
- break;
352
- console.log(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
353
- queue.push(newFiles);
354
- toFollow = newFiles;
403
+ if (hardTimeoutReached)
404
+ return;
405
+ activeDownloadProgress = new DownloadProgress();
406
+ activeDownloadProgress.update(queue.progress);
407
+ try {
408
+ enqueue(queue, webpackChunkPaths);
409
+ // Recursively follow ESM imports and Vite __vite_mapDeps references.
410
+ // visited starts empty so the seed files are fetched and parsed in the first round.
411
+ const visited = new Set();
412
+ if (shouldRunMethod("react_followImports", includeMethods, excludeMethods)) {
413
+ let toFollow = [...new Set([...jsFilesFromPageSource, ...webpackChunkPaths])];
414
+ while (toFollow.length > 0 && !hardTimeoutReached) {
415
+ const newFiles = yield react_followImports(toFollow, maxJsSizeMb, url, visited, threads, true);
416
+ if (hardTimeoutReached)
417
+ break;
418
+ if (newFiles.length === 0)
419
+ break;
420
+ progressLog(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
421
+ enqueue(queue, newFiles);
422
+ toFollow = newFiles;
423
+ }
424
+ }
425
+ // Sourcemaps for everything discovered
426
+ if (!hardTimeoutReached &&
427
+ shouldRunMethod("react_sourcemapUrls", includeMethods, excludeMethods)) {
428
+ const sourcemapUrls = yield react_sourcemapUrls([...visited], threads);
429
+ enqueue(queue, sourcemapUrls);
355
430
  }
431
+ yield queue.drain();
356
432
  }
357
- // Sourcemaps for everything discovered
358
- if (shouldRunMethod("react_sourcemapUrls", includeMethods, excludeMethods)) {
359
- const sourcemapUrls = yield react_sourcemapUrls([...visited], threads);
360
- queue.push(sourcemapUrls);
433
+ finally {
434
+ activeDownloadProgress === null || activeDownloadProgress === void 0 ? void 0 : activeDownloadProgress.stop();
435
+ activeDownloadProgress = null;
361
436
  }
362
- yield queue.drain();
437
+ if (hardTimeoutReached)
438
+ return;
363
439
  queue.printSummary();
364
- extractSourceMaps(output, join(output, sourcemapDir));
440
+ yield extractSourceMaps(output, join(output, sourcemapDir));
365
441
  }
366
442
  }
367
443
  else {
@@ -369,6 +445,8 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
369
445
  console.log(chalk.magenta(CONFIG.notFoundMessage));
370
446
  console.log(chalk.yellow("[i] Trying to download loaded JS files"));
371
447
  const js_urls = yield downloadLoadedJs(url);
448
+ if (hardTimeoutReached)
449
+ return;
372
450
  if (js_urls && js_urls.length > 0) {
373
451
  console.log(chalk.green(`[✓] Found ${js_urls.length} JS chunks`));
374
452
  // Second-chance tech detection: scan downloaded URL paths for
@@ -397,47 +475,42 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
397
475
  console.log(chalk.green(`[✓] Detected ${secondChanceTech} from downloaded file paths (evidence: ${secondChanceEvidence})`));
398
476
  globals.setTech(secondChanceTech);
399
477
  }
400
- const queue = new DownloadQueue(output, threads);
401
- queue.push(js_urls);
478
+ const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
479
+ enqueue(queue, js_urls);
402
480
  yield queue.drain();
481
+ if (hardTimeoutReached)
482
+ return;
403
483
  queue.printSummary();
404
484
  }
405
485
  }
406
486
  }
407
487
  });
408
488
  if (hardTimeoutMs === 0) {
409
- yield work();
410
- return;
489
+ try {
490
+ yield withRequestSignal(workController.signal, work);
491
+ return;
492
+ }
493
+ finally {
494
+ cancellationSignal === null || cancellationSignal === void 0 ? void 0 : cancellationSignal.removeEventListener("abort", handleExternalCancellation);
495
+ yield cleanupActiveWork();
496
+ }
497
+ }
498
+ const timeoutHandle = setTimeout(() => {
499
+ requestCancellation();
500
+ const timeoutLabel = hardTimeoutMs >= 60000 ? `${hardTimeoutMs / 60000} min` : `${hardTimeoutMs}ms`;
501
+ progressWarn(chalk.yellow(`[!] Lazyload hard timeout reached (${timeoutLabel}). Stopping discovery and waiting for in-flight work...`));
502
+ }, hardTimeoutMs);
503
+ try {
504
+ // Never return while work() can still mutate files, globals, or terminal
505
+ // state. The timeout requests cooperative cancellation, then this await
506
+ // provides the lifecycle boundary for all in-flight framework work.
507
+ yield withRequestSignal(workController.signal, work);
508
+ }
509
+ finally {
510
+ clearTimeout(timeoutHandle);
511
+ cancellationSignal === null || cancellationSignal === void 0 ? void 0 : cancellationSignal.removeEventListener("abort", handleExternalCancellation);
512
+ yield cleanupActiveWork();
411
513
  }
412
- let timeoutHandle;
413
- yield Promise.race([
414
- work().finally(() => {
415
- // work() finished before the timeout — cancel the timer so it never
416
- // fires orphaned and doesn't hold the event loop open.
417
- if (timeoutHandle !== undefined)
418
- clearTimeout(timeoutHandle);
419
- }),
420
- new Promise((resolve) => {
421
- timeoutHandle = setTimeout(() => {
422
- console.error(chalk.yellow(`[!] Lazyload hard timeout reached (${hardTimeoutMs / 60000} min). Draining discovered files before moving on...`));
423
- // Signal the crawler to stop at its next iteration boundary.
424
- activeCrawler === null || activeCrawler === void 0 ? void 0 : activeCrawler.stop();
425
- const q = activeQueue;
426
- if (q) {
427
- // Wait for already-queued downloads to finish, then move on.
428
- q.drain()
429
- .then(() => {
430
- q.printSummary();
431
- resolve();
432
- })
433
- .catch(() => resolve());
434
- }
435
- else {
436
- resolve();
437
- }
438
- }, hardTimeoutMs);
439
- }),
440
- ]);
441
514
  });
442
515
  export default lazyLoad;
443
516
  //# sourceMappingURL=index.js.map
@@ -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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"}
@@ -29,7 +29,7 @@ import { shouldRunMethod } from "../methodFilter.js";
29
29
  */
30
30
  class NextJsCrawler {
31
31
  constructor(options) {
32
- var _a, _b, _c;
32
+ var _a, _b, _c, _d;
33
33
  /** Total HTML pages visited across all recursive passes. */
34
34
  this.totalPagesVisited = 0;
35
35
  /** Set to true by stop() to abort the crawl loop gracefully. */
@@ -49,6 +49,7 @@ class NextJsCrawler {
49
49
  this.onUrlsDiscovered = options.onUrlsDiscovered;
50
50
  this.includeMethods = (_b = options.includeMethods) !== null && _b !== void 0 ? _b : [];
51
51
  this.excludeMethods = (_c = options.excludeMethods) !== null && _c !== void 0 ? _c : [];
52
+ this.isBatch = (_d = options.isBatch) !== null && _d !== void 0 ? _d : false;
52
53
  this.discoveredUrls = new Set();
53
54
  this.pageScriptFingerprints = new Map();
54
55
  this.techniqueEfficiencyMapping = {};
@@ -157,7 +158,7 @@ class NextJsCrawler {
157
158
  // 4. Subsequent requests (RSC / script-tags on known endpoints)
158
159
  if (this.subsequentRequestsFlag) {
159
160
  if (shouldRunMethod("next_SubsequentRequests", inc, exc)) {
160
- const jsFromSubsequent = yield subsequentRequests(this.url, this.urlsFile, this.threads, this.output, lazyLoadGlobals.getJsUrls());
161
+ const jsFromSubsequent = yield subsequentRequests(this.url, this.urlsFile, this.threads, this.output, lazyLoadGlobals.getJsUrls(), this.isBatch);
161
162
  this.techniqueEfficiencyMapping["subsequentRequests"] = [...jsFromSubsequent];
162
163
  this.emitDownloadable(this.registerUrls([...jsFromSubsequent]));
163
164
  }