@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.
- package/.gitattributes +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/new_tech_support_request.md +26 -0
- package/.github/workflows/build-and-prettify.yaml +121 -0
- package/.github/workflows/pr_checker.yml +22 -0
- package/.github/workflows/publish-js-recon.yml +169 -0
- package/.prettierignore +2 -0
- package/.prettierrc +6 -0
- package/CHANGELOG.md +692 -0
- package/CLAUDE.md +290 -0
- package/Dockerfile +34 -0
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/SECURITY.md +37 -0
- package/build/analyze/engine/astEngine.js +224 -0
- package/build/analyze/engine/astEngine.js.map +1 -0
- package/build/analyze/engine/index.js +59 -0
- package/build/analyze/engine/index.js.map +1 -0
- package/build/analyze/engine/requestEngine.js +100 -0
- package/build/analyze/engine/requestEngine.js.map +1 -0
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js +37 -0
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js.map +1 -0
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +29 -0
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -0
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js +38 -0
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js.map +1 -0
- package/build/analyze/helpers/engineHelpers/taintFlow.js +250 -0
- package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -0
- package/build/analyze/helpers/initRules.js +111 -0
- package/build/analyze/helpers/initRules.js.map +1 -0
- package/build/analyze/helpers/outputHelper.js +14 -0
- package/build/analyze/helpers/outputHelper.js.map +1 -0
- package/build/analyze/helpers/schemas.js +57 -0
- package/build/analyze/helpers/schemas.js.map +1 -0
- package/build/analyze/helpers/validate.js +89 -0
- package/build/analyze/helpers/validate.js.map +1 -0
- package/build/analyze/index.js +150 -0
- package/build/analyze/index.js.map +1 -0
- package/build/analyze/types/index.js +2 -0
- package/build/analyze/types/index.js.map +1 -0
- package/build/api_gateway/checkFeasibility.js +41 -0
- package/build/api_gateway/checkFeasibility.js.map +1 -0
- package/build/api_gateway/checkFireWallBlocking.js +33 -0
- package/build/api_gateway/checkFireWallBlocking.js.map +1 -0
- package/build/api_gateway/genReq.js +205 -0
- package/build/api_gateway/genReq.js.map +1 -0
- package/build/api_gateway/index.js +291 -0
- package/build/api_gateway/index.js.map +1 -0
- package/build/endpoints/gen_report/gen_json.js +30 -0
- package/build/endpoints/gen_report/gen_json.js.map +1 -0
- package/build/endpoints/gen_report/utility/iterate_n_store.js +64 -0
- package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -0
- package/build/endpoints/index.js +101 -0
- package/build/endpoints/index.js.map +1 -0
- package/build/endpoints/next_js/client_jsFilesHref.js +100 -0
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -0
- package/build/endpoints/next_js/client_jsonParse.js +89 -0
- package/build/endpoints/next_js/client_jsonParse.js.map +1 -0
- package/build/endpoints/next_js/client_mappedJsonFile.js +103 -0
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -0
- package/build/endpoints/next_js/client_subsequentRequests.js +211 -0
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -0
- package/build/fingerprint/index.js +123 -0
- package/build/fingerprint/index.js.map +1 -0
- package/build/globalConfig.js +16 -0
- package/build/globalConfig.js.map +1 -0
- package/build/index.js +332 -0
- package/build/index.js.map +1 -0
- package/build/lazyLoad/angular/angular_getFromMainJs.js +55 -0
- package/build/lazyLoad/angular/angular_getFromMainJs.js.map +1 -0
- package/build/lazyLoad/angular/angular_getFromPageSource.js +43 -0
- package/build/lazyLoad/angular/angular_getFromPageSource.js.map +1 -0
- package/build/lazyLoad/downloadFilesUtil.js +127 -0
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -0
- package/build/lazyLoad/downloadLoadedJsUtil.js +44 -0
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -0
- package/build/lazyLoad/downloadQueue.js +191 -0
- package/build/lazyLoad/downloadQueue.js.map +1 -0
- package/build/lazyLoad/globals.js +107 -0
- package/build/lazyLoad/globals.js.map +1 -0
- package/build/lazyLoad/index.js +377 -0
- package/build/lazyLoad/index.js.map +1 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js +332 -0
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -0
- package/build/lazyLoad/next_js/next_GetJSScript.js +126 -0
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -0
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +83 -0
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -0
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +222 -0
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -0
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +208 -0
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -0
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +37 -0
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -0
- package/build/lazyLoad/next_js/next_buildId.js +55 -0
- package/build/lazyLoad/next_js/next_buildId.js.map +1 -0
- package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
- package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/next_js/next_globals.js +8 -0
- package/build/lazyLoad/next_js/next_globals.js.map +1 -0
- package/build/lazyLoad/next_js/next_parseLayoutJs.js +116 -0
- package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -0
- package/build/lazyLoad/next_js/next_promiseResolve.js +85 -0
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -0
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +51 -0
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -0
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js +202 -0
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -0
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +82 -0
- package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -0
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +108 -0
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -0
- package/build/lazyLoad/react/react_followImports.js +105 -0
- package/build/lazyLoad/react/react_followImports.js.map +1 -0
- package/build/lazyLoad/react/react_getScriptTags.js +52 -0
- package/build/lazyLoad/react/react_getScriptTags.js.map +1 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js +44 -0
- package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js +188 -0
- package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -0
- package/build/lazyLoad/sourcemap.js +188 -0
- package/build/lazyLoad/sourcemap.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +162 -0
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js +91 -0
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +180 -0
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +123 -0
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js +70 -0
- package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNextJS.js +45 -0
- package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js +39 -0
- package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -0
- package/build/lazyLoad/techDetect/checkReact.js +86 -0
- package/build/lazyLoad/techDetect/checkReact.js.map +1 -0
- package/build/lazyLoad/techDetect/checkSvelte.js +69 -0
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -0
- package/build/lazyLoad/techDetect/checkVueJS.js +118 -0
- package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -0
- package/build/lazyLoad/techDetect/index.js +161 -0
- package/build/lazyLoad/techDetect/index.js.map +1 -0
- package/build/lazyLoad/vue/vue_RuntimeJs.js +169 -0
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -0
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +102 -0
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +82 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +155 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/vue/vue_jsImports.js +76 -0
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -0
- package/build/lazyLoad/vue/vue_pageSrc.js +60 -0
- package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +64 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +142 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js +57 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -0
- package/build/lazyLoad/vue/vue_sourcemapExtract.js +166 -0
- package/build/lazyLoad/vue/vue_sourcemapExtract.js.map +1 -0
- package/build/lazyLoad/vue/vue_stringJsFiles.js +148 -0
- package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
- package/build/load/index.js +316 -0
- package/build/load/index.js.map +1 -0
- package/build/map/graphql/resolveGraphql.js +296 -0
- package/build/map/graphql/resolveGraphql.js.map +1 -0
- package/build/map/index.js +261 -0
- package/build/map/index.js.map +1 -0
- package/build/map/next_js/getAxiosInstances.js +64 -0
- package/build/map/next_js/getAxiosInstances.js.map +1 -0
- package/build/map/next_js/getExports.js +101 -0
- package/build/map/next_js/getExports.js.map +1 -0
- package/build/map/next_js/getFetchInstances.js +139 -0
- package/build/map/next_js/getFetchInstances.js.map +1 -0
- package/build/map/next_js/getTurbopackConnections.js +255 -0
- package/build/map/next_js/getTurbopackConnections.js.map +1 -0
- package/build/map/next_js/getWebpackConnections.js +235 -0
- package/build/map/next_js/getWebpackConnections.js.map +1 -0
- package/build/map/next_js/interactive.js +69 -0
- package/build/map/next_js/interactive.js.map +1 -0
- package/build/map/next_js/interactive_helpers/commandHandler.js +310 -0
- package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/next_js/interactive_helpers/commandHelpers.js +245 -0
- package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -0
- package/build/map/next_js/interactive_helpers/esqueryGen.js +370 -0
- package/build/map/next_js/interactive_helpers/esqueryGen.js.map +1 -0
- package/build/map/next_js/interactive_helpers/helpMenu.js +12 -0
- package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -0
- package/build/map/next_js/interactive_helpers/inputPatch.js +207 -0
- package/build/map/next_js/interactive_helpers/inputPatch.js.map +1 -0
- package/build/map/next_js/interactive_helpers/keybindings.js +90 -0
- package/build/map/next_js/interactive_helpers/keybindings.js.map +1 -0
- package/build/map/next_js/interactive_helpers/printer.js +23 -0
- package/build/map/next_js/interactive_helpers/printer.js.map +1 -0
- package/build/map/next_js/interactive_helpers/ui.js +88 -0
- package/build/map/next_js/interactive_helpers/ui.js.map +1 -0
- package/build/map/next_js/resolveAxios.js +152 -0
- package/build/map/next_js/resolveAxios.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js +64 -0
- package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js +48 -0
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js +34 -0
- package/build/map/next_js/resolveAxiosHelpers/findAxiosClients.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +39 -0
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +312 -0
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +173 -0
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +261 -0
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js +206 -0
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js +168 -0
- package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js +121 -0
- package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +274 -0
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +518 -0
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -0
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js +913 -0
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js.map +1 -0
- package/build/map/next_js/resolveFetch.js +533 -0
- package/build/map/next_js/resolveFetch.js.map +1 -0
- package/build/map/next_js/resolveNewRequest.js +749 -0
- package/build/map/next_js/resolveNewRequest.js.map +1 -0
- package/build/map/next_js/resolveServerActions.js +449 -0
- package/build/map/next_js/resolveServerActions.js.map +1 -0
- package/build/map/next_js/utils.js +1600 -0
- package/build/map/next_js/utils.js.map +1 -0
- package/build/map/react_js/getReactConnections.js +303 -0
- package/build/map/react_js/getReactConnections.js.map +1 -0
- package/build/map/react_js/interactive.js +4 -0
- package/build/map/react_js/interactive.js.map +1 -0
- package/build/map/react_js/react_resolveFetch.js +6 -0
- package/build/map/react_js/react_resolveFetch.js.map +1 -0
- package/build/map/svelte_js/interactive.js +58 -0
- package/build/map/svelte_js/interactive.js.map +1 -0
- package/build/map/svelte_js/interactive_helpers/commandHandler.js +4 -0
- package/build/map/svelte_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/vue_js/bodyResolver.js +477 -0
- package/build/map/vue_js/bodyResolver.js.map +1 -0
- package/build/map/vue_js/crossFileResolver.js +438 -0
- package/build/map/vue_js/crossFileResolver.js.map +1 -0
- package/build/map/vue_js/getViteConnections.js +343 -0
- package/build/map/vue_js/getViteConnections.js.map +1 -0
- package/build/map/vue_js/interactive.js +67 -0
- package/build/map/vue_js/interactive.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js +307 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js +39 -0
- package/build/map/vue_js/interactive_helpers/commandHelpers.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js +12 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
- package/build/map/vue_js/taint_utils.js +621 -0
- package/build/map/vue_js/taint_utils.js.map +1 -0
- package/build/map/vue_js/vue_resolveFetch.js +416 -0
- package/build/map/vue_js/vue_resolveFetch.js.map +1 -0
- package/build/map/vue_js/vue_resolveHttpClient.js +738 -0
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -0
- package/build/map/vue_js/vue_resolveXhr.js +282 -0
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -0
- package/build/mcp/chatOneShot.js +101 -0
- package/build/mcp/chatOneShot.js.map +1 -0
- package/build/mcp/claudeCodeCreds.js +150 -0
- package/build/mcp/claudeCodeCreds.js.map +1 -0
- package/build/mcp/cli.js +372 -0
- package/build/mcp/cli.js.map +1 -0
- package/build/mcp/commands.js +227 -0
- package/build/mcp/commands.js.map +1 -0
- package/build/mcp/config.js +68 -0
- package/build/mcp/config.js.map +1 -0
- package/build/mcp/index.js +50 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/intent.js +204 -0
- package/build/mcp/intent.js.map +1 -0
- package/build/mcp/jobs.js +199 -0
- package/build/mcp/jobs.js.map +1 -0
- package/build/mcp/mcpServer.js +241 -0
- package/build/mcp/mcpServer.js.map +1 -0
- package/build/mcp/providers.js +170 -0
- package/build/mcp/providers.js.map +1 -0
- package/build/mcp/skills.js +115 -0
- package/build/mcp/skills.js.map +1 -0
- package/build/mcp/tools.js +185 -0
- package/build/mcp/tools.js.map +1 -0
- package/build/refactor/index.js +85 -0
- package/build/refactor/index.js.map +1 -0
- package/build/refactor/next/index.js +109 -0
- package/build/refactor/next/index.js.map +1 -0
- package/build/refactor/react/index.js +636 -0
- package/build/refactor/react/index.js.map +1 -0
- package/build/report/index.js +68 -0
- package/build/report/index.js.map +1 -0
- package/build/report/utility/dataTables/genDataTablesPage.js +158 -0
- package/build/report/utility/dataTables/genDataTablesPage.js.map +1 -0
- package/build/report/utility/genHtml.js +516 -0
- package/build/report/utility/genHtml.js.map +1 -0
- package/build/report/utility/initReportDb.js +96 -0
- package/build/report/utility/initReportDb.js.map +1 -0
- package/build/report/utility/markdownGen/addAnalyze.js +53 -0
- package/build/report/utility/markdownGen/addAnalyze.js.map +1 -0
- package/build/report/utility/markdownGen/addMappedJson.js +33 -0
- package/build/report/utility/markdownGen/addMappedJson.js.map +1 -0
- package/build/report/utility/populateDb/populateAnalysisFindings.js +31 -0
- package/build/report/utility/populateDb/populateAnalysisFindings.js.map +1 -0
- package/build/report/utility/populateDb/populateEndpoints.js +50 -0
- package/build/report/utility/populateDb/populateEndpoints.js.map +1 -0
- package/build/report/utility/populateDb/populateMappedJson.js +31 -0
- package/build/report/utility/populateDb/populateMappedJson.js.map +1 -0
- package/build/report/utility/populateDb/populateMappedOpenapi.js +49 -0
- package/build/report/utility/populateDb/populateMappedOpenapi.js.map +1 -0
- package/build/run/index.js +446 -0
- package/build/run/index.js.map +1 -0
- package/build/run/interruptHandler.js +93 -0
- package/build/run/interruptHandler.js.map +1 -0
- package/build/strings/index.js +239 -0
- package/build/strings/index.js.map +1 -0
- package/build/strings/openapi.js +63 -0
- package/build/strings/openapi.js.map +1 -0
- package/build/strings/permutate.js +62 -0
- package/build/strings/permutate.js.map +1 -0
- package/build/strings/secrets.js +102 -0
- package/build/strings/secrets.js.map +1 -0
- package/build/utility/ai.js +97 -0
- package/build/utility/ai.js.map +1 -0
- package/build/utility/configureSandbox.js +14 -0
- package/build/utility/configureSandbox.js.map +1 -0
- package/build/utility/globals.js +322 -0
- package/build/utility/globals.js.map +1 -0
- package/build/utility/interfaces.js +2 -0
- package/build/utility/interfaces.js.map +1 -0
- package/build/utility/makeReq.js +448 -0
- package/build/utility/makeReq.js.map +1 -0
- package/build/utility/openapiGenerator.js +254 -0
- package/build/utility/openapiGenerator.js.map +1 -0
- package/build/utility/postmanGenerator.js +216 -0
- package/build/utility/postmanGenerator.js.map +1 -0
- package/build/utility/progressLog.js +50 -0
- package/build/utility/progressLog.js.map +1 -0
- package/build/utility/puppeteerInstance.js +5 -0
- package/build/utility/puppeteerInstance.js.map +1 -0
- package/build/utility/replaceUrlPlaceholders.js +48 -0
- package/build/utility/replaceUrlPlaceholders.js.map +1 -0
- package/build/utility/resolvePath.js +44 -0
- package/build/utility/resolvePath.js.map +1 -0
- package/build/utility/runSandboxed.js +42 -0
- package/build/utility/runSandboxed.js.map +1 -0
- package/build/utility/urlUtils.js +21 -0
- package/build/utility/urlUtils.js.map +1 -0
- package/contributing/nextjs.md +410 -0
- package/package.json +75 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
/**
|
|
3
|
+
* Setup keybindings for the interactive mode.
|
|
4
|
+
* @param {Widgets.Screen} screen - The screen object
|
|
5
|
+
* @param {Widgets.TextboxElement} inputBox - The input box element
|
|
6
|
+
* @param {Widgets.Log} outputBox - The output box element
|
|
7
|
+
* @param {State} state - The state object
|
|
8
|
+
*/
|
|
9
|
+
function setupKeybindings(screen, inputBox, outputBox, state) {
|
|
10
|
+
// Quit on ctl-c
|
|
11
|
+
screen.key(["C-c", "q"], () => {
|
|
12
|
+
return process.exit(0);
|
|
13
|
+
});
|
|
14
|
+
// on pressing esc on input, focus on output
|
|
15
|
+
inputBox.key(["escape"], () => {
|
|
16
|
+
outputBox.focus();
|
|
17
|
+
outputBox.style.border.fg = "blue";
|
|
18
|
+
inputBox.style.border.fg = "gray";
|
|
19
|
+
screen.render();
|
|
20
|
+
});
|
|
21
|
+
// Clear input box on ctl-c
|
|
22
|
+
inputBox.key(["C-c"], () => {
|
|
23
|
+
const inputBoxValue = inputBox.value;
|
|
24
|
+
outputBox.log(`${state.lastCommandStatus ? chalk.bgGreen("%") : chalk.bgRed("%")} ${inputBoxValue}`);
|
|
25
|
+
outputBox.log(chalk.yellow("^C (Use Esc then C-c to exit)"));
|
|
26
|
+
inputBox.clearValue();
|
|
27
|
+
inputBox.focus();
|
|
28
|
+
state.lastCommandStatus = false;
|
|
29
|
+
screen.render();
|
|
30
|
+
});
|
|
31
|
+
// on pressing 'o' on screen, focus on output box
|
|
32
|
+
screen.key(["o"], () => {
|
|
33
|
+
outputBox.focus();
|
|
34
|
+
outputBox.style.border.fg = "blue";
|
|
35
|
+
inputBox.style.border.fg = "gray";
|
|
36
|
+
screen.render();
|
|
37
|
+
});
|
|
38
|
+
// on pressing 'i' on screen, focus on input box
|
|
39
|
+
screen.key(["i"], () => {
|
|
40
|
+
inputBox.focus();
|
|
41
|
+
inputBox.style.border.fg = "blue";
|
|
42
|
+
outputBox.style.border.fg = "gray";
|
|
43
|
+
screen.render();
|
|
44
|
+
});
|
|
45
|
+
// on pressing arrow keys on output box, scroll the output
|
|
46
|
+
outputBox.key(["up", "down"], (ch, key) => {
|
|
47
|
+
outputBox.scroll(key.name === "up" ? -1 : 1);
|
|
48
|
+
screen.render();
|
|
49
|
+
});
|
|
50
|
+
// on pressing arrow keys on input box, navigate through command history
|
|
51
|
+
inputBox.key(["up", "down"], (ch, key) => {
|
|
52
|
+
if (key.name === "up") {
|
|
53
|
+
if (state.commandHistoryIndex > 0) {
|
|
54
|
+
state.commandHistoryIndex--;
|
|
55
|
+
inputBox.setValue(state.commandHistory[state.commandHistoryIndex]);
|
|
56
|
+
screen.render();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// blink red
|
|
60
|
+
inputBox.style.border.fg = "red";
|
|
61
|
+
screen.render();
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
inputBox.style.border.fg = "blue";
|
|
64
|
+
screen.render();
|
|
65
|
+
}, 50);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// down
|
|
70
|
+
if (state.commandHistoryIndex < state.commandHistory.length - 1) {
|
|
71
|
+
state.commandHistoryIndex++;
|
|
72
|
+
inputBox.setValue(state.commandHistory[state.commandHistoryIndex]);
|
|
73
|
+
screen.render();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
state.commandHistoryIndex = state.commandHistory.length;
|
|
77
|
+
inputBox.setValue("");
|
|
78
|
+
// blink red
|
|
79
|
+
inputBox.style.border.fg = "red";
|
|
80
|
+
screen.render();
|
|
81
|
+
setTimeout(() => {
|
|
82
|
+
inputBox.style.border.fg = "blue";
|
|
83
|
+
screen.render();
|
|
84
|
+
}, 50);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export { setupKeybindings };
|
|
90
|
+
//# sourceMappingURL=keybindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/keybindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { highlight } from "cli-highlight";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
/**
|
|
4
|
+
* Print function code with syntax highlighting.
|
|
5
|
+
* @param {Widgets.Log} outputBox - The output box element
|
|
6
|
+
* @param {string} funcCode - The function code to print
|
|
7
|
+
* @param {string} funcDesc - The function description
|
|
8
|
+
* @param {fs.PathOrFileDescriptor} funcWriteFile - The file to write the function code to
|
|
9
|
+
*/
|
|
10
|
+
const printFunction = (outputBox, funcCode, funcDesc, funcWriteFile) => {
|
|
11
|
+
const rawText = `/**\n* ${funcDesc}\n*/\n${funcCode}`;
|
|
12
|
+
const highlighted = highlight(rawText, {
|
|
13
|
+
language: "javascript",
|
|
14
|
+
ignoreIllegals: true,
|
|
15
|
+
theme: undefined, // This makes cli-highlight use ANSI colors
|
|
16
|
+
});
|
|
17
|
+
outputBox.setContent(highlighted); // << use setContent instead of setText
|
|
18
|
+
if (funcWriteFile !== undefined && funcWriteFile !== null) {
|
|
19
|
+
fs.writeFileSync(funcWriteFile, rawText); // Save raw (non-colored) version to file
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export { printFunction };
|
|
23
|
+
//# sourceMappingURL=printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/printer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAClB,SAAsB,EACtB,QAAgB,EAChB,QAAgB,EAChB,aAAsC,EACxC,EAAE;IACA,MAAM,OAAO,GAAG,UAAU,QAAQ,SAAS,QAAQ,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE;QACnC,QAAQ,EAAE,YAAY;QACtB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,SAAS,EAAE,2CAA2C;KAChE,CAAC,CAAC;IAEH,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,uCAAuC;IAE1E,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QACxD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,yCAAyC;IACvF,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import blessed from "blessed";
|
|
2
|
+
/**
|
|
3
|
+
* Create the UI elements.
|
|
4
|
+
* @returns {{
|
|
5
|
+
* screen: blessed.Widgets.Screen,
|
|
6
|
+
* titleBox: blessed.Widgets.BoxElement,
|
|
7
|
+
* outputBox: blessed.Widgets.Log,
|
|
8
|
+
* inputBox: blessed.Widgets.TextboxElement,
|
|
9
|
+
* }} Object containing the screen and its associated boxes
|
|
10
|
+
*/
|
|
11
|
+
function createUI() {
|
|
12
|
+
// Create a screen object.
|
|
13
|
+
const screen = blessed.screen({
|
|
14
|
+
smartCSR: true,
|
|
15
|
+
title: "JS Recon Interactive Mode",
|
|
16
|
+
fullUnicode: true,
|
|
17
|
+
});
|
|
18
|
+
// Title Box
|
|
19
|
+
const titleBox = blessed.box({
|
|
20
|
+
parent: screen,
|
|
21
|
+
top: 0,
|
|
22
|
+
left: "center",
|
|
23
|
+
width: "98%",
|
|
24
|
+
height: 3,
|
|
25
|
+
content: "JS Recon Interactive Mode",
|
|
26
|
+
border: {
|
|
27
|
+
type: "line",
|
|
28
|
+
},
|
|
29
|
+
style: {
|
|
30
|
+
fg: "white",
|
|
31
|
+
border: {
|
|
32
|
+
fg: "gray",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// Output Box
|
|
37
|
+
const outputBox = blessed.log({
|
|
38
|
+
parent: screen,
|
|
39
|
+
top: 3,
|
|
40
|
+
left: "center",
|
|
41
|
+
width: "98%",
|
|
42
|
+
bottom: 3,
|
|
43
|
+
border: {
|
|
44
|
+
type: "line",
|
|
45
|
+
},
|
|
46
|
+
style: {
|
|
47
|
+
fg: "white",
|
|
48
|
+
border: {
|
|
49
|
+
fg: "gray",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
scrollable: true,
|
|
53
|
+
alwaysScroll: true,
|
|
54
|
+
scrollbar: {
|
|
55
|
+
ch: " ",
|
|
56
|
+
},
|
|
57
|
+
keys: true,
|
|
58
|
+
vi: true,
|
|
59
|
+
scrollSpeed: 0.5,
|
|
60
|
+
});
|
|
61
|
+
// Input Box
|
|
62
|
+
const inputBox = blessed.textbox({
|
|
63
|
+
parent: screen,
|
|
64
|
+
bottom: 0,
|
|
65
|
+
left: "center",
|
|
66
|
+
width: "98%",
|
|
67
|
+
height: 3,
|
|
68
|
+
border: {
|
|
69
|
+
type: "line",
|
|
70
|
+
},
|
|
71
|
+
style: {
|
|
72
|
+
fg: "white",
|
|
73
|
+
bg: "black",
|
|
74
|
+
border: {
|
|
75
|
+
fg: "gray",
|
|
76
|
+
},
|
|
77
|
+
focus: {
|
|
78
|
+
border: {
|
|
79
|
+
fg: "blue",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
inputOnFocus: true,
|
|
84
|
+
});
|
|
85
|
+
return { screen, titleBox, outputBox, inputBox };
|
|
86
|
+
}
|
|
87
|
+
export { createUI };
|
|
88
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/map/next_js/interactive_helpers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B;;;;;;;;GAQG;AACH,SAAS,QAAQ;IACb,0BAA0B;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,2BAA2B;QACpC,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;SACJ;KACJ,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;SACJ;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE;YACP,EAAE,EAAE,GAAG;SACV;QACD,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,GAAG;KACnB,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE;YACH,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACJ,EAAE,EAAE,MAAM;aACb;YACD,KAAK,EAAE;gBACH,MAAM,EAAE;oBACJ,EAAE,EAAE,MAAM;iBACb;aACJ;SACJ;QACD,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
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
|
+
import { findAxiosClients } from "./resolveAxiosHelpers/findAxiosClients.js";
|
|
14
|
+
import { findAxiosInstance } from "./resolveAxiosHelpers/findAxiosInstance.js";
|
|
15
|
+
import { processAxiosCall } from "./resolveAxiosHelpers/processAxiosCall.js";
|
|
16
|
+
import { handleZDotCreate, processZDotCreateCall } from "./resolveAxiosHelpers/handleZDotCreate.js";
|
|
17
|
+
import { directCallsWithoutAssignment } from "./resolveAxiosHelpers/directCallsWithoutAssignment.js";
|
|
18
|
+
import { collectInterceptorHeaders } from "./resolveAxiosHelpers/interceptorHeaders.js";
|
|
19
|
+
// Headers injected globally by axios request interceptors. Populated once at
|
|
20
|
+
// the start of `resolveAxios` and read by the per-call processors so every
|
|
21
|
+
// emitted endpoint reflects them.
|
|
22
|
+
let globalInterceptorHeaders = {};
|
|
23
|
+
export const getGlobalInterceptorHeaders = () => globalInterceptorHeaders;
|
|
24
|
+
const traverse = _traverse.default;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the third argument of a function declaration or arrow function expression.
|
|
27
|
+
* @param {Node} ast - The abstract syntax tree of the function.
|
|
28
|
+
* @returns {string} - The name of the third argument.
|
|
29
|
+
*/
|
|
30
|
+
export const getThirdArg = (ast) => {
|
|
31
|
+
let thirdArg = "";
|
|
32
|
+
traverse(ast, {
|
|
33
|
+
enter(path) {
|
|
34
|
+
let funcNode = null;
|
|
35
|
+
if (path.isFunctionDeclaration()) {
|
|
36
|
+
funcNode = path.node;
|
|
37
|
+
}
|
|
38
|
+
else if (path.isAssignmentExpression() && path.node.right.type === "ArrowFunctionExpression") {
|
|
39
|
+
funcNode = path.node.right;
|
|
40
|
+
}
|
|
41
|
+
if (funcNode && funcNode.params.length === 3) {
|
|
42
|
+
const thirdParam = funcNode.params[2];
|
|
43
|
+
if (thirdParam.type === "Identifier") {
|
|
44
|
+
thirdArg = thirdParam.name;
|
|
45
|
+
path.stop();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
return thirdArg;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Resolves axios instances in the given chunks.
|
|
54
|
+
* @param {Chunks} chunks - A dictionary of chunk names to chunk objects.
|
|
55
|
+
* @param {string} directory - The directory of the chunk file.
|
|
56
|
+
*/
|
|
57
|
+
const resolveAxios = (chunks, directory) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
console.log(chalk.cyan("[i] Resolving axios instances"));
|
|
59
|
+
// Discover headers added by axios request interceptors up-front. The same
|
|
60
|
+
// set applies to every request that flows through the shared axios client,
|
|
61
|
+
// so we attach it to each emitted endpoint below.
|
|
62
|
+
globalInterceptorHeaders = collectInterceptorHeaders(chunks);
|
|
63
|
+
if (Object.keys(globalInterceptorHeaders).length > 0) {
|
|
64
|
+
console.log(chalk.cyan(`[i] Detected ${Object.keys(globalInterceptorHeaders).length} interceptor-injected header(s): ${Object.keys(globalInterceptorHeaders).join(", ")}`));
|
|
65
|
+
}
|
|
66
|
+
const { axiosExportedFrom, axiosImportedTo } = findAxiosClients(chunks);
|
|
67
|
+
if (axiosExportedFrom.length === 0) {
|
|
68
|
+
console.error(chalk.yellow("[!] No axios clients defined in any chunk."));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (Object.keys(axiosImportedTo).length === 0) {
|
|
72
|
+
console.error(chalk.yellow("[!] No chunks import any of the defined axios clients."));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
for (const chunkName of Object.keys(chunks)) {
|
|
76
|
+
const chunk = chunks[chunkName];
|
|
77
|
+
const chunkCode = chunk.code;
|
|
78
|
+
let axiosCallsFound = false;
|
|
79
|
+
let ast;
|
|
80
|
+
try {
|
|
81
|
+
ast = parser.parse(chunkCode, {
|
|
82
|
+
sourceType: "unambiguous",
|
|
83
|
+
plugins: ["jsx", "typescript"],
|
|
84
|
+
errorRecovery: true,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (_a) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// First, check for the n(...).Z.create() pattern
|
|
91
|
+
const zDotCreateInstances = {};
|
|
92
|
+
traverse(ast, {
|
|
93
|
+
CallExpression(path) {
|
|
94
|
+
const axiosVarName = handleZDotCreate(path, chunkCode, directory, chunkName, chunks, axiosExportedFrom);
|
|
95
|
+
if (axiosVarName) {
|
|
96
|
+
zDotCreateInstances[axiosVarName] = axiosVarName;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
// Process any found Z.create instances
|
|
101
|
+
for (const axiosVarName of Object.keys(zDotCreateInstances)) {
|
|
102
|
+
traverse(ast, {
|
|
103
|
+
MemberExpression(path) {
|
|
104
|
+
processZDotCreateCall(path, axiosVarName, chunkCode, directory, chunkName, chunks, ast);
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
axiosCallsFound = true;
|
|
108
|
+
}
|
|
109
|
+
// similar to n(...).Z.create() pattern, search for direct calls, like n(...).Z.get(), n(...).Z.post(), etc.
|
|
110
|
+
// for this, iterate through all the chunks, and find which ones import the axios instances
|
|
111
|
+
const axiosLibraries = Object.values(chunks)
|
|
112
|
+
.filter((chunk) => chunk.isAxiosLibrary === true)
|
|
113
|
+
.map((chunk) => chunk.id);
|
|
114
|
+
if (axiosLibraries.length > 0) {
|
|
115
|
+
const importedAxiosLib = axiosLibraries.find((lib) => { var _a; return (_a = chunk.imports) === null || _a === void 0 ? void 0 : _a.includes(lib); });
|
|
116
|
+
if (importedAxiosLib) {
|
|
117
|
+
// now it can be processed to find axios calls
|
|
118
|
+
const thirdArg = getThirdArg(ast);
|
|
119
|
+
if (thirdArg) {
|
|
120
|
+
directCallsWithoutAssignment(ast, thirdArg, importedAxiosLib, chunkCode, directory, chunkName, chunks);
|
|
121
|
+
axiosCallsFound = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Process regular axios instances
|
|
126
|
+
if (Object.keys(axiosImportedTo).includes(chunkName)) {
|
|
127
|
+
const thirdArg = getThirdArg(ast);
|
|
128
|
+
if (thirdArg) {
|
|
129
|
+
const axiosInstance = findAxiosInstance(ast, thirdArg, axiosImportedTo[chunkName], chunkName);
|
|
130
|
+
if (axiosInstance) {
|
|
131
|
+
traverse(ast, {
|
|
132
|
+
MemberExpression(path) {
|
|
133
|
+
processAxiosCall(path, axiosInstance, chunkCode, directory, chunkName, chunks, ast);
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
axiosCallsFound = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// This case might not be an error, just a different pattern.
|
|
141
|
+
// console.error(chalk.yellow(`[!] Could not find a function with 3 arguments in ${chunkName}`));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (!axiosCallsFound &&
|
|
145
|
+
Object.keys(axiosImportedTo).includes(chunkName) &&
|
|
146
|
+
Object.keys(zDotCreateInstances).length !== 0) {
|
|
147
|
+
console.error(chalk.yellow(`[!] No axios calls found in ${chunkName}`));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
export default resolveAxios;
|
|
152
|
+
//# sourceMappingURL=resolveAxios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAxios.js","sourceRoot":"","sources":["../../../src/map/next_js/resolveAxios.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively converts an AST node to a JSON-like string representation.
|
|
3
|
+
*
|
|
4
|
+
* The function walks the AST tree, resolving each node's value as a JSON-like string.
|
|
5
|
+
* For example, an ObjectExpression node will be resolved to a string like "{key1: value1, key2: value2}".
|
|
6
|
+
* A SpreadElement will be resolved to "...<resolved argument value>".
|
|
7
|
+
* A MemberExpression will be resolved to a string like "<resolved property name>".
|
|
8
|
+
*
|
|
9
|
+
* @param node - The AST node to be converted
|
|
10
|
+
* @param code - The original source code string
|
|
11
|
+
* @returns A JSON-like string representation of the AST node
|
|
12
|
+
*/
|
|
13
|
+
export const astNodeToJsonString = (node, code) => {
|
|
14
|
+
if (!node) {
|
|
15
|
+
return '""';
|
|
16
|
+
}
|
|
17
|
+
switch (node.type) {
|
|
18
|
+
case "ObjectExpression": {
|
|
19
|
+
const props = node.properties
|
|
20
|
+
.map((prop) => {
|
|
21
|
+
if (prop.type === "ObjectProperty") {
|
|
22
|
+
const key = astNodeToJsonString(prop.key, code);
|
|
23
|
+
const value = astNodeToJsonString(prop.value, code);
|
|
24
|
+
return `${key}: ${value}`;
|
|
25
|
+
}
|
|
26
|
+
else if (prop.type === "SpreadElement") {
|
|
27
|
+
// Skip spread elements — they're code artifacts, not real body keys.
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return null; // Or handle other property types if necessary
|
|
31
|
+
})
|
|
32
|
+
.filter(Boolean);
|
|
33
|
+
return `{${props.join(", ")}}`;
|
|
34
|
+
}
|
|
35
|
+
case "ArrayExpression": {
|
|
36
|
+
const elements = node.elements.map((elem) => astNodeToJsonString(elem, code));
|
|
37
|
+
return `[${elements.join(", ")}]`;
|
|
38
|
+
}
|
|
39
|
+
case "StringLiteral": {
|
|
40
|
+
return JSON.stringify(node.value);
|
|
41
|
+
}
|
|
42
|
+
case "NumericLiteral": {
|
|
43
|
+
return String(node.value);
|
|
44
|
+
}
|
|
45
|
+
case "BooleanLiteral": {
|
|
46
|
+
return String(node.value);
|
|
47
|
+
}
|
|
48
|
+
case "NullLiteral": {
|
|
49
|
+
return "null";
|
|
50
|
+
}
|
|
51
|
+
case "Identifier": {
|
|
52
|
+
return `"${node.name}"`;
|
|
53
|
+
}
|
|
54
|
+
case "MemberExpression": {
|
|
55
|
+
// Reconstruct the member expression as a string, removing newlines
|
|
56
|
+
return `"${code.slice(node.start, node.end).replace(/\n\s*/g, " ")}"`;
|
|
57
|
+
}
|
|
58
|
+
default: {
|
|
59
|
+
// For any other node types, slice the original code, remove newlines, and wrap in quotes
|
|
60
|
+
return `"${code.slice(node.start, node.end).replace(/\n\s*/g, " ")}"`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=astNodeToJsonString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astNodeToJsonString.js","sourceRoot":"","sources":["../../../../src/map/next_js/resolveAxiosHelpers/astNodeToJsonString.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAE,IAAY,EAAU,EAAE;IACpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;iBACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACV,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACjC,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACpD,OAAO,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC9B,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACvC,qEAAqE;oBACrE,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC,8CAA8C;YAC/D,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnC,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9E,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QAC5B,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,mEAAmE;YACnE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,yFAAyF;YACzF,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;QAC1E,CAAC;IACL,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import _traverse from "@babel/traverse";
|
|
2
|
+
import * as t from "@babel/types";
|
|
3
|
+
import { processDirectAxiosCall } from "./processDirectAxiosCall.js";
|
|
4
|
+
const traverse = _traverse.default;
|
|
5
|
+
/**
|
|
6
|
+
* Finds and processes direct Axios calls that are not assigned to a variable.
|
|
7
|
+
* @param ast - The Abstract Syntax Tree of the code.
|
|
8
|
+
* @param thirdArg - The name of the third argument function.
|
|
9
|
+
* @param axiosLibraryId - The ID of the Axios library.
|
|
10
|
+
* @param chunkCode - The code of the chunk.
|
|
11
|
+
* @param directory - The directory of the chunk.
|
|
12
|
+
* @param chunkName - The name of the chunk.
|
|
13
|
+
* @param chunks - All the chunks.
|
|
14
|
+
*/
|
|
15
|
+
export const directCallsWithoutAssignment = (ast, thirdArg, axiosLibraryId, chunkCode, directory, chunkName, chunks) => {
|
|
16
|
+
let axiosVarName = null;
|
|
17
|
+
// Find variable assignment: let N = a(5323)
|
|
18
|
+
traverse(ast, {
|
|
19
|
+
VariableDeclarator(path) {
|
|
20
|
+
if (path.node.init &&
|
|
21
|
+
t.isCallExpression(path.node.init) &&
|
|
22
|
+
t.isIdentifier(path.node.init.callee) &&
|
|
23
|
+
path.node.init.callee.name === thirdArg &&
|
|
24
|
+
path.node.init.arguments.length === 1 &&
|
|
25
|
+
t.isNumericLiteral(path.node.init.arguments[0]) &&
|
|
26
|
+
path.node.init.arguments[0].value.toString() === axiosLibraryId &&
|
|
27
|
+
t.isIdentifier(path.node.id)) {
|
|
28
|
+
axiosVarName = path.node.id.name;
|
|
29
|
+
path.stop();
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
if (axiosVarName) {
|
|
34
|
+
traverse(ast, {
|
|
35
|
+
MemberExpression(path) {
|
|
36
|
+
if (t.isMemberExpression(path.node.object) &&
|
|
37
|
+
t.isIdentifier(path.node.object.object) &&
|
|
38
|
+
path.node.object.object.name === axiosVarName &&
|
|
39
|
+
t.isIdentifier(path.node.object.property) &&
|
|
40
|
+
path.node.object.property.name === "Z" &&
|
|
41
|
+
t.isIdentifier(path.node.property)) {
|
|
42
|
+
processDirectAxiosCall(path, chunkCode, directory, chunkName, chunks, ast);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=directCallsWithoutAssignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directCallsWithoutAssignment.js","sourceRoot":"","sources":["../../../../src/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,GAAW,EACX,QAAgB,EAChB,cAAsB,EACtB,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,MAAc,EAChB,EAAE;IACA,IAAI,YAAY,GAAkB,IAAI,CAAC;IAEvC,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE;QACV,kBAAkB,CAAC,IAAI;YACnB,IACI,IAAI,CAAC,IAAI,CAAC,IAAI;gBACd,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;gBACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBACrC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,cAAc;gBAC/D,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAC9B,CAAC;gBACC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,YAAY,EAAE,CAAC;QACf,QAAQ,CAAC,GAAG,EAAE;YACV,gBAAgB,CAAC,IAAI;gBACjB,IACI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;oBACtC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;oBAC7C,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG;oBACtC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpC,CAAC;oBACC,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
/**
|
|
3
|
+
* Finds the chunks that export and import Axios clients.
|
|
4
|
+
* @param {Chunks} chunks - Collection of code chunks to analyze
|
|
5
|
+
* @returns {{axiosExportedFrom: string[], axiosImportedTo: { [key: string]: string }}
|
|
6
|
+
* - an object containing two properties: axiosExportedFrom and axiosImportedTo.
|
|
7
|
+
* - axiosExportedFrom is an array of chunk names that have an Axios client.
|
|
8
|
+
* - axiosImportedTo is an object where each key is a chunk name and the value is the name of the Axios client chunk that it imports.
|
|
9
|
+
*/
|
|
10
|
+
export const findAxiosClients = (chunks) => {
|
|
11
|
+
let axiosExportedFrom = [];
|
|
12
|
+
let axiosImportedTo = {};
|
|
13
|
+
// first get those which have axios client
|
|
14
|
+
for (const chunkName of Object.keys(chunks)) {
|
|
15
|
+
if (chunks[chunkName].isAxiosLibrary) {
|
|
16
|
+
axiosExportedFrom.push(chunkName);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// now, see which ones import those
|
|
20
|
+
for (const chunkName of Object.keys(chunks)) {
|
|
21
|
+
// iterate through the names of the axios clients
|
|
22
|
+
for (const axiosExportFunctionId of axiosExportedFrom) {
|
|
23
|
+
// iterate through the imports of the all the chunks, and see which ones have axios clients imported
|
|
24
|
+
for (const importName of chunks[chunkName].imports) {
|
|
25
|
+
if (importName === axiosExportFunctionId) {
|
|
26
|
+
axiosImportedTo[chunkName] = axiosExportFunctionId;
|
|
27
|
+
console.log(chalk.green(`[✓] ${chunkName} imports axios client ${axiosExportFunctionId}`));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return { axiosExportedFrom, axiosImportedTo };
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=findAxiosClients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findAxiosClients.js","sourceRoot":"","sources":["../../../../src/map/next_js/resolveAxiosHelpers/findAxiosClients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,MAAc,EAC6D,EAAE;IAC7E,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,IAAI,eAAe,GAA8B,EAAE,CAAC;IAEpD,0CAA0C;IAC1C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;YACnC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,iDAAiD;QACjD,KAAK,MAAM,qBAAqB,IAAI,iBAAiB,EAAE,CAAC;YACpD,oGAAoG;YACpG,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,UAAU,KAAK,qBAAqB,EAAE,CAAC;oBACvC,eAAe,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC;oBAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,yBAAyB,qBAAqB,EAAE,CAAC,CAAC,CAAC;gBAC/F,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAClD,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import _traverse from "@babel/traverse";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
const traverse = _traverse.default;
|
|
4
|
+
/**
|
|
5
|
+
* Finds the variable name of the axios instance used in a chunk.
|
|
6
|
+
* @param {Node} ast - The abstract syntax tree of the chunk.
|
|
7
|
+
* @param {string} thirdArg - The third argument of the function.
|
|
8
|
+
* @param {string} axiosImportedToChunk - The name of the chunk that exports the axios instance.
|
|
9
|
+
* @param {string} chunkName - The name of the chunk.
|
|
10
|
+
* @returns {string} The variable name of the axios instance used in the chunk.
|
|
11
|
+
*/
|
|
12
|
+
export const findAxiosInstance = (ast, thirdArg, axiosImportedToChunk, chunkName) => {
|
|
13
|
+
let axiosInstance = "";
|
|
14
|
+
if (thirdArg !== "") {
|
|
15
|
+
traverse(ast, {
|
|
16
|
+
VariableDeclarator(path) {
|
|
17
|
+
if (path.node.id.type === "Identifier") {
|
|
18
|
+
const varName = path.node.id.name;
|
|
19
|
+
const assignmentValue = path.node.init;
|
|
20
|
+
if ((assignmentValue === null || assignmentValue === void 0 ? void 0 : assignmentValue.type) === "CallExpression" &&
|
|
21
|
+
assignmentValue.callee.type === "Identifier" &&
|
|
22
|
+
assignmentValue.callee.name === thirdArg) {
|
|
23
|
+
const firstArg = assignmentValue.arguments[0];
|
|
24
|
+
if (firstArg && (firstArg.type === "StringLiteral" || firstArg.type === "NumericLiteral")) {
|
|
25
|
+
const thisFunctionAssignmentValue = firstArg.value.toString();
|
|
26
|
+
if (thisFunctionAssignmentValue === axiosImportedToChunk) {
|
|
27
|
+
console.log(chalk.green(`[✓] ${chunkName} uses axios client initialized in ${varName}`));
|
|
28
|
+
axiosInstance = varName;
|
|
29
|
+
path.stop();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return axiosInstance;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=findAxiosInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findAxiosInstance.js","sourceRoot":"","sources":["../../../../src/map/next_js/resolveAxiosHelpers/findAxiosInstance.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,GAAS,EACT,QAAgB,EAChB,oBAA4B,EAC5B,SAAiB,EACX,EAAE;IACR,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,GAAG,EAAE;YACV,kBAAkB,CAAC,IAAI;gBACnB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvC,IACI,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,MAAK,gBAAgB;wBAC1C,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;wBAC5C,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAC1C,CAAC;wBACC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC9C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;4BACxF,MAAM,2BAA2B,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC9D,IAAI,2BAA2B,KAAK,oBAAoB,EAAE,CAAC;gCACvD,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,qCAAqC,OAAO,EAAE,CAAC,CAC9E,CAAC;gCACF,aAAa,GAAG,OAAO,CAAC;gCACxB,IAAI,CAAC,IAAI,EAAE,CAAC;4BAChB,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC"}
|