@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,621 @@
1
+ import parser from "@babel/parser";
2
+ import _traverse from "@babel/traverse";
3
+ import fs from "fs";
4
+ import { resolveNodeValue, memberChainToString } from "../next_js/utils.js";
5
+ const traverse = _traverse.default;
6
+ const getParamName = (paramNode) => {
7
+ var _a;
8
+ if (!paramNode)
9
+ return null;
10
+ if (paramNode.type === "Identifier")
11
+ return paramNode.name;
12
+ if (paramNode.type === "AssignmentPattern" && ((_a = paramNode.left) === null || _a === void 0 ? void 0 : _a.type) === "Identifier")
13
+ return paramNode.left.name;
14
+ return null;
15
+ };
16
+ /**
17
+ * Pulls out the function binding name from the surrounding declarator /
18
+ * assignment so we can later match callsites by identifier. Handles four
19
+ * common shapes seen in Vite-bundled code:
20
+ * const fn = (arg) => { ... }
21
+ * fn = (arg) => { ... }
22
+ * function fn(arg) { ... }
23
+ * { fn: (arg) => { ... } } // object-literal property value
24
+ */
25
+ const inferOneEnclosingFn = (fnPath, file) => {
26
+ var _a, _b, _c, _d, _e, _f, _g;
27
+ const fnNode = fnPath.node;
28
+ const paramNames = ((_a = fnNode.params) !== null && _a !== void 0 ? _a : []).map(getParamName);
29
+ const firstParamName = (_b = paramNames[0]) !== null && _b !== void 0 ? _b : null;
30
+ let bindingName = null;
31
+ if (fnNode.type === "FunctionDeclaration" && ((_c = fnNode.id) === null || _c === void 0 ? void 0 : _c.type) === "Identifier") {
32
+ bindingName = fnNode.id.name;
33
+ }
34
+ else {
35
+ const parentNode = (_d = fnPath.parentPath) === null || _d === void 0 ? void 0 : _d.node;
36
+ if (parentNode) {
37
+ if (parentNode.type === "VariableDeclarator" && ((_e = parentNode.id) === null || _e === void 0 ? void 0 : _e.type) === "Identifier") {
38
+ bindingName = parentNode.id.name;
39
+ }
40
+ else if (parentNode.type === "AssignmentExpression" && ((_f = parentNode.left) === null || _f === void 0 ? void 0 : _f.type) === "Identifier") {
41
+ bindingName = parentNode.left.name;
42
+ }
43
+ else if (parentNode.type === "ObjectProperty" &&
44
+ !parentNode.computed &&
45
+ ((_g = parentNode.key) === null || _g === void 0 ? void 0 : _g.type) === "Identifier") {
46
+ bindingName = parentNode.key.name;
47
+ }
48
+ }
49
+ }
50
+ return { bindingName, firstParamName, paramNames, node: fnNode, file };
51
+ };
52
+ export const inferEnclosingFn = (callPath, file) => {
53
+ let fnPath = callPath.getFunctionParent();
54
+ if (!fnPath)
55
+ return null;
56
+ const innermost = inferOneEnclosingFn(fnPath, file);
57
+ let chainTail = innermost;
58
+ let outerPath = fnPath.getFunctionParent();
59
+ let depth = 0;
60
+ while (outerPath && depth < 6) {
61
+ const outer = inferOneEnclosingFn(outerPath, file);
62
+ chainTail.parent = outer;
63
+ chainTail = outer;
64
+ outerPath = outerPath.getFunctionParent();
65
+ depth++;
66
+ }
67
+ return innermost;
68
+ };
69
+ /**
70
+ * Walks an ObjectExpression and returns the property value node for the given
71
+ * dotted property path (e.g. ["data"] → the value node of `data: ...`).
72
+ */
73
+ const lookupObjectExpressionProp = (objExpr, propPath) => {
74
+ if (!objExpr || objExpr.type !== "ObjectExpression")
75
+ return null;
76
+ let current = objExpr;
77
+ for (const segment of propPath) {
78
+ if (!current || current.type !== "ObjectExpression")
79
+ return null;
80
+ let next = null;
81
+ for (const prop of current.properties) {
82
+ if (prop.type !== "ObjectProperty")
83
+ continue;
84
+ const key = prop.key.type === "Identifier"
85
+ ? prop.key.name
86
+ : prop.key.type === "StringLiteral"
87
+ ? prop.key.value
88
+ : null;
89
+ if (key === segment) {
90
+ next = prop.value;
91
+ break;
92
+ }
93
+ }
94
+ if (!next)
95
+ return null;
96
+ current = next;
97
+ }
98
+ return current;
99
+ };
100
+ /**
101
+ * Resolves the value of `paramName.propPath` by walking back through the
102
+ * enclosing function's callers. If a caller's argument is itself an Identifier
103
+ * pointing to a constant initializer, we follow that binding; if it's the
104
+ * caller's own first parameter, we recurse to that function's callers.
105
+ */
106
+ export const resolveParamProperty = (paramName, propPath, enclosingFn, getCallers, depth = 0) => {
107
+ var _a, _b, _c, _d, _e;
108
+ if (!enclosingFn || depth > 6)
109
+ return null;
110
+ // Walk outward through nested anonymous callbacks until we find the fn
111
+ // that actually declares paramName.
112
+ let fn = enclosingFn;
113
+ while (fn && (!fn.bindingName || !((_a = fn.paramNames) !== null && _a !== void 0 ? _a : []).includes(paramName))) {
114
+ fn = (_b = fn.parent) !== null && _b !== void 0 ? _b : null;
115
+ }
116
+ if (!fn || !fn.bindingName)
117
+ return null;
118
+ const paramIndex = ((_c = fn.paramNames) !== null && _c !== void 0 ? _c : []).indexOf(paramName);
119
+ if (paramIndex < 0)
120
+ return null;
121
+ const callers = getCallers(fn.bindingName, fn.file);
122
+ if (!callers || callers.length === 0)
123
+ return null;
124
+ for (const caller of callers) {
125
+ const arg = caller.args[paramIndex];
126
+ if (!arg)
127
+ continue;
128
+ if (arg.type === "ObjectExpression") {
129
+ const node = lookupObjectExpressionProp(arg, propPath);
130
+ if (node)
131
+ return { node, scope: caller.scope, fileContent: caller.fileContent };
132
+ }
133
+ if (arg.type === "Identifier") {
134
+ const binding = caller.scope.getBinding(arg.name);
135
+ const initNode = (_e = (_d = binding === null || binding === void 0 ? void 0 : binding.path) === null || _d === void 0 ? void 0 : _d.node) === null || _e === void 0 ? void 0 : _e.init;
136
+ if (initNode && initNode.type === "ObjectExpression") {
137
+ const node = lookupObjectExpressionProp(initNode, propPath);
138
+ if (node)
139
+ return { node, scope: caller.scope, fileContent: caller.fileContent };
140
+ }
141
+ if (enclosingFnChainHasParam(caller.enclosingFn, arg.name)) {
142
+ const result = resolveParamProperty(arg.name, propPath, caller.enclosingFn, getCallers, depth + 1);
143
+ if (result)
144
+ return result;
145
+ }
146
+ }
147
+ }
148
+ return null;
149
+ };
150
+ const enclosingFnChainHasParam = (fn, name) => {
151
+ var _a, _b;
152
+ let cur = fn;
153
+ while (cur) {
154
+ if (((_a = cur.paramNames) !== null && _a !== void 0 ? _a : []).includes(name))
155
+ return true;
156
+ cur = (_b = cur.parent) !== null && _b !== void 0 ? _b : null;
157
+ }
158
+ return false;
159
+ };
160
+ export const enclosingFnChainHasBinding = (fn) => {
161
+ var _a;
162
+ let cur = fn;
163
+ while (cur) {
164
+ if (cur.bindingName)
165
+ return true;
166
+ cur = (_a = cur.parent) !== null && _a !== void 0 ? _a : null;
167
+ }
168
+ return false;
169
+ };
170
+ /**
171
+ * Resolves [param:P] where P is the first param of enclosingFn — returns
172
+ * the direct string value passed by the caller (not a property of it).
173
+ */
174
+ const resolveFirstArg = (paramName, enclosingFn, getCallers, depth = 0) => {
175
+ var _a, _b, _c, _d, _e;
176
+ if (depth > 4)
177
+ return null;
178
+ let fn = enclosingFn;
179
+ while (fn && (!fn.bindingName || !((_a = fn.paramNames) !== null && _a !== void 0 ? _a : []).includes(paramName))) {
180
+ fn = (_b = fn.parent) !== null && _b !== void 0 ? _b : null;
181
+ }
182
+ if (!fn || !fn.bindingName)
183
+ return null;
184
+ const paramIndex = ((_c = fn.paramNames) !== null && _c !== void 0 ? _c : []).indexOf(paramName);
185
+ if (paramIndex < 0)
186
+ return null;
187
+ const callers = getCallers(fn.bindingName, fn.file);
188
+ for (const caller of callers) {
189
+ const arg = caller.args[paramIndex];
190
+ if (!arg)
191
+ continue;
192
+ const resolved = resolveNodeValue(arg, caller.scope, "", "fetch", caller.fileContent);
193
+ if (typeof resolved === "string" && !resolved.startsWith("[") && resolved.length > 0) {
194
+ return resolved;
195
+ }
196
+ if (arg.type === "Identifier") {
197
+ const binding = caller.scope.getBinding(arg.name);
198
+ const initNode = (_e = (_d = binding === null || binding === void 0 ? void 0 : binding.path) === null || _d === void 0 ? void 0 : _d.node) === null || _e === void 0 ? void 0 : _e.init;
199
+ if (initNode) {
200
+ const initResolved = resolveNodeValue(initNode, caller.scope, "", "fetch", caller.fileContent);
201
+ if (typeof initResolved === "string" && !initResolved.startsWith("[") && initResolved.length > 0) {
202
+ return initResolved;
203
+ }
204
+ }
205
+ if (caller.enclosingFn && enclosingFnChainHasParam(caller.enclosingFn, arg.name)) {
206
+ const r = resolveFirstArg(arg.name, caller.enclosingFn, getCallers, depth + 1);
207
+ if (r)
208
+ return r;
209
+ }
210
+ }
211
+ }
212
+ return null;
213
+ };
214
+ /**
215
+ * Renders an ObjectExpression as a `k1={k1}&k2={k2}` query-string fragment.
216
+ */
217
+ const renderObjectAsQuery = (objExpr, scope, fileContent) => {
218
+ if (!objExpr || objExpr.type !== "ObjectExpression")
219
+ return null;
220
+ const parts = [];
221
+ for (const prop of objExpr.properties) {
222
+ if (prop.type !== "ObjectProperty")
223
+ continue;
224
+ const key = prop.key.type === "Identifier" ? prop.key.name : prop.key.type === "StringLiteral" ? prop.key.value : null;
225
+ if (!key)
226
+ continue;
227
+ let valStr;
228
+ try {
229
+ const resolved = resolveNodeValue(prop.value, scope, "", "fetch", fileContent);
230
+ if (resolved !== null && resolved !== undefined && !String(resolved).startsWith("[")) {
231
+ valStr = encodeURIComponent(String(resolved));
232
+ }
233
+ else {
234
+ valStr = `{${key}}`;
235
+ }
236
+ }
237
+ catch (_a) {
238
+ valStr = `{${key}}`;
239
+ }
240
+ parts.push(`${key}=${valStr}`);
241
+ }
242
+ return parts.length > 0 ? parts.join("&") : null;
243
+ };
244
+ /**
245
+ * Returns a plain object derived from an ObjectExpression's properties.
246
+ * Spread elements are merged when they themselves resolve to a literal object;
247
+ * otherwise the spread is preserved as a sentinel key.
248
+ */
249
+ export const renderObjectExpression = (objExpr, scope, fileContent) => {
250
+ if (!objExpr || objExpr.type !== "ObjectExpression")
251
+ return null;
252
+ const out = {};
253
+ for (const prop of objExpr.properties) {
254
+ if (prop.type === "ObjectProperty") {
255
+ const key = prop.key.type === "Identifier"
256
+ ? prop.key.name
257
+ : prop.key.type === "StringLiteral"
258
+ ? prop.key.value
259
+ : null;
260
+ if (!key)
261
+ continue;
262
+ try {
263
+ const resolved = resolveNodeValue(prop.value, scope, "", "fetch", fileContent);
264
+ out[key] = resolved === undefined || resolved === null ? "" : String(resolved);
265
+ }
266
+ catch (_a) {
267
+ out[key] = "";
268
+ }
269
+ }
270
+ else if (prop.type === "SpreadElement") {
271
+ try {
272
+ const resolved = resolveNodeValue(prop.argument, scope, "", "fetch", fileContent);
273
+ if (resolved && typeof resolved === "object") {
274
+ for (const [k, v] of Object.entries(resolved)) {
275
+ if (!(k in out))
276
+ out[k] = v === undefined || v === null ? "" : String(v);
277
+ }
278
+ }
279
+ else {
280
+ const chain = memberChainToString(prop.argument);
281
+ out[`...${chain !== null && chain !== void 0 ? chain : "spread"}`] = "<spread>";
282
+ }
283
+ }
284
+ catch (_b) {
285
+ const chain = memberChainToString(prop.argument);
286
+ out[`...${chain !== null && chain !== void 0 ? chain : "spread"}`] = "<spread>";
287
+ }
288
+ }
289
+ }
290
+ return out;
291
+ };
292
+ export const renderValueNode = (node, scope, fileContent) => {
293
+ if (!node)
294
+ return null;
295
+ try {
296
+ const resolved = resolveNodeValue(node, scope, "", "fetch", fileContent);
297
+ if (resolved === null || resolved === undefined)
298
+ return null;
299
+ if (typeof resolved === "object")
300
+ return null;
301
+ const s = String(resolved);
302
+ if (s.startsWith("[unresolved"))
303
+ return null;
304
+ return s;
305
+ }
306
+ catch (_a) {
307
+ return null;
308
+ }
309
+ };
310
+ /**
311
+ * Substitutes [member:P.X], [urlsearchparams:P.X], and [param:P] markers in a
312
+ * string by walking back to the enclosing function's caller(s).
313
+ */
314
+ export const substituteCallerPlaceholders = (input, enclosingFn, getCallers) => {
315
+ if (!input || !enclosingFn)
316
+ return input;
317
+ let output = input;
318
+ output = output.replace(/\[urlsearchparams:([A-Za-z_$][\w$.]*)\]/g, (match, chain) => {
319
+ const parts = chain.split(".");
320
+ const paramName = parts[0];
321
+ const propPath = parts.slice(1);
322
+ const resolved = resolveParamProperty(paramName, propPath, enclosingFn, getCallers);
323
+ if (!resolved)
324
+ return match;
325
+ const rendered = renderObjectAsQuery(resolved.node, resolved.scope, resolved.fileContent);
326
+ return rendered !== null && rendered !== void 0 ? rendered : match;
327
+ });
328
+ output = output.replace(/\[member:([A-Za-z_$][\w$.]*)\]/g, (match, chain) => {
329
+ const parts = chain.split(".");
330
+ const paramName = parts[0];
331
+ const propPath = parts.slice(1);
332
+ const resolved = resolveParamProperty(paramName, propPath, enclosingFn, getCallers);
333
+ if (!resolved)
334
+ return match;
335
+ const rendered = renderValueNode(resolved.node, resolved.scope, resolved.fileContent);
336
+ return rendered !== null && rendered !== void 0 ? rendered : match;
337
+ });
338
+ // [param:P] — the URL/value IS the function parameter directly (not a property of it)
339
+ output = output.replace(/\[param:([A-Za-z_$][\w$]*)\]/g, (match, paramName) => {
340
+ const resolved = resolveFirstArg(paramName, enclosingFn, getCallers);
341
+ return resolved !== null && resolved !== void 0 ? resolved : match;
342
+ });
343
+ return output;
344
+ };
345
+ /**
346
+ * Substitutes placeholders in a header bag. `...P.X: <spread>` entries are
347
+ * expanded when the corresponding caller-side value is a literal object.
348
+ */
349
+ export const substituteCallerHeaders = (headers, enclosingFn, getCallers) => {
350
+ if (!enclosingFn)
351
+ return headers;
352
+ const out = {};
353
+ for (const [k, v] of Object.entries(headers)) {
354
+ if (k.startsWith("...") && v === "<spread>") {
355
+ const chain = k.slice(3);
356
+ const parts = chain.split(".");
357
+ const paramName = parts[0];
358
+ const propPath = parts.slice(1);
359
+ const resolved = resolveParamProperty(paramName, propPath, enclosingFn, getCallers);
360
+ if (resolved && resolved.node.type === "ObjectExpression") {
361
+ const obj = renderObjectExpression(resolved.node, resolved.scope, resolved.fileContent);
362
+ if (obj) {
363
+ for (const [hk, hv] of Object.entries(obj)) {
364
+ if (!(hk in out))
365
+ out[hk] = hv;
366
+ }
367
+ continue;
368
+ }
369
+ }
370
+ out[k] = v;
371
+ }
372
+ else {
373
+ out[k] = substituteCallerPlaceholders(v, enclosingFn, getCallers);
374
+ }
375
+ }
376
+ return out;
377
+ };
378
+ /**
379
+ * Returns a getCallers function that searches the given file paths for call
380
+ * sites of a named binding. Files are parsed on demand with a text pre-filter;
381
+ * no ASTs are cached, so CallerInfo objects are only alive during the caller's
382
+ * resolution pass and are then released to GC.
383
+ *
384
+ * Binding names with length ≤ 2 are skipped — they are minifier locals that
385
+ * match too many call sites to be useful.
386
+ */
387
+ /**
388
+ * Builds a binding→alias map by scanning every file for export-style object
389
+ * literals that rebind a function under a more meaningful key. Three patterns
390
+ * are recognized — they cover the common webpack/Vite output shapes:
391
+ *
392
+ * { aliasName: localBinding } // direct re-export
393
+ * { aliasName: () => localBinding } // webpack `a.d(b, {…})` getter export
394
+ * { aliasName: function () { return localBinding(arguments…) } } // wrapper
395
+ *
396
+ * Each alias is recorded both ways so getCallers can look up callsites either
397
+ * by the local binding or by the externally-visible export name. Computed
398
+ * only once and cached on first access.
399
+ */
400
+ const buildAliasMap = (filePaths) => {
401
+ // file -> bindingName -> set of aliases observed in that file
402
+ const aliasesByFile = new Map();
403
+ const addAlias = (file, binding, alias) => {
404
+ if (!binding || !alias || binding === alias)
405
+ return;
406
+ let perFile = aliasesByFile.get(file);
407
+ if (!perFile) {
408
+ perFile = new Map();
409
+ aliasesByFile.set(file, perFile);
410
+ }
411
+ let set = perFile.get(binding);
412
+ if (!set) {
413
+ set = new Set();
414
+ perFile.set(binding, set);
415
+ }
416
+ set.add(alias);
417
+ };
418
+ for (const filePath of filePaths) {
419
+ let fileContent;
420
+ try {
421
+ fileContent = fs.readFileSync(filePath, "utf-8");
422
+ }
423
+ catch (_a) {
424
+ continue;
425
+ }
426
+ let fileAst;
427
+ try {
428
+ fileAst = parser.parse(fileContent, {
429
+ sourceType: "unambiguous",
430
+ plugins: ["jsx", "typescript"],
431
+ errorRecovery: true,
432
+ });
433
+ }
434
+ catch (_b) {
435
+ continue;
436
+ }
437
+ traverse(fileAst, {
438
+ ObjectProperty(propPath) {
439
+ const node = propPath.node;
440
+ if (node.computed)
441
+ return;
442
+ const key = node.key.type === "Identifier"
443
+ ? node.key.name
444
+ : node.key.type === "StringLiteral"
445
+ ? node.key.value
446
+ : null;
447
+ if (!key)
448
+ return;
449
+ const val = node.value;
450
+ if (val.type === "Identifier") {
451
+ addAlias(filePath, val.name, key);
452
+ }
453
+ else if (val.type === "ArrowFunctionExpression" &&
454
+ val.params.length === 0 &&
455
+ val.body.type === "Identifier") {
456
+ // `key: () => Binding` (webpack getter export)
457
+ addAlias(filePath, val.body.name, key);
458
+ }
459
+ },
460
+ });
461
+ }
462
+ return aliasesByFile;
463
+ };
464
+ const loadFileCached = (filePath, cache) => {
465
+ var _a;
466
+ if (cache.has(filePath))
467
+ return (_a = cache.get(filePath)) !== null && _a !== void 0 ? _a : null;
468
+ let content;
469
+ try {
470
+ content = fs.readFileSync(filePath, "utf-8");
471
+ }
472
+ catch (_b) {
473
+ cache.set(filePath, null);
474
+ return null;
475
+ }
476
+ let ast = null;
477
+ try {
478
+ ast = parser.parse(content, {
479
+ sourceType: "unambiguous",
480
+ plugins: ["jsx", "typescript"],
481
+ errorRecovery: true,
482
+ });
483
+ }
484
+ catch (_c) {
485
+ ast = null;
486
+ }
487
+ const entry = { content, ast };
488
+ cache.set(filePath, entry);
489
+ return entry;
490
+ };
491
+ export const makeGetCallers = (filePaths, maxCallers = 128) => {
492
+ let aliasMap = null;
493
+ const fileCache = new Map();
494
+ return (bindingName, sourceFile) => {
495
+ var _a;
496
+ if (!bindingName)
497
+ return [];
498
+ if (aliasMap === null)
499
+ aliasMap = buildAliasMap(filePaths);
500
+ // Use only the aliases defined in the file where `bindingName` lives;
501
+ // otherwise minifier name collisions across modules (`Se` may name
502
+ // different functions in different files) pollute the alias set.
503
+ const aliases = (sourceFile && ((_a = aliasMap.get(sourceFile)) === null || _a === void 0 ? void 0 : _a.get(bindingName))) || new Set();
504
+ // Only match by names that are long enough to be distinctive. Short
505
+ // minifier locals (≤ 2 chars) alone match too many sites; longer
506
+ // alias names — usually the exported function names — are safe.
507
+ const candidates = new Set([bindingName, ...aliases].filter((n) => n.length > 2));
508
+ if (candidates.size === 0)
509
+ return [];
510
+ const needles = Array.from(candidates).map((n) => `${n}(`);
511
+ const out = [];
512
+ let overflowed = false;
513
+ for (const filePath of filePaths) {
514
+ if (overflowed)
515
+ break;
516
+ const cached = loadFileCached(filePath, fileCache);
517
+ if (!cached)
518
+ continue;
519
+ const fileContent = cached.content;
520
+ if (!needles.some((n) => fileContent.includes(n)))
521
+ continue;
522
+ const fileAst = cached.ast;
523
+ if (!fileAst)
524
+ continue;
525
+ traverse(fileAst, {
526
+ CallExpression(callPath) {
527
+ if (overflowed) {
528
+ callPath.stop();
529
+ return;
530
+ }
531
+ const callee = callPath.node.callee;
532
+ const isDirect = callee.type === "Identifier" && candidates.has(callee.name);
533
+ // Registry-style exports re-bind functions onto an object
534
+ // (e.g. `const ae = { request: Me }; ae.request(...)`), so we
535
+ // accept member-expression callsites where the property name
536
+ // matches the binding (or one of its aliases) too.
537
+ const isMember = callee.type === "MemberExpression" &&
538
+ !callee.computed &&
539
+ callee.property.type === "Identifier" &&
540
+ candidates.has(callee.property.name);
541
+ if (!isDirect && !isMember)
542
+ return;
543
+ if (out.length >= maxCallers) {
544
+ overflowed = true;
545
+ callPath.stop();
546
+ return;
547
+ }
548
+ out.push({
549
+ file: filePath,
550
+ fileContent,
551
+ callNode: callPath.node,
552
+ scope: callPath.scope,
553
+ args: callPath.node.arguments,
554
+ enclosingFn: inferEnclosingFn(callPath, filePath),
555
+ });
556
+ },
557
+ });
558
+ }
559
+ // On overflow keep the callers we already collected: the alias map is
560
+ // file-scoped so an oversized result usually reflects a genuinely
561
+ // popular wrapper, and partial coverage beats none.
562
+ return out;
563
+ };
564
+ };
565
+ /**
566
+ * Like makeGetCallers but searches only the source file and does NOT filter by
567
+ * name length. Used as a fallback for body-param resolution when the binding is
568
+ * a short minifier local (e.g. `O`) and the caller in the same file uses the
569
+ * raw name rather than an exported alias.
570
+ *
571
+ * Never call this for URL fan-out — the short-name matches are file-scoped and
572
+ * won't flood cross-file call graphs.
573
+ */
574
+ export const makeGetCallersSameFile = () => {
575
+ return (bindingName, sourceFile) => {
576
+ if (!bindingName || !sourceFile)
577
+ return [];
578
+ let fileContent;
579
+ try {
580
+ fileContent = fs.readFileSync(sourceFile, "utf-8");
581
+ }
582
+ catch (_a) {
583
+ return [];
584
+ }
585
+ if (!fileContent.includes(`${bindingName}(`))
586
+ return [];
587
+ let fileAst;
588
+ try {
589
+ fileAst = parser.parse(fileContent, {
590
+ sourceType: "unambiguous",
591
+ plugins: ["jsx", "typescript"],
592
+ errorRecovery: true,
593
+ });
594
+ }
595
+ catch (_b) {
596
+ return [];
597
+ }
598
+ const out = [];
599
+ traverse(fileAst, {
600
+ CallExpression(callPath) {
601
+ const callee = callPath.node.callee;
602
+ if (callee.type !== "Identifier" || callee.name !== bindingName)
603
+ return;
604
+ if (out.length >= 32) {
605
+ callPath.stop();
606
+ return;
607
+ }
608
+ out.push({
609
+ file: sourceFile,
610
+ fileContent,
611
+ callNode: callPath.node,
612
+ scope: callPath.scope,
613
+ args: callPath.node.arguments,
614
+ enclosingFn: inferEnclosingFn(callPath, sourceFile),
615
+ });
616
+ },
617
+ });
618
+ return out;
619
+ };
620
+ };
621
+ //# sourceMappingURL=taint_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taint_utils.js","sourceRoot":"","sources":["../../../src/map/vue_js/taint_utils.ts"],"names":[],"mappings":"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"}