@shriyanss/js-recon 1.3.1-alpha.3 → 1.3.1-beta.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.
Files changed (138) hide show
  1. package/.github/workflows/build-and-prettify.yaml +15 -1
  2. package/.github/workflows/publish-js-recon.yml +13 -1
  3. package/CHANGELOG.md +84 -0
  4. package/CLAUDE.md +104 -11
  5. package/Dockerfile +16 -2
  6. package/README.md +4 -0
  7. package/build/analyze/engine/astEngine.js +57 -29
  8. package/build/analyze/engine/astEngine.js.map +1 -1
  9. package/build/analyze/engine/index.js.map +1 -1
  10. package/build/analyze/helpers/engineHelpers/taintFlow.js +32 -0
  11. package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -1
  12. package/build/analyze/helpers/initRules.js +9 -0
  13. package/build/analyze/helpers/initRules.js.map +1 -1
  14. package/build/analyze/helpers/schemas.js +5 -1
  15. package/build/analyze/helpers/schemas.js.map +1 -1
  16. package/build/analyze/index.js +7 -2
  17. package/build/analyze/index.js.map +1 -1
  18. package/build/endpoints/next_js/client_mappedJsonFile.js +12 -5
  19. package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
  20. package/build/fingerprint/index.js +123 -0
  21. package/build/fingerprint/index.js.map +1 -0
  22. package/build/globalConfig.js +1 -1
  23. package/build/globalConfig.js.map +1 -1
  24. package/build/index.js +51 -4
  25. package/build/index.js.map +1 -1
  26. package/build/lazyLoad/downloadQueue.js +9 -8
  27. package/build/lazyLoad/downloadQueue.js.map +1 -1
  28. package/build/lazyLoad/index.js +260 -163
  29. package/build/lazyLoad/index.js.map +1 -1
  30. package/build/lazyLoad/next_js/NextJsCrawler.js +58 -16
  31. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
  32. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +149 -139
  33. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
  34. package/build/lazyLoad/next_js/next_SubsequentRequests.js +25 -4
  35. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
  36. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +13 -5
  37. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
  38. package/build/lazyLoad/react/react_followImports.js +105 -0
  39. package/build/lazyLoad/react/react_followImports.js.map +1 -0
  40. package/build/lazyLoad/react/react_getScriptTags.js +28 -5
  41. package/build/lazyLoad/react/react_getScriptTags.js.map +1 -1
  42. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +162 -0
  43. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -0
  44. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +15 -0
  45. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
  46. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +180 -0
  47. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -0
  48. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +15 -1
  49. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
  50. package/build/lazyLoad/techDetect/checkReact.js +67 -36
  51. package/build/lazyLoad/techDetect/checkReact.js.map +1 -1
  52. package/build/lazyLoad/techDetect/checkSvelte.js +35 -35
  53. package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
  54. package/build/lazyLoad/techDetect/index.js +10 -6
  55. package/build/lazyLoad/techDetect/index.js.map +1 -1
  56. package/build/lazyLoad/vue/vue_getClientSidePaths.js +6 -0
  57. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
  58. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +6 -0
  59. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
  60. package/build/lazyLoad/vue/vue_stringJsFiles.js +6 -0
  61. package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
  62. package/build/map/graphql/resolveGraphql.js +296 -0
  63. package/build/map/graphql/resolveGraphql.js.map +1 -0
  64. package/build/map/index.js +93 -1
  65. package/build/map/index.js.map +1 -1
  66. package/build/map/next_js/interactive_helpers/commandHandler.js +4 -0
  67. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -1
  68. package/build/map/next_js/interactive_helpers/commandHelpers.js +28 -0
  69. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -1
  70. package/build/map/next_js/interactive_helpers/helpMenu.js +1 -1
  71. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -1
  72. package/build/map/next_js/resolveServerActions.js +449 -0
  73. package/build/map/next_js/resolveServerActions.js.map +1 -0
  74. package/build/map/next_js/utils.js +1 -0
  75. package/build/map/next_js/utils.js.map +1 -1
  76. package/build/map/react_js/getReactConnections.js +298 -0
  77. package/build/map/react_js/getReactConnections.js.map +1 -0
  78. package/build/map/react_js/interactive.js +4 -0
  79. package/build/map/react_js/interactive.js.map +1 -0
  80. package/build/map/react_js/react_resolveFetch.js +6 -0
  81. package/build/map/react_js/react_resolveFetch.js.map +1 -0
  82. package/build/map/svelte_js/interactive.js +58 -0
  83. package/build/map/svelte_js/interactive.js.map +1 -0
  84. package/build/map/svelte_js/interactive_helpers/commandHandler.js +4 -0
  85. package/build/map/svelte_js/interactive_helpers/commandHandler.js.map +1 -0
  86. package/build/map/vue_js/bodyResolver.js +477 -0
  87. package/build/map/vue_js/bodyResolver.js.map +1 -0
  88. package/build/map/vue_js/crossFileResolver.js +438 -0
  89. package/build/map/vue_js/crossFileResolver.js.map +1 -0
  90. package/build/map/vue_js/getViteConnections.js +150 -129
  91. package/build/map/vue_js/getViteConnections.js.map +1 -1
  92. package/build/map/vue_js/taint_utils.js +621 -0
  93. package/build/map/vue_js/taint_utils.js.map +1 -0
  94. package/build/map/vue_js/vue_resolveFetch.js +79 -392
  95. package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
  96. package/build/map/vue_js/vue_resolveHttpClient.js +733 -0
  97. package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -0
  98. package/build/map/vue_js/vue_resolveXhr.js +279 -0
  99. package/build/map/vue_js/vue_resolveXhr.js.map +1 -0
  100. package/build/mcp/chatOneShot.js +101 -0
  101. package/build/mcp/chatOneShot.js.map +1 -0
  102. package/build/mcp/claudeCodeCreds.js +150 -0
  103. package/build/mcp/claudeCodeCreds.js.map +1 -0
  104. package/build/mcp/cli.js +140 -149
  105. package/build/mcp/cli.js.map +1 -1
  106. package/build/mcp/commands.js +80 -0
  107. package/build/mcp/commands.js.map +1 -1
  108. package/build/mcp/index.js +30 -9
  109. package/build/mcp/index.js.map +1 -1
  110. package/build/mcp/intent.js +204 -0
  111. package/build/mcp/intent.js.map +1 -0
  112. package/build/mcp/jobs.js +199 -0
  113. package/build/mcp/jobs.js.map +1 -0
  114. package/build/mcp/mcpServer.js +241 -0
  115. package/build/mcp/mcpServer.js.map +1 -0
  116. package/build/mcp/providers.js +18 -1
  117. package/build/mcp/providers.js.map +1 -1
  118. package/build/mcp/skills.js +115 -0
  119. package/build/mcp/skills.js.map +1 -0
  120. package/build/refactor/index.js +6 -0
  121. package/build/refactor/index.js.map +1 -1
  122. package/build/refactor/react/index.js +636 -0
  123. package/build/refactor/react/index.js.map +1 -0
  124. package/build/run/index.js +260 -60
  125. package/build/run/index.js.map +1 -1
  126. package/build/run/interruptHandler.js +93 -0
  127. package/build/run/interruptHandler.js.map +1 -0
  128. package/build/utility/globals.js +29 -0
  129. package/build/utility/globals.js.map +1 -1
  130. package/build/utility/makeReq.js +14 -2
  131. package/build/utility/makeReq.js.map +1 -1
  132. package/build/utility/openapiGenerator.js +46 -14
  133. package/build/utility/openapiGenerator.js.map +1 -1
  134. package/build/utility/postmanGenerator.js +62 -13
  135. package/build/utility/postmanGenerator.js.map +1 -1
  136. package/build/utility/progressLog.js +50 -0
  137. package/build/utility/progressLog.js.map +1 -0
  138. package/package.json +12 -9
@@ -24,6 +24,8 @@ import nuxt_astParse from "./nuxt_js/nuxt_astParse.js";
24
24
  // Svelte
25
25
  import svelte_getFromPageSource from "./svelte/svelte_getFromPageSource.js";
26
26
  import svelte_stringAnalysisJSFiles from "./svelte/svelte_stringAnalysisJSFiles.js";
27
+ import svelte_recursivePageCrawl from "./svelte/svelte_recursivePageCrawl.js";
28
+ import svelte_discoverPagesFromJs from "./svelte/svelte_discoverPagesFromJs.js";
27
29
  // Angular
28
30
  import angular_getFromPageSource from "./angular/angular_getFromPageSource.js";
29
31
  import angular_getFromMainJs from "./angular/angular_getFromMainJs.js";
@@ -34,6 +36,7 @@ import vue_recursiveClientSidePathDownload from "./vue/vue_recursiveClientSidePa
34
36
  import react_getScriptTags from "./react/react_getScriptTags.js";
35
37
  import react_webpackChunkPaths from "./react/react_webpackChunkPaths.js";
36
38
  import react_sourcemapUrls from "./react/react_sourcemapUrls.js";
39
+ import react_followImports from "./react/react_followImports.js";
37
40
  import downloadLoadedJs from "./downloadLoadedJsUtil.js";
38
41
  import { DownloadQueue } from "./downloadQueue.js";
39
42
  // for rebuilding source maps
@@ -74,6 +77,8 @@ const extractSourceMaps = (assetsDir, outputDir) => __awaiter(void 0, void 0, vo
74
77
  const mapContent = raw.startsWith("//") ? raw.split("\n").slice(1).join("\n") : raw;
75
78
  const { files } = extractSources(mapContent);
76
79
  for (const file of files) {
80
+ if (file.path === "." || file.path === "")
81
+ continue;
77
82
  const outPath = join(outputDir, file.path);
78
83
  mkdirSync(dirname(outPath), { recursive: true });
79
84
  writeFileSync(outPath, file.content);
@@ -96,185 +101,277 @@ const extractSourceMaps = (assetsDir, outputDir) => __awaiter(void 0, void 0, vo
96
101
  * @param {boolean} insecure If true, then disable SSL certificate verification
97
102
  * @returns {Promise<void>} A Promise that resolves when the download is complete
98
103
  */
99
- 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
- console.log(chalk.cyan("[i] Loading 'Lazy Load' module"));
101
- if (globals.getDisableSandbox()) {
102
- console.log(chalk.yellow("[!] Browser sandbox disabled"));
103
- }
104
- if (insecure) {
105
- process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
106
- console.log(chalk.yellow("[!] Running in insecure mode. SSL certificate verification disabled"));
107
- }
108
- // if cache enabled, check if the cache file exists or not. If no, then create a new one
109
- if (!globals.getDisableCache()) {
110
- if (!fs.existsSync(globals.getRespCacheFile())) {
111
- fs.writeFileSync(globals.getRespCacheFile(), "{}");
104
+ 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) {
105
+ // Hoisted so the timeout handler can stop discovery and drain downloads.
106
+ let activeCrawler = null;
107
+ let activeQueue = null;
108
+ const work = () => __awaiter(void 0, void 0, void 0, function* () {
109
+ console.log(chalk.cyan("[i] Loading 'Lazy Load' module"));
110
+ if (globals.getDisableSandbox()) {
111
+ console.log(chalk.yellow("[!] Browser sandbox disabled"));
112
112
  }
113
- }
114
- let urls;
115
- // check if the url is file or a URL
116
- if (fs.existsSync(url)) {
117
- urls = fs.readFileSync(url, "utf8").split("\n");
118
- // remove the empty lines
119
- urls = urls.filter((url) => url.trim() !== "");
120
- }
121
- else if (url.match(/https?:\/\/[a-zA-Z0-9\-_\.:]+/)) {
122
- urls = [url];
123
- }
124
- else {
125
- console.log(chalk.red("[!] Invalid URL or file path"));
126
- process.exit(3);
127
- }
128
- for (const url of urls) {
129
- console.log(chalk.cyan(`[i] Processing ${url}`));
130
- if (strictScope) {
131
- lazyLoadGlobals.pushToScope(new URL(url).host);
113
+ if (insecure) {
114
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
115
+ console.log(chalk.yellow("[!] Running in insecure mode. SSL certificate verification disabled"));
116
+ }
117
+ // if cache enabled, check if the cache file exists or not. If no, then create a new one
118
+ if (!globals.getDisableCache()) {
119
+ if (!fs.existsSync(globals.getRespCacheFile())) {
120
+ fs.writeFileSync(globals.getRespCacheFile(), "{}");
121
+ }
122
+ }
123
+ let urls;
124
+ // check if the url is file or a URL
125
+ if (fs.existsSync(url)) {
126
+ urls = fs.readFileSync(url, "utf8").split("\n");
127
+ // remove the empty lines
128
+ urls = urls.filter((url) => url.trim() !== "");
129
+ }
130
+ else if (url.match(/https?:\/\/[a-zA-Z0-9\-_\.:]+/)) {
131
+ urls = [url];
132
132
  }
133
133
  else {
134
- lazyLoadGlobals.setScope(inputScope);
134
+ console.log(chalk.red("[!] Invalid URL or file path"));
135
+ process.exit(3);
135
136
  }
136
- lazyLoadGlobals.setMaxReqQueue(threads);
137
- const tech = yield frameworkDetect(url);
138
- globals.setTech(tech ? tech.name : "");
139
- if (tech) {
140
- if (tech.name === "next") {
141
- console.log(chalk.green("[✓] Next.js detected"));
142
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
143
- const queue = new DownloadQueue(output, threads);
144
- const crawler = new NextJsCrawler({
145
- url,
146
- output,
147
- subsequentRequestsFlag,
148
- urlsFile,
149
- threads,
150
- research,
151
- maxIterations,
152
- onUrlsDiscovered: (urls) => queue.push(urls),
153
- });
154
- yield crawler.crawl();
155
- yield queue.drain();
156
- queue.printSummary();
157
- if (buildId) {
158
- // get the buildId
159
- // the directory is the output <output>/<host.replace(":", "_")>/___subsequent_requests
160
- const buildId = yield next_buildId_RSC(output + "/" + new URL(url).host.replace(":", "_") + "/___subsequent_requests");
137
+ for (const url of urls) {
138
+ console.log(chalk.cyan(`[i] Processing ${url}`));
139
+ if (strictScope) {
140
+ lazyLoadGlobals.pushToScope(new URL(url).host);
141
+ }
142
+ else {
143
+ lazyLoadGlobals.setScope(inputScope);
144
+ }
145
+ lazyLoadGlobals.setMaxReqQueue(threads);
146
+ const tech = yield frameworkDetect(url);
147
+ globals.setTech(tech ? tech.name : "");
148
+ if (tech) {
149
+ if (tech.name === "next") {
150
+ console.log(chalk.green("[✓] Next.js detected"));
151
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
152
+ activeQueue = new DownloadQueue(output, threads);
153
+ const crawler = new NextJsCrawler({
154
+ url,
155
+ output,
156
+ subsequentRequestsFlag,
157
+ urlsFile,
158
+ threads,
159
+ research,
160
+ maxIterations,
161
+ onUrlsDiscovered: (urls) => activeQueue.push(urls),
162
+ });
163
+ activeCrawler = crawler;
164
+ yield crawler.crawl();
165
+ activeCrawler = null; // done — prevent timeout handler from calling stop()
166
+ yield activeQueue.drain();
167
+ activeQueue.printSummary();
168
+ activeQueue = null;
161
169
  if (buildId) {
162
- console.log(chalk.cyan("[+] Found buildId: " + buildId));
163
- // now, write it to a file
164
- fs.writeFileSync(path.join(output, new URL(url).host.replace(":", "_") + "/BUILD_ID"), buildId);
170
+ // get the buildId
171
+ // the directory is the output <output>/<host.replace(":", "_")>/___subsequent_requests
172
+ const buildId = yield next_buildId_RSC(output + "/" + new URL(url).host.replace(":", "_") + "/___subsequent_requests");
173
+ if (buildId) {
174
+ console.log(chalk.cyan("[+] Found buildId: " + buildId));
175
+ // now, write it to a file
176
+ fs.writeFileSync(path.join(output, new URL(url).host.replace(":", "_") + "/BUILD_ID"), buildId);
177
+ }
165
178
  }
179
+ // if the research mode is enabled, then write the technique efficiency to a file
180
+ if (research) {
181
+ // prettify the JSON and write
182
+ fs.writeFileSync(researchOutput, JSON.stringify(crawler.techniqueEfficiencyMapping, null, 4));
183
+ console.log(chalk.green("[✓] Research mode enabled. Technique efficiency written to " + researchOutput));
184
+ }
185
+ // extract the source maps
186
+ yield extractSourceMaps(output, join(output, sourcemapDir));
166
187
  }
167
- // if the research mode is enabled, then write the technique efficiency to a file
168
- if (research) {
169
- // prettify the JSON and write
170
- fs.writeFileSync(researchOutput, JSON.stringify(crawler.techniqueEfficiencyMapping, null, 4));
171
- console.log(chalk.green("[✓] Research mode enabled. Technique efficiency written to " + researchOutput));
188
+ else if (tech.name === "vue") {
189
+ console.log(chalk.green("[✓] Vue.js detected"));
190
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
191
+ activeQueue = new DownloadQueue(output, threads);
192
+ const queue = activeQueue;
193
+ const onFilesDiscovered = (files) => queue.push(files);
194
+ // run the full discovery pipeline against the entry URL
195
+ const { clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb, onFilesDiscovered);
196
+ // recurse the same pipeline through every client-side path we found
197
+ yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb, onFilesDiscovered);
198
+ yield queue.drain();
199
+ queue.printSummary();
200
+ // extract the source maps
201
+ yield extractSourceMaps(output, join(output, sourcemapDir));
172
202
  }
173
- // extract the source maps
174
- yield extractSourceMaps(output, sourcemapDir);
175
- }
176
- else if (tech.name === "vue") {
177
- console.log(chalk.green("[✓] Vue.js detected"));
178
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
179
- const queue = new DownloadQueue(output, threads);
180
- const onFilesDiscovered = (files) => queue.push(files);
181
- // run the full discovery pipeline against the entry URL
182
- const { clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb, onFilesDiscovered);
183
- // recurse the same pipeline through every client-side path we found
184
- yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb, onFilesDiscovered);
185
- yield queue.drain();
186
- queue.printSummary();
187
- // extract the source maps
188
- yield extractSourceMaps(output, sourcemapDir);
189
- }
190
- else if (tech.name === "nuxt") {
191
- console.log(chalk.green("[✓] Nuxt.js detected"));
192
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
193
- const queue = new DownloadQueue(output, threads);
194
- // find the files from the page source
195
- const jsFilesFromPageSource = yield nuxt_getFromPageSource(url);
196
- queue.push(jsFilesFromPageSource);
197
- const jsFilesFromStringAnalysis = yield nuxt_stringAnalysisJSFiles(url);
198
- queue.push(jsFilesFromStringAnalysis);
199
- const firstBatch = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
200
- let jsFilesFromAST = [];
201
- console.log(chalk.cyan("[i] Analyzing functions in the files found"));
202
- for (const jsFile of firstBatch) {
203
- jsFilesFromAST.push(...(yield nuxt_astParse(jsFile)));
203
+ else if (tech.name === "nuxt") {
204
+ console.log(chalk.green("[✓] Nuxt.js detected"));
205
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
206
+ const queue = new DownloadQueue(output, threads);
207
+ activeQueue = queue;
208
+ // find the files from the page source
209
+ const jsFilesFromPageSource = yield nuxt_getFromPageSource(url);
210
+ queue.push(jsFilesFromPageSource);
211
+ const jsFilesFromStringAnalysis = yield nuxt_stringAnalysisJSFiles(url);
212
+ queue.push(jsFilesFromStringAnalysis);
213
+ const firstBatch = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
214
+ let jsFilesFromAST = [];
215
+ console.log(chalk.cyan("[i] Analyzing functions in the files found"));
216
+ for (const jsFile of firstBatch) {
217
+ jsFilesFromAST.push(...(yield nuxt_astParse(jsFile)));
218
+ }
219
+ queue.push(jsFilesFromAST);
220
+ queue.push(lazyLoadGlobals.getJsUrls());
221
+ yield queue.drain();
222
+ queue.printSummary();
204
223
  }
205
- queue.push(jsFilesFromAST);
206
- queue.push(lazyLoadGlobals.getJsUrls());
207
- yield queue.drain();
208
- queue.printSummary();
209
- }
210
- else if (tech.name === "svelte") {
211
- console.log(chalk.green("[✓] Svelte detected"));
212
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
213
- const queue = new DownloadQueue(output, threads);
214
- // find the files from the page source
215
- const jsFilesFromPageSource = yield svelte_getFromPageSource(url);
216
- queue.push(jsFilesFromPageSource);
217
- // analyze the strings now
218
- const jsFilesFromStringAnalysis = yield svelte_stringAnalysisJSFiles(url);
219
- queue.push(jsFilesFromStringAnalysis);
220
- yield queue.drain();
221
- queue.printSummary();
222
- }
223
- else if (tech.name === "angular") {
224
- console.log(chalk.green("[✓] Angular detected"));
225
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
226
- const queue = new DownloadQueue(output, threads);
227
- // find the files from the page source
228
- const jsFilesFromPageSource = yield angular_getFromPageSource(url);
229
- queue.push(jsFilesFromPageSource);
230
- // files using the main.js
231
- let mainJsUrl;
232
- for (const jsFile of jsFilesFromPageSource) {
233
- if (jsFile.match(/main[a-zA-Z0-9\-]*\.js/)) {
234
- mainJsUrl = jsFile;
235
- break;
224
+ else if (tech.name === "svelte") {
225
+ console.log(chalk.green("[✓] Svelte detected"));
226
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
227
+ const queue = new DownloadQueue(output, threads);
228
+ activeQueue = queue;
229
+ // find the files from the page source
230
+ const jsFilesFromPageSource = yield svelte_getFromPageSource(url);
231
+ queue.push(jsFilesFromPageSource);
232
+ // analyze the strings now
233
+ const { jsFiles: jsFilesFromStringAnalysis, mapFiles: mapFilesFromStringAnalysis } = yield svelte_stringAnalysisJSFiles(url);
234
+ queue.push(jsFilesFromStringAnalysis);
235
+ if (mapFilesFromStringAnalysis.length > 0) {
236
+ queue.push(mapFilesFromStringAnalysis);
237
+ }
238
+ // recursively follow ESM static imports (import ... from "./chunk.js")
239
+ const visited = new Set();
240
+ let toFollow = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
241
+ while (toFollow.length > 0) {
242
+ const newFiles = yield react_followImports(toFollow, maxJsSizeMb, url, visited);
243
+ if (newFiles.length === 0)
244
+ break;
245
+ console.log(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
246
+ queue.push(newFiles);
247
+ toFollow = newFiles;
248
+ }
249
+ // crawl same-origin HTML pages found via <a href> and <link href>,
250
+ // running the full JS-discovery pipeline on each
251
+ const jsFilesFromPageCrawl = yield svelte_recursivePageCrawl(url, maxJsSizeMb, (files) => queue.push(files));
252
+ // Svelte/Astro apps use client-side routing — the home page rarely has
253
+ // <a href> links in its server-rendered HTML. Scan downloaded JS for
254
+ // embedded page path strings (e.g. "/admin", "/debug") and visit each
255
+ // page to discover the Astro island component-url values for those routes.
256
+ // Iterates until no new paths or JS files are discovered.
257
+ const jsFilesFromPathScan = yield svelte_discoverPagesFromJs(url);
258
+ if (jsFilesFromPathScan.length > 0) {
259
+ queue.push(jsFilesFromPathScan);
236
260
  }
261
+ // run string analysis once more to catch JS files discovered during page crawl
262
+ if (jsFilesFromPageCrawl.length > 0 || jsFilesFromPathScan.length > 0) {
263
+ const { jsFiles: jsFilesFromStringAnalysis2, mapFiles: mapFilesFromStringAnalysis2 } = yield svelte_stringAnalysisJSFiles(url);
264
+ queue.push(jsFilesFromStringAnalysis2);
265
+ if (mapFilesFromStringAnalysis2.length > 0) {
266
+ queue.push(mapFilesFromStringAnalysis2);
267
+ }
268
+ }
269
+ yield queue.drain();
270
+ queue.printSummary();
271
+ yield extractSourceMaps(output, join(output, sourcemapDir));
237
272
  }
238
- if (mainJsUrl) {
239
- const jsFilesFromMainJs = yield angular_getFromMainJs(mainJsUrl);
240
- queue.push(jsFilesFromMainJs);
273
+ else if (tech.name === "angular") {
274
+ console.log(chalk.green("[✓] Angular detected"));
275
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
276
+ const queue = new DownloadQueue(output, threads);
277
+ activeQueue = queue;
278
+ // find the files from the page source
279
+ const jsFilesFromPageSource = yield angular_getFromPageSource(url);
280
+ queue.push(jsFilesFromPageSource);
281
+ // files using the main.js
282
+ let mainJsUrl;
283
+ for (const jsFile of jsFilesFromPageSource) {
284
+ if (jsFile.match(/main[a-zA-Z0-9\-]*\.js/)) {
285
+ mainJsUrl = jsFile;
286
+ break;
287
+ }
288
+ }
289
+ if (mainJsUrl) {
290
+ const jsFilesFromMainJs = yield angular_getFromMainJs(mainJsUrl);
291
+ queue.push(jsFilesFromMainJs);
292
+ }
293
+ yield queue.drain();
294
+ queue.printSummary();
295
+ }
296
+ else if (tech.name === "react") {
297
+ console.log(chalk.green("[✓] React detected"));
298
+ console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
299
+ const queue = new DownloadQueue(output, threads);
300
+ activeQueue = queue;
301
+ // Seed: <script src> tags + <link rel="modulepreload"> (Vite vendor chunks)
302
+ const jsFilesFromPageSource = yield react_getScriptTags(url, maxJsSizeMb, output);
303
+ queue.push(jsFilesFromPageSource);
304
+ // webpack-style chunk path builders (CRA / custom webpack configs)
305
+ const webpackChunkPaths = yield react_webpackChunkPaths(url, maxJsSizeMb, jsFilesFromPageSource);
306
+ queue.push(webpackChunkPaths);
307
+ // Recursively follow ESM imports and Vite __vite_mapDeps references.
308
+ // visited starts empty so the seed files are fetched and parsed in the first round.
309
+ const visited = new Set();
310
+ let toFollow = [...new Set([...jsFilesFromPageSource, ...webpackChunkPaths])];
311
+ while (toFollow.length > 0) {
312
+ const newFiles = yield react_followImports(toFollow, maxJsSizeMb, url, visited);
313
+ if (newFiles.length === 0)
314
+ break;
315
+ console.log(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
316
+ queue.push(newFiles);
317
+ toFollow = newFiles;
318
+ }
319
+ // Sourcemaps for everything discovered
320
+ const sourcemapUrls = yield react_sourcemapUrls([...visited]);
321
+ queue.push(sourcemapUrls);
322
+ yield queue.drain();
323
+ queue.printSummary();
324
+ extractSourceMaps(output, join(output, sourcemapDir));
241
325
  }
242
- yield queue.drain();
243
- queue.printSummary();
244
- }
245
- else if (tech.name === "react") {
246
- console.log(chalk.green("[✓] React detected"));
247
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
248
- const queue = new DownloadQueue(output, threads);
249
- // get the files from the page source
250
- const jsFilesFromPageSource = yield react_getScriptTags(url, maxJsSizeMb);
251
- queue.push(jsFilesFromPageSource);
252
- // find the webpack chunk path builder function
253
- const getWebpackChunkPaths = yield react_webpackChunkPaths(url, maxJsSizeMb, jsFilesFromPageSource);
254
- queue.push(getWebpackChunkPaths);
255
- // check existing JS files for inline sourcemap references
256
- const allDiscovered = [...new Set([...jsFilesFromPageSource, ...getWebpackChunkPaths])];
257
- const sourcemapUrls = yield react_sourcemapUrls(allDiscovered);
258
- queue.push(sourcemapUrls);
259
- yield queue.drain();
260
- queue.printSummary();
261
- extractSourceMaps(output, sourcemapDir);
262
326
  }
263
- }
264
- else {
265
- console.log(chalk.red("[!] Framework not detected :("));
266
- console.log(chalk.magenta(CONFIG.notFoundMessage));
267
- console.log(chalk.yellow("[i] Trying to download loaded JS files"));
268
- const js_urls = yield downloadLoadedJs(url);
269
- if (js_urls && js_urls.length > 0) {
270
- console.log(chalk.green(`[✓] Found ${js_urls.length} JS chunks`));
271
- const queue = new DownloadQueue(output, threads);
272
- queue.push(js_urls);
273
- yield queue.drain();
274
- queue.printSummary();
327
+ else {
328
+ console.log(chalk.red("[!] Framework not detected :("));
329
+ console.log(chalk.magenta(CONFIG.notFoundMessage));
330
+ console.log(chalk.yellow("[i] Trying to download loaded JS files"));
331
+ const js_urls = yield downloadLoadedJs(url);
332
+ if (js_urls && js_urls.length > 0) {
333
+ console.log(chalk.green(`[✓] Found ${js_urls.length} JS chunks`));
334
+ const queue = new DownloadQueue(output, threads);
335
+ queue.push(js_urls);
336
+ yield queue.drain();
337
+ queue.printSummary();
338
+ }
275
339
  }
276
340
  }
341
+ });
342
+ if (hardTimeoutMs === 0) {
343
+ yield work();
344
+ return;
277
345
  }
346
+ let timeoutHandle;
347
+ yield Promise.race([
348
+ work().finally(() => {
349
+ // work() finished before the timeout — cancel the timer so it never
350
+ // fires orphaned and doesn't hold the event loop open.
351
+ if (timeoutHandle !== undefined)
352
+ clearTimeout(timeoutHandle);
353
+ }),
354
+ new Promise((resolve) => {
355
+ timeoutHandle = setTimeout(() => {
356
+ console.log(chalk.yellow(`[!] Lazyload hard timeout reached (${hardTimeoutMs / 60000} min). Draining discovered files before moving on...`));
357
+ // Signal the crawler to stop at its next iteration boundary.
358
+ activeCrawler === null || activeCrawler === void 0 ? void 0 : activeCrawler.stop();
359
+ const q = activeQueue;
360
+ if (q) {
361
+ // Wait for already-queued downloads to finish, then move on.
362
+ q.drain()
363
+ .then(() => {
364
+ q.printSummary();
365
+ resolve();
366
+ })
367
+ .catch(() => resolve());
368
+ }
369
+ else {
370
+ resolve();
371
+ }
372
+ }, hardTimeoutMs);
373
+ }),
374
+ ]);
278
375
  });
279
376
  export default lazyLoad;
280
377
  //# 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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"}