@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,155 @@
|
|
|
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 makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
import _traverse from "@babel/traverse";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
import cliProgress from "cli-progress";
|
|
14
|
+
import parser from "@babel/parser";
|
|
15
|
+
import t from "@babel/types";
|
|
16
|
+
import { setActiveBarLogger, computeBarSize, watchBarResize } from "../../utility/progressLog.js";
|
|
17
|
+
const traverse = _traverse.default;
|
|
18
|
+
const vue_getClientSidePaths = (url_1, jsFiles_1, ...args_1) => __awaiter(void 0, [url_1, jsFiles_1, ...args_1], void 0, function* (url, jsFiles, maxJsSizeMb = 2) {
|
|
19
|
+
const MAX_JS_SIZE_BYTES = maxJsSizeMb * 1024 * 1024;
|
|
20
|
+
let toReturn = [];
|
|
21
|
+
const baseOrigin = new URL(url).origin;
|
|
22
|
+
const bar = new cliProgress.SingleBar({
|
|
23
|
+
format: chalk.cyan("[i] Extracting client-side paths ") +
|
|
24
|
+
"[{bar}] {percentage}% | {value}/{total} files | {paths} paths | {skipped} skipped",
|
|
25
|
+
barCompleteChar: "█",
|
|
26
|
+
barIncompleteChar: "░",
|
|
27
|
+
barsize: computeBarSize(86),
|
|
28
|
+
hideCursor: false,
|
|
29
|
+
clearOnComplete: false,
|
|
30
|
+
stopOnComplete: false,
|
|
31
|
+
}, cliProgress.Presets.shades_classic);
|
|
32
|
+
let processed = 0;
|
|
33
|
+
let skipped = 0;
|
|
34
|
+
bar.start(jsFiles.length, 0, { paths: 0, skipped: 0 });
|
|
35
|
+
const stopBarWatcher = watchBarResize(bar, 86);
|
|
36
|
+
setActiveBarLogger({ log: (s) => process.stdout.write("\r\x1b[K" + s) });
|
|
37
|
+
// iterate through all those
|
|
38
|
+
for (const jsFile of jsFiles) {
|
|
39
|
+
if (!jsFile.endsWith(".js")) {
|
|
40
|
+
processed++;
|
|
41
|
+
skipped++;
|
|
42
|
+
bar.update(processed, { paths: toReturn.length, skipped });
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const req = yield makeRequest(jsFile);
|
|
46
|
+
if (req == null) {
|
|
47
|
+
processed++;
|
|
48
|
+
skipped++;
|
|
49
|
+
bar.update(processed, { paths: toReturn.length, skipped });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const jsContent = yield req.text();
|
|
53
|
+
if (jsContent.length > MAX_JS_SIZE_BYTES) {
|
|
54
|
+
processed++;
|
|
55
|
+
skipped++;
|
|
56
|
+
bar.update(processed, { paths: toReturn.length, skipped });
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// load in ast
|
|
60
|
+
let ast;
|
|
61
|
+
try {
|
|
62
|
+
ast = parser.parse(jsContent, {
|
|
63
|
+
sourceType: "unambiguous",
|
|
64
|
+
plugins: ["jsx", "typescript"],
|
|
65
|
+
errorRecovery: true,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (_a) {
|
|
69
|
+
processed++;
|
|
70
|
+
skipped++;
|
|
71
|
+
bar.update(processed, { paths: toReturn.length, skipped });
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const jsFileOrigin = new URL(jsFile).origin;
|
|
75
|
+
const pathsBefore = toReturn.length;
|
|
76
|
+
traverse(ast, {
|
|
77
|
+
ObjectProperty(path) {
|
|
78
|
+
const { key, value } = path.node;
|
|
79
|
+
if (t.isIdentifier(key, { name: "link" }) &&
|
|
80
|
+
t.isStringLiteral(value) &&
|
|
81
|
+
t.isObjectExpression(path.parent)) {
|
|
82
|
+
const linkVal = value.value;
|
|
83
|
+
if (linkVal.startsWith("//")) {
|
|
84
|
+
toReturn.push("https:" + linkVal);
|
|
85
|
+
}
|
|
86
|
+
else if (linkVal.startsWith("/")) {
|
|
87
|
+
toReturn.push(baseOrigin + linkVal);
|
|
88
|
+
}
|
|
89
|
+
else if (linkVal.startsWith("http") && new URL(linkVal).origin === jsFileOrigin) {
|
|
90
|
+
toReturn.push(linkVal);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
CallExpression(path) {
|
|
95
|
+
const { callee, arguments: args } = path.node;
|
|
96
|
+
// Match Object.assign(...)
|
|
97
|
+
if (!t.isMemberExpression(callee) ||
|
|
98
|
+
!t.isIdentifier(callee.object, { name: "Object" }) ||
|
|
99
|
+
!t.isIdentifier(callee.property, { name: "assign" }))
|
|
100
|
+
return;
|
|
101
|
+
if (args.length < 2)
|
|
102
|
+
return;
|
|
103
|
+
const [firstArg, secondArg] = args;
|
|
104
|
+
// Match window.<something>.routes
|
|
105
|
+
if (!t.isMemberExpression(firstArg) ||
|
|
106
|
+
!t.isIdentifier(firstArg.property, { name: "routes" }) ||
|
|
107
|
+
!t.isMemberExpression(firstArg.object) ||
|
|
108
|
+
!t.isIdentifier(firstArg.object.object, { name: "window" }))
|
|
109
|
+
return;
|
|
110
|
+
if (!t.isObjectExpression(secondArg))
|
|
111
|
+
return;
|
|
112
|
+
for (const routeEntry of secondArg.properties) {
|
|
113
|
+
if (!t.isObjectProperty(routeEntry) || !t.isObjectExpression(routeEntry.value))
|
|
114
|
+
continue;
|
|
115
|
+
for (const routeProp of routeEntry.value.properties) {
|
|
116
|
+
if (!t.isObjectProperty(routeProp) ||
|
|
117
|
+
!t.isIdentifier(routeProp.key, { name: "tokens" }) ||
|
|
118
|
+
!t.isArrayExpression(routeProp.value))
|
|
119
|
+
continue;
|
|
120
|
+
for (const tokenEl of routeProp.value.elements) {
|
|
121
|
+
if (!t.isArrayExpression(tokenEl))
|
|
122
|
+
continue;
|
|
123
|
+
const [typeEl, valueEl] = tokenEl.elements;
|
|
124
|
+
if (t.isStringLiteral(typeEl, { value: "text" }) && t.isStringLiteral(valueEl)) {
|
|
125
|
+
const pathVal = valueEl.value;
|
|
126
|
+
if (pathVal.startsWith("//")) {
|
|
127
|
+
toReturn.push("https:" + pathVal);
|
|
128
|
+
}
|
|
129
|
+
else if (pathVal.startsWith("/")) {
|
|
130
|
+
toReturn.push(baseOrigin + pathVal);
|
|
131
|
+
}
|
|
132
|
+
else if (pathVal.startsWith("http") && new URL(pathVal).origin === jsFileOrigin) {
|
|
133
|
+
toReturn.push(pathVal);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
processed++;
|
|
142
|
+
if (toReturn.length === pathsBefore)
|
|
143
|
+
skipped++;
|
|
144
|
+
bar.update(processed, { paths: toReturn.length, skipped });
|
|
145
|
+
}
|
|
146
|
+
bar.stop();
|
|
147
|
+
stopBarWatcher();
|
|
148
|
+
setActiveBarLogger(null);
|
|
149
|
+
if (toReturn.length > 0) {
|
|
150
|
+
console.log(chalk.green(`[+] Found ${toReturn.length} client-side paths from JS files!`));
|
|
151
|
+
}
|
|
152
|
+
return toReturn;
|
|
153
|
+
});
|
|
154
|
+
export default vue_getClientSidePaths;
|
|
155
|
+
//# sourceMappingURL=vue_getClientSidePaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_getClientSidePaths.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_getClientSidePaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
import parser from "@babel/parser";
|
|
12
|
+
import _traverse from "@babel/traverse";
|
|
13
|
+
import chalk from "chalk";
|
|
14
|
+
const traverse = _traverse.default;
|
|
15
|
+
const parseJsFile = (url, maxJsSizeMb) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
const MAX_JS_SIZE_BYTES = maxJsSizeMb * 1024 * 1024;
|
|
17
|
+
const foundUrls = new Set();
|
|
18
|
+
const req = yield makeRequest(url);
|
|
19
|
+
if (req == null) {
|
|
20
|
+
console.error(chalk.red(`Failed to fetch ${url}`));
|
|
21
|
+
return foundUrls;
|
|
22
|
+
}
|
|
23
|
+
const reqText = yield req.text();
|
|
24
|
+
if (reqText.length > MAX_JS_SIZE_BYTES) {
|
|
25
|
+
return foundUrls;
|
|
26
|
+
}
|
|
27
|
+
let ast;
|
|
28
|
+
try {
|
|
29
|
+
ast = parser.parse(reqText, {
|
|
30
|
+
sourceType: "module",
|
|
31
|
+
plugins: ["importAssertions"],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (_a) {
|
|
35
|
+
return foundUrls;
|
|
36
|
+
}
|
|
37
|
+
// get all the import statements
|
|
38
|
+
traverse(ast, {
|
|
39
|
+
ImportDeclaration(path) {
|
|
40
|
+
const source = path.node.source.value;
|
|
41
|
+
if (source.startsWith("./") || source.startsWith("../") || source.startsWith("/")) {
|
|
42
|
+
foundUrls.add(new URL(source, url).href);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.error(chalk.red(`Found import statement but can't resolve it: ${source} - on ${url}`));
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return foundUrls;
|
|
50
|
+
});
|
|
51
|
+
const vue_jsImports = (url_1, foundJsFiles_1, ...args_1) => __awaiter(void 0, [url_1, foundJsFiles_1, ...args_1], void 0, function* (url, foundJsFiles, maxJsSizeMb = 2) {
|
|
52
|
+
const allDiscoveredUrls = new Set();
|
|
53
|
+
const crawledUrls = new Set(foundJsFiles);
|
|
54
|
+
for (const jsfile of foundJsFiles) {
|
|
55
|
+
const discovered = yield parseJsFile(jsfile, maxJsSizeMb);
|
|
56
|
+
for (const u of discovered)
|
|
57
|
+
allDiscoveredUrls.add(u);
|
|
58
|
+
}
|
|
59
|
+
// crawl newly found URLs until no uncrawled ones remain
|
|
60
|
+
let foundNew = true;
|
|
61
|
+
while (foundNew) {
|
|
62
|
+
foundNew = false;
|
|
63
|
+
for (const u of [...allDiscoveredUrls]) {
|
|
64
|
+
if (!crawledUrls.has(u)) {
|
|
65
|
+
foundNew = true;
|
|
66
|
+
crawledUrls.add(u);
|
|
67
|
+
const discovered = yield parseJsFile(u, maxJsSizeMb);
|
|
68
|
+
for (const newU of discovered)
|
|
69
|
+
allDiscoveredUrls.add(newU);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return [...allDiscoveredUrls];
|
|
74
|
+
});
|
|
75
|
+
export default vue_jsImports;
|
|
76
|
+
//# sourceMappingURL=vue_jsImports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_jsImports.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_jsImports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
import * as cheerio from "cheerio";
|
|
13
|
+
const vue_pageSrc = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
let toReturn = [];
|
|
15
|
+
// first, get the contents of the homepage
|
|
16
|
+
const req = yield makeRequest(url);
|
|
17
|
+
if (req == null) {
|
|
18
|
+
console.error(chalk.red(`Failed to fetch ${url}`));
|
|
19
|
+
return toReturn;
|
|
20
|
+
}
|
|
21
|
+
const homepageContent = yield req.text();
|
|
22
|
+
// get all the script srcs
|
|
23
|
+
const $script = cheerio.load(homepageContent);
|
|
24
|
+
$script("script").each((_, el) => {
|
|
25
|
+
const src = $script(el).attr("src");
|
|
26
|
+
if (src) {
|
|
27
|
+
// construct the full URL if it's a relative path
|
|
28
|
+
if (src.startsWith("http") || src.startsWith("//")) {
|
|
29
|
+
toReturn.push(src);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const fullUrl = new URL(src, url).href;
|
|
33
|
+
toReturn.push(fullUrl);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// get all the link srcs
|
|
38
|
+
const $link = cheerio.load(homepageContent);
|
|
39
|
+
$link("link").each((_, el) => {
|
|
40
|
+
const src = $link(el).attr("href");
|
|
41
|
+
if (src) {
|
|
42
|
+
// check the rel attribute
|
|
43
|
+
const rel = $link(el).attr("rel");
|
|
44
|
+
const asAttr = $link(el).attr("as");
|
|
45
|
+
if (rel && (rel == "modulepreload" || (rel == "preload" && asAttr == "script"))) {
|
|
46
|
+
// construct the full URL if it's a relative path
|
|
47
|
+
if (src.startsWith("http") || src.startsWith("//")) {
|
|
48
|
+
toReturn.push(src);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const fullUrl = new URL(src, url).href;
|
|
52
|
+
toReturn.push(fullUrl);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return toReturn;
|
|
58
|
+
});
|
|
59
|
+
export default vue_pageSrc;
|
|
60
|
+
//# sourceMappingURL=vue_pageSrc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_pageSrc.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_pageSrc.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAG,CAAO,GAAW,EAAE,EAAE;IACtC,IAAI,QAAQ,GAAa,EAAE,CAAC;IAE5B,0CAA0C;IAC1C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACN,iDAAiD;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACN,0BAA0B;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC9E,iDAAiD;gBACjD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;oBACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import makeRequest from "../../utility/makeReq.js";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
const vue_reconstructSourceMaps = (url, jsFilesToDownload) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
+
// get the contents of first file, and check if it has the sourceMappingURL
|
|
14
|
+
let sourceMapUrls = [];
|
|
15
|
+
// guard against empty input
|
|
16
|
+
if (jsFilesToDownload.length === 0) {
|
|
17
|
+
return sourceMapUrls;
|
|
18
|
+
}
|
|
19
|
+
const req = yield makeRequest(jsFilesToDownload[0]);
|
|
20
|
+
if (req == null) {
|
|
21
|
+
console.error(chalk.red(`Failed to fetch ${jsFilesToDownload[0]}`));
|
|
22
|
+
return sourceMapUrls;
|
|
23
|
+
}
|
|
24
|
+
const content = yield req.text();
|
|
25
|
+
// check if it has the sourceMappingURL
|
|
26
|
+
if (!(content.includes("sourceMappingURL=") || content.includes("sourceMappingURL ="))) {
|
|
27
|
+
return sourceMapUrls;
|
|
28
|
+
}
|
|
29
|
+
console.log(chalk.green("[✓] Found sourceMappingURL"));
|
|
30
|
+
// now that one file has this, iterate through all the files, and reconstruct the source maps
|
|
31
|
+
for (const jsFile of jsFilesToDownload) {
|
|
32
|
+
const req = yield makeRequest(jsFile);
|
|
33
|
+
if (req == null) {
|
|
34
|
+
console.error(chalk.red(`Failed to fetch ${jsFile}`));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const content = yield req.text();
|
|
38
|
+
// get the sourceMappingURL
|
|
39
|
+
let sourceMappingURL_reg = content.match(/sourceMappingURL=([^"]+)/);
|
|
40
|
+
if (sourceMappingURL_reg) {
|
|
41
|
+
// strip the newline, and assign to a new var
|
|
42
|
+
const sourceMappingURL = sourceMappingURL_reg[1].replace(/\n/g, "");
|
|
43
|
+
// reconstruct the URL
|
|
44
|
+
let reconstructedUrl = "";
|
|
45
|
+
if (sourceMappingURL.startsWith("/")) {
|
|
46
|
+
reconstructedUrl = new URL(jsFile).origin + sourceMappingURL;
|
|
47
|
+
}
|
|
48
|
+
else if (sourceMappingURL.startsWith("./")) {
|
|
49
|
+
reconstructedUrl = new URL(sourceMappingURL, jsFile).href;
|
|
50
|
+
}
|
|
51
|
+
else if (sourceMappingURL.startsWith("http")) {
|
|
52
|
+
reconstructedUrl = sourceMappingURL;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
reconstructedUrl = new URL(sourceMappingURL, jsFile).href;
|
|
56
|
+
}
|
|
57
|
+
// now that we've got the mapping URL, just push it to the array
|
|
58
|
+
sourceMapUrls.push(reconstructedUrl);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return sourceMapUrls;
|
|
62
|
+
});
|
|
63
|
+
export default vue_reconstructSourceMaps;
|
|
64
|
+
//# sourceMappingURL=vue_reconstructSourceMaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_reconstructSourceMaps.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_reconstructSourceMaps.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,yBAAyB,GAAG,CAAO,GAAW,EAAE,iBAA2B,EAAE,EAAE;IACjF,2EAA2E;IAE3E,IAAI,aAAa,GAAa,EAAE,CAAC;IACjC,4BAA4B;IAC5B,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjC,uCAAuC;IACvC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEvD,6FAA6F;IAC7F,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACrE,IAAI,oBAAoB,EAAE,CAAC;YACvB,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpE,sBAAsB;YACtB,IAAI,gBAAgB,GAAW,EAAE,CAAC;YAClC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC;YACjE,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,gBAAgB,GAAG,gBAAgB,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;YAED,gEAAgE;YAChE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAA,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
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 cliProgress from "cli-progress";
|
|
12
|
+
import vue_discoverJsFiles from "./vue_discoverJsFiles.js";
|
|
13
|
+
import { setActiveBarLogger, computeBarSize, watchBarResize } from "../../utility/progressLog.js";
|
|
14
|
+
/**
|
|
15
|
+
* Recursively walks newly discovered Vue.js client-side paths.
|
|
16
|
+
*
|
|
17
|
+
* For each path, runs the same discovery pipeline used on the entry URL
|
|
18
|
+
* (via {@link vue_discoverJsFiles}), collects every JS file it finds and
|
|
19
|
+
* queues any new client-side paths surfaced from those files. Paths are
|
|
20
|
+
* tracked in a visited set so each URL is only processed once.
|
|
21
|
+
*
|
|
22
|
+
* Termination conditions:
|
|
23
|
+
* - the pending queue is exhausted, or
|
|
24
|
+
* - {@link STAGNATION_LIMIT} consecutive rounds yield no new JS files.
|
|
25
|
+
*/
|
|
26
|
+
const STAGNATION_LIMIT = 3;
|
|
27
|
+
const vue_recursiveClientSidePathDownload = (clientSidePaths_1, ...args_1) => __awaiter(void 0, [clientSidePaths_1, ...args_1], void 0, function* (clientSidePaths, threads = 1, maxJsSizeMb = 2, onFilesDiscovered) {
|
|
28
|
+
const allJsFiles = new Set();
|
|
29
|
+
const visitedPaths = new Set();
|
|
30
|
+
const knownPaths = new Set();
|
|
31
|
+
let pending = [];
|
|
32
|
+
for (const p of clientSidePaths) {
|
|
33
|
+
if (!knownPaths.has(p)) {
|
|
34
|
+
knownPaths.add(p);
|
|
35
|
+
pending.push(p);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
let stagnantRounds = 0;
|
|
39
|
+
let round = 0;
|
|
40
|
+
if (pending.length === 0) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const bar = new cliProgress.SingleBar({
|
|
44
|
+
format: chalk.cyan("[i] Recursing client-side paths ") +
|
|
45
|
+
"[{bar}] {percentage}% | {value}/{total} paths | round {round} | {jsFiles} JS files | {stagnant} stagnant",
|
|
46
|
+
barCompleteChar: "█",
|
|
47
|
+
barIncompleteChar: "░",
|
|
48
|
+
barsize: computeBarSize(99),
|
|
49
|
+
hideCursor: false,
|
|
50
|
+
clearOnComplete: false,
|
|
51
|
+
stopOnComplete: false,
|
|
52
|
+
etaBuffer: 50,
|
|
53
|
+
}, cliProgress.Presets.shades_classic);
|
|
54
|
+
bar.start(knownPaths.size, 0, {
|
|
55
|
+
round: 0,
|
|
56
|
+
jsFiles: 0,
|
|
57
|
+
stagnant: `0/${STAGNATION_LIMIT}`,
|
|
58
|
+
});
|
|
59
|
+
const stopBarWatcher = watchBarResize(bar, 99);
|
|
60
|
+
setActiveBarLogger({ log: (s) => process.stdout.write("\r\x1b[K" + s) });
|
|
61
|
+
const refreshBar = () => {
|
|
62
|
+
bar.setTotal(knownPaths.size);
|
|
63
|
+
bar.update(visitedPaths.size, {
|
|
64
|
+
round,
|
|
65
|
+
jsFiles: allJsFiles.size,
|
|
66
|
+
stagnant: `${stagnantRounds}/${STAGNATION_LIMIT}`,
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
while (pending.length > 0) {
|
|
71
|
+
const batch = pending.filter((p) => !visitedPaths.has(p));
|
|
72
|
+
pending = [];
|
|
73
|
+
if (batch.length === 0)
|
|
74
|
+
break;
|
|
75
|
+
round++;
|
|
76
|
+
const sizeBeforeRound = allJsFiles.size;
|
|
77
|
+
const errors = [];
|
|
78
|
+
let cursor = 0;
|
|
79
|
+
const workerCount = Math.max(1, Math.min(threads, batch.length));
|
|
80
|
+
const worker = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
+
while (cursor < batch.length) {
|
|
82
|
+
const path = batch[cursor++];
|
|
83
|
+
try {
|
|
84
|
+
const { jsFiles, clientSidePaths: newPaths } = yield vue_discoverJsFiles(path, maxJsSizeMb, onFilesDiscovered);
|
|
85
|
+
for (const file of jsFiles) {
|
|
86
|
+
allJsFiles.add(file);
|
|
87
|
+
}
|
|
88
|
+
for (const newPath of newPaths) {
|
|
89
|
+
if (!knownPaths.has(newPath)) {
|
|
90
|
+
knownPaths.add(newPath);
|
|
91
|
+
pending.push(newPath);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
errors.push(`[!] Failed to recurse into ${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
visitedPaths.add(path);
|
|
100
|
+
refreshBar();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
yield Promise.all(Array.from({ length: workerCount }, () => worker()));
|
|
105
|
+
if (errors.length > 0) {
|
|
106
|
+
bar.stop();
|
|
107
|
+
for (const msg of errors) {
|
|
108
|
+
console.error(chalk.red(msg));
|
|
109
|
+
}
|
|
110
|
+
bar.start(knownPaths.size, visitedPaths.size, {
|
|
111
|
+
round,
|
|
112
|
+
jsFiles: allJsFiles.size,
|
|
113
|
+
stagnant: `${stagnantRounds}/${STAGNATION_LIMIT}`,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
const newFilesThisRound = allJsFiles.size - sizeBeforeRound;
|
|
117
|
+
if (newFilesThisRound === 0) {
|
|
118
|
+
stagnantRounds++;
|
|
119
|
+
refreshBar();
|
|
120
|
+
if (stagnantRounds >= STAGNATION_LIMIT) {
|
|
121
|
+
bar.stop();
|
|
122
|
+
console.error(chalk.yellow(`[!] Stopping recursion: ${STAGNATION_LIMIT} consecutive rounds without new JS files`));
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
stagnantRounds = 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
bar.stop();
|
|
133
|
+
stopBarWatcher();
|
|
134
|
+
setActiveBarLogger(null);
|
|
135
|
+
}
|
|
136
|
+
if (allJsFiles.size > 0) {
|
|
137
|
+
console.log(chalk.green(`[✓] Recursive client-side discovery yielded ${allJsFiles.size} JS file(s) across ${visitedPaths.size} path(s)`));
|
|
138
|
+
}
|
|
139
|
+
return [...allJsFiles];
|
|
140
|
+
});
|
|
141
|
+
export default vue_recursiveClientSidePathDownload;
|
|
142
|
+
//# sourceMappingURL=vue_recursiveClientSidePathDownload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_recursiveClientSidePathDownload.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_recursiveClientSidePathDownload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 makeRequest from "../../utility/makeReq.js";
|
|
12
|
+
import * as cheerio from "cheerio";
|
|
13
|
+
const vue_severalJsFilesHome = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
let jsFilesToReturn = [];
|
|
15
|
+
// get the contents of the homepage
|
|
16
|
+
const homepageReq = yield makeRequest(url);
|
|
17
|
+
if (homepageReq == null) {
|
|
18
|
+
console.error(chalk.red(`Failed to fetch ${url}`));
|
|
19
|
+
return jsFilesToReturn;
|
|
20
|
+
}
|
|
21
|
+
const homepageContent = yield homepageReq.text();
|
|
22
|
+
// parse it with cheerio
|
|
23
|
+
const $ = cheerio.load(homepageContent);
|
|
24
|
+
// find all the script tag urls
|
|
25
|
+
const scriptTags = $("script");
|
|
26
|
+
// iterate through those, and find the ones that aren't CDN URLs, like the relative or absolute paths
|
|
27
|
+
let jsPaths = [];
|
|
28
|
+
for (const tag of scriptTags) {
|
|
29
|
+
const src = $(tag).attr("src");
|
|
30
|
+
if (src && !src.startsWith("http")) {
|
|
31
|
+
jsPaths.push(src);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// if length is 1, return
|
|
35
|
+
if (jsPaths.length === 1) {
|
|
36
|
+
return jsFilesToReturn;
|
|
37
|
+
}
|
|
38
|
+
// apart from script tags, also go through the <link> tags, check if the `href` attr of those end with `.js`, and if so, push it to the list of the JS paths
|
|
39
|
+
const linkTags = $("link");
|
|
40
|
+
for (const tag of linkTags) {
|
|
41
|
+
const src = $(tag).attr("href");
|
|
42
|
+
if (src && !src.startsWith("http") && src.endsWith(".js")) {
|
|
43
|
+
jsPaths.push(src);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// now that there are files, go through those and get the full path of those
|
|
47
|
+
let fullJsUrls = [];
|
|
48
|
+
for (const path of jsPaths) {
|
|
49
|
+
const fullUrl = new URL(path, url).href;
|
|
50
|
+
fullJsUrls.push(fullUrl);
|
|
51
|
+
}
|
|
52
|
+
// push these to the list of the JS files to return
|
|
53
|
+
jsFilesToReturn.push(...fullJsUrls);
|
|
54
|
+
return jsFilesToReturn;
|
|
55
|
+
});
|
|
56
|
+
export default vue_severalJsFilesHome;
|
|
57
|
+
//# sourceMappingURL=vue_severalJsFilesHome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue_severalJsFilesHome.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_severalJsFilesHome.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,MAAM,sBAAsB,GAAG,CAAO,GAAW,EAAqB,EAAE;IACpE,IAAI,eAAe,GAAa,EAAE,CAAC;IAEnC,mCAAmC;IACnC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,eAAe,CAAC;IAC3B,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAEjD,wBAAwB;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAExC,+BAA+B;IAC/B,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE/B,qGAAqG;IACrG,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,4JAA4J;IAC5J,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,mDAAmD;IACnD,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAEpC,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAA,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|