@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,448 @@
|
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import chalk from "chalk";
|
|
22
|
+
import puppeteer from "./puppeteerInstance.js";
|
|
23
|
+
import * as globals from "./globals.js";
|
|
24
|
+
import { get } from "../api_gateway/genReq.js";
|
|
25
|
+
import fs from "fs";
|
|
26
|
+
import { EventEmitter } from "events";
|
|
27
|
+
const reportedFailures = new Set();
|
|
28
|
+
const reportFailure = (url, err) => {
|
|
29
|
+
if (reportedFailures.has(url))
|
|
30
|
+
return;
|
|
31
|
+
reportedFailures.add(url);
|
|
32
|
+
if (globals.getCacheOnly()) {
|
|
33
|
+
console.error(chalk.dim(`[!] Cache miss (cache-only mode): ${url}`));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.error(chalk.red(`[!] Failed to fetch ${url} : ${err}`));
|
|
37
|
+
console.log(chalk.dim("[i] Often, using -k flag (ignore SSL errors) fixes the problem"));
|
|
38
|
+
};
|
|
39
|
+
// random user agents
|
|
40
|
+
const UAs = [
|
|
41
|
+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Reads response data from cache for future requests.
|
|
45
|
+
*
|
|
46
|
+
* If the cache file exists, and the given URL is present in the cache,
|
|
47
|
+
* it checks if the response contains the specific request headers. If it does,
|
|
48
|
+
* it builds a Response object with the cached data and returns it.
|
|
49
|
+
*
|
|
50
|
+
* If the response does not contain the request headers, or if the cache file
|
|
51
|
+
* does not exist, or if the URL is not present in the cache, it returns null.
|
|
52
|
+
*
|
|
53
|
+
* @param url - The URL to read the cache for
|
|
54
|
+
* @param headers - Request headers that were used
|
|
55
|
+
* @returns A Promise that resolves to a Response object if the cache is found, or null if not
|
|
56
|
+
*/
|
|
57
|
+
const readCache = (url, headers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
// first, check if the file exists or not
|
|
59
|
+
if (!fs.existsSync(globals.getRespCacheFile())) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
// console.log("reading cache for", url);
|
|
63
|
+
// open the cache file, build a Response, and return
|
|
64
|
+
let cache;
|
|
65
|
+
try {
|
|
66
|
+
cache = JSON.parse(fs.readFileSync(globals.getRespCacheFile(), "utf-8"));
|
|
67
|
+
}
|
|
68
|
+
catch (_a) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (cache[url]) {
|
|
72
|
+
// check if the response contains the specific request headers
|
|
73
|
+
// iterate through cache[url] and build a Response
|
|
74
|
+
let headersMatch = true;
|
|
75
|
+
// first check if the essential headers match
|
|
76
|
+
const rscEnabled = headers["RSC"] ? true : false;
|
|
77
|
+
if (rscEnabled) {
|
|
78
|
+
if (cache[url].rsc) {
|
|
79
|
+
return new Response(Buffer.from(cache[url].rsc.body_b64, "base64"), {
|
|
80
|
+
status: cache[url].rsc.status,
|
|
81
|
+
headers: cache[url].rsc.resp_headers,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!rscEnabled && cache[url] && cache[url].normal) {
|
|
86
|
+
return new Response(Buffer.from(cache[url].normal.body_b64, "base64"), {
|
|
87
|
+
status: cache[url].normal.status,
|
|
88
|
+
headers: cache[url].normal.resp_headers,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// console.log("cache not found for ", url);
|
|
93
|
+
return null;
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Writes response data to cache for future requests.
|
|
97
|
+
*
|
|
98
|
+
* Stores response body, status, and headers in cache file, handling special
|
|
99
|
+
* cases like RSC (React Server Components) headers separately.
|
|
100
|
+
*
|
|
101
|
+
* @param url - The URL to cache the response for
|
|
102
|
+
* @param headers - Request headers that were used
|
|
103
|
+
* @param response - The Response object to cache
|
|
104
|
+
* @returns Promise that resolves when caching is complete
|
|
105
|
+
*/
|
|
106
|
+
const writeCache = (url, headers, response) => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
try {
|
|
108
|
+
yield writeCacheUnsafe(url, headers, response);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
// Caching must never break a request. Log and move on.
|
|
112
|
+
console.error(chalk.yellow(`[!] Failed to write response cache for ${url}: ${(err === null || err === void 0 ? void 0 : err.message) || err}`));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const writeCacheUnsafe = (url, headers, response) => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
// clone the response
|
|
117
|
+
const clonedResponse = response.clone();
|
|
118
|
+
// if cache exists, return
|
|
119
|
+
if ((yield readCache(url, headers)) !== null) {
|
|
120
|
+
// console.log("cache already exists for ", url);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// open the cache file, and write the response based on the special headers
|
|
124
|
+
let cache;
|
|
125
|
+
try {
|
|
126
|
+
cache = JSON.parse(fs.readFileSync(globals.getRespCacheFile(), "utf-8"));
|
|
127
|
+
}
|
|
128
|
+
catch (_a) {
|
|
129
|
+
cache = {};
|
|
130
|
+
}
|
|
131
|
+
if (!cache[url]) {
|
|
132
|
+
cache[url] = {};
|
|
133
|
+
}
|
|
134
|
+
const bodyBuffer = Buffer.from(yield clonedResponse.arrayBuffer());
|
|
135
|
+
const body = bodyBuffer.toString("base64");
|
|
136
|
+
const status = clonedResponse.status;
|
|
137
|
+
const resp_headers = clonedResponse.headers;
|
|
138
|
+
if (headers["RSC"]) {
|
|
139
|
+
cache[url].rsc = {
|
|
140
|
+
req_headers: headers,
|
|
141
|
+
status: status,
|
|
142
|
+
body_b64: body,
|
|
143
|
+
resp_headers: resp_headers,
|
|
144
|
+
};
|
|
145
|
+
// console.log("rsc", url);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
cache[url].normal = {
|
|
149
|
+
req_headers: headers,
|
|
150
|
+
status: status,
|
|
151
|
+
body_b64: body,
|
|
152
|
+
resp_headers: resp_headers,
|
|
153
|
+
};
|
|
154
|
+
// console.log("normal", url);
|
|
155
|
+
}
|
|
156
|
+
let serialized;
|
|
157
|
+
try {
|
|
158
|
+
// so, the cache is the response body for the URL
|
|
159
|
+
serialized = JSON.stringify(cache);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
if (err instanceof RangeError) {
|
|
163
|
+
// console.log(
|
|
164
|
+
// chalk.yellow(
|
|
165
|
+
// `[!] Response cache too large to serialize; dropping entry for ${url} and skipping cache write`
|
|
166
|
+
// )
|
|
167
|
+
// );
|
|
168
|
+
// // Roll back the entry we just added so future writes don't keep retrying.
|
|
169
|
+
// if (headers["RSC"]) {
|
|
170
|
+
// delete cache[url].rsc;
|
|
171
|
+
// } else {
|
|
172
|
+
// delete cache[url].normal;
|
|
173
|
+
// }
|
|
174
|
+
// if (!cache[url].rsc && !cache[url].normal) {
|
|
175
|
+
// delete cache[url];
|
|
176
|
+
// }
|
|
177
|
+
// return;
|
|
178
|
+
console.error(chalk.yellow(`[!] Cache too big... Emptying cache`));
|
|
179
|
+
serialized = JSON.stringify({}); // empty cache
|
|
180
|
+
}
|
|
181
|
+
// throw err;
|
|
182
|
+
}
|
|
183
|
+
fs.writeFileSync(globals.getRespCacheFile(), serialized);
|
|
184
|
+
// console.log("wrote cache for ", url);
|
|
185
|
+
});
|
|
186
|
+
/**
|
|
187
|
+
* Performs a single fetch request with retry logic.
|
|
188
|
+
*
|
|
189
|
+
* @param url - The URL to request
|
|
190
|
+
* @param requestOptions - Request options including headers
|
|
191
|
+
* @param requestTimeout - Timeout in milliseconds
|
|
192
|
+
* @returns A Promise that resolves to a Response, or null if all retries fail
|
|
193
|
+
*/
|
|
194
|
+
const singleFetch = (url, requestOptions, requestTimeout) => __awaiter(void 0, void 0, void 0, function* () {
|
|
195
|
+
let res;
|
|
196
|
+
let counter = 0;
|
|
197
|
+
while (true) {
|
|
198
|
+
const controller = new AbortController();
|
|
199
|
+
const timeoutId = setTimeout(() => controller.abort(), requestTimeout);
|
|
200
|
+
const currentRequestOptions = Object.assign(Object.assign({}, requestOptions), { signal: controller.signal });
|
|
201
|
+
try {
|
|
202
|
+
EventEmitter.defaultMaxListeners = 20;
|
|
203
|
+
res = yield fetch(url, currentRequestOptions);
|
|
204
|
+
clearTimeout(timeoutId);
|
|
205
|
+
if (res) {
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
clearTimeout(timeoutId);
|
|
211
|
+
counter++;
|
|
212
|
+
// BUG: https://github.com/nodejs/node/issues/47246
|
|
213
|
+
if (err.cause && err.cause.code === "UND_ERR_HEADERS_OVERFLOW") {
|
|
214
|
+
console.error(chalk.yellow(`[!] The tool detected a header overflow. Please increase the limit by setting environment variable \`NODE_OPTIONS="--max-http-header-size=99999999"\`. If the error still persists, please try again with a higher limit.`));
|
|
215
|
+
process.exit(21);
|
|
216
|
+
}
|
|
217
|
+
if (err.name === "AbortError") {
|
|
218
|
+
console.error(chalk.red(`[!] Request to ${url} timed out after ${requestTimeout}ms`));
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
if (counter > 10) {
|
|
222
|
+
reportFailure(url, err);
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
// sleep 0.5 s before retrying
|
|
226
|
+
yield new Promise((resolve) => setTimeout(resolve, 500));
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return res;
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Handles firewall detection and bypass using headless browser.
|
|
234
|
+
*
|
|
235
|
+
* @param url - The URL being requested
|
|
236
|
+
* @param resp_text - The response text to check for firewall signatures
|
|
237
|
+
* @returns A Promise that resolves to Response content if firewall detected, or null if not
|
|
238
|
+
*/
|
|
239
|
+
const handleFirewall = (url, resp_text) => __awaiter(void 0, void 0, void 0, function* () {
|
|
240
|
+
if (resp_text.includes("/?bm-verify=") || resp_text.includes("<title>Just a moment...</title>")) {
|
|
241
|
+
console.error(chalk.yellow(`[!] CF Firewall detected. Trying to bypass with headless browser`));
|
|
242
|
+
const browser = yield puppeteer.launch({
|
|
243
|
+
headless: true,
|
|
244
|
+
args: globals.getDisableSandbox() ? ["--no-sandbox", "--disable-setuid-sandbox"] : [],
|
|
245
|
+
});
|
|
246
|
+
const page = yield browser.newPage();
|
|
247
|
+
yield page.goto(url);
|
|
248
|
+
yield new Promise((resolve) => setTimeout(resolve, 5000));
|
|
249
|
+
const content = yield page.content();
|
|
250
|
+
yield browser.close();
|
|
251
|
+
return content;
|
|
252
|
+
}
|
|
253
|
+
else if (resp_text.includes("403 ERROR") && resp_text.includes("Generated by cloudfront")) {
|
|
254
|
+
console.error(chalk.yellow(`[!] Cloudfront Firewall detected. Trying to bypass with headless browser`));
|
|
255
|
+
const browser = yield puppeteer.launch({
|
|
256
|
+
headless: true,
|
|
257
|
+
args: globals.getDisableSandbox() ? ["--no-sandbox", "--disable-setuid-sandbox"] : [],
|
|
258
|
+
});
|
|
259
|
+
const page = yield browser.newPage();
|
|
260
|
+
yield page.goto(url);
|
|
261
|
+
yield new Promise((resolve) => setTimeout(resolve, 5000));
|
|
262
|
+
const content = yield page.content();
|
|
263
|
+
yield browser.close();
|
|
264
|
+
return content;
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
});
|
|
268
|
+
/**
|
|
269
|
+
* Makes a GET request to the given URL and returns the response.
|
|
270
|
+
*
|
|
271
|
+
* If caching is enabled, it will first check if the response is cached.
|
|
272
|
+
* If it is, it will return the cached response. If not, it will make the request
|
|
273
|
+
* using the given options, and cache the response before returning it.
|
|
274
|
+
*
|
|
275
|
+
* When no custom headers are provided, tries both with and without Referer header,
|
|
276
|
+
* returning the successful (200) response.
|
|
277
|
+
*
|
|
278
|
+
* If the request fails, it will retry up to 10 times with 0.5s of sleep in between.
|
|
279
|
+
* If all retries fail, it will return null.
|
|
280
|
+
*
|
|
281
|
+
* @param url - The URL to request
|
|
282
|
+
* @param args - Request options
|
|
283
|
+
* @returns A Promise that resolves to a Response, or null if all retries fail
|
|
284
|
+
*/
|
|
285
|
+
const makeRequest = (url, args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
286
|
+
if (url.startsWith("//")) {
|
|
287
|
+
url = "https:" + url;
|
|
288
|
+
}
|
|
289
|
+
const _a = args || {}, { timeout } = _a, restArgs = __rest(_a, ["timeout"]);
|
|
290
|
+
const requestOptions = restArgs;
|
|
291
|
+
const requestTimeout = timeout || globals.getRequestTimeout();
|
|
292
|
+
const usingDefaultHeaders = !requestOptions.headers;
|
|
293
|
+
// Build default headers if not provided
|
|
294
|
+
const baseHeaders = {
|
|
295
|
+
"User-Agent": UAs[Math.floor(Math.random() * UAs.length)],
|
|
296
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
|
297
|
+
"Accept-Language": "en-US,en;q=0.9",
|
|
298
|
+
"Sec-Fetch-Site": "same-origin",
|
|
299
|
+
"Sec-Fetch-Mode": "cors",
|
|
300
|
+
"Sec-Fetch-Dest": "empty",
|
|
301
|
+
};
|
|
302
|
+
let parsedOrigin = null;
|
|
303
|
+
try {
|
|
304
|
+
parsedOrigin = new URL(url).origin;
|
|
305
|
+
}
|
|
306
|
+
catch (_b) {
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
if (!requestOptions.headers) {
|
|
310
|
+
requestOptions.headers = Object.assign(Object.assign({}, baseHeaders), { Referer: parsedOrigin, Origin: parsedOrigin });
|
|
311
|
+
}
|
|
312
|
+
// if cache is enabled, read the cache and return if cache is present. else, continue
|
|
313
|
+
if (!globals.getDisableCache()) {
|
|
314
|
+
const cachedResponse = yield readCache(url, requestOptions.headers || {});
|
|
315
|
+
// if the response if cached, then check if contains any signatures of firewall
|
|
316
|
+
if (cachedResponse !== null) {
|
|
317
|
+
const cachedText = yield cachedResponse.clone().text();
|
|
318
|
+
const firewallContent = yield handleFirewall(url, cachedText);
|
|
319
|
+
if (firewallContent) {
|
|
320
|
+
yield writeCache(url, requestOptions.headers || {}, new Response(firewallContent));
|
|
321
|
+
return new Response(firewallContent);
|
|
322
|
+
}
|
|
323
|
+
return cachedResponse;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (globals.getCacheOnly()) {
|
|
327
|
+
reportFailure(url, "cache miss in cache-only mode");
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
if (globals.useApiGateway) {
|
|
331
|
+
const get_headers = requestOptions.headers;
|
|
332
|
+
const body = yield get(url, get_headers);
|
|
333
|
+
// craft a Response, and return that
|
|
334
|
+
const response = new Response(body);
|
|
335
|
+
// if cache is enabled, write the response to the cache
|
|
336
|
+
if (!globals.getDisableCache()) {
|
|
337
|
+
yield writeCache(url, get_headers, response);
|
|
338
|
+
}
|
|
339
|
+
return response;
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// Helper to read response once and store data for reuse.
|
|
343
|
+
// We copy the bytes into a Buffer that owns its own ArrayBuffer so the
|
|
344
|
+
// stored body cannot be invalidated by undici recycling its internal
|
|
345
|
+
// buffer after we consume the response.
|
|
346
|
+
const consumeResponse = (res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
347
|
+
if (!res)
|
|
348
|
+
return null;
|
|
349
|
+
const ab = yield res.arrayBuffer();
|
|
350
|
+
const body = Buffer.alloc(ab.byteLength);
|
|
351
|
+
body.set(new Uint8Array(ab));
|
|
352
|
+
const text = body.toString("utf-8");
|
|
353
|
+
// Snapshot headers as a plain object so we can rebuild a fresh
|
|
354
|
+
// Headers instance per Response instead of sharing state.
|
|
355
|
+
const headers = new Headers(res.headers);
|
|
356
|
+
return { body, status: res.status, headers, ok: res.ok, text };
|
|
357
|
+
});
|
|
358
|
+
// Helper to create Response from stored data. Pass the body as an
|
|
359
|
+
// immutable string so each Response gets a fully independent backing
|
|
360
|
+
// store; undici has been known to flag Responses as already-consumed
|
|
361
|
+
// when buffer-backed bodies share underlying memory. Strip headers
|
|
362
|
+
// that no longer match the decoded body (content-length / encoding).
|
|
363
|
+
const createResponse = (data) => {
|
|
364
|
+
// Copy bytes into a fresh Uint8Array so each Response owns its
|
|
365
|
+
// backing memory — text decoding would corrupt binary payloads.
|
|
366
|
+
const bodyCopy = new Uint8Array(data.body.byteLength);
|
|
367
|
+
bodyCopy.set(data.body);
|
|
368
|
+
const headers = new Headers(data.headers);
|
|
369
|
+
headers.delete("content-length");
|
|
370
|
+
headers.delete("content-encoding");
|
|
371
|
+
headers.delete("transfer-encoding");
|
|
372
|
+
return new Response(bodyCopy, { status: data.status, headers });
|
|
373
|
+
};
|
|
374
|
+
// When using default headers, try both with and without Referer/Origin
|
|
375
|
+
// to handle servers that return 404 for one but 200 for the other
|
|
376
|
+
if (usingDefaultHeaders) {
|
|
377
|
+
// First try: with Referer and Origin
|
|
378
|
+
const headersWithReferer = Object.assign(Object.assign({}, baseHeaders), { Referer: new URL(url).origin, Origin: new URL(url).origin });
|
|
379
|
+
const resWithReferer = yield singleFetch(url, Object.assign(Object.assign({}, requestOptions), { headers: headersWithReferer }), requestTimeout);
|
|
380
|
+
const dataWithReferer = yield consumeResponse(resWithReferer);
|
|
381
|
+
if (dataWithReferer && dataWithReferer.ok) {
|
|
382
|
+
// Check for firewall
|
|
383
|
+
const firewallContent = yield handleFirewall(url, dataWithReferer.text);
|
|
384
|
+
if (firewallContent) {
|
|
385
|
+
if (!globals.getDisableCache()) {
|
|
386
|
+
yield writeCache(url, headersWithReferer, new Response(firewallContent));
|
|
387
|
+
}
|
|
388
|
+
return new Response(firewallContent);
|
|
389
|
+
}
|
|
390
|
+
// Cache and return successful response
|
|
391
|
+
if (!globals.getDisableCache()) {
|
|
392
|
+
yield writeCache(url, headersWithReferer, createResponse(dataWithReferer));
|
|
393
|
+
}
|
|
394
|
+
return createResponse(dataWithReferer);
|
|
395
|
+
}
|
|
396
|
+
// Second try: without Referer and Origin
|
|
397
|
+
const headersWithoutReferer = Object.assign({}, baseHeaders);
|
|
398
|
+
const resWithoutReferer = yield singleFetch(url, Object.assign(Object.assign({}, requestOptions), { headers: headersWithoutReferer }), requestTimeout);
|
|
399
|
+
const dataWithoutReferer = yield consumeResponse(resWithoutReferer);
|
|
400
|
+
if (dataWithoutReferer && dataWithoutReferer.ok) {
|
|
401
|
+
// Check for firewall
|
|
402
|
+
const firewallContent = yield handleFirewall(url, dataWithoutReferer.text);
|
|
403
|
+
if (firewallContent) {
|
|
404
|
+
if (!globals.getDisableCache()) {
|
|
405
|
+
yield writeCache(url, headersWithoutReferer, new Response(firewallContent));
|
|
406
|
+
}
|
|
407
|
+
return new Response(firewallContent);
|
|
408
|
+
}
|
|
409
|
+
// Cache and return successful response
|
|
410
|
+
if (!globals.getDisableCache()) {
|
|
411
|
+
yield writeCache(url, headersWithoutReferer, createResponse(dataWithoutReferer));
|
|
412
|
+
}
|
|
413
|
+
return createResponse(dataWithoutReferer);
|
|
414
|
+
}
|
|
415
|
+
// Both failed, return whichever response we got (prefer non-null)
|
|
416
|
+
const finalData = dataWithReferer || dataWithoutReferer;
|
|
417
|
+
if (finalData) {
|
|
418
|
+
if (!globals.getDisableCache()) {
|
|
419
|
+
yield writeCache(url, headersWithReferer, createResponse(finalData));
|
|
420
|
+
}
|
|
421
|
+
return createResponse(finalData);
|
|
422
|
+
}
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
// Custom headers provided, use them directly
|
|
427
|
+
const res = yield singleFetch(url, requestOptions, requestTimeout);
|
|
428
|
+
const data = yield consumeResponse(res);
|
|
429
|
+
if (!data)
|
|
430
|
+
return null;
|
|
431
|
+
// Check for firewall
|
|
432
|
+
const firewallContent = yield handleFirewall(url, data.text);
|
|
433
|
+
if (firewallContent) {
|
|
434
|
+
if (!globals.getDisableCache()) {
|
|
435
|
+
yield writeCache(url, requestOptions.headers || {}, new Response(firewallContent));
|
|
436
|
+
}
|
|
437
|
+
return new Response(firewallContent);
|
|
438
|
+
}
|
|
439
|
+
// Cache and return
|
|
440
|
+
if (!globals.getDisableCache()) {
|
|
441
|
+
yield writeCache(url, requestOptions.headers || {}, createResponse(data));
|
|
442
|
+
}
|
|
443
|
+
return createResponse(data);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
export default makeRequest;
|
|
448
|
+
//# sourceMappingURL=makeReq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeReq.js","sourceRoot":"","sources":["../../src/utility/makeReq.ts"],"names":[],"mappings":"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"}
|