@js-recon/js-recon 1.3.1-beta.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 (361) hide show
  1. package/.gitattributes +2 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. package/.github/ISSUE_TEMPLATE/new_tech_support_request.md +26 -0
  5. package/.github/workflows/build-and-prettify.yaml +121 -0
  6. package/.github/workflows/pr_checker.yml +22 -0
  7. package/.github/workflows/publish-js-recon.yml +169 -0
  8. package/.prettierignore +2 -0
  9. package/.prettierrc +6 -0
  10. package/CHANGELOG.md +692 -0
  11. package/CLAUDE.md +290 -0
  12. package/Dockerfile +34 -0
  13. package/LICENSE +21 -0
  14. package/README.md +101 -0
  15. package/SECURITY.md +37 -0
  16. package/build/analyze/engine/astEngine.js +224 -0
  17. package/build/analyze/engine/astEngine.js.map +1 -0
  18. package/build/analyze/engine/index.js +59 -0
  19. package/build/analyze/engine/index.js.map +1 -0
  20. package/build/analyze/engine/requestEngine.js +100 -0
  21. package/build/analyze/engine/requestEngine.js.map +1 -0
  22. package/build/analyze/helpers/engineHelpers/findDirectAssignment.js +37 -0
  23. package/build/analyze/helpers/engineHelpers/findDirectAssignment.js.map +1 -0
  24. package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +29 -0
  25. package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -0
  26. package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js +38 -0
  27. package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js.map +1 -0
  28. package/build/analyze/helpers/engineHelpers/taintFlow.js +250 -0
  29. package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -0
  30. package/build/analyze/helpers/initRules.js +111 -0
  31. package/build/analyze/helpers/initRules.js.map +1 -0
  32. package/build/analyze/helpers/outputHelper.js +14 -0
  33. package/build/analyze/helpers/outputHelper.js.map +1 -0
  34. package/build/analyze/helpers/schemas.js +57 -0
  35. package/build/analyze/helpers/schemas.js.map +1 -0
  36. package/build/analyze/helpers/validate.js +89 -0
  37. package/build/analyze/helpers/validate.js.map +1 -0
  38. package/build/analyze/index.js +150 -0
  39. package/build/analyze/index.js.map +1 -0
  40. package/build/analyze/types/index.js +2 -0
  41. package/build/analyze/types/index.js.map +1 -0
  42. package/build/api_gateway/checkFeasibility.js +41 -0
  43. package/build/api_gateway/checkFeasibility.js.map +1 -0
  44. package/build/api_gateway/checkFireWallBlocking.js +33 -0
  45. package/build/api_gateway/checkFireWallBlocking.js.map +1 -0
  46. package/build/api_gateway/genReq.js +205 -0
  47. package/build/api_gateway/genReq.js.map +1 -0
  48. package/build/api_gateway/index.js +291 -0
  49. package/build/api_gateway/index.js.map +1 -0
  50. package/build/endpoints/gen_report/gen_json.js +30 -0
  51. package/build/endpoints/gen_report/gen_json.js.map +1 -0
  52. package/build/endpoints/gen_report/utility/iterate_n_store.js +64 -0
  53. package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -0
  54. package/build/endpoints/index.js +101 -0
  55. package/build/endpoints/index.js.map +1 -0
  56. package/build/endpoints/next_js/client_jsFilesHref.js +100 -0
  57. package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -0
  58. package/build/endpoints/next_js/client_jsonParse.js +89 -0
  59. package/build/endpoints/next_js/client_jsonParse.js.map +1 -0
  60. package/build/endpoints/next_js/client_mappedJsonFile.js +103 -0
  61. package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -0
  62. package/build/endpoints/next_js/client_subsequentRequests.js +211 -0
  63. package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -0
  64. package/build/fingerprint/index.js +123 -0
  65. package/build/fingerprint/index.js.map +1 -0
  66. package/build/globalConfig.js +16 -0
  67. package/build/globalConfig.js.map +1 -0
  68. package/build/index.js +332 -0
  69. package/build/index.js.map +1 -0
  70. package/build/lazyLoad/angular/angular_getFromMainJs.js +55 -0
  71. package/build/lazyLoad/angular/angular_getFromMainJs.js.map +1 -0
  72. package/build/lazyLoad/angular/angular_getFromPageSource.js +43 -0
  73. package/build/lazyLoad/angular/angular_getFromPageSource.js.map +1 -0
  74. package/build/lazyLoad/downloadFilesUtil.js +127 -0
  75. package/build/lazyLoad/downloadFilesUtil.js.map +1 -0
  76. package/build/lazyLoad/downloadLoadedJsUtil.js +44 -0
  77. package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -0
  78. package/build/lazyLoad/downloadQueue.js +191 -0
  79. package/build/lazyLoad/downloadQueue.js.map +1 -0
  80. package/build/lazyLoad/globals.js +107 -0
  81. package/build/lazyLoad/globals.js.map +1 -0
  82. package/build/lazyLoad/index.js +377 -0
  83. package/build/lazyLoad/index.js.map +1 -0
  84. package/build/lazyLoad/next_js/NextJsCrawler.js +332 -0
  85. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -0
  86. package/build/lazyLoad/next_js/next_GetJSScript.js +126 -0
  87. package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -0
  88. package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +83 -0
  89. package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -0
  90. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +222 -0
  91. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -0
  92. package/build/lazyLoad/next_js/next_SubsequentRequests.js +208 -0
  93. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -0
  94. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +37 -0
  95. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -0
  96. package/build/lazyLoad/next_js/next_buildId.js +55 -0
  97. package/build/lazyLoad/next_js/next_buildId.js.map +1 -0
  98. package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
  99. package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
  100. package/build/lazyLoad/next_js/next_globals.js +8 -0
  101. package/build/lazyLoad/next_js/next_globals.js.map +1 -0
  102. package/build/lazyLoad/next_js/next_parseLayoutJs.js +116 -0
  103. package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -0
  104. package/build/lazyLoad/next_js/next_promiseResolve.js +85 -0
  105. package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -0
  106. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +51 -0
  107. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -0
  108. package/build/lazyLoad/nuxt_js/nuxt_astParse.js +202 -0
  109. package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -0
  110. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +82 -0
  111. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -0
  112. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +108 -0
  113. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -0
  114. package/build/lazyLoad/react/react_followImports.js +105 -0
  115. package/build/lazyLoad/react/react_followImports.js.map +1 -0
  116. package/build/lazyLoad/react/react_getScriptTags.js +52 -0
  117. package/build/lazyLoad/react/react_getScriptTags.js.map +1 -0
  118. package/build/lazyLoad/react/react_sourcemapUrls.js +44 -0
  119. package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -0
  120. package/build/lazyLoad/react/react_webpackChunkPaths.js +188 -0
  121. package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -0
  122. package/build/lazyLoad/sourcemap.js +188 -0
  123. package/build/lazyLoad/sourcemap.js.map +1 -0
  124. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +162 -0
  125. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -0
  126. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +91 -0
  127. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -0
  128. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +180 -0
  129. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -0
  130. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +123 -0
  131. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -0
  132. package/build/lazyLoad/techDetect/checkAngularJS.js +70 -0
  133. package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -0
  134. package/build/lazyLoad/techDetect/checkNextJS.js +45 -0
  135. package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -0
  136. package/build/lazyLoad/techDetect/checkNuxtJS.js +39 -0
  137. package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -0
  138. package/build/lazyLoad/techDetect/checkReact.js +86 -0
  139. package/build/lazyLoad/techDetect/checkReact.js.map +1 -0
  140. package/build/lazyLoad/techDetect/checkSvelte.js +69 -0
  141. package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -0
  142. package/build/lazyLoad/techDetect/checkVueJS.js +118 -0
  143. package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -0
  144. package/build/lazyLoad/techDetect/index.js +161 -0
  145. package/build/lazyLoad/techDetect/index.js.map +1 -0
  146. package/build/lazyLoad/vue/vue_RuntimeJs.js +169 -0
  147. package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -0
  148. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +102 -0
  149. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -0
  150. package/build/lazyLoad/vue/vue_discoverJsFiles.js +82 -0
  151. package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
  152. package/build/lazyLoad/vue/vue_getClientSidePaths.js +155 -0
  153. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
  154. package/build/lazyLoad/vue/vue_jsImports.js +76 -0
  155. package/build/lazyLoad/vue/vue_jsImports.js.map +1 -0
  156. package/build/lazyLoad/vue/vue_pageSrc.js +60 -0
  157. package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -0
  158. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +64 -0
  159. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -0
  160. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +142 -0
  161. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
  162. package/build/lazyLoad/vue/vue_severalJsFilesHome.js +57 -0
  163. package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -0
  164. package/build/lazyLoad/vue/vue_sourcemapExtract.js +166 -0
  165. package/build/lazyLoad/vue/vue_sourcemapExtract.js.map +1 -0
  166. package/build/lazyLoad/vue/vue_stringJsFiles.js +148 -0
  167. package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -0
  168. package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
  169. package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
  170. package/build/load/index.js +316 -0
  171. package/build/load/index.js.map +1 -0
  172. package/build/map/graphql/resolveGraphql.js +296 -0
  173. package/build/map/graphql/resolveGraphql.js.map +1 -0
  174. package/build/map/index.js +261 -0
  175. package/build/map/index.js.map +1 -0
  176. package/build/map/next_js/getAxiosInstances.js +64 -0
  177. package/build/map/next_js/getAxiosInstances.js.map +1 -0
  178. package/build/map/next_js/getExports.js +101 -0
  179. package/build/map/next_js/getExports.js.map +1 -0
  180. package/build/map/next_js/getFetchInstances.js +139 -0
  181. package/build/map/next_js/getFetchInstances.js.map +1 -0
  182. package/build/map/next_js/getTurbopackConnections.js +255 -0
  183. package/build/map/next_js/getTurbopackConnections.js.map +1 -0
  184. package/build/map/next_js/getWebpackConnections.js +235 -0
  185. package/build/map/next_js/getWebpackConnections.js.map +1 -0
  186. package/build/map/next_js/interactive.js +69 -0
  187. package/build/map/next_js/interactive.js.map +1 -0
  188. package/build/map/next_js/interactive_helpers/commandHandler.js +310 -0
  189. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -0
  190. package/build/map/next_js/interactive_helpers/commandHelpers.js +245 -0
  191. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -0
  192. package/build/map/next_js/interactive_helpers/esqueryGen.js +370 -0
  193. package/build/map/next_js/interactive_helpers/esqueryGen.js.map +1 -0
  194. package/build/map/next_js/interactive_helpers/helpMenu.js +12 -0
  195. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -0
  196. package/build/map/next_js/interactive_helpers/inputPatch.js +207 -0
  197. package/build/map/next_js/interactive_helpers/inputPatch.js.map +1 -0
  198. package/build/map/next_js/interactive_helpers/keybindings.js +90 -0
  199. package/build/map/next_js/interactive_helpers/keybindings.js.map +1 -0
  200. package/build/map/next_js/interactive_helpers/printer.js +23 -0
  201. package/build/map/next_js/interactive_helpers/printer.js.map +1 -0
  202. package/build/map/next_js/interactive_helpers/ui.js +88 -0
  203. package/build/map/next_js/interactive_helpers/ui.js.map +1 -0
  204. package/build/map/next_js/resolveAxios.js +152 -0
  205. package/build/map/next_js/resolveAxios.js.map +1 -0
  206. package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js +64 -0
  207. package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js.map +1 -0
  208. package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js +48 -0
  209. package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js.map +1 -0
  210. package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js +34 -0
  211. package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js.map +1 -0
  212. package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +39 -0
  213. package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -0
  214. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +312 -0
  215. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -0
  216. package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +173 -0
  217. package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -0
  218. package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +261 -0
  219. package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -0
  220. package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js +206 -0
  221. package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js.map +1 -0
  222. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js +168 -0
  223. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js.map +1 -0
  224. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js +121 -0
  225. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js.map +1 -0
  226. package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +274 -0
  227. package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -0
  228. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +518 -0
  229. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -0
  230. package/build/map/next_js/resolveAxiosHelpers/traceBody.js +913 -0
  231. package/build/map/next_js/resolveAxiosHelpers/traceBody.js.map +1 -0
  232. package/build/map/next_js/resolveFetch.js +533 -0
  233. package/build/map/next_js/resolveFetch.js.map +1 -0
  234. package/build/map/next_js/resolveNewRequest.js +749 -0
  235. package/build/map/next_js/resolveNewRequest.js.map +1 -0
  236. package/build/map/next_js/resolveServerActions.js +449 -0
  237. package/build/map/next_js/resolveServerActions.js.map +1 -0
  238. package/build/map/next_js/utils.js +1600 -0
  239. package/build/map/next_js/utils.js.map +1 -0
  240. package/build/map/react_js/getReactConnections.js +303 -0
  241. package/build/map/react_js/getReactConnections.js.map +1 -0
  242. package/build/map/react_js/interactive.js +4 -0
  243. package/build/map/react_js/interactive.js.map +1 -0
  244. package/build/map/react_js/react_resolveFetch.js +6 -0
  245. package/build/map/react_js/react_resolveFetch.js.map +1 -0
  246. package/build/map/svelte_js/interactive.js +58 -0
  247. package/build/map/svelte_js/interactive.js.map +1 -0
  248. package/build/map/svelte_js/interactive_helpers/commandHandler.js +4 -0
  249. package/build/map/svelte_js/interactive_helpers/commandHandler.js.map +1 -0
  250. package/build/map/vue_js/bodyResolver.js +477 -0
  251. package/build/map/vue_js/bodyResolver.js.map +1 -0
  252. package/build/map/vue_js/crossFileResolver.js +438 -0
  253. package/build/map/vue_js/crossFileResolver.js.map +1 -0
  254. package/build/map/vue_js/getViteConnections.js +343 -0
  255. package/build/map/vue_js/getViteConnections.js.map +1 -0
  256. package/build/map/vue_js/interactive.js +67 -0
  257. package/build/map/vue_js/interactive.js.map +1 -0
  258. package/build/map/vue_js/interactive_helpers/commandHandler.js +307 -0
  259. package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -0
  260. package/build/map/vue_js/interactive_helpers/commandHelpers.js +39 -0
  261. package/build/map/vue_js/interactive_helpers/commandHelpers.js.map +1 -0
  262. package/build/map/vue_js/interactive_helpers/helpMenu.js +12 -0
  263. package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
  264. package/build/map/vue_js/taint_utils.js +621 -0
  265. package/build/map/vue_js/taint_utils.js.map +1 -0
  266. package/build/map/vue_js/vue_resolveFetch.js +416 -0
  267. package/build/map/vue_js/vue_resolveFetch.js.map +1 -0
  268. package/build/map/vue_js/vue_resolveHttpClient.js +738 -0
  269. package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -0
  270. package/build/map/vue_js/vue_resolveXhr.js +282 -0
  271. package/build/map/vue_js/vue_resolveXhr.js.map +1 -0
  272. package/build/mcp/chatOneShot.js +101 -0
  273. package/build/mcp/chatOneShot.js.map +1 -0
  274. package/build/mcp/claudeCodeCreds.js +150 -0
  275. package/build/mcp/claudeCodeCreds.js.map +1 -0
  276. package/build/mcp/cli.js +372 -0
  277. package/build/mcp/cli.js.map +1 -0
  278. package/build/mcp/commands.js +227 -0
  279. package/build/mcp/commands.js.map +1 -0
  280. package/build/mcp/config.js +68 -0
  281. package/build/mcp/config.js.map +1 -0
  282. package/build/mcp/index.js +50 -0
  283. package/build/mcp/index.js.map +1 -0
  284. package/build/mcp/intent.js +204 -0
  285. package/build/mcp/intent.js.map +1 -0
  286. package/build/mcp/jobs.js +199 -0
  287. package/build/mcp/jobs.js.map +1 -0
  288. package/build/mcp/mcpServer.js +241 -0
  289. package/build/mcp/mcpServer.js.map +1 -0
  290. package/build/mcp/providers.js +170 -0
  291. package/build/mcp/providers.js.map +1 -0
  292. package/build/mcp/skills.js +115 -0
  293. package/build/mcp/skills.js.map +1 -0
  294. package/build/mcp/tools.js +185 -0
  295. package/build/mcp/tools.js.map +1 -0
  296. package/build/refactor/index.js +85 -0
  297. package/build/refactor/index.js.map +1 -0
  298. package/build/refactor/next/index.js +109 -0
  299. package/build/refactor/next/index.js.map +1 -0
  300. package/build/refactor/react/index.js +636 -0
  301. package/build/refactor/react/index.js.map +1 -0
  302. package/build/report/index.js +68 -0
  303. package/build/report/index.js.map +1 -0
  304. package/build/report/utility/dataTables/genDataTablesPage.js +158 -0
  305. package/build/report/utility/dataTables/genDataTablesPage.js.map +1 -0
  306. package/build/report/utility/genHtml.js +516 -0
  307. package/build/report/utility/genHtml.js.map +1 -0
  308. package/build/report/utility/initReportDb.js +96 -0
  309. package/build/report/utility/initReportDb.js.map +1 -0
  310. package/build/report/utility/markdownGen/addAnalyze.js +53 -0
  311. package/build/report/utility/markdownGen/addAnalyze.js.map +1 -0
  312. package/build/report/utility/markdownGen/addMappedJson.js +33 -0
  313. package/build/report/utility/markdownGen/addMappedJson.js.map +1 -0
  314. package/build/report/utility/populateDb/populateAnalysisFindings.js +31 -0
  315. package/build/report/utility/populateDb/populateAnalysisFindings.js.map +1 -0
  316. package/build/report/utility/populateDb/populateEndpoints.js +50 -0
  317. package/build/report/utility/populateDb/populateEndpoints.js.map +1 -0
  318. package/build/report/utility/populateDb/populateMappedJson.js +31 -0
  319. package/build/report/utility/populateDb/populateMappedJson.js.map +1 -0
  320. package/build/report/utility/populateDb/populateMappedOpenapi.js +49 -0
  321. package/build/report/utility/populateDb/populateMappedOpenapi.js.map +1 -0
  322. package/build/run/index.js +446 -0
  323. package/build/run/index.js.map +1 -0
  324. package/build/run/interruptHandler.js +93 -0
  325. package/build/run/interruptHandler.js.map +1 -0
  326. package/build/strings/index.js +239 -0
  327. package/build/strings/index.js.map +1 -0
  328. package/build/strings/openapi.js +63 -0
  329. package/build/strings/openapi.js.map +1 -0
  330. package/build/strings/permutate.js +62 -0
  331. package/build/strings/permutate.js.map +1 -0
  332. package/build/strings/secrets.js +102 -0
  333. package/build/strings/secrets.js.map +1 -0
  334. package/build/utility/ai.js +97 -0
  335. package/build/utility/ai.js.map +1 -0
  336. package/build/utility/configureSandbox.js +14 -0
  337. package/build/utility/configureSandbox.js.map +1 -0
  338. package/build/utility/globals.js +322 -0
  339. package/build/utility/globals.js.map +1 -0
  340. package/build/utility/interfaces.js +2 -0
  341. package/build/utility/interfaces.js.map +1 -0
  342. package/build/utility/makeReq.js +448 -0
  343. package/build/utility/makeReq.js.map +1 -0
  344. package/build/utility/openapiGenerator.js +254 -0
  345. package/build/utility/openapiGenerator.js.map +1 -0
  346. package/build/utility/postmanGenerator.js +216 -0
  347. package/build/utility/postmanGenerator.js.map +1 -0
  348. package/build/utility/progressLog.js +50 -0
  349. package/build/utility/progressLog.js.map +1 -0
  350. package/build/utility/puppeteerInstance.js +5 -0
  351. package/build/utility/puppeteerInstance.js.map +1 -0
  352. package/build/utility/replaceUrlPlaceholders.js +48 -0
  353. package/build/utility/replaceUrlPlaceholders.js.map +1 -0
  354. package/build/utility/resolvePath.js +44 -0
  355. package/build/utility/resolvePath.js.map +1 -0
  356. package/build/utility/runSandboxed.js +42 -0
  357. package/build/utility/runSandboxed.js.map +1 -0
  358. package/build/utility/urlUtils.js +21 -0
  359. package/build/utility/urlUtils.js.map +1 -0
  360. package/contributing/nextjs.md +410 -0
  361. package/package.json +75 -0
@@ -0,0 +1,261 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import fs from "fs";
12
+ // Next.JS
13
+ import getWebpackConnections from "./next_js/getWebpackConnections.js";
14
+ import getTurbopackConnections from "./next_js/getTurbopackConnections.js";
15
+ import getFetchInstances from "./next_js/getFetchInstances.js";
16
+ import resolveFetch from "./next_js/resolveFetch.js";
17
+ import resolveNewRequest from "./next_js/resolveNewRequest.js";
18
+ import interactive, { runCommands as nextRunCommands } from "./next_js/interactive.js";
19
+ import { existsSync, readFileSync } from "fs";
20
+ import getAxiosInstances from "./next_js/getAxiosInstances.js";
21
+ import resolveAxios from "./next_js/resolveAxios.js";
22
+ import { getOpenapi, getOpenapiOutput, getOpenapiOutputFile, getGraphqlEnabled } from "../utility/globals.js";
23
+ import resolveGraphql from "./graphql/resolveGraphql.js";
24
+ import { generateOpenapiV3Spec } from "../utility/openapiGenerator.js";
25
+ import { generatePostmanCollection } from "../utility/postmanGenerator.js";
26
+ import getExports from "./next_js/getExports.js";
27
+ import resolveServerActions from "./next_js/resolveServerActions.js";
28
+ // Vue.JS
29
+ import getViteConnections from "./vue_js/getViteConnections.js";
30
+ import vueInteractive, { runCommands as vueRunCommands } from "./vue_js/interactive.js";
31
+ import vue_resolveFetch from "./vue_js/vue_resolveFetch.js";
32
+ // Svelte/Astro
33
+ import svelteInteractive, { runCommands as svelteRunCommands } from "./svelte_js/interactive.js";
34
+ // React
35
+ import getReactConnections from "./react_js/getReactConnections.js";
36
+ import reactInteractive, { runCommands as reactRunCommands } from "./react_js/interactive.js";
37
+ import react_resolveFetch from "./react_js/react_resolveFetch.js";
38
+ // XHR resolution (shared across Vite-based techs)
39
+ import vue_resolveXhr from "./vue_js/vue_resolveXhr.js";
40
+ import vue_resolveHttpClient from "./vue_js/vue_resolveHttpClient.js";
41
+ const availableTech = {
42
+ next: "Next.JS",
43
+ vue: "Vue.JS",
44
+ react: "React",
45
+ svelte: "Svelte/Astro",
46
+ };
47
+ const availableFormats = {
48
+ json: "JSON",
49
+ };
50
+ /**
51
+ * Maps and analyzes JavaScript code to identify functions, API calls, and connections.
52
+ *
53
+ * This function orchestrates the mapping process by:
54
+ * 1. Analyzing webpack connections and chunk relationships
55
+ * 2. Extracting exports and function definitions
56
+ * 3. Identifying fetch and axios instances
57
+ * 4. Resolving API calls and their parameters
58
+ * 5. Optionally generating OpenAPI specifications
59
+ *
60
+ * @param directory - Directory containing JavaScript files to analyze
61
+ * @param output - Base filename for output files (without extension)
62
+ * @param formats - Array of output formats to generate (e.g., ['json'])
63
+ * @param tech - Technology stack identifier (e.g., 'next' for Next.js)
64
+ * @param list - Whether to list available technologies instead of running analysis
65
+ * @param interactive_mode - Whether to launch interactive mode after analysis
66
+ * @returns Promise that resolves when mapping analysis is complete
67
+ */
68
+ const map = (directory_1, output_1, formats_1, tech_1, list_1, interactive_mode_1, ...args_1) => __awaiter(void 0, [directory_1, output_1, formats_1, tech_1, list_1, interactive_mode_1, ...args_1], void 0, function* (directory, output, formats, tech, list, interactive_mode, commands = []) {
69
+ console.log(chalk.cyan("[i] Running 'map' module"));
70
+ if (list) {
71
+ console.log(chalk.cyan("Available technologies:"));
72
+ for (const [key, value] of Object.entries(availableTech)) {
73
+ console.log(chalk.cyan(`- '${key}': ${value}`));
74
+ }
75
+ return;
76
+ }
77
+ // iterate through all the formats, and match it with the available formats
78
+ for (const format of formats) {
79
+ if (!Object.keys(availableFormats).includes(format)) {
80
+ console.error(chalk.red(`[!] Invalid format: ${format}`));
81
+ process.exit(4);
82
+ }
83
+ }
84
+ if (!tech) {
85
+ console.error(chalk.red("[!] Please specify a technology with -t/--tech. Run with -l/--list to see available technologies"));
86
+ process.exit(5);
87
+ }
88
+ if (!directory) {
89
+ console.error(chalk.red("[!] Please specify a directory with -d/--directory"));
90
+ process.exit(6);
91
+ }
92
+ if (tech === "next") {
93
+ let chunks;
94
+ let allOutputFilesAvailable = true;
95
+ Object.keys(availableFormats).map((key, value) => {
96
+ if (!existsSync(`${output}.${key}`)) {
97
+ allOutputFilesAvailable = false;
98
+ }
99
+ });
100
+ if (!allOutputFilesAvailable) {
101
+ // skip regeneration if output file already exists
102
+ chunks = yield getWebpackConnections(directory, output, formats);
103
+ // also collect Turbopack chunks (Next.JS apps may be built with either bundler)
104
+ chunks = yield getTurbopackConnections(directory, output, formats, chunks);
105
+ // get the exports
106
+ chunks = yield getExports(chunks);
107
+ // now, iterate through them, and check fetch instances
108
+ chunks = yield getFetchInstances(chunks, output, formats);
109
+ // now, iterate through them, and check axios instances
110
+ chunks = yield getAxiosInstances(chunks, output, formats);
111
+ }
112
+ else {
113
+ // read the JSON file, and load the value
114
+ chunks = JSON.parse(readFileSync(`${output}.json`, { encoding: "utf8" }));
115
+ }
116
+ // resolve fetch once you've got all
117
+ yield resolveFetch(chunks, directory);
118
+ // also, the axios instances
119
+ yield resolveAxios(chunks, directory);
120
+ // wrapper-class HTTP requests: new X({url, method, ...})
121
+ yield resolveNewRequest(chunks, directory);
122
+ // Next.js Server Actions registered via createServerReference(...)
123
+ yield resolveServerActions(chunks, directory);
124
+ if (commands.length > 0) {
125
+ yield nextRunCommands(chunks, `${output}.json`, commands);
126
+ }
127
+ else if (interactive_mode) {
128
+ yield interactive(chunks, `${output}.json`);
129
+ }
130
+ if (getOpenapi() === true && getGraphqlEnabled()) {
131
+ yield resolveGraphql(directory);
132
+ }
133
+ // check if the openapi output is enabled. if so, then write to file
134
+ if (getOpenapi() === true) {
135
+ // convert the openapi output to JSON
136
+ // it should be openapi v3 specification
137
+ const openapiSpec = generateOpenapiV3Spec(getOpenapiOutput(), chunks);
138
+ const openapiJson = JSON.stringify(openapiSpec, null, 2);
139
+ // write to file
140
+ fs.writeFileSync(getOpenapiOutputFile(), openapiJson);
141
+ console.log(chalk.green(`[✓] Generated OpenAPI spec at ${getOpenapiOutputFile()}`));
142
+ // Also emit a Postman Collection v2.1 — Bruno/Insomnia/Postman use its
143
+ // nested `item` arrays to render real folder hierarchies on import,
144
+ // which a flat OpenAPI tag list can't represent.
145
+ const postmanCollection = generatePostmanCollection(getOpenapiOutput());
146
+ const openapiOutputFile = getOpenapiOutputFile();
147
+ const postmanOutputFile = openapiOutputFile.endsWith(".json")
148
+ ? openapiOutputFile.replace(/\.json$/, ".postman_collection.json")
149
+ : `${openapiOutputFile}.postman_collection.json`;
150
+ fs.writeFileSync(postmanOutputFile, JSON.stringify(postmanCollection, null, 2));
151
+ console.log(chalk.green(`[✓] Generated Postman Collection at ${postmanOutputFile}`));
152
+ }
153
+ }
154
+ else if (tech === "vue") {
155
+ let chunks;
156
+ if (!existsSync(`${output}.json`)) {
157
+ chunks = yield getViteConnections(directory, output, formats);
158
+ }
159
+ else {
160
+ chunks = JSON.parse(readFileSync(`${output}.json`, { encoding: "utf8" }));
161
+ }
162
+ // Resolve fetch instances across all Vue.JS files
163
+ yield vue_resolveFetch(directory);
164
+ yield vue_resolveXhr(directory);
165
+ yield vue_resolveHttpClient(directory);
166
+ if (commands.length > 0) {
167
+ yield vueRunCommands(chunks, `${output}.json`, commands);
168
+ }
169
+ else if (interactive_mode) {
170
+ yield vueInteractive(chunks, `${output}.json`);
171
+ }
172
+ if (getOpenapi() === true && getGraphqlEnabled()) {
173
+ yield resolveGraphql(directory);
174
+ }
175
+ // Generate OpenAPI spec and Postman collection if enabled
176
+ if (getOpenapi() === true) {
177
+ const openapiSpec = generateOpenapiV3Spec(getOpenapiOutput(), chunks);
178
+ const openapiJson = JSON.stringify(openapiSpec, null, 2);
179
+ fs.writeFileSync(getOpenapiOutputFile(), openapiJson);
180
+ console.log(chalk.green(`[✓] Generated OpenAPI spec at ${getOpenapiOutputFile()}`));
181
+ const postmanCollection = generatePostmanCollection(getOpenapiOutput());
182
+ const openapiOutputFile = getOpenapiOutputFile();
183
+ const postmanOutputFile = openapiOutputFile.endsWith(".json")
184
+ ? openapiOutputFile.replace(/\.json$/, ".postman_collection.json")
185
+ : `${openapiOutputFile}.postman_collection.json`;
186
+ fs.writeFileSync(postmanOutputFile, JSON.stringify(postmanCollection, null, 2));
187
+ console.log(chalk.green(`[✓] Generated Postman Collection at ${postmanOutputFile}`));
188
+ }
189
+ }
190
+ else if (tech === "react") {
191
+ let chunks;
192
+ if (!existsSync(`${output}.json`)) {
193
+ chunks = yield getReactConnections(directory, output, formats);
194
+ }
195
+ else {
196
+ chunks = JSON.parse(readFileSync(`${output}.json`, { encoding: "utf8" }));
197
+ }
198
+ yield react_resolveFetch(directory);
199
+ yield vue_resolveXhr(directory, "React");
200
+ yield vue_resolveHttpClient(directory, "React");
201
+ if (commands.length > 0) {
202
+ yield reactRunCommands(chunks, `${output}.json`, commands);
203
+ }
204
+ else if (interactive_mode) {
205
+ yield reactInteractive(chunks, `${output}.json`);
206
+ }
207
+ if (getOpenapi() === true && getGraphqlEnabled()) {
208
+ yield resolveGraphql(directory);
209
+ }
210
+ if (getOpenapi() === true) {
211
+ const openapiSpec = generateOpenapiV3Spec(getOpenapiOutput(), chunks);
212
+ const openapiJson = JSON.stringify(openapiSpec, null, 2);
213
+ fs.writeFileSync(getOpenapiOutputFile(), openapiJson);
214
+ console.log(chalk.green(`[✓] Generated OpenAPI spec at ${getOpenapiOutputFile()}`));
215
+ const postmanCollection = generatePostmanCollection(getOpenapiOutput());
216
+ const openapiOutputFile = getOpenapiOutputFile();
217
+ const postmanOutputFile = openapiOutputFile.endsWith(".json")
218
+ ? openapiOutputFile.replace(/\.json$/, ".postman_collection.json")
219
+ : `${openapiOutputFile}.postman_collection.json`;
220
+ fs.writeFileSync(postmanOutputFile, JSON.stringify(postmanCollection, null, 2));
221
+ console.log(chalk.green(`[✓] Generated Postman Collection at ${postmanOutputFile}`));
222
+ }
223
+ }
224
+ else if (tech === "svelte") {
225
+ let chunks;
226
+ if (!existsSync(`${output}.json`)) {
227
+ // Astro+Svelte uses Vite — same chunk format as Vue.JS
228
+ chunks = yield getViteConnections(directory, output, formats);
229
+ }
230
+ else {
231
+ chunks = JSON.parse(readFileSync(`${output}.json`, { encoding: "utf8" }));
232
+ }
233
+ yield vue_resolveFetch(directory, "Svelte/Astro");
234
+ yield vue_resolveXhr(directory, "Svelte/Astro");
235
+ yield vue_resolveHttpClient(directory, "Svelte/Astro");
236
+ if (commands.length > 0) {
237
+ yield svelteRunCommands(chunks, `${output}.json`, commands);
238
+ }
239
+ else if (interactive_mode) {
240
+ yield svelteInteractive(chunks, `${output}.json`);
241
+ }
242
+ if (getOpenapi() === true && getGraphqlEnabled()) {
243
+ yield resolveGraphql(directory);
244
+ }
245
+ if (getOpenapi() === true) {
246
+ const openapiSpec = generateOpenapiV3Spec(getOpenapiOutput(), chunks);
247
+ const openapiJson = JSON.stringify(openapiSpec, null, 2);
248
+ fs.writeFileSync(getOpenapiOutputFile(), openapiJson);
249
+ console.log(chalk.green(`[✓] Generated OpenAPI spec at ${getOpenapiOutputFile()}`));
250
+ const postmanCollection = generatePostmanCollection(getOpenapiOutput());
251
+ const openapiOutputFile = getOpenapiOutputFile();
252
+ const postmanOutputFile = openapiOutputFile.endsWith(".json")
253
+ ? openapiOutputFile.replace(/\.json$/, ".postman_collection.json")
254
+ : `${openapiOutputFile}.postman_collection.json`;
255
+ fs.writeFileSync(postmanOutputFile, JSON.stringify(postmanCollection, null, 2));
256
+ console.log(chalk.green(`[✓] Generated Postman Collection at ${postmanOutputFile}`));
257
+ }
258
+ }
259
+ });
260
+ export default map;
261
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/map/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import fs from "fs";
12
+ /**
13
+ * Detects and marks chunks that contain Axios HTTP client library instances.
14
+ *
15
+ * Uses regex patterns to identify chunks containing Axios-specific code patterns
16
+ * such as AxiosHeaders, isAxiosError, and AxiosError. When detected, marks the
17
+ * chunk with an isAxiosClient flag and updates its description.
18
+ *
19
+ * @param chunks - Collection of code chunks to analyze for Axios instances
20
+ * @param output - Base filename for output files (without extension)
21
+ * @param formats - Array of output formats to generate (e.g., ['json'])
22
+ * @returns Promise that resolves to the updated chunks with Axios detection results
23
+ */
24
+ const getAxiosInstances = (chunks, output, formats) => __awaiter(void 0, void 0, void 0, function* () {
25
+ console.log(chalk.cyan("[i] Getting axios instances"));
26
+ let chunkCopy = structuredClone(chunks);
27
+ // iterate through all the chunks
28
+ for (const chunk of Object.values(chunks)) {
29
+ const chunkCode = chunk.code;
30
+ // regex checks first
31
+ const axiosVarRegex_AxiosHeaders = /AxiosHeaders = /;
32
+ const axiosVarRegex_isAxiosError = /isAxiosError = /;
33
+ const axiosVarRegex_AxiosError = /AxiosError = /;
34
+ const axiosObjectRegex_AxiosHeaders = /\.AxiosHeaders/;
35
+ const axiosObjectRegex_isAxiosError = /\.isAxiosError/;
36
+ const axiosObjectRegex_AxiosError = /\.AxiosError/;
37
+ // go through the code, and see if all of these matches or not
38
+ let axiosDetected = false;
39
+ if (axiosVarRegex_AxiosHeaders.test(chunkCode) &&
40
+ axiosVarRegex_isAxiosError.test(chunkCode) &&
41
+ axiosVarRegex_AxiosError.test(chunkCode) &&
42
+ axiosObjectRegex_AxiosHeaders.test(chunkCode) &&
43
+ axiosObjectRegex_isAxiosError.test(chunkCode) &&
44
+ axiosObjectRegex_AxiosError.test(chunkCode)) {
45
+ axiosDetected = true;
46
+ }
47
+ if (axiosDetected) {
48
+ chunkCopy[chunk.id].isAxiosLibrary = true;
49
+ if (chunks[chunk.id].description === "none") {
50
+ chunkCopy[chunk.id].description = "Axios library";
51
+ }
52
+ console.log(chalk.green(`[✓] Axios detected in chunk ${chunk.id}`));
53
+ }
54
+ }
55
+ // write the chunk to the output file
56
+ if (formats.includes("json")) {
57
+ const chunks_json = JSON.stringify(chunkCopy, null, 2);
58
+ fs.writeFileSync(`${output}.json`, chunks_json);
59
+ console.log(chalk.green(`[✓] Saved webpack with axios instances to ${output}.json`));
60
+ }
61
+ return chunkCopy;
62
+ });
63
+ export default getAxiosInstances;
64
+ //# sourceMappingURL=getAxiosInstances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAxiosInstances.js","sourceRoot":"","sources":["../../../src/map/next_js/getAxiosInstances.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,MAAM,iBAAiB,GAAG,CAAO,MAAc,EAAE,MAAc,EAAE,OAAiB,EAAmB,EAAE;IACnG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,IAAI,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,iCAAiC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,qBAAqB;QACrB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;QACrD,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;QACrD,MAAM,wBAAwB,GAAG,eAAe,CAAC;QACjD,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;QACvD,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;QACvD,MAAM,2BAA2B,GAAG,cAAc,CAAC;QAEnD,8DAA8D;QAC9D,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IACI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC;YACxC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,EAC7C,CAAC;YACC,aAAa,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;YAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC1C,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,eAAe,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,aAAa,CAAC,GAAG,MAAM,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6CAA6C,MAAM,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,101 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import parser from "@babel/parser";
12
+ import _traverse from "@babel/traverse";
13
+ const traverse = _traverse.default;
14
+ /**
15
+ * Gets the exports of each chunk.
16
+ * @param {Chunks} chunks - A dictionary of chunk names to chunk objects.
17
+ * @returns {Promise<Chunks>} - A promise that resolves with a dictionary of chunk names to chunk objects with their exports.
18
+ */
19
+ const getExports = (chunks) => __awaiter(void 0, void 0, void 0, function* () {
20
+ console.log(chalk.cyan("[i] Getting exports"));
21
+ let chunkCopy = chunks;
22
+ // iterate through the chunks
23
+ for (const chunk of Object.values(chunks)) {
24
+ // get the chunk code
25
+ const chunkCode = chunk.code;
26
+ // parse it with ast
27
+ let ast;
28
+ try {
29
+ ast = parser.parse(chunkCode, {
30
+ sourceType: "unambiguous",
31
+ plugins: ["jsx", "typescript"],
32
+ errorRecovery: true,
33
+ });
34
+ }
35
+ catch (_a) {
36
+ continue;
37
+ }
38
+ // declare the exportname var
39
+ let chunkSecondArg;
40
+ let chunkThirdArg;
41
+ // get the second and the third argument of the function
42
+ traverse(ast, {
43
+ enter(path) {
44
+ let funcNode = null;
45
+ if (path.isFunctionDeclaration()) {
46
+ funcNode = path.node;
47
+ }
48
+ else if (path.isAssignmentExpression() && path.node.right.type === "ArrowFunctionExpression") {
49
+ funcNode = path.node.right;
50
+ }
51
+ if (funcNode && funcNode.params.length >= 2) {
52
+ const secondParam = funcNode.params[1];
53
+ if (secondParam.type === "Identifier") {
54
+ chunkSecondArg = secondParam.name;
55
+ }
56
+ }
57
+ if (funcNode && funcNode.params.length >= 3) {
58
+ const thirdParam = funcNode.params[2];
59
+ if (thirdParam.type === "Identifier") {
60
+ chunkThirdArg = thirdParam.name;
61
+ }
62
+ }
63
+ if (chunkSecondArg && chunkThirdArg) {
64
+ path.stop();
65
+ }
66
+ },
67
+ });
68
+ if (!chunkSecondArg) {
69
+ continue;
70
+ }
71
+ let chunkExports = [];
72
+ // first of all, it is exported something like this:
73
+ // chunkThirdArg.<something>(secondArg, {default: ..., key2: ...})
74
+ // we need to get the names like 'default', 'key2', etc
75
+ traverse(ast, {
76
+ CallExpression(path) {
77
+ const { node } = path;
78
+ if (node.callee.type === "MemberExpression" &&
79
+ node.callee.object.type === "Identifier" &&
80
+ node.callee.object.name === chunkThirdArg &&
81
+ node.arguments.length >= 2 &&
82
+ node.arguments[0].type === "Identifier" &&
83
+ node.arguments[0].name === chunkSecondArg &&
84
+ node.arguments[1].type === "ObjectExpression") {
85
+ // get the names of the properties
86
+ node.arguments[1].properties.forEach((property) => {
87
+ if (property.type !== "SpreadElement" && property.key.type === "Identifier") {
88
+ chunkExports.push(property.key.name);
89
+ }
90
+ });
91
+ }
92
+ },
93
+ });
94
+ // now, iterate again, and find the different instance
95
+ // it should be something like Object.defineProperty
96
+ chunkCopy[chunk.id].exports = chunkExports;
97
+ }
98
+ return chunkCopy;
99
+ });
100
+ export default getExports;
101
+ //# sourceMappingURL=getExports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExports.js","sourceRoot":"","sources":["../../../src/map/next_js/getExports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import fs from "fs";
12
+ import _traverse from "@babel/traverse";
13
+ const traverse = _traverse.default;
14
+ import parser from "@babel/parser";
15
+ /**
16
+ * Checks if a node is a fetch identifier.
17
+ *
18
+ * @param node - The AST node to check
19
+ * @returns True if the node is an identifier named 'fetch'
20
+ */
21
+ const isFetchIdentifier = (node) => {
22
+ return node.type === "Identifier" && node.name === "fetch";
23
+ };
24
+ /**
25
+ * Checks if a node represents a fallback pattern that resolves to fetch.
26
+ *
27
+ * Detects patterns like 'x ?? fetch' or 'cond ? x : fetch' where fetch is used as a fallback.
28
+ *
29
+ * @param node - The AST node to check
30
+ * @returns True if the node is a fallback pattern that resolves to fetch
31
+ */
32
+ const isFetchFallback = (node) => {
33
+ // x ?? fetch OR cond ? x : fetch
34
+ return ((node.type === "LogicalExpression" && node.right && isFetchIdentifier(node.right)) ||
35
+ (node.type === "ConditionalExpression" && isFetchIdentifier(node.alternate)));
36
+ };
37
+ /**
38
+ * Analyzes code chunks to identify fetch API usage including direct calls and aliases.
39
+ *
40
+ * This function performs a multi-pass analysis to:
41
+ * 1. Find variables that are aliases for the fetch function
42
+ * 2. Track all direct fetch() calls
43
+ * 3. Report call sites for both direct calls and aliases
44
+ * 4. Mark chunks that contain fetch usage
45
+ *
46
+ * @param chunks - Collection of code chunks to analyze
47
+ * @param output - Base filename for output files (without extension)
48
+ * @param formats - Array of output formats to generate (e.g., ['json'])
49
+ * @returns Promise that resolves to updated chunks with fetch detection results
50
+ */
51
+ const getFetchInstances = (chunks, output, formats) => __awaiter(void 0, void 0, void 0, function* () {
52
+ console.log(chalk.cyan("[i] Running 'getFetchInstances' module"));
53
+ let chunk_copy = Object.assign({}, chunks);
54
+ // iterate through the chunks, and check fetch instances
55
+ for (let chunk of Object.values(chunks)) {
56
+ let chunkAst;
57
+ try {
58
+ chunkAst = parser.parse(chunk.code, {
59
+ sourceType: "module",
60
+ plugins: ["jsx", "typescript"],
61
+ errorRecovery: true,
62
+ });
63
+ }
64
+ catch (_a) {
65
+ continue;
66
+ }
67
+ const fetchAliases = new Set();
68
+ const fetchCalls = new Set();
69
+ traverse(chunkAst, {
70
+ // -------- Pass 1: look for aliases --------
71
+ // a) const S = fetch;
72
+ // b) const S = something ?? fetch;
73
+ // c) const S = cond ? x : fetch;
74
+ VariableDeclarator(path) {
75
+ const { id, init } = path.node;
76
+ if (id.type !== "Identifier" || !init)
77
+ return;
78
+ const aliasName = id.name;
79
+ if (isFetchIdentifier(init) || isFetchFallback(init)) {
80
+ // Record the binding *object* so we can track its references later
81
+ const binding = path.scope.getBinding(aliasName);
82
+ if (binding) {
83
+ fetchAliases.add(binding);
84
+ }
85
+ }
86
+ },
87
+ AssignmentExpression(path) {
88
+ // Handles re-assignment: S = fetch;
89
+ const { left, right } = path.node;
90
+ if (left.type !== "Identifier")
91
+ return;
92
+ if (isFetchIdentifier(right) || isFetchFallback(right)) {
93
+ const binding = path.scope.getBinding(left.name);
94
+ if (binding) {
95
+ fetchAliases.add(binding);
96
+ }
97
+ }
98
+ },
99
+ CallExpression(path) {
100
+ if (isFetchIdentifier(path.node.callee)) {
101
+ const { line, column } = path.node.callee.loc.start;
102
+ fetchCalls.add({
103
+ line,
104
+ column,
105
+ });
106
+ }
107
+ },
108
+ });
109
+ // -------- Pass 2: report the call-sites (aliases) --------
110
+ for (const binding of fetchAliases) {
111
+ // @ts-ignore
112
+ binding.referencePaths.forEach((ref) => {
113
+ const parent = ref.parent;
114
+ if (parent.type === "CallExpression" && parent.callee === ref.node) {
115
+ const { line, column } = ref.node.loc.start;
116
+ console.log(chalk.magenta(`[fetch] Webpack ID ${chunk.id}: fetch() alias '${ref.node.name}' called at ${line}:${column}`));
117
+ }
118
+ });
119
+ }
120
+ // -------- Pass 3: report the call-sites (direct) --------
121
+ for (const call of fetchCalls) {
122
+ console.log(chalk.magenta(
123
+ // @ts-ignore
124
+ `[fetch] Webpack ID ${chunk.id}: fetch() called at ${call.line}:${call.column}`));
125
+ }
126
+ // if the length of either of the sets is non-zero, then mark the chunk as containing fetch
127
+ if (fetchAliases.size > 0 || fetchCalls.size > 0) {
128
+ chunk_copy[chunk.id].containsFetch = true;
129
+ }
130
+ }
131
+ if (formats.includes("json")) {
132
+ const chunks_json = JSON.stringify(chunks, null, 2);
133
+ fs.writeFileSync(`${output}.json`, chunks_json);
134
+ console.log(chalk.green(`[✓] Saved webpack with fetch instances to ${output}.json`));
135
+ }
136
+ return chunk_copy;
137
+ });
138
+ export default getFetchInstances;
139
+ //# sourceMappingURL=getFetchInstances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFetchInstances.js","sourceRoot":"","sources":["../../../src/map/next_js/getFetchInstances.ts"],"names":[],"mappings":"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"}