@js-recon/js-recon 1.4.4 → 2.0.1-alpha.2

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 (440) hide show
  1. package/.claude-sync/sync.sh +1 -1
  2. package/.github/dependabot.yml +50 -0
  3. package/.github/workflows/build-and-prettify.yaml +49 -19
  4. package/.github/workflows/codeql.yml +33 -0
  5. package/.github/workflows/exploit-smoke-test.yaml +160 -0
  6. package/.github/workflows/framework-detection-smoke-test.yaml +135 -0
  7. package/.github/workflows/plumber.yml +20 -0
  8. package/.github/workflows/promote-js-recon.yml +5 -3
  9. package/.github/workflows/publish-js-recon.yml +31 -2
  10. package/.github/workflows/rules-smoke-test.yaml +13 -5
  11. package/.nvmrc +1 -0
  12. package/.plumber.yaml +151 -0
  13. package/CHANGELOG.md +55 -0
  14. package/CONTRIBUTING.md +32 -0
  15. package/Dockerfile +1 -0
  16. package/README.md +3 -2
  17. package/SECURITY.md +1 -1
  18. package/build/analyze/engine/astEngine.js +10 -9
  19. package/build/analyze/engine/astEngine.js.map +1 -1
  20. package/build/analyze/engine/csMastSEngine.js +6 -6
  21. package/build/analyze/engine/csMastSEngine.js.map +1 -1
  22. package/build/analyze/engine/index.js +1 -1
  23. package/build/analyze/engine/index.js.map +1 -1
  24. package/build/analyze/engine/requestEngine.js +6 -6
  25. package/build/analyze/engine/requestEngine.js.map +1 -1
  26. package/build/analyze/helpers/determineCompatibleVersion.js +70 -0
  27. package/build/analyze/helpers/determineCompatibleVersion.js.map +1 -0
  28. package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +9 -3
  29. package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
  30. package/build/analyze/helpers/initRules.js +9 -9
  31. package/build/analyze/helpers/initRules.js.map +1 -1
  32. package/build/analyze/helpers/outputHelper.js +3 -3
  33. package/build/analyze/helpers/outputHelper.js.map +1 -1
  34. package/build/analyze/helpers/schemas.js +1 -0
  35. package/build/analyze/helpers/schemas.js.map +1 -1
  36. package/build/analyze/helpers/validate.js +9 -5
  37. package/build/analyze/helpers/validate.js.map +1 -1
  38. package/build/analyze/index.js +26 -16
  39. package/build/analyze/index.js.map +1 -1
  40. package/build/cliProgram.js +733 -0
  41. package/build/cliProgram.js.map +1 -0
  42. package/build/completion/index.js +247 -382
  43. package/build/completion/index.js.map +1 -1
  44. package/build/completion/introspect.js +17 -0
  45. package/build/completion/introspect.js.map +1 -0
  46. package/build/config/applicationConfig.js +3 -2
  47. package/build/config/applicationConfig.js.map +1 -1
  48. package/build/cs_mast/index.js +18 -17
  49. package/build/cs_mast/index.js.map +1 -1
  50. package/build/endpoints/gen_report/gen_json.js +2 -2
  51. package/build/endpoints/gen_report/gen_json.js.map +1 -1
  52. package/build/endpoints/gen_report/utility/iterate_n_store.js +1 -1
  53. package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -1
  54. package/build/endpoints/index.js +12 -12
  55. package/build/endpoints/index.js.map +1 -1
  56. package/build/endpoints/next_js/client_jsFilesHref.js +3 -3
  57. package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
  58. package/build/endpoints/next_js/client_jsonParse.js +4 -4
  59. package/build/endpoints/next_js/client_jsonParse.js.map +1 -1
  60. package/build/endpoints/next_js/client_mappedJsonFile.js +6 -6
  61. package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
  62. package/build/endpoints/next_js/client_subsequentRequests.js +5 -5
  63. package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
  64. package/build/exploit/angular/cve-2026-68945.js +61 -0
  65. package/build/exploit/angular/cve-2026-68945.js.map +1 -0
  66. package/build/exploit/index.js +60 -0
  67. package/build/exploit/index.js.map +1 -0
  68. package/build/exploit/next/cve-2025-29927.js +65 -0
  69. package/build/exploit/next/cve-2025-29927.js.map +1 -0
  70. package/build/exploit/next/cve-2026-64645.js +51 -0
  71. package/build/exploit/next/cve-2026-64645.js.map +1 -0
  72. package/build/exploit/nuxt/cve-2026-71315.js +47 -0
  73. package/build/exploit/nuxt/cve-2026-71315.js.map +1 -0
  74. package/build/exploit/nuxt/cve-2026-71320.js +114 -0
  75. package/build/exploit/nuxt/cve-2026-71320.js.map +1 -0
  76. package/build/exploit/react/cve-2025-55182.js +116 -0
  77. package/build/exploit/react/cve-2025-55182.js.map +1 -0
  78. package/build/exploit/registry/cveRegistry.js +115 -0
  79. package/build/exploit/registry/cveRegistry.js.map +1 -0
  80. package/build/exploit/types.js +2 -0
  81. package/build/exploit/types.js.map +1 -0
  82. package/build/exploit/utility/compareResponses.js +29 -0
  83. package/build/exploit/utility/compareResponses.js.map +1 -0
  84. package/build/exploit/utility/outputHelper.js +22 -0
  85. package/build/exploit/utility/outputHelper.js.map +1 -0
  86. package/build/exploit/utility/rawRequest.js +56 -0
  87. package/build/exploit/utility/rawRequest.js.map +1 -0
  88. package/build/exploit/utility/sandboxRce.js +49 -0
  89. package/build/exploit/utility/sandboxRce.js.map +1 -0
  90. package/build/exploit/utility/toEngineOutput.js +28 -0
  91. package/build/exploit/utility/toEngineOutput.js.map +1 -0
  92. package/build/exploit/utility/wsClient.js +78 -0
  93. package/build/exploit/utility/wsClient.js.map +1 -0
  94. package/build/exploit/vite/cve-2025-30208.js +44 -0
  95. package/build/exploit/vite/cve-2025-30208.js.map +1 -0
  96. package/build/exploit/vite/cve-2026-39363.js +60 -0
  97. package/build/exploit/vite/cve-2026-39363.js.map +1 -0
  98. package/build/fingerprint/index.js +3 -2
  99. package/build/fingerprint/index.js.map +1 -1
  100. package/build/globalConfig.js +2 -2
  101. package/build/globalConfig.js.map +1 -1
  102. package/build/index.js +5 -596
  103. package/build/index.js.map +1 -1
  104. package/build/lazyLoad/angular/angular_getFromPageSource.js +3 -3
  105. package/build/lazyLoad/angular/angular_getFromPageSource.js.map +1 -1
  106. package/build/lazyLoad/downloadFilesUtil.js +14 -11
  107. package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
  108. package/build/lazyLoad/downloadQueue.js +9 -1
  109. package/build/lazyLoad/downloadQueue.js.map +1 -1
  110. package/build/lazyLoad/downloadResponse.js +1 -0
  111. package/build/lazyLoad/downloadResponse.js.map +1 -1
  112. package/build/lazyLoad/generic/generic_crawlPages.js +186 -0
  113. package/build/lazyLoad/generic/generic_crawlPages.js.map +1 -0
  114. package/build/lazyLoad/generic/generic_downloadFiles.js +81 -0
  115. package/build/lazyLoad/generic/generic_downloadFiles.js.map +1 -0
  116. package/build/lazyLoad/generic/generic_extractLinks.js +79 -0
  117. package/build/lazyLoad/generic/generic_extractLinks.js.map +1 -0
  118. package/build/lazyLoad/generic/generic_getScriptTags.js +152 -0
  119. package/build/lazyLoad/generic/generic_getScriptTags.js.map +1 -0
  120. package/build/lazyLoad/generic/generic_importMapDiscovery.js +87 -0
  121. package/build/lazyLoad/generic/generic_importMapDiscovery.js.map +1 -0
  122. package/build/lazyLoad/generic/generic_resolveScope.js +66 -0
  123. package/build/lazyLoad/generic/generic_resolveScope.js.map +1 -0
  124. package/build/lazyLoad/generic/generic_scanAttributesForJs.js +122 -0
  125. package/build/lazyLoad/generic/generic_scanAttributesForJs.js.map +1 -0
  126. package/build/lazyLoad/generic/generic_stringsDiscovery.js +103 -0
  127. package/build/lazyLoad/generic/generic_stringsDiscovery.js.map +1 -0
  128. package/build/lazyLoad/generic/generic_webpackChunkPaths.js +56 -0
  129. package/build/lazyLoad/generic/generic_webpackChunkPaths.js.map +1 -0
  130. package/build/lazyLoad/globals.js +31 -0
  131. package/build/lazyLoad/globals.js.map +1 -1
  132. package/build/lazyLoad/index.js +172 -75
  133. package/build/lazyLoad/index.js.map +1 -1
  134. package/build/lazyLoad/methodFilter.js +9 -1
  135. package/build/lazyLoad/methodFilter.js.map +1 -1
  136. package/build/lazyLoad/next_js/NextJsCrawler.js +98 -14
  137. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
  138. package/build/lazyLoad/next_js/next_GetJSScript.js +3 -3
  139. package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
  140. package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +4 -4
  141. package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -1
  142. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +17 -11
  143. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
  144. package/build/lazyLoad/next_js/next_SubsequentRequests.js +7 -6
  145. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
  146. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +1 -1
  147. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
  148. package/build/lazyLoad/next_js/next_buildId.js +2 -2
  149. package/build/lazyLoad/next_js/next_buildId.js.map +1 -1
  150. package/build/lazyLoad/next_js/next_getClientSidePaths.js +2 -2
  151. package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -1
  152. package/build/lazyLoad/next_js/next_parseLayoutJs.js +6 -6
  153. package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -1
  154. package/build/lazyLoad/next_js/next_promiseResolve.js +1 -1
  155. package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
  156. package/build/lazyLoad/next_js/next_routerStateForge.js +407 -0
  157. package/build/lazyLoad/next_js/next_routerStateForge.js.map +1 -0
  158. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +1 -1
  159. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
  160. package/build/lazyLoad/next_js/next_serverActionIdScan.js +77 -0
  161. package/build/lazyLoad/next_js/next_serverActionIdScan.js.map +1 -0
  162. package/build/lazyLoad/nuxt_js/nuxt_astParse.js +15 -13
  163. package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
  164. package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js +2 -2
  165. package/build/lazyLoad/nuxt_js/nuxt_getBuildsManifest.js.map +1 -1
  166. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +3 -3
  167. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -1
  168. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +29 -5
  169. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -1
  170. package/build/lazyLoad/react/react_sourcemapUrls.js +7 -28
  171. package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -1
  172. package/build/lazyLoad/react/react_webpackChunkPaths.js +10 -202
  173. package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -1
  174. package/build/lazyLoad/researchUtils.js +15 -0
  175. package/build/lazyLoad/researchUtils.js.map +1 -0
  176. package/build/lazyLoad/shared/webpackChunkParsers.js +218 -0
  177. package/build/lazyLoad/shared/webpackChunkParsers.js.map +1 -0
  178. package/build/lazyLoad/sourcemap.js +120 -0
  179. package/build/lazyLoad/sourcemap.js.map +1 -1
  180. package/build/lazyLoad/stagnation/stagnationMonitor.js +63 -0
  181. package/build/lazyLoad/stagnation/stagnationMonitor.js.map +1 -0
  182. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +1 -0
  183. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -1
  184. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +5 -5
  185. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
  186. package/build/lazyLoad/svelte/svelte_getVersionJson.js +2 -2
  187. package/build/lazyLoad/svelte/svelte_getVersionJson.js.map +1 -1
  188. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +6 -6
  189. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -1
  190. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +15 -6
  191. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
  192. package/build/lazyLoad/techDetect/checkAngularJS.js +1 -1
  193. package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -1
  194. package/build/lazyLoad/techDetect/checkNuxtJS.js +3 -3
  195. package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -1
  196. package/build/lazyLoad/techDetect/checkSvelte.js +0 -1
  197. package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
  198. package/build/lazyLoad/techDetect/checkVueJS.js +6 -6
  199. package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -1
  200. package/build/lazyLoad/techDetect/index.js +17 -1
  201. package/build/lazyLoad/techDetect/index.js.map +1 -1
  202. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +2 -2
  203. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
  204. package/build/lazyLoad/vue/vue_discoverJsFiles.js +13 -11
  205. package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -1
  206. package/build/lazyLoad/vue/vue_getClientSidePaths.js +1 -1
  207. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
  208. package/build/lazyLoad/vue/vue_pageSrc.js +1 -1
  209. package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -1
  210. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +12 -3
  211. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
  212. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +2 -2
  213. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
  214. package/build/lazyLoad/vue/vue_severalJsFilesHome.js +3 -3
  215. package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -1
  216. package/build/load/index.js +28 -38
  217. package/build/load/index.js.map +1 -1
  218. package/build/map/angular_js/getAngularConnections.js +6 -6
  219. package/build/map/angular_js/getAngularConnections.js.map +1 -1
  220. package/build/map/graphql/resolveGraphql.js +6 -6
  221. package/build/map/graphql/resolveGraphql.js.map +1 -1
  222. package/build/map/index.js +17 -17
  223. package/build/map/index.js.map +1 -1
  224. package/build/map/interactive-mode/commandHandler.js +278 -0
  225. package/build/map/interactive-mode/commandHandler.js.map +1 -0
  226. package/build/map/interactive-mode/commandHelpers.js +189 -0
  227. package/build/map/interactive-mode/commandHelpers.js.map +1 -0
  228. package/build/map/interactive-mode/esqueryGen.js.map +1 -0
  229. package/build/map/interactive-mode/helpMenu.js +11 -0
  230. package/build/map/interactive-mode/helpMenu.js.map +1 -0
  231. package/build/map/interactive-mode/inputPatch.js.map +1 -0
  232. package/build/map/interactive-mode/interactive.js +71 -0
  233. package/build/map/interactive-mode/interactive.js.map +1 -0
  234. package/build/map/interactive-mode/keybindings.js.map +1 -0
  235. package/build/map/interactive-mode/printer.js.map +1 -0
  236. package/build/map/interactive-mode/ui.js.map +1 -0
  237. package/build/map/next_js/getAxiosInstances.js +5 -5
  238. package/build/map/next_js/getAxiosInstances.js.map +1 -1
  239. package/build/map/next_js/getExports.js +4 -4
  240. package/build/map/next_js/getExports.js.map +1 -1
  241. package/build/map/next_js/getFetchInstances.js +10 -10
  242. package/build/map/next_js/getFetchInstances.js.map +1 -1
  243. package/build/map/next_js/getTurbopackConnections.js +8 -8
  244. package/build/map/next_js/getTurbopackConnections.js.map +1 -1
  245. package/build/map/next_js/getWebpackConnections.js +27 -16
  246. package/build/map/next_js/getWebpackConnections.js.map +1 -1
  247. package/build/map/next_js/interactive.js +3 -65
  248. package/build/map/next_js/interactive.js.map +1 -1
  249. package/build/map/next_js/interactive_helpers/commandHandler.js +38 -290
  250. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -1
  251. package/build/map/next_js/interactive_helpers/commandHelpers.js +0 -184
  252. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -1
  253. package/build/map/next_js/interactive_helpers/helpMenu.js +2 -10
  254. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -1
  255. package/build/map/next_js/resolveAxios.js +6 -6
  256. package/build/map/next_js/resolveAxios.js.map +1 -1
  257. package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js +4 -4
  258. package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js.map +1 -1
  259. package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +2 -2
  260. package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -1
  261. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +5 -5
  262. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
  263. package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +10 -10
  264. package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
  265. package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +13 -9
  266. package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -1
  267. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js +12 -8
  268. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js.map +1 -1
  269. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js +12 -8
  270. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js.map +1 -1
  271. package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +11 -11
  272. package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -1
  273. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +16 -16
  274. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -1
  275. package/build/map/next_js/resolveFetch.js +23 -23
  276. package/build/map/next_js/resolveFetch.js.map +1 -1
  277. package/build/map/next_js/resolveNewRequest.js +10 -10
  278. package/build/map/next_js/resolveNewRequest.js.map +1 -1
  279. package/build/map/next_js/resolveServerActions.js +4 -4
  280. package/build/map/next_js/resolveServerActions.js.map +1 -1
  281. package/build/map/next_js/utils.js +8 -2
  282. package/build/map/next_js/utils.js.map +1 -1
  283. package/build/map/react_js/getReactConnections.js +21 -14
  284. package/build/map/react_js/getReactConnections.js.map +1 -1
  285. package/build/map/svelte_js/interactive.js +3 -54
  286. package/build/map/svelte_js/interactive.js.map +1 -1
  287. package/build/map/vue_js/getViteConnections.js +23 -16
  288. package/build/map/vue_js/getViteConnections.js.map +1 -1
  289. package/build/map/vue_js/interactive.js +3 -63
  290. package/build/map/vue_js/interactive.js.map +1 -1
  291. package/build/map/vue_js/interactive_helpers/commandHandler.js +34 -283
  292. package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -1
  293. package/build/map/vue_js/interactive_helpers/helpMenu.js +2 -10
  294. package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -1
  295. package/build/map/vue_js/taint_utils.js +1 -1
  296. package/build/map/vue_js/taint_utils.js.map +1 -1
  297. package/build/map/vue_js/vue_resolveFetch.js +12 -12
  298. package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
  299. package/build/map/vue_js/vue_resolveHttpClient.js +18 -18
  300. package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
  301. package/build/map/vue_js/vue_resolveXhr.js +11 -11
  302. package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
  303. package/build/mcp/chatOneShot.js +7 -7
  304. package/build/mcp/chatOneShot.js.map +1 -1
  305. package/build/mcp/claudeCodeCreds.js +5 -5
  306. package/build/mcp/claudeCodeCreds.js.map +1 -1
  307. package/build/mcp/cli.js +36 -35
  308. package/build/mcp/cli.js.map +1 -1
  309. package/build/mcp/config.js +4 -4
  310. package/build/mcp/config.js.map +1 -1
  311. package/build/mcp/index.js +7 -7
  312. package/build/mcp/index.js.map +1 -1
  313. package/build/mcp/mcpServer.js +4 -3
  314. package/build/mcp/mcpServer.js.map +1 -1
  315. package/build/mcp/skills.js +1 -0
  316. package/build/mcp/skills.js.map +1 -1
  317. package/build/mcp/tools.js +6 -5
  318. package/build/mcp/tools.js.map +1 -1
  319. package/build/proxy/detectBlockedResponse.js +2 -0
  320. package/build/proxy/detectBlockedResponse.js.map +1 -1
  321. package/build/proxy/index.js +3 -3
  322. package/build/proxy/index.js.map +1 -1
  323. package/build/refactor/index.js +83 -79
  324. package/build/refactor/index.js.map +1 -1
  325. package/build/refactor/next/index.js +69 -26
  326. package/build/refactor/next/index.js.map +1 -1
  327. package/build/refactor/next/transform.js +11 -4
  328. package/build/refactor/next/transform.js.map +1 -1
  329. package/build/refactor/next/validator.js +7 -7
  330. package/build/refactor/next/validator.js.map +1 -1
  331. package/build/refactor/react/index.js +13 -13
  332. package/build/refactor/react/index.js.map +1 -1
  333. package/build/refactor/react/validator.js +7 -7
  334. package/build/refactor/react/validator.js.map +1 -1
  335. package/build/refactor/react-vite/index.js +3 -3
  336. package/build/refactor/react-vite/index.js.map +1 -1
  337. package/build/refactor/remote/hf-client.js +1 -0
  338. package/build/refactor/remote/hf-client.js.map +1 -1
  339. package/build/refactor/remote/version-detect.js +12 -12
  340. package/build/refactor/remote/version-detect.js.map +1 -1
  341. package/build/refactor/vue/index.js +6 -6
  342. package/build/refactor/vue/index.js.map +1 -1
  343. package/build/refactor/vue/vite.js +6 -6
  344. package/build/refactor/vue/vite.js.map +1 -1
  345. package/build/report/index.js +30 -8
  346. package/build/report/index.js.map +1 -1
  347. package/build/report/swaggerJacker.js +63 -0
  348. package/build/report/swaggerJacker.js.map +1 -0
  349. package/build/report/utility/dataTables/genDataTablesPage.js +2 -1
  350. package/build/report/utility/dataTables/genDataTablesPage.js.map +1 -1
  351. package/build/report/utility/genHtml.js +316 -25
  352. package/build/report/utility/genHtml.js.map +1 -1
  353. package/build/report/utility/markdownGen/addAnalyze.js +2 -1
  354. package/build/report/utility/markdownGen/addAnalyze.js.map +1 -1
  355. package/build/report/utility/populateDb/populateAnalysisFindings.js +2 -2
  356. package/build/report/utility/populateDb/populateAnalysisFindings.js.map +1 -1
  357. package/build/report/utility/populateDb/populateEndpoints.js +3 -3
  358. package/build/report/utility/populateDb/populateEndpoints.js.map +1 -1
  359. package/build/report/utility/populateDb/populateMappedJson.js +2 -2
  360. package/build/report/utility/populateDb/populateMappedJson.js.map +1 -1
  361. package/build/report/utility/populateDb/populateMappedOpenapi.js +3 -3
  362. package/build/report/utility/populateDb/populateMappedOpenapi.js.map +1 -1
  363. package/build/report/utility/severityColors.js +35 -0
  364. package/build/report/utility/severityColors.js.map +1 -0
  365. package/build/run/bundler-detect.js +45 -9
  366. package/build/run/bundler-detect.js.map +1 -1
  367. package/build/run/dashboard/dashboardHtml.js +150 -0
  368. package/build/run/dashboard/dashboardHtml.js.map +1 -0
  369. package/build/run/dashboard/fsBrowser.js +43 -0
  370. package/build/run/dashboard/fsBrowser.js.map +1 -0
  371. package/build/run/dashboard/server.js +123 -0
  372. package/build/run/dashboard/server.js.map +1 -0
  373. package/build/run/dashboard/state.js +97 -0
  374. package/build/run/dashboard/state.js.map +1 -0
  375. package/build/run/index.js +177 -110
  376. package/build/run/index.js.map +1 -1
  377. package/build/run/interruptHandler.js +18 -0
  378. package/build/run/interruptHandler.js.map +1 -1
  379. package/build/sourcemaps/index.js +7 -6
  380. package/build/sourcemaps/index.js.map +1 -1
  381. package/build/strings/index.js +27 -24
  382. package/build/strings/index.js.map +1 -1
  383. package/build/strings/openapi.js +4 -4
  384. package/build/strings/openapi.js.map +1 -1
  385. package/build/strings/permutate.js +4 -4
  386. package/build/strings/permutate.js.map +1 -1
  387. package/build/strings/secrets.js +1 -0
  388. package/build/strings/secrets.js.map +1 -1
  389. package/build/strings/trufflehog.js +66 -19
  390. package/build/strings/trufflehog.js.map +1 -1
  391. package/build/strings/trufflehogConfig.js +36 -0
  392. package/build/strings/trufflehogConfig.js.map +1 -0
  393. package/build/strings/trufflehogDownload.js +115 -0
  394. package/build/strings/trufflehogDownload.js.map +1 -0
  395. package/build/utility/ai.js +33 -4
  396. package/build/utility/ai.js.map +1 -1
  397. package/build/utility/banner.js +4 -3
  398. package/build/utility/banner.js.map +1 -1
  399. package/build/utility/cacheDb.js +78 -0
  400. package/build/utility/cacheDb.js.map +1 -0
  401. package/build/utility/configureSandbox.js +2 -2
  402. package/build/utility/configureSandbox.js.map +1 -1
  403. package/build/utility/customHeaders.js +30 -0
  404. package/build/utility/customHeaders.js.map +1 -0
  405. package/build/utility/globals.js +37 -12
  406. package/build/utility/globals.js.map +1 -1
  407. package/build/utility/heap.js +2 -1
  408. package/build/utility/heap.js.map +1 -1
  409. package/build/utility/makeReq.js +38 -87
  410. package/build/utility/makeReq.js.map +1 -1
  411. package/build/utility/openapiGenerator.js +2 -2
  412. package/build/utility/openapiGenerator.js.map +1 -1
  413. package/build/utility/printMsg.js +53 -0
  414. package/build/utility/printMsg.js.map +1 -0
  415. package/build/utility/progressLog.js +4 -3
  416. package/build/utility/progressLog.js.map +1 -1
  417. package/build/utility/resolvePath.js +2 -1
  418. package/build/utility/resolvePath.js.map +1 -1
  419. package/build/utility/ruleVersionMap.js +73 -0
  420. package/build/utility/ruleVersionMap.js.map +1 -0
  421. package/config.dist.yaml +3 -3
  422. package/contributing/testing.md +106 -0
  423. package/eslint.config.js +24 -0
  424. package/package.json +22 -6
  425. package/scripts/exploit-smoke-test.js +82 -0
  426. package/scripts/framework-detect-smoke-test.js +64 -0
  427. package/scripts/postinstall-completion.mjs +40 -0
  428. package/scripts/smoke-test.js +12 -0
  429. package/build/lazyLoad/downloadLoadedJsUtil.js +0 -98
  430. package/build/lazyLoad/downloadLoadedJsUtil.js.map +0 -1
  431. package/build/map/next_js/interactive_helpers/esqueryGen.js.map +0 -1
  432. package/build/map/next_js/interactive_helpers/inputPatch.js.map +0 -1
  433. package/build/map/next_js/interactive_helpers/keybindings.js.map +0 -1
  434. package/build/map/next_js/interactive_helpers/printer.js.map +0 -1
  435. package/build/map/next_js/interactive_helpers/ui.js.map +0 -1
  436. /package/build/map/{next_js/interactive_helpers → interactive-mode}/esqueryGen.js +0 -0
  437. /package/build/map/{next_js/interactive_helpers → interactive-mode}/inputPatch.js +0 -0
  438. /package/build/map/{next_js/interactive_helpers → interactive-mode}/keybindings.js +0 -0
  439. /package/build/map/{next_js/interactive_helpers → interactive-mode}/printer.js +0 -0
  440. /package/build/map/{next_js/interactive_helpers → interactive-mode}/ui.js +0 -0
@@ -10,13 +10,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  var _a;
11
11
  import chalk from "chalk";
12
12
  import fs from "fs";
13
- import frameworkDetect from "./techDetect/index.js";
14
- import CONFIG from "../globalConfig.js";
13
+ import frameworkDetect, { getLastInterceptedUrls } from "./techDetect/index.js";
15
14
  import _traverse from "@babel/traverse";
16
15
  const traverse = ((_a = _traverse.default) !== null && _a !== void 0 ? _a : _traverse);
17
16
  import { URL } from "url";
18
17
  // Next.js
19
18
  import NextJsCrawler from "./next_js/NextJsCrawler.js";
19
+ import next_serverActionIdScan from "./next_js/next_serverActionIdScan.js";
20
20
  import { next_buildId_RSC } from "./next_js/next_buildId.js";
21
21
  // Nuxt.js
22
22
  import nuxt_getFromPageSource from "./nuxt_js/nuxt_getFromPageSource.js";
@@ -41,11 +41,13 @@ import react_getScriptTags from "./react/react_getScriptTags.js";
41
41
  import react_webpackChunkPaths from "./react/react_webpackChunkPaths.js";
42
42
  import react_sourcemapUrls from "./react/react_sourcemapUrls.js";
43
43
  import react_followImports from "./react/react_followImports.js";
44
- import downloadLoadedJs from "./downloadLoadedJsUtil.js";
45
44
  import { DownloadQueue } from "./downloadQueue.js";
45
+ import generic_crawlPages from "./generic/generic_crawlPages.js";
46
+ import resolveGenericScope from "./generic/generic_resolveScope.js";
46
47
  import path from "path";
47
48
  import { join } from "path";
48
49
  import { extractSourceMaps } from "../sourcemaps/index.js";
50
+ import { discoverSourcemapUrls } from "./sourcemap.js";
49
51
  // import global vars
50
52
  import * as lazyLoadGlobals from "./globals.js";
51
53
  import * as globals from "../utility/globals.js";
@@ -55,6 +57,9 @@ import { progressLog, progressWarn } from "../utility/progressLog.js";
55
57
  import { resolveHostOutputDirectory } from "./outputPath.js";
56
58
  import { withRequestSignal } from "../utility/makeReq.js";
57
59
  import { resolveTargetInputs } from "../utility/targetInputs.js";
60
+ import { accumulateTechnique, createTechniqueRecorder } from "./researchUtils.js";
61
+ import { printMsg, MSG } from "../utility/printMsg.js";
62
+ import { getCacheDb } from "../utility/cacheDb.js";
58
63
  /**
59
64
  * Downloads the required JavaScript files for a given URL
60
65
  * @param {string} url The URL to download the JS files from
@@ -67,7 +72,7 @@ import { resolveTargetInputs } from "../utility/targetInputs.js";
67
72
  * @param {boolean} insecure If true, then disable SSL certificate verification
68
73
  * @returns {Promise<void>} A Promise that resolves when the download is complete
69
74
  */
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) {
75
+ 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, maxRedirects = 20, stringsEnabled = false, stringsMaxIterations = 5, stagnationTimeinMs = 0, stagnationPercentage = 80, stagnationMonitorMs = 60 * 1000, rscParamBruteforceLimit = 20, wordlist) {
71
76
  const resolvedTargets = resolveTargetInputs(url);
72
77
  // Hoisted so the timeout handler can stop discovery and drain downloads.
73
78
  let activeCrawler = null;
@@ -99,25 +104,29 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
99
104
  if (cancellationSignal === null || cancellationSignal === void 0 ? void 0 : cancellationSignal.aborted)
100
105
  requestCancellation();
101
106
  const work = () => __awaiter(void 0, void 0, void 0, function* () {
102
- console.log(chalk.cyan("[i] Loading 'Lazy Load' module"));
107
+ printMsg(MSG.Header, "[i] Loading 'Lazy Load' module");
103
108
  if (globals.getDisableSandbox()) {
104
- console.error(chalk.yellow("[!] Browser sandbox disabled"));
109
+ printMsg(MSG.Warn, "[!] Browser sandbox disabled");
105
110
  }
106
111
  globals.setInsecure(insecure);
107
112
  if (insecure) {
108
113
  process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
109
- console.error(chalk.yellow("[!] Running in insecure mode. SSL certificate verification disabled"));
114
+ printMsg(MSG.Warn, "[!] Running in insecure mode. SSL certificate verification disabled");
110
115
  }
111
- // if cache enabled, check if the cache file exists or not. If no, then create a new one
116
+ // if cache enabled, ensure the cache DB can be opened (this also creates it + its schema if missing)
112
117
  if (!globals.getDisableCache()) {
113
- if (!fs.existsSync(globals.getRespCacheFile())) {
114
- fs.writeFileSync(globals.getRespCacheFile(), "{}");
118
+ try {
119
+ getCacheDb();
120
+ }
121
+ catch (err) {
122
+ printMsg(MSG.Err, `[!] Could not open response cache database: ${(err === null || err === void 0 ? void 0 : err.message) || err}`);
123
+ process.exit(32);
115
124
  }
116
125
  }
117
126
  for (const url of resolvedTargets.targets) {
118
127
  if (hardTimeoutReached)
119
128
  break;
120
- console.log(chalk.cyan(`[i] Processing ${url}`));
129
+ printMsg(MSG.Header, `[i] Processing ${url}`);
121
130
  lazyLoadGlobals.clearJsUrls();
122
131
  lazyLoadGlobals.clearJsonUrls();
123
132
  lazyLoadGlobals.clearCrawledUrls();
@@ -149,15 +158,15 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
149
158
  activeDetectionController = null;
150
159
  }
151
160
  if (detectionTimedOut) {
152
- console.error(chalk.yellow(`[!] Framework detection timed out after ${detectionTimeoutMs}ms; treating as not detected`));
161
+ printMsg(MSG.Warn, `[!] Framework detection timed out after ${detectionTimeoutMs}ms; treating as not detected`);
153
162
  }
154
163
  if (hardTimeoutReached)
155
164
  break;
156
165
  globals.setTech(tech ? tech.name : "");
157
166
  if (tech) {
158
167
  if (tech.name === "next") {
159
- console.log(chalk.green("[✓] Next.js detected"));
160
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
168
+ printMsg(MSG.Run, "[✓] Next.js detected");
169
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
161
170
  activeQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
162
171
  const crawler = new NextJsCrawler({
163
172
  url,
@@ -168,6 +177,8 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
168
177
  research,
169
178
  maxIterations,
170
179
  maxPageVisits,
180
+ rscParamBruteforceLimit,
181
+ wordlist,
171
182
  onUrlsDiscovered: (urls) => enqueue(activeQueue, urls),
172
183
  includeMethods,
173
184
  excludeMethods,
@@ -185,8 +196,26 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
185
196
  yield activeQueue.drain();
186
197
  if (hardTimeoutReached)
187
198
  return;
199
+ const nextSeenUrls = activeQueue.seenUrls;
188
200
  activeQueue.printSummary();
189
201
  activeQueue = null;
202
+ if (shouldRunMethod("next_sourcemapUrls", includeMethods, excludeMethods)) {
203
+ const jsUrlsForSourcemaps = nextSeenUrls.filter((u) => /\.m?js($|[?#])/.test(u));
204
+ const mapUrls = yield discoverSourcemapUrls(jsUrlsForSourcemaps, threads, output);
205
+ if (mapUrls.length > 0) {
206
+ const mapQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
207
+ enqueue(mapQueue, mapUrls);
208
+ yield mapQueue.drain();
209
+ }
210
+ }
211
+ if (shouldRunMethod("next_serverActionIdScan", includeMethods, excludeMethods)) {
212
+ const scanDir = resolveHostOutputDirectory(output, new URL(url).host, isBatch);
213
+ const scanResult = yield next_serverActionIdScan(scanDir);
214
+ if (scanResult.allActionIds.length > 0) {
215
+ printMsg(MSG.Run, `[✓] Found ${scanResult.allActionIds.length} Server Action ID(s) referenced in downloaded chunks (disclosure only — not invoked)`);
216
+ fs.writeFileSync(path.join(scanDir, "server_action_ids.json"), JSON.stringify(scanResult, null, 4));
217
+ }
218
+ }
190
219
  if (buildId) {
191
220
  // get the buildId
192
221
  // the directory is the output <output>/<host.replace(":", "_")>/___subsequent_requests
@@ -195,7 +224,7 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
195
224
  if (hardTimeoutReached)
196
225
  return;
197
226
  if (buildId) {
198
- console.log(chalk.cyan("[+] Found buildId: " + buildId));
227
+ printMsg(MSG.Header, "[+] Found buildId: " + buildId);
199
228
  // now, write it to a file
200
229
  fs.writeFileSync(path.join(targetOutputDir, "BUILD_ID"), buildId);
201
230
  }
@@ -204,75 +233,103 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
204
233
  if (research) {
205
234
  // prettify the JSON and write
206
235
  fs.writeFileSync(researchOutput, JSON.stringify(crawler.techniqueEfficiencyMapping, null, 4));
207
- console.log(chalk.green("[✓] Research mode enabled. Technique efficiency written to " + researchOutput));
236
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
208
237
  }
209
238
  // extract the source maps
210
239
  yield extractSourceMaps(output, join(output, sourcemapDir));
211
240
  }
212
241
  else if (tech.name === "vue") {
213
- console.log(chalk.green("[✓] Vue.js detected"));
214
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
242
+ printMsg(MSG.Run, "[✓] Vue.js detected");
243
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
215
244
  activeQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
216
245
  const queue = activeQueue;
217
246
  const onFilesDiscovered = (files) => enqueue(queue, files);
247
+ const vueResearchMap = {};
248
+ const vueOnTechnique = research ? createTechniqueRecorder(vueResearchMap) : undefined;
218
249
  // run the full discovery pipeline against the entry URL
219
- const { clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods, threads);
250
+ const { clientSidePaths } = yield vue_discoverJsFiles(url, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods, threads, true, true, vueOnTechnique, output);
220
251
  if (hardTimeoutReached)
221
252
  return;
222
253
  // recurse the same pipeline through every client-side path we found
223
- yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods);
254
+ yield vue_recursiveClientSidePathDownload(clientSidePaths, threads, maxJsSizeMb, onFilesDiscovered, includeMethods, excludeMethods, vueOnTechnique, output);
224
255
  if (hardTimeoutReached)
225
256
  return;
226
257
  yield queue.drain();
227
258
  if (hardTimeoutReached)
228
259
  return;
229
260
  queue.printSummary();
261
+ if (research) {
262
+ fs.writeFileSync(researchOutput, JSON.stringify(vueResearchMap, null, 4));
263
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
264
+ }
230
265
  // extract the source maps
231
266
  yield extractSourceMaps(output, join(output, sourcemapDir));
232
267
  }
233
268
  else if (tech.name === "nuxt") {
234
- console.log(chalk.green("[✓] Nuxt.js detected"));
235
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
269
+ printMsg(MSG.Run, "[✓] Nuxt.js detected");
270
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
236
271
  const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
237
272
  activeQueue = queue;
273
+ const nuxtResearchMap = {};
238
274
  // find the files from the page source
239
275
  const jsFilesFromPageSource = shouldRunMethod("nuxt_getFromPageSource", includeMethods, excludeMethods)
240
276
  ? yield nuxt_getFromPageSource(url)
241
277
  : [];
242
278
  enqueue(queue, jsFilesFromPageSource);
243
- const jsFilesFromStringAnalysis = shouldRunMethod("nuxt_stringAnalysisJSFiles", includeMethods, excludeMethods)
244
- ? yield nuxt_stringAnalysisJSFiles(url, threads)
245
- : [];
279
+ if (research)
280
+ accumulateTechnique(nuxtResearchMap, "nuxt_getFromPageSource", jsFilesFromPageSource);
281
+ const nuxtStringAnalysisResult = shouldRunMethod("nuxt_stringAnalysisJSFiles", includeMethods, excludeMethods)
282
+ ? yield nuxt_stringAnalysisJSFiles(url, threads, output)
283
+ : { jsFiles: [], mapFiles: [] };
284
+ const jsFilesFromStringAnalysis = nuxtStringAnalysisResult.jsFiles;
246
285
  enqueue(queue, jsFilesFromStringAnalysis);
286
+ if (nuxtStringAnalysisResult.mapFiles.length > 0) {
287
+ enqueue(queue, nuxtStringAnalysisResult.mapFiles);
288
+ }
289
+ if (research)
290
+ accumulateTechnique(nuxtResearchMap, "nuxt_stringAnalysisJSFiles", jsFilesFromStringAnalysis);
247
291
  const firstBatch = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
248
- let jsFilesFromAST = [];
292
+ const jsFilesFromAST = [];
249
293
  if (shouldRunMethod("nuxt_astParse", includeMethods, excludeMethods)) {
250
- console.log(chalk.cyan("[i] Analyzing functions in the files found"));
294
+ printMsg(MSG.Header, "[i] Analyzing functions in the files found");
251
295
  for (const jsFile of firstBatch) {
252
296
  jsFilesFromAST.push(...(yield nuxt_astParse(jsFile)));
253
297
  }
254
298
  }
255
299
  enqueue(queue, jsFilesFromAST);
300
+ if (research)
301
+ accumulateTechnique(nuxtResearchMap, "nuxt_astParse", jsFilesFromAST);
256
302
  enqueue(queue, lazyLoadGlobals.getJsUrls());
257
303
  const buildsManifestFiles = shouldRunMethod("nuxt_getBuildsManifest", includeMethods, excludeMethods)
258
304
  ? yield nuxt_getBuildsManifest(url)
259
305
  : [];
260
306
  enqueue(queue, buildsManifestFiles);
307
+ if (research)
308
+ accumulateTechnique(nuxtResearchMap, "nuxt_getBuildsManifest", buildsManifestFiles);
261
309
  yield queue.drain();
262
310
  if (hardTimeoutReached)
263
311
  return;
264
312
  queue.printSummary();
313
+ if (research) {
314
+ fs.writeFileSync(researchOutput, JSON.stringify(nuxtResearchMap, null, 4));
315
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
316
+ }
317
+ // extract the source maps
318
+ yield extractSourceMaps(output, join(output, sourcemapDir));
265
319
  }
266
320
  else if (tech.name === "svelte") {
267
- console.log(chalk.green("[✓] Svelte detected"));
268
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
321
+ printMsg(MSG.Run, "[✓] Svelte detected");
322
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
269
323
  const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
270
324
  activeQueue = queue;
325
+ const svelteResearchMap = {};
271
326
  // find the files from the page source
272
327
  const jsFilesFromPageSource = shouldRunMethod("svelte_getFromPageSource", includeMethods, excludeMethods)
273
328
  ? yield svelte_getFromPageSource(url)
274
329
  : [];
275
330
  enqueue(queue, jsFilesFromPageSource);
331
+ if (research)
332
+ accumulateTechnique(svelteResearchMap, "svelte_getFromPageSource", jsFilesFromPageSource);
276
333
  // probe /<appDir>/version.json — SvelteKit serves this for the `updated` store
277
334
  // but never references it from HTML or JS, so it is invisible to all other steps
278
335
  const appDir = (() => {
@@ -292,27 +349,36 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
292
349
  if (versionJsonFiles.length > 0) {
293
350
  enqueue(queue, versionJsonFiles);
294
351
  }
352
+ if (research)
353
+ accumulateTechnique(svelteResearchMap, "svelte_getVersionJson", versionJsonFiles);
295
354
  // analyze the strings now
296
355
  let jsFilesFromStringAnalysis = [];
297
356
  let mapFilesFromStringAnalysis = [];
298
357
  if (shouldRunMethod("svelte_stringAnalysisJSFiles", includeMethods, excludeMethods)) {
299
- const result = yield svelte_stringAnalysisJSFiles(url, threads);
358
+ const result = yield svelte_stringAnalysisJSFiles(url, threads, output);
300
359
  jsFilesFromStringAnalysis = result.jsFiles;
301
360
  mapFilesFromStringAnalysis = result.mapFiles;
302
361
  enqueue(queue, jsFilesFromStringAnalysis);
303
362
  if (mapFilesFromStringAnalysis.length > 0) {
304
363
  enqueue(queue, mapFilesFromStringAnalysis);
305
364
  }
365
+ if (research) {
366
+ accumulateTechnique(svelteResearchMap, "svelte_stringAnalysisJSFiles", jsFilesFromStringAnalysis);
367
+ accumulateTechnique(svelteResearchMap, "svelte_stringAnalysisJSFiles", mapFilesFromStringAnalysis);
368
+ }
306
369
  }
307
370
  // recursively follow ESM static imports (import ... from "./chunk.js")
371
+ // svelte_followImports reuses react_followImports — tracked under react_followImports key
308
372
  const visited = new Set();
309
373
  let toFollow = [...new Set([...jsFilesFromPageSource, ...jsFilesFromStringAnalysis])];
310
374
  while (toFollow.length > 0) {
311
375
  const newFiles = yield react_followImports(toFollow, maxJsSizeMb, url, visited, threads);
312
376
  if (newFiles.length === 0)
313
377
  break;
314
- console.log(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
378
+ printMsg(MSG.Run, `[✓] Discovered ${newFiles.length} more JS file(s) via imports`);
315
379
  enqueue(queue, newFiles);
380
+ if (research)
381
+ accumulateTechnique(svelteResearchMap, "react_followImports", newFiles);
316
382
  toFollow = newFiles;
317
383
  }
318
384
  // crawl same-origin HTML pages found via <a href> and <link href>,
@@ -320,6 +386,8 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
320
386
  const jsFilesFromPageCrawl = shouldRunMethod("svelte_recursivePageCrawl", includeMethods, excludeMethods)
321
387
  ? yield svelte_recursivePageCrawl(url, maxJsSizeMb, (files) => enqueue(queue, files))
322
388
  : [];
389
+ if (research)
390
+ accumulateTechnique(svelteResearchMap, "svelte_recursivePageCrawl", jsFilesFromPageCrawl);
323
391
  // Svelte/Astro apps use client-side routing — the home page rarely has
324
392
  // <a href> links in its server-rendered HTML. Scan downloaded JS for
325
393
  // embedded page path strings (e.g. "/admin", "/debug") and visit each
@@ -331,31 +399,44 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
331
399
  if (jsFilesFromPathScan.length > 0) {
332
400
  enqueue(queue, jsFilesFromPathScan);
333
401
  }
402
+ if (research)
403
+ accumulateTechnique(svelteResearchMap, "svelte_discoverPagesFromJs", jsFilesFromPathScan);
334
404
  // run string analysis once more to catch JS files discovered during page crawl
335
405
  if ((jsFilesFromPageCrawl.length > 0 || jsFilesFromPathScan.length > 0) &&
336
406
  shouldRunMethod("svelte_stringAnalysisJSFiles", includeMethods, excludeMethods)) {
337
- const { jsFiles: jsFilesFromStringAnalysis2, mapFiles: mapFilesFromStringAnalysis2 } = yield svelte_stringAnalysisJSFiles(url, threads);
407
+ const { jsFiles: jsFilesFromStringAnalysis2, mapFiles: mapFilesFromStringAnalysis2 } = yield svelte_stringAnalysisJSFiles(url, threads, output);
338
408
  enqueue(queue, jsFilesFromStringAnalysis2);
339
409
  if (mapFilesFromStringAnalysis2.length > 0) {
340
410
  enqueue(queue, mapFilesFromStringAnalysis2);
341
411
  }
412
+ if (research) {
413
+ accumulateTechnique(svelteResearchMap, "svelte_stringAnalysisJSFiles", jsFilesFromStringAnalysis2);
414
+ accumulateTechnique(svelteResearchMap, "svelte_stringAnalysisJSFiles", mapFilesFromStringAnalysis2);
415
+ }
342
416
  }
343
417
  yield queue.drain();
344
418
  if (hardTimeoutReached)
345
419
  return;
346
420
  queue.printSummary();
421
+ if (research) {
422
+ fs.writeFileSync(researchOutput, JSON.stringify(svelteResearchMap, null, 4));
423
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
424
+ }
347
425
  yield extractSourceMaps(output, join(output, sourcemapDir));
348
426
  }
349
427
  else if (tech.name === "angular") {
350
- console.log(chalk.green("[✓] Angular detected"));
351
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
428
+ printMsg(MSG.Run, "[✓] Angular detected");
429
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
352
430
  const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
353
431
  activeQueue = queue;
432
+ const angularResearchMap = {};
354
433
  // find the files from the page source
355
434
  const jsFilesFromPageSource = shouldRunMethod("angular_getFromPageSource", includeMethods, excludeMethods)
356
435
  ? yield angular_getFromPageSource(url)
357
436
  : [];
358
437
  enqueue(queue, jsFilesFromPageSource);
438
+ if (research)
439
+ accumulateTechnique(angularResearchMap, "angular_getFromPageSource", jsFilesFromPageSource);
359
440
  // files using the main.js
360
441
  if (shouldRunMethod("angular_getFromMainJs", includeMethods, excludeMethods)) {
361
442
  let mainJsUrl;
@@ -368,10 +449,14 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
368
449
  if (mainJsUrl) {
369
450
  const jsFilesFromMainJs = yield angular_getFromMainJs(mainJsUrl);
370
451
  enqueue(queue, jsFilesFromMainJs);
452
+ if (research)
453
+ accumulateTechnique(angularResearchMap, "angular_getFromMainJs", jsFilesFromMainJs);
371
454
  // recursively follow chunk-to-chunk imports beyond the first hop
372
455
  if (shouldRunMethod("angular_recursiveChunkImports", includeMethods, excludeMethods)) {
373
456
  const transitiveChunks = yield angular_recursiveChunkImports(jsFilesFromMainJs, threads);
374
457
  enqueue(queue, transitiveChunks);
458
+ if (research)
459
+ accumulateTechnique(angularResearchMap, "angular_recursiveChunkImports", transitiveChunks);
375
460
  }
376
461
  }
377
462
  }
@@ -379,16 +464,32 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
379
464
  if (hardTimeoutReached)
380
465
  return;
381
466
  queue.printSummary();
467
+ if (shouldRunMethod("angular_sourcemapUrls", includeMethods, excludeMethods)) {
468
+ const jsUrlsForSourcemaps = queue.seenUrls.filter((u) => /\.m?js($|[?#])/.test(u));
469
+ const mapUrls = yield discoverSourcemapUrls(jsUrlsForSourcemaps, threads, output);
470
+ if (mapUrls.length > 0) {
471
+ const mapQueue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
472
+ enqueue(mapQueue, mapUrls);
473
+ yield mapQueue.drain();
474
+ }
475
+ }
476
+ if (research) {
477
+ fs.writeFileSync(researchOutput, JSON.stringify(angularResearchMap, null, 4));
478
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
479
+ }
480
+ // extract the source maps
481
+ yield extractSourceMaps(output, join(output, sourcemapDir));
382
482
  }
383
483
  else if (tech.name === "react") {
384
- console.log(chalk.green("[✓] React detected"));
385
- console.log(chalk.yellow(`Evidence: ${tech.evidence}`));
484
+ printMsg(MSG.Run, "[✓] React detected");
485
+ printMsg(MSG.Warn, `Evidence: ${tech.evidence}`);
386
486
  const queue = new DownloadQueue(output, threads, {
387
487
  compactOutput: true,
388
488
  onProgress: (progress) => activeDownloadProgress === null || activeDownloadProgress === void 0 ? void 0 : activeDownloadProgress.update(progress),
389
489
  alreadyBatchTargetRoot: isBatch,
390
490
  });
391
491
  activeQueue = queue;
492
+ const reactResearchMap = {};
392
493
  // Seed: <script src> tags + <link rel="modulepreload"> (Vite vendor chunks)
393
494
  const jsFilesFromPageSource = shouldRunMethod("react_getScriptTags", includeMethods, excludeMethods)
394
495
  ? yield react_getScriptTags(url, maxJsSizeMb, output, isBatch)
@@ -396,6 +497,8 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
396
497
  if (hardTimeoutReached)
397
498
  return;
398
499
  enqueue(queue, jsFilesFromPageSource);
500
+ if (research)
501
+ accumulateTechnique(reactResearchMap, "react_getScriptTags", jsFilesFromPageSource);
399
502
  // webpack-style chunk path builders (CRA / custom webpack configs)
400
503
  const webpackChunkPaths = shouldRunMethod("react_webpackChunkPaths", includeMethods, excludeMethods)
401
504
  ? yield react_webpackChunkPaths(url, maxJsSizeMb, jsFilesFromPageSource, threads)
@@ -406,6 +509,8 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
406
509
  activeDownloadProgress.update(queue.progress);
407
510
  try {
408
511
  enqueue(queue, webpackChunkPaths);
512
+ if (research)
513
+ accumulateTechnique(reactResearchMap, "react_webpackChunkPaths", webpackChunkPaths);
409
514
  // Recursively follow ESM imports and Vite __vite_mapDeps references.
410
515
  // visited starts empty so the seed files are fetched and parsed in the first round.
411
516
  const visited = new Set();
@@ -419,14 +524,18 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
419
524
  break;
420
525
  progressLog(chalk.green(`[✓] Discovered ${newFiles.length} more JS file(s) via imports`));
421
526
  enqueue(queue, newFiles);
527
+ if (research)
528
+ accumulateTechnique(reactResearchMap, "react_followImports", newFiles);
422
529
  toFollow = newFiles;
423
530
  }
424
531
  }
425
532
  // Sourcemaps for everything discovered
426
533
  if (!hardTimeoutReached &&
427
534
  shouldRunMethod("react_sourcemapUrls", includeMethods, excludeMethods)) {
428
- const sourcemapUrls = yield react_sourcemapUrls([...visited], threads);
535
+ const sourcemapUrls = yield react_sourcemapUrls([...visited], threads, output);
429
536
  enqueue(queue, sourcemapUrls);
537
+ if (research)
538
+ accumulateTechnique(reactResearchMap, "react_sourcemapUrls", sourcemapUrls);
430
539
  }
431
540
  yield queue.drain();
432
541
  }
@@ -437,50 +546,38 @@ const lazyLoad = (url_1, output_1, strictScope_1, inputScope_1, threads_1, subse
437
546
  if (hardTimeoutReached)
438
547
  return;
439
548
  queue.printSummary();
549
+ if (research) {
550
+ fs.writeFileSync(researchOutput, JSON.stringify(reactResearchMap, null, 4));
551
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
552
+ }
440
553
  yield extractSourceMaps(output, join(output, sourcemapDir));
441
554
  }
442
555
  }
443
556
  else {
444
- console.error(chalk.red("[!] Framework not detected :("));
445
- console.log(chalk.magenta(CONFIG.notFoundMessage));
446
- console.log(chalk.yellow("[i] Trying to download loaded JS files"));
447
- const js_urls = yield downloadLoadedJs(url);
557
+ printMsg(MSG.Warn, "[i] Framework not detected — falling back to generic JS extraction");
558
+ globals.setTech("generic");
559
+ // If the caller didn't customize scope (still the "*" default) and isn't
560
+ // using --strict-scope, default the generic crawl's scope to the origin
561
+ // reached after following redirects, rather than crawling the whole web.
562
+ if (!strictScope && inputScope.length === 1 && inputScope[0] === "*") {
563
+ const resolvedScope = yield resolveGenericScope(url, maxRedirects);
564
+ lazyLoadGlobals.setScope(resolvedScope);
565
+ }
566
+ // Downloads JS incrementally as pages are crawled (see generic_crawlPages.ts) —
567
+ // the returned list is only used for the final summary count.
568
+ const genericResearchMap = {};
569
+ const allUrls = yield generic_crawlPages(url, maxJsSizeMb, output, maxPageVisits, threads, research ? genericResearchMap : undefined, stringsEnabled, stringsMaxIterations, getLastInterceptedUrls(), stagnationTimeinMs, stagnationPercentage, stagnationMonitorMs);
448
570
  if (hardTimeoutReached)
449
571
  return;
450
- if (js_urls && js_urls.length > 0) {
451
- console.log(chalk.green(`[✓] Found ${js_urls.length} JS chunks`));
452
- // Second-chance tech detection: scan downloaded URL paths for
453
- // framework signatures that Puppeteer may have missed on timeout
454
- // (e.g. Next.js served at a non-root basePath).
455
- let secondChanceTech = null;
456
- let secondChanceEvidence = "";
457
- for (const u of js_urls) {
458
- if (u.includes("/_next/")) {
459
- secondChanceTech = "next";
460
- secondChanceEvidence = u;
461
- break;
462
- }
463
- if (u.includes("/_nuxt/")) {
464
- secondChanceTech = "nuxt";
465
- secondChanceEvidence = u;
466
- break;
467
- }
468
- if (u.includes("/_app/immutable/")) {
469
- secondChanceTech = "svelte";
470
- secondChanceEvidence = u;
471
- break;
472
- }
473
- }
474
- if (secondChanceTech) {
475
- console.log(chalk.green(`[✓] Detected ${secondChanceTech} from downloaded file paths (evidence: ${secondChanceEvidence})`));
476
- globals.setTech(secondChanceTech);
477
- }
478
- const queue = new DownloadQueue(output, threads, { alreadyBatchTargetRoot: isBatch });
479
- enqueue(queue, js_urls);
480
- yield queue.drain();
481
- if (hardTimeoutReached)
482
- return;
483
- queue.printSummary();
572
+ if (allUrls.length > 0) {
573
+ printMsg(MSG.Run, `[✓] Found ${allUrls.length} JS file(s)`);
574
+ }
575
+ else {
576
+ printMsg(MSG.Warn, "[i] No JS files discovered");
577
+ }
578
+ if (research) {
579
+ fs.writeFileSync(researchOutput, JSON.stringify(genericResearchMap, null, 4));
580
+ printMsg(MSG.Run, "[✓] Research mode enabled. Technique efficiency written to " + researchOutput);
484
581
  }
485
582
  }
486
583
  }
@@ -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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"}