@shriyanss/js-recon 1.3.1-alpha.3 → 1.3.1-alpha.4

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 (136) hide show
  1. package/.github/workflows/build-and-prettify.yaml +15 -1
  2. package/.github/workflows/publish-js-recon.yml +13 -1
  3. package/CHANGELOG.md +76 -0
  4. package/CLAUDE.md +100 -11
  5. package/README.md +2 -0
  6. package/build/analyze/engine/astEngine.js +57 -29
  7. package/build/analyze/engine/astEngine.js.map +1 -1
  8. package/build/analyze/engine/index.js.map +1 -1
  9. package/build/analyze/helpers/engineHelpers/taintFlow.js +32 -0
  10. package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -1
  11. package/build/analyze/helpers/initRules.js +9 -0
  12. package/build/analyze/helpers/initRules.js.map +1 -1
  13. package/build/analyze/helpers/schemas.js +5 -1
  14. package/build/analyze/helpers/schemas.js.map +1 -1
  15. package/build/analyze/index.js +7 -2
  16. package/build/analyze/index.js.map +1 -1
  17. package/build/endpoints/next_js/client_mappedJsonFile.js +12 -5
  18. package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
  19. package/build/fingerprint/index.js +123 -0
  20. package/build/fingerprint/index.js.map +1 -0
  21. package/build/globalConfig.js +1 -1
  22. package/build/index.js +51 -4
  23. package/build/index.js.map +1 -1
  24. package/build/lazyLoad/downloadQueue.js +9 -8
  25. package/build/lazyLoad/downloadQueue.js.map +1 -1
  26. package/build/lazyLoad/index.js +260 -163
  27. package/build/lazyLoad/index.js.map +1 -1
  28. package/build/lazyLoad/next_js/NextJsCrawler.js +58 -16
  29. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
  30. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +149 -139
  31. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
  32. package/build/lazyLoad/next_js/next_SubsequentRequests.js +25 -4
  33. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
  34. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +13 -5
  35. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
  36. package/build/lazyLoad/react/react_followImports.js +105 -0
  37. package/build/lazyLoad/react/react_followImports.js.map +1 -0
  38. package/build/lazyLoad/react/react_getScriptTags.js +28 -5
  39. package/build/lazyLoad/react/react_getScriptTags.js.map +1 -1
  40. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +162 -0
  41. package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -0
  42. package/build/lazyLoad/svelte/svelte_getFromPageSource.js +15 -0
  43. package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
  44. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +180 -0
  45. package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -0
  46. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +15 -1
  47. package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
  48. package/build/lazyLoad/techDetect/checkReact.js +67 -36
  49. package/build/lazyLoad/techDetect/checkReact.js.map +1 -1
  50. package/build/lazyLoad/techDetect/checkSvelte.js +35 -35
  51. package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
  52. package/build/lazyLoad/techDetect/index.js +10 -6
  53. package/build/lazyLoad/techDetect/index.js.map +1 -1
  54. package/build/lazyLoad/vue/vue_getClientSidePaths.js +6 -0
  55. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
  56. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +6 -0
  57. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
  58. package/build/lazyLoad/vue/vue_stringJsFiles.js +6 -0
  59. package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
  60. package/build/map/graphql/resolveGraphql.js +296 -0
  61. package/build/map/graphql/resolveGraphql.js.map +1 -0
  62. package/build/map/index.js +93 -1
  63. package/build/map/index.js.map +1 -1
  64. package/build/map/next_js/interactive_helpers/commandHandler.js +4 -0
  65. package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -1
  66. package/build/map/next_js/interactive_helpers/commandHelpers.js +28 -0
  67. package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -1
  68. package/build/map/next_js/interactive_helpers/helpMenu.js +1 -1
  69. package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -1
  70. package/build/map/next_js/resolveServerActions.js +449 -0
  71. package/build/map/next_js/resolveServerActions.js.map +1 -0
  72. package/build/map/next_js/utils.js +1 -0
  73. package/build/map/next_js/utils.js.map +1 -1
  74. package/build/map/react_js/getReactConnections.js +298 -0
  75. package/build/map/react_js/getReactConnections.js.map +1 -0
  76. package/build/map/react_js/interactive.js +4 -0
  77. package/build/map/react_js/interactive.js.map +1 -0
  78. package/build/map/react_js/react_resolveFetch.js +6 -0
  79. package/build/map/react_js/react_resolveFetch.js.map +1 -0
  80. package/build/map/svelte_js/interactive.js +58 -0
  81. package/build/map/svelte_js/interactive.js.map +1 -0
  82. package/build/map/svelte_js/interactive_helpers/commandHandler.js +4 -0
  83. package/build/map/svelte_js/interactive_helpers/commandHandler.js.map +1 -0
  84. package/build/map/vue_js/bodyResolver.js +477 -0
  85. package/build/map/vue_js/bodyResolver.js.map +1 -0
  86. package/build/map/vue_js/crossFileResolver.js +438 -0
  87. package/build/map/vue_js/crossFileResolver.js.map +1 -0
  88. package/build/map/vue_js/getViteConnections.js +150 -129
  89. package/build/map/vue_js/getViteConnections.js.map +1 -1
  90. package/build/map/vue_js/taint_utils.js +621 -0
  91. package/build/map/vue_js/taint_utils.js.map +1 -0
  92. package/build/map/vue_js/vue_resolveFetch.js +79 -392
  93. package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
  94. package/build/map/vue_js/vue_resolveHttpClient.js +733 -0
  95. package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -0
  96. package/build/map/vue_js/vue_resolveXhr.js +279 -0
  97. package/build/map/vue_js/vue_resolveXhr.js.map +1 -0
  98. package/build/mcp/chatOneShot.js +101 -0
  99. package/build/mcp/chatOneShot.js.map +1 -0
  100. package/build/mcp/claudeCodeCreds.js +150 -0
  101. package/build/mcp/claudeCodeCreds.js.map +1 -0
  102. package/build/mcp/cli.js +140 -149
  103. package/build/mcp/cli.js.map +1 -1
  104. package/build/mcp/commands.js +80 -0
  105. package/build/mcp/commands.js.map +1 -1
  106. package/build/mcp/index.js +30 -9
  107. package/build/mcp/index.js.map +1 -1
  108. package/build/mcp/intent.js +204 -0
  109. package/build/mcp/intent.js.map +1 -0
  110. package/build/mcp/jobs.js +199 -0
  111. package/build/mcp/jobs.js.map +1 -0
  112. package/build/mcp/mcpServer.js +241 -0
  113. package/build/mcp/mcpServer.js.map +1 -0
  114. package/build/mcp/providers.js +18 -1
  115. package/build/mcp/providers.js.map +1 -1
  116. package/build/mcp/skills.js +115 -0
  117. package/build/mcp/skills.js.map +1 -0
  118. package/build/refactor/index.js +6 -0
  119. package/build/refactor/index.js.map +1 -1
  120. package/build/refactor/react/index.js +636 -0
  121. package/build/refactor/react/index.js.map +1 -0
  122. package/build/run/index.js +260 -60
  123. package/build/run/index.js.map +1 -1
  124. package/build/run/interruptHandler.js +93 -0
  125. package/build/run/interruptHandler.js.map +1 -0
  126. package/build/utility/globals.js +29 -0
  127. package/build/utility/globals.js.map +1 -1
  128. package/build/utility/makeReq.js +14 -2
  129. package/build/utility/makeReq.js.map +1 -1
  130. package/build/utility/openapiGenerator.js +46 -14
  131. package/build/utility/openapiGenerator.js.map +1 -1
  132. package/build/utility/postmanGenerator.js +62 -13
  133. package/build/utility/postmanGenerator.js.map +1 -1
  134. package/build/utility/progressLog.js +50 -0
  135. package/build/utility/progressLog.js.map +1 -0
  136. package/package.json +7 -4
@@ -0,0 +1,180 @@
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 * as cheerio from "cheerio";
12
+ import makeRequest from "../../utility/makeReq.js";
13
+ import resolvePath from "../../utility/resolvePath.js";
14
+ import { URL } from "url";
15
+ import { pushToJsUrls } from "../globals.js";
16
+ import react_followImports from "../react/react_followImports.js";
17
+ const STAGNATION_LIMIT = 3;
18
+ /**
19
+ * Extracts same-origin page URLs from <a href> and <link href> tags.
20
+ * Hash fragments are stripped; only URLs matching the entry origin are returned.
21
+ */
22
+ const extractPageLinks = (pageUrl, html) => {
23
+ const $ = cheerio.load(html);
24
+ const origin = new URL(pageUrl).origin;
25
+ const links = new Set();
26
+ $("a[href], link[href]").each((_, el) => {
27
+ const href = $(el).attr("href");
28
+ if (!href)
29
+ return;
30
+ try {
31
+ const resolved = new URL(href, pageUrl);
32
+ if (resolved.origin !== origin)
33
+ return;
34
+ resolved.hash = "";
35
+ links.add(resolved.href);
36
+ }
37
+ catch (_a) {
38
+ // unparseable href — skip
39
+ }
40
+ });
41
+ return [...links];
42
+ };
43
+ /**
44
+ * Extracts JS file URLs from pre-fetched HTML: <link rel="modulepreload">,
45
+ * <script src>, and Astro island component-url attributes.
46
+ */
47
+ const extractJsFromHtml = (pageUrl, html) => __awaiter(void 0, void 0, void 0, function* () {
48
+ const $ = cheerio.load(html);
49
+ const jsFiles = [];
50
+ for (const el of $("link").toArray()) {
51
+ const rel = $(el).attr("rel");
52
+ if (rel === "modulepreload") {
53
+ const href = $(el).attr("href");
54
+ if (href)
55
+ jsFiles.push(href.startsWith("http") ? href : yield resolvePath(pageUrl, href));
56
+ }
57
+ }
58
+ for (const el of $("script").toArray()) {
59
+ const src = $(el).attr("src");
60
+ if (src)
61
+ jsFiles.push(src.startsWith("http") ? src : yield resolvePath(pageUrl, src));
62
+ }
63
+ for (const el of $("astro-island").toArray()) {
64
+ for (const attr of ["component-url", "renderer-url"]) {
65
+ const value = $(el).attr(attr);
66
+ if (value)
67
+ jsFiles.push(value.startsWith("http") ? value : yield resolvePath(pageUrl, value));
68
+ }
69
+ }
70
+ return jsFiles;
71
+ });
72
+ /**
73
+ * Recursively crawls same-origin HTML pages discovered via <a href> and
74
+ * <link href> links. For every page that responds with text/html, it runs
75
+ * the full JS-discovery pipeline (HTML extraction + ESM import following)
76
+ * and queues any new page links for further recursion.
77
+ *
78
+ * Termination:
79
+ * - pending queue is exhausted, or
80
+ * - STAGNATION_LIMIT consecutive rounds produce no new JS files.
81
+ *
82
+ * Already-visited pages are never re-processed; ESM import traversal
83
+ * reuses a single visited Set across all pages so no JS file is fetched
84
+ * twice.
85
+ */
86
+ const svelte_recursivePageCrawl = (entryUrl_1, ...args_1) => __awaiter(void 0, [entryUrl_1, ...args_1], void 0, function* (entryUrl, maxJsSizeMb = 2, onFilesDiscovered) {
87
+ var _a;
88
+ const allJsFiles = new Set();
89
+ const visitedPages = new Set([entryUrl]);
90
+ const knownPages = new Set([entryUrl]);
91
+ const importVisited = new Set();
92
+ // Seed from entry page
93
+ const entryRes = yield makeRequest(entryUrl, {});
94
+ if (!entryRes)
95
+ return [];
96
+ const entryHtml = yield entryRes.text();
97
+ const initialLinks = extractPageLinks(entryUrl, entryHtml);
98
+ const pendingPages = [];
99
+ for (const link of initialLinks) {
100
+ if (!knownPages.has(link)) {
101
+ knownPages.add(link);
102
+ pendingPages.push(link);
103
+ }
104
+ }
105
+ if (pendingPages.length === 0)
106
+ return [];
107
+ console.log(chalk.cyan(`[i] Found ${pendingPages.length} candidate page link(s) for recursive JS discovery`));
108
+ let stagnantRounds = 0;
109
+ while (pendingPages.length > 0) {
110
+ const batch = pendingPages.splice(0);
111
+ const sizeBeforeRound = allJsFiles.size;
112
+ for (const pageUrl of batch) {
113
+ if (visitedPages.has(pageUrl))
114
+ continue;
115
+ visitedPages.add(pageUrl);
116
+ try {
117
+ const res = yield makeRequest(pageUrl, {});
118
+ if (!res)
119
+ continue;
120
+ const contentType = (_a = res.headers.get("content-type")) !== null && _a !== void 0 ? _a : "";
121
+ if (!contentType.includes("text/html"))
122
+ continue;
123
+ const html = yield res.text();
124
+ // Extract JS files from this page's HTML
125
+ const jsFromPage = yield extractJsFromHtml(pageUrl, html);
126
+ if (jsFromPage.length > 0) {
127
+ for (const f of jsFromPage) {
128
+ pushToJsUrls(f);
129
+ allJsFiles.add(f);
130
+ }
131
+ if (onFilesDiscovered)
132
+ onFilesDiscovered(jsFromPage);
133
+ console.log(chalk.green(`[✓] ${pageUrl}: extracted ${jsFromPage.length} JS file(s)`));
134
+ }
135
+ // Follow ESM imports from the newly found JS files
136
+ let toFollow = jsFromPage.filter((f) => !importVisited.has(f));
137
+ while (toFollow.length > 0) {
138
+ const newFiles = yield react_followImports(toFollow, maxJsSizeMb, pageUrl, importVisited);
139
+ if (newFiles.length === 0)
140
+ break;
141
+ for (const f of newFiles) {
142
+ pushToJsUrls(f);
143
+ allJsFiles.add(f);
144
+ }
145
+ if (onFilesDiscovered)
146
+ onFilesDiscovered(newFiles);
147
+ toFollow = newFiles;
148
+ }
149
+ // Queue newly discovered same-origin page links
150
+ const newLinks = extractPageLinks(pageUrl, html);
151
+ for (const link of newLinks) {
152
+ if (!knownPages.has(link)) {
153
+ knownPages.add(link);
154
+ pendingPages.push(link);
155
+ }
156
+ }
157
+ }
158
+ catch (err) {
159
+ console.log(chalk.yellow(`[!] Failed to crawl ${pageUrl}: ${err instanceof Error ? err.message : String(err)}`));
160
+ }
161
+ }
162
+ const newFilesThisRound = allJsFiles.size - sizeBeforeRound;
163
+ if (newFilesThisRound === 0) {
164
+ stagnantRounds++;
165
+ if (stagnantRounds >= STAGNATION_LIMIT) {
166
+ console.log(chalk.yellow(`[!] Stopping page crawl: ${STAGNATION_LIMIT} consecutive rounds without new JS files`));
167
+ break;
168
+ }
169
+ }
170
+ else {
171
+ stagnantRounds = 0;
172
+ }
173
+ }
174
+ if (allJsFiles.size > 0) {
175
+ console.log(chalk.green(`[✓] Recursive page crawl found ${allJsFiles.size} JS file(s) across ${visitedPages.size - 1} page(s)`));
176
+ }
177
+ return [...allJsFiles];
178
+ });
179
+ export default svelte_recursivePageCrawl;
180
+ //# sourceMappingURL=svelte_recursivePageCrawl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte_recursivePageCrawl.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_recursivePageCrawl.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ import _traverse from "@babel/traverse";
17
17
  const traverse = _traverse.default;
18
18
  let analyzedFiles = [];
19
19
  let filesFound = [];
20
+ let mapFilesFound = [];
20
21
  /**
21
22
  * Parses the content of a JavaScript file and returns an object containing
22
23
  * all the strings that end with ".js".
@@ -88,6 +89,15 @@ const svelte_stringAnalysisJSFiles = (url) => __awaiter(void 0, void 0, void 0,
88
89
  const response = yield makeRequest(js_url, {});
89
90
  const respText = yield response.text();
90
91
  const foundJsFiles = yield parseJSFileContent(respText);
92
+ // check for sourcemap reference and queue the .map file
93
+ const sourcemapMatch = respText.match(/\/\/# sourceMappingURL=(.+)$/m);
94
+ if (sourcemapMatch) {
95
+ const rawRef = sourcemapMatch[1].trim();
96
+ const mapUrl = new URL(rawRef, js_url).href;
97
+ if (!mapFilesFound.includes(mapUrl)) {
98
+ mapFilesFound.push(mapUrl);
99
+ }
100
+ }
91
101
  // iterate through the foundJsFiles and resolve the paths
92
102
  for (const [key, value] of Object.entries(foundJsFiles)) {
93
103
  const resolvedPath = yield resolvePath(js_url, value);
@@ -102,8 +112,12 @@ const svelte_stringAnalysisJSFiles = (url) => __awaiter(void 0, void 0, void 0,
102
112
  }
103
113
  // dedupe the files
104
114
  filesFound = [...new Set(filesFound)];
115
+ mapFilesFound = [...new Set(mapFilesFound)];
105
116
  console.log(chalk.green(`[✓] Found ${filesFound.length} JS files from string analysis`));
106
- return filesFound;
117
+ if (mapFilesFound.length > 0) {
118
+ console.log(chalk.green(`[✓] Found ${mapFilesFound.length} sourcemap(s) from JS files`));
119
+ }
120
+ return { jsFiles: filesFound, mapFiles: mapFilesFound };
107
121
  });
108
122
  export default svelte_stringAnalysisJSFiles;
109
123
  //# sourceMappingURL=svelte_stringAnalysisJSFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"svelte_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_stringAnalysisJSFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svelte_stringAnalysisJSFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/svelte/svelte_stringAnalysisJSFiles.ts"],"names":[],"mappings":"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"}
@@ -8,48 +8,79 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import makeRequest from "../../utility/makeReq.js";
11
+ const REACT_MARKERS = [
12
+ "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED",
13
+ "__REACT_DEVTOOLS_GLOBAL_HOOK__",
14
+ "react-jsx-runtime.production",
15
+ "react-dom.production",
16
+ "__reactRouterVersion",
17
+ ];
18
+ const matchesReact = (body) => {
19
+ for (const marker of REACT_MARKERS) {
20
+ if (body.includes(marker))
21
+ return marker;
22
+ }
23
+ return null;
24
+ };
25
+ const fetchAndCheck = (src, url) => __awaiter(void 0, void 0, void 0, function* () {
26
+ var _a;
27
+ let resolvedUrl;
28
+ try {
29
+ resolvedUrl = new URL(src, url).href;
30
+ }
31
+ catch (_b) {
32
+ return null;
33
+ }
34
+ // Fast path: filename itself contains "react"
35
+ const filename = (_a = resolvedUrl.split("/").pop()) !== null && _a !== void 0 ? _a : "";
36
+ if (/react/i.test(filename)) {
37
+ return `React-named file referenced: ${src}`;
38
+ }
39
+ const res = yield makeRequest(resolvedUrl, {});
40
+ if (!res)
41
+ return null;
42
+ const body = yield res.text();
43
+ const marker = matchesReact(body);
44
+ return marker ? `Found "${marker}" in ${src}` : null;
45
+ });
11
46
  const checkReact = ($, url) => __awaiter(void 0, void 0, void 0, function* () {
12
- let detected = false;
13
- let evidence = "";
14
- // to detect react, first go through all the <script src>
47
+ // Check <script src="..."> elements
15
48
  for (const el of $("script").get()) {
16
49
  const attribs = el.attribs;
17
- if (attribs) {
18
- for (const [attrName, attrValue] of Object.entries(attribs)) {
19
- if (attrName === "src") {
20
- // get the src
21
- const src = attrValue;
22
- // Resolve src against the page URL — skip if it's malformed
23
- // (e.g. `data:`, `javascript:` schemes, invalid URIs).
24
- let resolvedUrl;
25
- try {
26
- resolvedUrl = new URL(src, url).href;
27
- }
28
- catch (_a) {
29
- continue;
30
- }
31
- // makeRequest returns Response | null — skip when the fetch failed.
32
- const res = yield makeRequest(resolvedUrl, {});
33
- if (!res)
34
- continue;
35
- const body = yield res.text();
36
- // check if the body contains "react" or "react-dom"
37
- if (body.includes("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED") &&
38
- body.includes("__REACT_DEVTOOLS_GLOBAL_HOOK__")) {
39
- detected = true;
40
- evidence = `Found "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED" and "__REACT_DEVTOOLS_GLOBAL_HOOK__" in ${src}`;
41
- break;
42
- }
43
- else if (body.includes("__reactRouterVersion")) {
44
- detected = true;
45
- evidence = `Found "__reactRouterVersion" in ${src}`;
46
- break;
47
- }
48
- }
50
+ if (!attribs)
51
+ continue;
52
+ const src = attribs["src"];
53
+ if (src) {
54
+ const evidence = yield fetchAndCheck(src, url);
55
+ if (evidence)
56
+ return { detected: true, evidence };
57
+ }
58
+ else {
59
+ // Inline script — scan the text content directly (Vite bundles, etc.)
60
+ const inlineContent = $(el).text();
61
+ if (!inlineContent)
62
+ continue;
63
+ const marker = matchesReact(inlineContent);
64
+ if (marker) {
65
+ return { detected: true, evidence: `Found "${marker}" in inline <script> on ${url}` };
49
66
  }
50
67
  }
51
68
  }
52
- return { detected, evidence };
69
+ // Check <link rel="modulepreload"> elements (Vite splits React into separate vendor chunks)
70
+ for (const el of $("link").get()) {
71
+ const attribs = el.attribs;
72
+ if (!attribs)
73
+ continue;
74
+ if (attribs["rel"] !== "modulepreload")
75
+ continue;
76
+ const href = attribs["href"];
77
+ if (!href)
78
+ continue;
79
+ const evidence = yield fetchAndCheck(href, url);
80
+ if (evidence)
81
+ return { detected: true, evidence };
82
+ }
83
+ return { detected: false, evidence: "" };
53
84
  });
54
85
  export { checkReact };
55
86
  //# sourceMappingURL=checkReact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkReact.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkReact.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAGnD,MAAM,UAAU,GAAG,CAAO,CAAqB,EAAE,GAAW,EAAoD,EAAE;IAC9G,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,yDAAyD;IAEzD,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACrB,cAAc;oBACd,MAAM,GAAG,GAAG,SAAS,CAAC;oBAEtB,4DAA4D;oBAC5D,uDAAuD;oBACvD,IAAI,WAAmB,CAAC;oBACxB,IAAI,CAAC;wBACD,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;oBACzC,CAAC;oBAAC,WAAM,CAAC;wBACL,SAAS;oBACb,CAAC;oBAED,oEAAoE;oBACpE,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBAC/C,IAAI,CAAC,GAAG;wBAAE,SAAS;oBACnB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAE9B,oDAAoD;oBACpD,IACI,IAAI,CAAC,QAAQ,CAAC,oDAAoD,CAAC;wBACnE,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EACjD,CAAC;wBACC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,sGAAsG,GAAG,EAAE,CAAC;wBACvH,MAAM;oBACV,CAAC;yBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;wBAC/C,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,mCAAmC,GAAG,EAAE,CAAC;wBACpD,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAA,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"checkReact.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkReact.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  /**
11
- * Detects if a webpage uses Svelte/SvelteKit by checking for Svelte-specific attributes.
12
- *
13
- * Looks for svelte- prefixed class names, IDs, and SvelteKit-specific attributes
14
- * like data-sveltekit-reload to identify Svelte applications.
11
+ * Detects if a webpage uses Svelte/SvelteKit or Astro+Svelte by checking for
12
+ * Svelte-specific attributes, SvelteKit navigation markers, and Astro island
13
+ * elements whose renderer is the Svelte adapter.
15
14
  *
16
15
  * @param $ - The Cheerio API object containing the parsed HTML
17
16
  * @returns Promise that resolves to an object with detection status and evidence
@@ -19,49 +18,50 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
18
  export const checkSvelte = ($) => __awaiter(void 0, void 0, void 0, function* () {
20
19
  let detected = false;
21
20
  let evidence = "";
22
- // go through the page source, and check for all the class names of all HTML tags
21
+ // SvelteKit: svelte- prefixed class names or IDs
23
22
  $("*").each((_, el) => {
24
- const tag = $(el).get(0).tagName;
25
23
  const attribs = el.attribs;
26
- if (attribs) {
27
- for (const [attrName, attrValue] of Object.entries(attribs)) {
28
- if (attrName === "class") {
29
- // @ts-ignore
30
- if (attrValue.includes("svelte-")) {
31
- detected = true;
32
- evidence = `${attrName} :: ${attrValue}`;
33
- }
24
+ if (!attribs)
25
+ return;
26
+ for (const [attrName, attrValue] of Object.entries(attribs)) {
27
+ if (attrName === "class" || attrName === "id") {
28
+ // @ts-ignore
29
+ if (attrValue.includes("svelte-")) {
30
+ detected = true;
31
+ evidence = `${attrName} :: ${attrValue}`;
34
32
  }
35
33
  }
36
34
  }
37
35
  });
38
- // now, search for the svelte- id of all elements
36
+ // SvelteKit: data-sveltekit-reload or other data-sveltekit-* attributes
39
37
  $("*").each((_, el) => {
40
- const tag = $(el).get(0).tagName;
41
38
  const attribs = el.attribs;
42
- if (attribs) {
43
- for (const [attrName, attrValue] of Object.entries(attribs)) {
44
- if (attrName === "id") {
45
- // @ts-ignore
46
- if (attrValue.includes("svelte-")) {
47
- detected = true;
48
- evidence = `${attrName} :: ${attrValue}`;
49
- }
50
- }
39
+ if (!attribs)
40
+ return;
41
+ for (const attrName of Object.keys(attribs)) {
42
+ if (attrName.startsWith("data-sveltekit-")) {
43
+ detected = true;
44
+ evidence = `${attrName} :: ${attribs[attrName]}`;
51
45
  }
52
46
  }
53
47
  });
54
- // now, check for the data-sveltekit-reload attribute
55
- $("*").each((_, el) => {
56
- const tag = $(el).get(0).tagName;
48
+ // Astro+Svelte: astro-island elements whose renderer-url contains ".svelte."
49
+ // or whose opts attribute contains "value":"svelte"
50
+ $("astro-island").each((_, el) => {
57
51
  const attribs = el.attribs;
58
- if (attribs) {
59
- for (const [attrName, attrValue] of Object.entries(attribs)) {
60
- if (attrName === "data-sveltekit-reload") {
61
- detected = true;
62
- evidence = `${attrName} :: ${attrValue}`;
63
- }
64
- }
52
+ if (!attribs)
53
+ return;
54
+ const rendererUrl = attribs["renderer-url"] || "";
55
+ if (rendererUrl.includes(".svelte.") || rendererUrl.includes("/svelte")) {
56
+ detected = true;
57
+ evidence = `astro-island renderer-url :: ${rendererUrl}`;
58
+ return false; // break
59
+ }
60
+ const opts = attribs["opts"] || "";
61
+ if (opts.includes('"value":"svelte"') || opts.includes("'value':'svelte'")) {
62
+ detected = true;
63
+ evidence = `astro-island opts :: ${opts.slice(0, 80)}`;
64
+ return false;
65
65
  }
66
66
  });
67
67
  return { detected, evidence };
@@ -1 +1 @@
1
- {"version":3,"file":"checkSvelte.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkSvelte.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,CAAC,EAAE,EAAE;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,iFAAiF;IACjF,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACvB,aAAa;oBACb,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;oBAC7C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACpB,aAAa;oBACb,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAC;wBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;oBAC7C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,uBAAuB,EAAE,CAAC;oBACvC,QAAQ,GAAG,IAAI,CAAC;oBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;gBAC7C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"checkSvelte.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/checkSvelte.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,CAAC,EAAE,EAAE;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,iDAAiD;IACjD,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC5C,aAAa;gBACb,IAAK,SAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5C,QAAQ,GAAG,IAAI,CAAC;oBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,CAAC;gBAC7C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACzC,QAAQ,GAAG,IAAI,CAAC;gBAChB,QAAQ,GAAG,GAAG,QAAQ,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,oDAAoD;IACpD,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,WAAW,GAAW,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,QAAQ,GAAG,IAAI,CAAC;YAChB,QAAQ,GAAG,gCAAgC,WAAW,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,CAAC,QAAQ;QAC1B,CAAC;QACD,MAAM,IAAI,GAAW,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzE,QAAQ,GAAG,IAAI,CAAC;YAChB,QAAQ,GAAG,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAA,CAAC"}
@@ -29,7 +29,11 @@ import { checkReact } from "./checkReact.js";
29
29
  * - evidence: A string with the evidence of the detection, or an empty string if no front-end framework was detected.
30
30
  */
31
31
  const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* () {
32
- console.log(chalk.cyan("[i] Detecting front-end framework"));
32
+ const log = (...args) => {
33
+ if (!globalsUtil.getQuiet())
34
+ console.log(...args);
35
+ };
36
+ log(chalk.cyan("[i] Detecting front-end framework"));
33
37
  // get the page source. Drain the body immediately into a string — if we
34
38
  // wait until after the puppeteer + downstream check* calls, the Response
35
39
  // body gets invalidated (undici flips bodyUsed=true mid-flight when the
@@ -41,7 +45,7 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
41
45
  resBody = yield res.text();
42
46
  }
43
47
  catch (err) {
44
- console.log(chalk.yellow(`[!] Could not read fetch response body for ${url} (${(err === null || err === void 0 ? void 0 : err.message) || err}); using browser-rendered source only.`));
48
+ log(chalk.yellow(`[!] Could not read fetch response body for ${url} (${(err === null || err === void 0 ? void 0 : err.message) || err}); using browser-rendered source only.`));
45
49
  }
46
50
  }
47
51
  // get the page source in the browser (skipped in cache-only mode — no network allowed)
@@ -63,7 +67,7 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
63
67
  pageSource = yield page.content();
64
68
  }
65
69
  catch (err) {
66
- console.log(chalk.yellow("[!] Page navigation/content failed, falling back to fetch response if available"));
70
+ log(chalk.yellow("[!] Page navigation/content failed, falling back to fetch response if available"));
67
71
  }
68
72
  finally {
69
73
  yield browser.close().catch(() => { });
@@ -93,7 +97,7 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
93
97
  let $res;
94
98
  // if network error was caused, then return
95
99
  if (res === null) {
96
- console.log(chalk.red("[!] Fetch request failed after retries"));
100
+ log(chalk.red("[!] Fetch request failed after retries"));
97
101
  }
98
102
  else if (resBody !== null) {
99
103
  $res = cheerio.load(resBody);
@@ -108,8 +112,8 @@ const frameworkDetect = (url) => __awaiter(void 0, void 0, void 0, function* ()
108
112
  return { name: "next", evidence };
109
113
  }
110
114
  else if (result_checkVueJS.detected === true || result_checkVueJS_res.detected === true) {
111
- console.log(chalk.green("[✓] Vue.js detected"));
112
- console.log(chalk.cyan(`[i] Checking Nuxt.JS`), chalk.dim("(Nuxt.JS is built on Vue.js)"));
115
+ log(chalk.green("[✓] Vue.js detected"));
116
+ log(chalk.cyan(`[i] Checking Nuxt.JS`), chalk.dim("(Nuxt.JS is built on Vue.js)"));
113
117
  const result_checkNuxtJS = yield checkNuxtJS($);
114
118
  const result_checkNuxtJS_res = $res ? yield checkNuxtJS($res) : { detected: false, evidence: "" };
115
119
  if (result_checkNuxtJS.detected === true || result_checkNuxtJS_res.detected === true) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lazyLoad/techDetect/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import chalk from "chalk";
13
13
  import cliProgress from "cli-progress";
14
14
  import parser from "@babel/parser";
15
15
  import t from "@babel/types";
16
+ import { setActiveBarLogger, computeBarSize, watchBarResize } from "../../utility/progressLog.js";
16
17
  const traverse = _traverse.default;
17
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) {
18
19
  const MAX_JS_SIZE_BYTES = maxJsSizeMb * 1024 * 1024;
@@ -23,6 +24,7 @@ const vue_getClientSidePaths = (url_1, jsFiles_1, ...args_1) => __awaiter(void 0
23
24
  "[{bar}] {percentage}% | {value}/{total} files | {paths} paths | {skipped} skipped",
24
25
  barCompleteChar: "█",
25
26
  barIncompleteChar: "░",
27
+ barsize: computeBarSize(86),
26
28
  hideCursor: false,
27
29
  clearOnComplete: false,
28
30
  stopOnComplete: false,
@@ -30,6 +32,8 @@ const vue_getClientSidePaths = (url_1, jsFiles_1, ...args_1) => __awaiter(void 0
30
32
  let processed = 0;
31
33
  let skipped = 0;
32
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) });
33
37
  // iterate through all those
34
38
  for (const jsFile of jsFiles) {
35
39
  if (!jsFile.endsWith(".js")) {
@@ -140,6 +144,8 @@ const vue_getClientSidePaths = (url_1, jsFiles_1, ...args_1) => __awaiter(void 0
140
144
  bar.update(processed, { paths: toReturn.length, skipped });
141
145
  }
142
146
  bar.stop();
147
+ stopBarWatcher();
148
+ setActiveBarLogger(null);
143
149
  if (toReturn.length > 0) {
144
150
  console.log(chalk.green(`[+] Found ${toReturn.length} client-side paths from JS files!`));
145
151
  }