@shriyanss/js-recon 1.0.0 → 1.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.github/workflows/build-and-prettify.yaml +65 -0
  2. package/.github/workflows/npm-publish.yml +35 -0
  3. package/.prettierignore +2 -0
  4. package/.prettierrc +4 -0
  5. package/CHANGELOG.md +50 -0
  6. package/README.md +35 -139
  7. package/build/api_gateway/checkFeasibility.js +32 -0
  8. package/build/api_gateway/checkFeasibility.js.map +1 -0
  9. package/build/api_gateway/checkFireWallBlocking.js +24 -0
  10. package/build/api_gateway/checkFireWallBlocking.js.map +1 -0
  11. package/build/api_gateway/genReq.js +199 -0
  12. package/build/api_gateway/genReq.js.map +1 -0
  13. package/build/api_gateway/index.js +275 -0
  14. package/build/api_gateway/index.js.map +1 -0
  15. package/build/endpoints/gen_report/gen_json.js +22 -0
  16. package/build/endpoints/gen_report/gen_json.js.map +1 -0
  17. package/build/endpoints/gen_report/gen_markdown.js +66 -0
  18. package/build/endpoints/gen_report/gen_markdown.js.map +1 -0
  19. package/build/endpoints/gen_report/utility/iterate_n_store.js +46 -0
  20. package/build/endpoints/gen_report/utility/iterate_n_store.js.map +1 -0
  21. package/build/endpoints/index.js +89 -0
  22. package/build/endpoints/index.js.map +1 -0
  23. package/build/endpoints/next_js/client_jsFilesHref.js +91 -0
  24. package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -0
  25. package/build/endpoints/next_js/client_jsonParse.js +78 -0
  26. package/build/endpoints/next_js/client_jsonParse.js.map +1 -0
  27. package/build/endpoints/next_js/client_subsequentRequests.js +199 -0
  28. package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -0
  29. package/build/endpoints/next_js/getWebpacks.js +45 -0
  30. package/build/endpoints/next_js/getWebpacks.js.map +1 -0
  31. package/build/globalConfig.js +11 -0
  32. package/build/globalConfig.js.map +1 -0
  33. package/build/index.js +166 -0
  34. package/build/index.js.map +1 -0
  35. package/build/lazyLoad/downloadFilesUtil.js +128 -0
  36. package/build/lazyLoad/downloadFilesUtil.js.map +1 -0
  37. package/build/lazyLoad/downloadLoadedJsUtil.js +51 -0
  38. package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -0
  39. package/build/lazyLoad/globals.js +22 -0
  40. package/build/lazyLoad/globals.js.map +1 -0
  41. package/build/lazyLoad/index.js +170 -0
  42. package/build/lazyLoad/index.js.map +1 -0
  43. package/build/lazyLoad/next_js/next_GetJSScript.js +94 -0
  44. package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -0
  45. package/build/lazyLoad/next_js/next_GetLazyResources.js +202 -0
  46. package/build/lazyLoad/next_js/next_GetLazyResources.js.map +1 -0
  47. package/build/lazyLoad/next_js/next_SubsequentRequests.js +120 -0
  48. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -0
  49. package/build/lazyLoad/nuxt_js/nuxt_astParse.js +188 -0
  50. package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -0
  51. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +75 -0
  52. package/build/lazyLoad/nuxt_js/nuxt_getFromPageSource.js.map +1 -0
  53. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +94 -0
  54. package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -0
  55. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +68 -0
  56. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -0
  57. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +95 -0
  58. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -0
  59. package/build/map/index.js +58 -0
  60. package/build/map/index.js.map +1 -0
  61. package/build/map/next_js/getFetchInstances.js +108 -0
  62. package/build/map/next_js/getFetchInstances.js.map +1 -0
  63. package/build/map/next_js/getWebpackConnections.js +227 -0
  64. package/build/map/next_js/getWebpackConnections.js.map +1 -0
  65. package/build/map/next_js/interactive.js +32 -0
  66. package/build/map/next_js/interactive.js.map +1 -0
  67. package/build/map/next_js/interactive_helpers/commandHandler.js +190 -0
  68. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -0
  69. package/build/map/next_js/interactive_helpers/commandHelpers.js +91 -0
  70. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -0
  71. package/build/map/next_js/interactive_helpers/helpMenu.js +11 -0
  72. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -0
  73. package/build/map/next_js/interactive_helpers/keybindings.js +80 -0
  74. package/build/map/next_js/interactive_helpers/keybindings.js.map +1 -0
  75. package/build/map/next_js/interactive_helpers/printer.js +17 -0
  76. package/build/map/next_js/interactive_helpers/printer.js.map +1 -0
  77. package/build/map/next_js/interactive_helpers/ui.js +81 -0
  78. package/build/map/next_js/interactive_helpers/ui.js.map +1 -0
  79. package/build/map/next_js/resolveFetch.js +201 -0
  80. package/build/map/next_js/resolveFetch.js.map +1 -0
  81. package/build/run/index.js +62 -0
  82. package/build/run/index.js.map +1 -0
  83. package/build/strings/index.js +238 -0
  84. package/build/strings/index.js.map +1 -0
  85. package/build/strings/openapi.js +55 -0
  86. package/build/strings/openapi.js.map +1 -0
  87. package/build/strings/permutate.js +55 -0
  88. package/build/strings/permutate.js.map +1 -0
  89. package/build/strings/secrets.js +89 -0
  90. package/build/strings/secrets.js.map +1 -0
  91. package/build/techDetect/index.js +229 -0
  92. package/build/techDetect/index.js.map +1 -0
  93. package/build/utility/ai.js +69 -0
  94. package/build/utility/ai.js.map +1 -0
  95. package/build/utility/globals.js +84 -0
  96. package/build/utility/globals.js.map +1 -0
  97. package/build/utility/interfaces.js +2 -0
  98. package/build/utility/interfaces.js.map +1 -0
  99. package/build/utility/makeReq.js +265 -0
  100. package/build/utility/makeReq.js.map +1 -0
  101. package/build/utility/resolvePath.js +44 -0
  102. package/build/utility/resolvePath.js.map +1 -0
  103. package/{utility → build/utility}/runSandboxed.js +10 -13
  104. package/build/utility/runSandboxed.js.map +1 -0
  105. package/{utility → build/utility}/urlUtils.js +9 -11
  106. package/build/utility/urlUtils.js.map +1 -0
  107. package/docs/CNAME +1 -0
  108. package/docs/README.md +20 -0
  109. package/docs/api-gateway.md +68 -0
  110. package/docs/endpoints.md +49 -0
  111. package/docs/example-scenario.md +258 -0
  112. package/docs/interactive-mode.md +76 -0
  113. package/docs/lazyload.md +56 -0
  114. package/docs/map.md +53 -0
  115. package/docs/run.md +54 -0
  116. package/docs/strings.md +75 -0
  117. package/package.json +50 -38
  118. package/api_gateway/checkFeasibility.js +0 -25
  119. package/api_gateway/checkFireWallBlocking.js +0 -17
  120. package/api_gateway/genReq.js +0 -214
  121. package/api_gateway/index.js +0 -325
  122. package/endpoints/index.js +0 -7
  123. package/globalConfig.js +0 -12
  124. package/index.js +0 -69
  125. package/lazyLoad/downloadFilesUtil.js +0 -122
  126. package/lazyLoad/downloadLoadedJsUtil.js +0 -54
  127. package/lazyLoad/globals.js +0 -15
  128. package/lazyLoad/index.js +0 -167
  129. package/lazyLoad/next_js/next_GetJSScript.js +0 -99
  130. package/lazyLoad/next_js/next_GetLazyResources.js +0 -201
  131. package/lazyLoad/next_js/next_SubsequentRequests.js +0 -138
  132. package/lazyLoad/nuxt_js/nuxt_astParse.js +0 -194
  133. package/lazyLoad/nuxt_js/nuxt_getFromPageSource.js +0 -77
  134. package/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +0 -99
  135. package/research/firewall_bypass.md +0 -38
  136. package/research/next_js.md +0 -116
  137. package/research/nuxt_js.md +0 -125
  138. package/research/vue_js.md +0 -9
  139. package/strings/index.js +0 -145
  140. package/techDetect/index.js +0 -156
  141. package/utility/globals.js +0 -6
  142. package/utility/makeReq.js +0 -179
  143. package/utility/resolvePath.js +0 -43
@@ -0,0 +1,94 @@
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 { getJsUrls, pushToJsUrls } from "../globals.js";
13
+ import resolvePath from "../../utility/resolvePath.js";
14
+ // for parsing
15
+ import parser from "@babel/parser";
16
+ import _traverse from "@babel/traverse";
17
+ const traverse = _traverse.default;
18
+ let analyzedFiles = [];
19
+ let filesFound = [];
20
+ const parseJSFileContent = (content) => __awaiter(void 0, void 0, void 0, function* () {
21
+ try {
22
+ const ast = parser.parse(content, {
23
+ sourceType: "module",
24
+ plugins: ["jsx", "typescript"],
25
+ });
26
+ let foundJsFiles = {};
27
+ traverse(ast, {
28
+ StringLiteral(path) {
29
+ const value = path.node.value;
30
+ if (value.startsWith("./") && value.endsWith(".js")) {
31
+ foundJsFiles[value] = value;
32
+ }
33
+ else if (value.startsWith("../") && value.endsWith(".js")) {
34
+ foundJsFiles[value] = value;
35
+ }
36
+ else if (value.endsWith(".js")) {
37
+ foundJsFiles[value] = value;
38
+ }
39
+ },
40
+ });
41
+ return foundJsFiles;
42
+ }
43
+ catch (error) {
44
+ return {};
45
+ }
46
+ });
47
+ const nuxt_stringAnalysisJSFiles = (url) => __awaiter(void 0, void 0, void 0, function* () {
48
+ console.log(chalk.cyan("[i] Analyzing strings in the files found"));
49
+ while (true) {
50
+ // get all the JS URLs
51
+ const js_urls = getJsUrls();
52
+ if (js_urls.length === 0) {
53
+ console.log(chalk.red("[!] No JS files found for string analysis"));
54
+ break;
55
+ }
56
+ // if js_urls have everything that is in analyzedFiles, break
57
+ let everythingAnalyzed = true;
58
+ for (const url of js_urls) {
59
+ // if the url is not in analyzedFiles, set everythingAnalyzed to false
60
+ if (!analyzedFiles.includes(url)) {
61
+ everythingAnalyzed = false;
62
+ }
63
+ }
64
+ // break if everything is analyzed
65
+ if (everythingAnalyzed) {
66
+ break;
67
+ }
68
+ // iterate through the JS URLs
69
+ for (const js_url of js_urls) {
70
+ if (analyzedFiles.includes(js_url)) {
71
+ continue;
72
+ }
73
+ const response = yield makeRequest(js_url, {});
74
+ const respText = yield response.text();
75
+ const foundJsFiles = yield parseJSFileContent(respText);
76
+ // iterate through the foundJsFiles and resolve the paths
77
+ for (const [key, value] of Object.entries(foundJsFiles)) {
78
+ const resolvedPath = yield resolvePath(js_url, value);
79
+ if (analyzedFiles.includes(resolvedPath)) {
80
+ continue;
81
+ }
82
+ pushToJsUrls(resolvedPath);
83
+ filesFound.push(resolvedPath);
84
+ }
85
+ analyzedFiles.push(js_url);
86
+ }
87
+ }
88
+ // dedupe the files
89
+ filesFound = [...new Set(filesFound)];
90
+ console.log(chalk.green(`[✓] Found ${filesFound.length} JS files from string analysis`));
91
+ return filesFound;
92
+ });
93
+ export default nuxt_stringAnalysisJSFiles;
94
+ //# sourceMappingURL=nuxt_stringAnalysisJSFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuxt_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
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 * as cheerio from "cheerio";
12
+ import resolvePath from "../../utility/resolvePath.js";
13
+ import chalk from "chalk";
14
+ import { getJsUrls, pushToJsUrls } from "../globals.js";
15
+ const svelte_getFromPageSource = (url) => __awaiter(void 0, void 0, void 0, function* () {
16
+ console.log(chalk.cyan("[i] Analyzing page source"));
17
+ let foundUrls = [];
18
+ const pageSource = yield makeRequest(url, {});
19
+ const body = yield pageSource.text();
20
+ // cheerio to parse the page source
21
+ const $ = cheerio.load(body);
22
+ // find all link tags
23
+ const linkTags = $("link");
24
+ for (const linkTag of linkTags) {
25
+ const relAttr = $(linkTag).attr("rel");
26
+ if (relAttr === "modulepreload") {
27
+ const hrefAttr = $(linkTag).attr("href");
28
+ if (hrefAttr) {
29
+ if (hrefAttr.startsWith("http")) {
30
+ foundUrls.push(hrefAttr);
31
+ }
32
+ else {
33
+ foundUrls.push(yield resolvePath(url, hrefAttr));
34
+ }
35
+ }
36
+ }
37
+ }
38
+ // also, parse the script tags
39
+ const scriptTags = $("script");
40
+ for (const scriptTag of scriptTags) {
41
+ const srcAttr = $(scriptTag).attr("src");
42
+ if (srcAttr) {
43
+ if (srcAttr.startsWith("http")) {
44
+ foundUrls.push(srcAttr);
45
+ }
46
+ else {
47
+ foundUrls.push(yield resolvePath(url, srcAttr));
48
+ }
49
+ }
50
+ }
51
+ if (foundUrls.length === 0) {
52
+ console.log(chalk.red("[!] No JS files found from the page source"));
53
+ return [];
54
+ }
55
+ else {
56
+ console.log(chalk.green(`[✓] Found ${foundUrls.length} JS files from the page source`));
57
+ }
58
+ // iterate through the foundUrls and resolve the paths
59
+ for (const foundUrl of foundUrls) {
60
+ if (getJsUrls().includes(foundUrl)) {
61
+ continue;
62
+ }
63
+ pushToJsUrls(foundUrl);
64
+ }
65
+ return foundUrls;
66
+ });
67
+ export default svelte_getFromPageSource;
68
+ //# sourceMappingURL=svelte_getFromPageSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte_getFromPageSource.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_getFromPageSource.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,wBAAwB,GAAG,CAAO,GAAG,EAAE,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IAErC,mCAAmC;IACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,qBAAqB;IACrB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;IACd,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,KAAK,CACP,aAAa,SAAS,CAAC,MAAM,gCAAgC,CAChE,CACJ,CAAC;IACN,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,SAAS;QACb,CAAC;QACD,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA,CAAC;AACF,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,95 @@
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 { getJsUrls, pushToJsUrls } from "../globals.js";
13
+ import resolvePath from "../../utility/resolvePath.js";
14
+ // for parsing
15
+ import parser from "@babel/parser";
16
+ import _traverse from "@babel/traverse";
17
+ const traverse = _traverse.default;
18
+ let analyzedFiles = [];
19
+ let filesFound = [];
20
+ const parseJSFileContent = (content) => __awaiter(void 0, void 0, void 0, function* () {
21
+ try {
22
+ const ast = parser.parse(content, {
23
+ sourceType: "module",
24
+ plugins: ["jsx", "typescript"],
25
+ });
26
+ let foundJsFiles = {};
27
+ traverse(ast, {
28
+ StringLiteral(path) {
29
+ const value = path.node.value;
30
+ if (value.startsWith("./") && value.endsWith(".js")) {
31
+ foundJsFiles[value] = value;
32
+ }
33
+ else if (value.startsWith("../") && value.endsWith(".js")) {
34
+ foundJsFiles[value] = value;
35
+ }
36
+ else if (value.endsWith(".js")) {
37
+ foundJsFiles[value] = value;
38
+ }
39
+ },
40
+ });
41
+ return foundJsFiles;
42
+ }
43
+ catch (error) {
44
+ // console.error(error);
45
+ return {};
46
+ }
47
+ });
48
+ const svelte_stringAnalysisJSFiles = (url) => __awaiter(void 0, void 0, void 0, function* () {
49
+ console.log(chalk.cyan("[i] Analyzing strings in the files found"));
50
+ while (true) {
51
+ // get all the JS URLs
52
+ const js_urls = getJsUrls();
53
+ if (js_urls.length === 0) {
54
+ console.log(chalk.red("[!] No JS files found for string analysis"));
55
+ break;
56
+ }
57
+ // if js_urls have everything that is in analyzedFiles, break
58
+ let everythingAnalyzed = true;
59
+ for (const url of js_urls) {
60
+ // if the url is not in analyzedFiles, set everythingAnalyzed to false
61
+ if (!analyzedFiles.includes(url)) {
62
+ everythingAnalyzed = false;
63
+ }
64
+ }
65
+ // break if everything is analyzed
66
+ if (everythingAnalyzed) {
67
+ break;
68
+ }
69
+ // iterate through the JS URLs
70
+ for (const js_url of js_urls) {
71
+ if (analyzedFiles.includes(js_url)) {
72
+ continue;
73
+ }
74
+ const response = yield makeRequest(js_url, {});
75
+ const respText = yield response.text();
76
+ const foundJsFiles = yield parseJSFileContent(respText);
77
+ // iterate through the foundJsFiles and resolve the paths
78
+ for (const [key, value] of Object.entries(foundJsFiles)) {
79
+ const resolvedPath = yield resolvePath(js_url, value);
80
+ if (analyzedFiles.includes(resolvedPath)) {
81
+ continue;
82
+ }
83
+ pushToJsUrls(resolvedPath);
84
+ filesFound.push(resolvedPath);
85
+ }
86
+ analyzedFiles.push(js_url);
87
+ }
88
+ }
89
+ // dedupe the files
90
+ filesFound = [...new Set(filesFound)];
91
+ console.log(chalk.green(`[✓] Found ${filesFound.length} JS files from string analysis`));
92
+ return filesFound;
93
+ });
94
+ export default svelte_stringAnalysisJSFiles;
95
+ //# sourceMappingURL=svelte_stringAnalysisJSFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_stringAnalysisJSFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
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
+ // Next.JS
12
+ import getWebpackConnections from "./next_js/getWebpackConnections.js";
13
+ import getFetchInstances from "./next_js/getFetchInstances.js";
14
+ import resolveFetch from "./next_js/resolveFetch.js";
15
+ import interactive from "./next_js/interactive.js";
16
+ const availableTech = {
17
+ next: "Next.JS",
18
+ };
19
+ const availableFormats = {
20
+ json: "JSON",
21
+ };
22
+ const map = (directory, output, formats, tech, list, interactive_mode) => __awaiter(void 0, void 0, void 0, function* () {
23
+ console.log(chalk.cyan("[i] Running 'map' module"));
24
+ if (list) {
25
+ console.log(chalk.cyan("Available technologies:"));
26
+ for (const [key, value] of Object.entries(availableTech)) {
27
+ console.log(chalk.cyan(`- '${key}': ${value}`));
28
+ }
29
+ return;
30
+ }
31
+ // iterate through all the formats, and match it with the available formats
32
+ for (const format of formats) {
33
+ if (!Object.keys(availableFormats).includes(format)) {
34
+ console.log(chalk.red(`[!] Invalid format: ${format}`));
35
+ return;
36
+ }
37
+ }
38
+ if (!tech) {
39
+ console.log(chalk.red("[!] Please specify a technology with -t/--tech. Run with -l/--list to see available technologies"));
40
+ return;
41
+ }
42
+ if (!directory) {
43
+ console.log(chalk.red("[!] Please specify a directory with -d/--directory"));
44
+ return;
45
+ }
46
+ if (tech === "next") {
47
+ let chunks = yield getWebpackConnections(directory, output, formats);
48
+ // now, iterate through them, and check fetch instances
49
+ chunks = yield getFetchInstances(chunks, output, formats);
50
+ // resolve fetch once you've got all
51
+ yield resolveFetch(chunks, directory, formats);
52
+ if (interactive_mode) {
53
+ yield interactive(chunks);
54
+ }
55
+ }
56
+ });
57
+ export default map;
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/map/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU;AACV,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD,MAAM,aAAa,GAAG;IAClB,IAAI,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACrB,IAAI,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,GAAG,GAAG,CACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,gBAAgB,EAClB,EAAE;IACA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;IACX,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO;QACX,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CACL,kGAAkG,CACrG,CACJ,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAClE,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,IAAI,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAErE,uDAAuD;QACvD,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE1D,oCAAoC;QACpC,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,108 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import fs from "fs";
12
+ import _traverse from "@babel/traverse";
13
+ const traverse = _traverse.default;
14
+ import parser from "@babel/parser";
15
+ const isFetchIdentifier = (node) => {
16
+ return node.type === "Identifier" && node.name === "fetch";
17
+ };
18
+ const isFetchFallback = (node) => {
19
+ // x ?? fetch OR cond ? x : fetch
20
+ return ((node.type === "LogicalExpression" &&
21
+ node.right &&
22
+ isFetchIdentifier(node.right)) ||
23
+ (node.type === "ConditionalExpression" &&
24
+ isFetchIdentifier(node.alternate)));
25
+ };
26
+ const getFetchInstances = (chunks, output, formats) => __awaiter(void 0, void 0, void 0, function* () {
27
+ console.log(chalk.cyan("[i] Running 'getFetchInstances' module"));
28
+ let chunk_copy = Object.assign({}, chunks);
29
+ // iterate through the chunks, and check fetch instances
30
+ for (let chunk of Object.values(chunks)) {
31
+ const chunkAst = parser.parse(chunk.code, {
32
+ sourceType: "module",
33
+ plugins: ["jsx", "typescript"],
34
+ });
35
+ const fetchAliases = new Set();
36
+ const fetchCalls = new Set();
37
+ traverse(chunkAst, {
38
+ // -------- Pass 1: look for aliases --------
39
+ // a) const S = fetch;
40
+ // b) const S = something ?? fetch;
41
+ // c) const S = cond ? x : fetch;
42
+ VariableDeclarator(path) {
43
+ const { id, init } = path.node;
44
+ if (id.type !== "Identifier" || !init)
45
+ return;
46
+ const aliasName = id.name;
47
+ if (isFetchIdentifier(init) || isFetchFallback(init)) {
48
+ // Record the binding *object* so we can track its references later
49
+ const binding = path.scope.getBinding(aliasName);
50
+ if (binding) {
51
+ fetchAliases.add(binding);
52
+ }
53
+ }
54
+ },
55
+ AssignmentExpression(path) {
56
+ // Handles re-assignment: S = fetch;
57
+ const { left, right } = path.node;
58
+ if (left.type !== "Identifier")
59
+ return;
60
+ if (isFetchIdentifier(right) || isFetchFallback(right)) {
61
+ const binding = path.scope.getBinding(left.name);
62
+ if (binding) {
63
+ fetchAliases.add(binding);
64
+ }
65
+ }
66
+ },
67
+ CallExpression(path) {
68
+ if (isFetchIdentifier(path.node.callee)) {
69
+ const { line, column } = path.node.callee.loc.start;
70
+ fetchCalls.add({
71
+ line,
72
+ column,
73
+ });
74
+ }
75
+ },
76
+ });
77
+ // -------- Pass 2: report the call-sites (aliases) --------
78
+ for (const binding of fetchAliases) {
79
+ // @ts-ignore
80
+ binding.referencePaths.forEach((ref) => {
81
+ const parent = ref.parent;
82
+ if (parent.type === "CallExpression" &&
83
+ parent.callee === ref.node) {
84
+ const { line, column } = ref.node.loc.start;
85
+ console.log(chalk.magenta(`[fetch] Webpack ID ${chunk.id}: fetch() alias '${ref.node.name}' called at ${line}:${column}`));
86
+ }
87
+ });
88
+ }
89
+ // -------- Pass 3: report the call-sites (direct) --------
90
+ for (const call of fetchCalls) {
91
+ console.log(chalk.magenta(
92
+ // @ts-ignore
93
+ `[fetch] Webpack ID ${chunk.id}: fetch() called at ${call.line}:${call.column}`));
94
+ }
95
+ // if the length of either of the sets is non-zero, then mark the chunk as containing fetch
96
+ if (fetchAliases.size > 0 || fetchCalls.size > 0) {
97
+ chunk_copy[chunk.id].containsFetch = true;
98
+ }
99
+ }
100
+ if (formats.includes("json")) {
101
+ const chunks_json = JSON.stringify(chunks, null, 2);
102
+ fs.writeFileSync(`${output}.json`, chunks_json);
103
+ console.log(chalk.green(`[✓] Saved webpack with fetch instances to ${output}.json`));
104
+ }
105
+ return chunk_copy;
106
+ });
107
+ export default getFetchInstances;
108
+ //# sourceMappingURL=getFetchInstances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFetchInstances.js","sourceRoot":"","sources":["../../../src/map/next_js/getFetchInstances.ts"],"names":[],"mappings":"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"}