@shriyanss/js-recon 1.2.2 → 1.3.1-alpha.1
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/CHANGELOG.md +25 -0
- package/build/analyze/engine/astEngine.js +32 -26
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/schemas.js +1 -0
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +4 -2
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +12 -4
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/globalConfig.js +1 -1
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +16 -2
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +74 -80
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js +1 -1
- package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
- package/build/lazyLoad/index.js +31 -46
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +76 -22
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetJSScript.js +1 -1
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +4 -2
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +8 -3
- package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
- package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
- package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/react/react_getScriptTags.js +29 -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/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 +44 -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 +14 -254
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +122 -54
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +4 -0
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_discoverJsFiles.js +68 -0
- package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +122 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
- package/build/lazyLoad/vue/vue_jsImports.js +40 -34
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- 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 +8 -0
- package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +136 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js +5 -0
- package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
- package/build/map/index.js +19 -0
- package/build/map/index.js.map +1 -1
- package/build/map/next_js/getExports.js +3 -1
- package/build/map/next_js/getExports.js.map +1 -1
- 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 +3 -4
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +14 -10
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
- package/build/map/next_js/resolveFetch.js +2 -1
- package/build/map/next_js/resolveFetch.js.map +1 -1
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +293 -0
- package/build/map/vue_js/getViteConnections.js.map +1 -0
- package/build/map/vue_js/interactive.js +39 -0
- package/build/map/vue_js/interactive.js.map +1 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js +285 -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 +11 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
- package/build/mcp/cli.js +381 -0
- package/build/mcp/cli.js.map +1 -0
- package/build/mcp/commands.js +147 -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 +29 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/providers.js +153 -0
- package/build/mcp/providers.js.map +1 -0
- package/build/mcp/tools.js +185 -0
- package/build/mcp/tools.js.map +1 -0
- package/build/run/index.js +35 -16
- package/build/run/index.js.map +1 -1
- package/build/utility/makeReq.js +25 -55
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/puppeteerInstance.js +5 -0
- package/build/utility/puppeteerInstance.js.map +1 -0
- package/package.json +10 -3
|
@@ -0,0 +1,29 @@
|
|
|
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 { loadConfig } from "./config.js";
|
|
12
|
+
import { startCli } from "./cli.js";
|
|
13
|
+
/**
|
|
14
|
+
* Main entry point for the MCP module.
|
|
15
|
+
* Loads configuration and starts the interactive CLI session.
|
|
16
|
+
*/
|
|
17
|
+
const mcp = (cli, configFile, apiKey, model, provider) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
console.log(chalk.cyan("[i] Loading 'MCP' module"));
|
|
19
|
+
const config = loadConfig(configFile);
|
|
20
|
+
if (cli) {
|
|
21
|
+
yield startCli(config, apiKey, model, provider);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log(chalk.yellow("[!] MCP module currently requires --cli flag for interactive mode."));
|
|
25
|
+
console.log(chalk.cyan("[i] Usage: js-recon mcp --cli"));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
export default mcp;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,GAAG,GAAG,CACR,GAAY,EACZ,UAA8B,EAC9B,MAA0B,EAC1B,KAAyB,EACzB,QAA4B,EACf,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtC,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
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 OpenAI from "openai";
|
|
11
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
// Rough pricing per 1M tokens (input / output)
|
|
14
|
+
const PRICING = {
|
|
15
|
+
"gpt-4o-mini": { input: 0.15, output: 0.6 },
|
|
16
|
+
"gpt-4o": { input: 2.5, output: 10 },
|
|
17
|
+
"gpt-4.1-mini": { input: 0.4, output: 1.6 },
|
|
18
|
+
"gpt-4.1-nano": { input: 0.1, output: 0.4 },
|
|
19
|
+
"gpt-4.1": { input: 2.0, output: 8.0 },
|
|
20
|
+
"claude-sonnet-4-20250514": { input: 3, output: 15 },
|
|
21
|
+
"claude-3-5-haiku-20241022": { input: 0.8, output: 4 },
|
|
22
|
+
"claude-3-5-sonnet-20241022": { input: 3, output: 15 },
|
|
23
|
+
};
|
|
24
|
+
const DEFAULT_PRICING = { input: 1, output: 3 };
|
|
25
|
+
export class SessionUsage {
|
|
26
|
+
constructor(model) {
|
|
27
|
+
this.stats = { promptTokens: 0, completionTokens: 0, totalTokens: 0, estimatedCost: 0 };
|
|
28
|
+
this.model = model;
|
|
29
|
+
}
|
|
30
|
+
addUsage(promptTokens, completionTokens) {
|
|
31
|
+
this.stats.promptTokens += promptTokens;
|
|
32
|
+
this.stats.completionTokens += completionTokens;
|
|
33
|
+
this.stats.totalTokens += promptTokens + completionTokens;
|
|
34
|
+
const pricing = PRICING[this.model] || DEFAULT_PRICING;
|
|
35
|
+
this.stats.estimatedCost =
|
|
36
|
+
(this.stats.promptTokens / 1000000) * pricing.input +
|
|
37
|
+
(this.stats.completionTokens / 1000000) * pricing.output;
|
|
38
|
+
}
|
|
39
|
+
getStats() {
|
|
40
|
+
return Object.assign({}, this.stats);
|
|
41
|
+
}
|
|
42
|
+
formatCost() {
|
|
43
|
+
const s = this.stats;
|
|
44
|
+
return [
|
|
45
|
+
chalk.cyan(`Model: ${this.model}`),
|
|
46
|
+
`Prompt tokens: ${s.promptTokens.toLocaleString()}`,
|
|
47
|
+
`Completion tokens: ${s.completionTokens.toLocaleString()}`,
|
|
48
|
+
`Total tokens: ${s.totalTokens.toLocaleString()}`,
|
|
49
|
+
chalk.green(`Estimated cost: $${s.estimatedCost.toFixed(6)}`),
|
|
50
|
+
].join("\n");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class OpenAIProvider {
|
|
54
|
+
constructor(apiKey, model) {
|
|
55
|
+
this.name = "openai";
|
|
56
|
+
this.client = new OpenAI({ apiKey });
|
|
57
|
+
this.model = model;
|
|
58
|
+
}
|
|
59
|
+
chat(messages) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
try {
|
|
63
|
+
const response = yield this.client.chat.completions.create({
|
|
64
|
+
model: this.model,
|
|
65
|
+
messages: messages.map((m) => ({ role: m.role, content: m.content })),
|
|
66
|
+
temperature: 0.3,
|
|
67
|
+
});
|
|
68
|
+
const content = ((_b = (_a = response.choices[0]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.content) || "";
|
|
69
|
+
const usage = response.usage;
|
|
70
|
+
return {
|
|
71
|
+
content,
|
|
72
|
+
promptTokens: (usage === null || usage === void 0 ? void 0 : usage.prompt_tokens) || 0,
|
|
73
|
+
completionTokens: (usage === null || usage === void 0 ? void 0 : usage.completion_tokens) || 0,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
throw new Error(`OpenAI API error: ${err.message}`);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export class AnthropicProvider {
|
|
83
|
+
constructor(apiKey, model) {
|
|
84
|
+
this.name = "anthropic";
|
|
85
|
+
this.client = new Anthropic({ apiKey });
|
|
86
|
+
this.model = model;
|
|
87
|
+
}
|
|
88
|
+
chat(messages) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
try {
|
|
92
|
+
// Anthropic requires system message separate from messages
|
|
93
|
+
const systemMsg = messages.find((m) => m.role === "system");
|
|
94
|
+
const chatMsgs = messages
|
|
95
|
+
.filter((m) => m.role !== "system")
|
|
96
|
+
.map((m) => ({
|
|
97
|
+
role: m.role,
|
|
98
|
+
content: m.content,
|
|
99
|
+
}));
|
|
100
|
+
const response = yield this.client.messages.create({
|
|
101
|
+
model: this.model,
|
|
102
|
+
max_tokens: 4096,
|
|
103
|
+
system: (systemMsg === null || systemMsg === void 0 ? void 0 : systemMsg.content) || "",
|
|
104
|
+
messages: chatMsgs,
|
|
105
|
+
});
|
|
106
|
+
const content = response.content
|
|
107
|
+
.filter((block) => block.type === "text")
|
|
108
|
+
.map((block) => block.text)
|
|
109
|
+
.join("");
|
|
110
|
+
return {
|
|
111
|
+
content,
|
|
112
|
+
promptTokens: ((_a = response.usage) === null || _a === void 0 ? void 0 : _a.input_tokens) || 0,
|
|
113
|
+
completionTokens: ((_b = response.usage) === null || _b === void 0 ? void 0 : _b.output_tokens) || 0,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
throw new Error(`Anthropic API error: ${err.message}`);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Creates the appropriate LLM provider based on configuration.
|
|
124
|
+
*/
|
|
125
|
+
export const createProvider = (provider, apiKey, model) => {
|
|
126
|
+
if (provider === "anthropic") {
|
|
127
|
+
return new AnthropicProvider(apiKey, model);
|
|
128
|
+
}
|
|
129
|
+
return new OpenAIProvider(apiKey, model);
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Lists available models for a given provider.
|
|
133
|
+
*/
|
|
134
|
+
export const listModels = (provider, apiKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
135
|
+
if (provider === "openai") {
|
|
136
|
+
return ["gpt-4o", "gpt-4o-mini", "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", "o1", "o1-mini", "o3-mini"];
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return [
|
|
140
|
+
"claude-sonnet-4-20250514",
|
|
141
|
+
"claude-3-5-sonnet-20241022",
|
|
142
|
+
"claude-3-5-haiku-20241022",
|
|
143
|
+
"claude-3-opus-20240229",
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
/**
|
|
148
|
+
* Auto-detects a default model based on the provider.
|
|
149
|
+
*/
|
|
150
|
+
export const getDefaultModel = (provider) => {
|
|
151
|
+
return provider === "openai" ? "gpt-4o-mini" : "claude-3-5-sonnet-20241022";
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/mcp/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
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 fs from "fs";
|
|
11
|
+
import path from "path";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
import lazyLoad from "../lazyLoad/index.js";
|
|
14
|
+
import run from "../run/index.js";
|
|
15
|
+
import * as globalsUtil from "../utility/globals.js";
|
|
16
|
+
import configureSandbox from "../utility/configureSandbox.js";
|
|
17
|
+
/**
|
|
18
|
+
* Builds a tree-style directory listing string for a given path (recursive, max depth).
|
|
19
|
+
*/
|
|
20
|
+
const buildDirTree = (dirPath, prefix = "", maxDepth = 3, currentDepth = 0) => {
|
|
21
|
+
if (currentDepth >= maxDepth || !fs.existsSync(dirPath))
|
|
22
|
+
return "";
|
|
23
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
24
|
+
let result = "";
|
|
25
|
+
for (let i = 0; i < entries.length; i++) {
|
|
26
|
+
const entry = entries[i];
|
|
27
|
+
const isLast = i === entries.length - 1;
|
|
28
|
+
const connector = isLast ? "└── " : "├── ";
|
|
29
|
+
const childPrefix = isLast ? " " : "│ ";
|
|
30
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
31
|
+
if (entry.isDirectory()) {
|
|
32
|
+
const childCount = fs.readdirSync(fullPath).length;
|
|
33
|
+
result += `${prefix}${connector}${entry.name}/ (${childCount} items)\n`;
|
|
34
|
+
result += buildDirTree(fullPath, prefix + childPrefix, maxDepth, currentDepth + 1);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const size = fs.statSync(fullPath).size;
|
|
38
|
+
const sizeStr = size > 1024 ? `${(size / 1024).toFixed(1)}KB` : `${size}B`;
|
|
39
|
+
result += `${prefix}${connector}${entry.name} (${sizeStr})\n`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Runs the lazyload module against a target URL.
|
|
46
|
+
*/
|
|
47
|
+
export const runLazyload = (url_1, ...args_1) => __awaiter(void 0, [url_1, ...args_1], void 0, function* (url, outputDir = "output", threads = 1, sourcemapDir = "extracted") {
|
|
48
|
+
try {
|
|
49
|
+
console.log(chalk.cyan(`\n[mcp] Running lazyload against ${url}...`));
|
|
50
|
+
yield lazyLoad(url, outputDir, false, [], threads, false, "extracted_urls.json", false, false, sourcemapDir, false, "research.json", 10);
|
|
51
|
+
return { success: true, message: `Lazyload complete. Files saved to ${outputDir}/`, outputDir };
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return { success: false, message: `Lazyload failed: ${err.message}` };
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Runs the full pipeline (run module) against a target URL.
|
|
59
|
+
*/
|
|
60
|
+
export const runFullPipeline = (url_1, ...args_1) => __awaiter(void 0, [url_1, ...args_1], void 0, function* (url, outputDir = "output", threads = 1, sourcemapDir = "extracted") {
|
|
61
|
+
try {
|
|
62
|
+
console.log(chalk.cyan(`\n[mcp] Running full pipeline against ${url}...`));
|
|
63
|
+
const cmd = {
|
|
64
|
+
url,
|
|
65
|
+
output: outputDir,
|
|
66
|
+
strictScope: false,
|
|
67
|
+
scope: "*",
|
|
68
|
+
threads: String(threads),
|
|
69
|
+
apiGateway: false,
|
|
70
|
+
apiGatewayConfig: ".api_gateway_config.json",
|
|
71
|
+
cacheFile: ".resp_cache.json",
|
|
72
|
+
disableCache: false,
|
|
73
|
+
yes: false,
|
|
74
|
+
secrets: false,
|
|
75
|
+
ai: undefined,
|
|
76
|
+
aiThreads: "5",
|
|
77
|
+
aiProvider: "openai",
|
|
78
|
+
aiEndpoint: undefined,
|
|
79
|
+
openaiApiKey: undefined,
|
|
80
|
+
model: "gpt-4o-mini",
|
|
81
|
+
mapOpenapiChunkTag: false,
|
|
82
|
+
timeout: "30000",
|
|
83
|
+
insecure: false,
|
|
84
|
+
sandbox: true,
|
|
85
|
+
sourcemapDir,
|
|
86
|
+
research: false,
|
|
87
|
+
researchOutput: "research.json",
|
|
88
|
+
maxIterations: "10",
|
|
89
|
+
};
|
|
90
|
+
globalsUtil.setRequestTimeout(30000);
|
|
91
|
+
configureSandbox(cmd);
|
|
92
|
+
yield run(cmd);
|
|
93
|
+
return { success: true, message: `Full pipeline complete. Output in ${outputDir}/`, outputDir };
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return { success: false, message: `Run failed: ${err.message}` };
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
/**
|
|
100
|
+
* Summarizes the output directory for lazyload — returns a directory tree overview.
|
|
101
|
+
*/
|
|
102
|
+
export const summarizeLazyloadOutput = (outputDir) => {
|
|
103
|
+
if (!fs.existsSync(outputDir)) {
|
|
104
|
+
return `Output directory '${outputDir}' does not exist.`;
|
|
105
|
+
}
|
|
106
|
+
const tree = buildDirTree(outputDir, "", 4);
|
|
107
|
+
const totalFiles = countFiles(outputDir);
|
|
108
|
+
return `Directory structure of ${outputDir} (${totalFiles} total files):\n\n${tree}`;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Reads and summarizes the output files from a run module execution.
|
|
112
|
+
*/
|
|
113
|
+
export const summarizeRunOutput = (workingDir = ".") => {
|
|
114
|
+
const summaryParts = [];
|
|
115
|
+
// Check for common output files
|
|
116
|
+
const filesToCheck = [
|
|
117
|
+
{ path: "endpoints.json", label: "Endpoints" },
|
|
118
|
+
{ path: "mapped.json", label: "Mapped Functions" },
|
|
119
|
+
{ path: "analyze.json", label: "Analysis Results" },
|
|
120
|
+
{ path: "strings.json", label: "Extracted Strings" },
|
|
121
|
+
{ path: "extracted_urls.json", label: "Extracted URLs" },
|
|
122
|
+
{ path: "mapped-openapi.json", label: "OpenAPI Spec" },
|
|
123
|
+
];
|
|
124
|
+
for (const file of filesToCheck) {
|
|
125
|
+
const filePath = path.join(workingDir, file.path);
|
|
126
|
+
if (fs.existsSync(filePath)) {
|
|
127
|
+
try {
|
|
128
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
129
|
+
const parsed = JSON.parse(content);
|
|
130
|
+
if (Array.isArray(parsed)) {
|
|
131
|
+
summaryParts.push(`**${file.label}** (${file.path}): ${parsed.length} items`);
|
|
132
|
+
// Show first few items as preview
|
|
133
|
+
if (parsed.length > 0) {
|
|
134
|
+
const preview = JSON.stringify(parsed.slice(0, 3), null, 2);
|
|
135
|
+
summaryParts.push(` Preview (first 3):\n${preview}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (typeof parsed === "object") {
|
|
139
|
+
const keys = Object.keys(parsed);
|
|
140
|
+
summaryParts.push(`**${file.label}** (${file.path}): ${keys.length} top-level keys`);
|
|
141
|
+
summaryParts.push(` Keys: ${keys.slice(0, 10).join(", ")}${keys.length > 10 ? "..." : ""}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (_a) {
|
|
145
|
+
const size = fs.statSync(filePath).size;
|
|
146
|
+
summaryParts.push(`**${file.label}** (${file.path}): ${(size / 1024).toFixed(1)}KB`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Check for report files
|
|
151
|
+
for (const ext of ["html", "md"]) {
|
|
152
|
+
const reportPath = path.join(workingDir, `report.${ext}`);
|
|
153
|
+
if (fs.existsSync(reportPath)) {
|
|
154
|
+
const size = fs.statSync(reportPath).size;
|
|
155
|
+
summaryParts.push(`**Report** (report.${ext}): ${(size / 1024).toFixed(1)}KB`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Check output directory tree
|
|
159
|
+
const outputDir = path.join(workingDir, "output");
|
|
160
|
+
if (fs.existsSync(outputDir)) {
|
|
161
|
+
const totalFiles = countFiles(outputDir);
|
|
162
|
+
summaryParts.push(`\n**Downloaded Files** (output/): ${totalFiles} files`);
|
|
163
|
+
summaryParts.push(buildDirTree(outputDir, " ", 3));
|
|
164
|
+
}
|
|
165
|
+
if (summaryParts.length === 0) {
|
|
166
|
+
return "No output files found. The run may not have completed yet.";
|
|
167
|
+
}
|
|
168
|
+
return summaryParts.join("\n\n");
|
|
169
|
+
};
|
|
170
|
+
const countFiles = (dirPath) => {
|
|
171
|
+
let count = 0;
|
|
172
|
+
if (!fs.existsSync(dirPath))
|
|
173
|
+
return 0;
|
|
174
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
175
|
+
for (const entry of entries) {
|
|
176
|
+
if (entry.isDirectory()) {
|
|
177
|
+
count += countFiles(path.join(dirPath, entry.name));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
count++;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return count;
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
package/build/run/index.js
CHANGED
|
@@ -72,7 +72,7 @@ const processUrl = (url, outputDir, workingDir, cmd, isBatch) => __awaiter(void
|
|
|
72
72
|
clearJsonUrls();
|
|
73
73
|
}
|
|
74
74
|
console.log(chalk.bgCyan("[1/8] Running lazyload to download JavaScript files..."));
|
|
75
|
-
yield lazyLoad(url, outputDir, cmd.strictScope, cmd.scope.split(","), cmd.threads, false, "", cmd.insecure, false, cmd.sourcemapDir, cmd.research, cmd.researchOutput, Number(cmd.maxIterations));
|
|
75
|
+
yield lazyLoad(url, outputDir, cmd.strictScope, cmd.scope.split(","), cmd.threads, false, "", cmd.insecure, false, cmd.sourcemapDir, cmd.research, cmd.researchOutput, Number(cmd.maxIterations), Number(cmd.maxJsSize));
|
|
76
76
|
console.log(chalk.bgGreen("[+] Lazyload complete."));
|
|
77
77
|
if (globalsUtil.getTech() === "") {
|
|
78
78
|
console.log(chalk.bgRed(`[!] Technology not detected. ${isBatch ? "Skipping this target." : "Quitting."}`));
|
|
@@ -81,8 +81,19 @@ const processUrl = (url, outputDir, workingDir, cmd, isBatch) => __awaiter(void
|
|
|
81
81
|
}
|
|
82
82
|
process.exit(10);
|
|
83
83
|
}
|
|
84
|
-
if (!["next"].includes(globalsUtil.getTech())) {
|
|
85
|
-
console.log(chalk.bgYellow(`[!] The tool only supports Next.JS ('next')
|
|
84
|
+
if (!["next", "vue"].includes(globalsUtil.getTech())) {
|
|
85
|
+
console.log(chalk.bgYellow(`[!] The tool only supports Next.JS ('next') and Vue.JS ('vue') in the run module. For ${globalsUtil.getTech()}, only downloading JS files is supported`));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (globalsUtil.getTech() === "vue") {
|
|
89
|
+
// Vue.JS pipeline: lazyload (done) + map. Other stages aren't Vue-ready yet.
|
|
90
|
+
// Scan the whole download directory: Vue builds frequently spread chunks
|
|
91
|
+
// across multiple asset hosts, and relative imports resolve within each tree.
|
|
92
|
+
const mappedFileVue = isBatch ? `${workingDir}/mapped` : "mapped";
|
|
93
|
+
console.log(chalk.bgCyan("[2/2] Running map to find functions..."));
|
|
94
|
+
yield map(outputDir, mappedFileVue, ["json"], "vue", false, false);
|
|
95
|
+
console.log(chalk.bgGreen("[+] Map complete."));
|
|
96
|
+
console.log(chalk.bgGreenBright(`[+] Analysis complete for ${url}.`));
|
|
86
97
|
return;
|
|
87
98
|
}
|
|
88
99
|
const stringsFile = isBatch ? `${workingDir}/strings.json` : "strings.json";
|
|
@@ -103,11 +114,21 @@ const processUrl = (url, outputDir, workingDir, cmd, isBatch) => __awaiter(void
|
|
|
103
114
|
yield strings(outputDir, stringsFile, true, extractedUrlsFile, false, false, false);
|
|
104
115
|
console.log(chalk.bgGreen("[+] Strings complete."));
|
|
105
116
|
console.log(chalk.bgCyan("[3/8] Running lazyload with subsequent requests to download JavaScript files..."));
|
|
106
|
-
yield lazyLoad(url, outputDir, cmd.strictScope, cmd.scope.split(","), cmd.threads, true, `${extractedUrlsFile}.json`, cmd.insecure, true, cmd.sourcemapDir, cmd.research, cmd.researchOutput, Number(cmd.maxIterations));
|
|
117
|
+
yield lazyLoad(url, outputDir, cmd.strictScope, cmd.scope.split(","), cmd.threads, true, `${extractedUrlsFile}.json`, cmd.insecure, true, cmd.sourcemapDir, cmd.research, cmd.researchOutput, Number(cmd.maxIterations), Number(cmd.maxJsSize));
|
|
107
118
|
console.log(chalk.bgGreen("[+] Lazyload with subsequent requests complete."));
|
|
108
119
|
console.log(chalk.bgCyan("[4/8] Running strings again to extract endpoints..."));
|
|
109
120
|
yield strings(outputDir, stringsFile, true, extractedUrlsFile, cmd.secrets, true, true);
|
|
110
121
|
console.log(chalk.bgGreen("[+] Strings complete."));
|
|
122
|
+
// a second subsequent_requests pass: the first strings pass only sees initial chunks,
|
|
123
|
+
// so dynamic routes such as `/post/1` are only discovered after the first subsequent
|
|
124
|
+
// crawl + second strings extraction. Re-running subsequent_requests with the freshly
|
|
125
|
+
// updated paths picks up chunks for those dynamic routes (e.g. the post page).
|
|
126
|
+
console.log(chalk.bgCyan("[4.5/8] Re-running lazyload with subsequent requests for newly discovered paths..."));
|
|
127
|
+
yield lazyLoad(url, outputDir, cmd.strictScope, cmd.scope.split(","), cmd.threads, true, `${extractedUrlsFile}.json`, cmd.insecure, false, cmd.sourcemapDir, cmd.research, cmd.researchOutput, Number(cmd.maxIterations));
|
|
128
|
+
console.log(chalk.bgGreen("[+] Lazyload re-pass complete."));
|
|
129
|
+
console.log(chalk.bgCyan("[4.6/8] Re-running strings for chunks from the re-pass..."));
|
|
130
|
+
yield strings(outputDir, stringsFile, true, extractedUrlsFile, cmd.secrets, true, true);
|
|
131
|
+
console.log(chalk.bgGreen("[+] Strings re-pass complete."));
|
|
111
132
|
console.log(chalk.bgCyan("[5/8] Running map to find functions..."));
|
|
112
133
|
globalsUtil.setOpenapi(true);
|
|
113
134
|
if (isBatch) {
|
|
@@ -173,14 +194,9 @@ export default (cmd) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
173
194
|
.readFileSync(cmd.url, "utf-8")
|
|
174
195
|
.split("\n")
|
|
175
196
|
.filter((url) => url !== "");
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (fs.existsSync(toolOutputDir)) {
|
|
179
|
-
console.log(chalk.red(`[!] Output directory ${toolOutputDir} already exists. Please switch to other directory or it might conflict with this process.`));
|
|
180
|
-
console.log(chalk.yellow(`[i] For advanced users: use the individual modules separately. See docs at ${CONFIG.modulesDocs}`));
|
|
181
|
-
process.exit(14);
|
|
197
|
+
if (!fs.existsSync(cmd.output)) {
|
|
198
|
+
fs.mkdirSync(cmd.output, { recursive: true });
|
|
182
199
|
}
|
|
183
|
-
fs.mkdirSync(toolOutputDir);
|
|
184
200
|
for (const url of urls) {
|
|
185
201
|
// Validate URL only
|
|
186
202
|
let urlObj;
|
|
@@ -191,12 +207,15 @@ export default (cmd) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
191
207
|
console.log(chalk.bgRed(`[!] Invalid URL: ${url}`));
|
|
192
208
|
continue;
|
|
193
209
|
}
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
210
|
+
const hostDir = urlObj.host.replace(":", "_");
|
|
211
|
+
const thisTargetDir = `${cmd.output}/${hostDir}`;
|
|
212
|
+
if (fs.existsSync(thisTargetDir)) {
|
|
213
|
+
console.log(chalk.red(`[!] Output directory ${thisTargetDir} already exists. Skipping ${url}.`));
|
|
214
|
+
console.log(chalk.yellow(`[i] For advanced users: use the individual modules separately. See docs at ${CONFIG.modulesDocs}`));
|
|
215
|
+
continue;
|
|
197
216
|
}
|
|
198
|
-
|
|
199
|
-
yield processUrl(url,
|
|
217
|
+
fs.mkdirSync(thisTargetDir, { recursive: true });
|
|
218
|
+
yield processUrl(url, thisTargetDir, thisTargetDir, cmd, true);
|
|
200
219
|
}
|
|
201
220
|
}
|
|
202
221
|
});
|
package/build/run/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,SAAS,GAAG,CAAO,IAAY,EAAE,SAAiB,EAA+B,EAAE;IACrF,kBAAkB;IAClB,IAAI,MAA0B,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACtC,uCAAuC;YACvC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB;YAChF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB;YAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,uBAAuB;YAC/D,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC1B,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC1C,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,GAAG,CACf,GAAW,EACX,SAAiB,EACjB,UAAkB,EAClB,GAAQ,EACR,OAAgB,EACH,EAAE;IACf,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC,CAAC;IAExE,IAAI,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,CACV,GAAG,EACH,SAAS,EACT,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EACpB,GAAG,CAAC,OAAO,EACX,KAAK,EACL,EAAE,EACF,GAAG,CAAC,QAAQ,EACZ,KAAK,EACL,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,cAAc,EAClB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"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"}
|