@shriyanss/js-recon 1.3.1-alpha.2 → 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.
- package/.github/workflows/build-and-prettify.yaml +15 -1
- package/.github/workflows/pr_checker.yml +9 -8
- package/.github/workflows/publish-js-recon.yml +13 -1
- package/CHANGELOG.md +96 -0
- package/CLAUDE.md +225 -0
- package/README.md +2 -0
- package/build/analyze/engine/astEngine.js +57 -29
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/engine/index.js +2 -2
- package/build/analyze/engine/index.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/taintFlow.js +32 -0
- package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -1
- package/build/analyze/helpers/initRules.js +9 -0
- package/build/analyze/helpers/initRules.js.map +1 -1
- package/build/analyze/helpers/schemas.js +6 -1
- package/build/analyze/helpers/schemas.js.map +1 -1
- package/build/analyze/helpers/validate.js +49 -9
- package/build/analyze/helpers/validate.js.map +1 -1
- package/build/analyze/index.js +10 -4
- package/build/analyze/index.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js +12 -5
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/fingerprint/index.js +123 -0
- package/build/fingerprint/index.js.map +1 -0
- package/build/globalConfig.js +1 -1
- package/build/index.js +72 -5
- package/build/index.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +3 -3
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +16 -11
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/index.js +260 -163
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/NextJsCrawler.js +58 -16
- package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetJSScript.js +8 -4
- package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +149 -139
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_SubsequentRequests.js +25 -4
- package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +13 -5
- package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
- package/build/lazyLoad/react/react_followImports.js +105 -0
- package/build/lazyLoad/react/react_followImports.js.map +1 -0
- package/build/lazyLoad/react/react_getScriptTags.js +28 -5
- package/build/lazyLoad/react/react_getScriptTags.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js +162 -0
- package/build/lazyLoad/svelte/svelte_discoverPagesFromJs.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js +15 -0
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js +180 -0
- package/build/lazyLoad/svelte/svelte_recursivePageCrawl.js.map +1 -0
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +15 -1
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/techDetect/checkReact.js +67 -36
- package/build/lazyLoad/techDetect/checkReact.js.map +1 -1
- package/build/lazyLoad/techDetect/checkSvelte.js +35 -35
- package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -1
- package/build/lazyLoad/techDetect/index.js +31 -25
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +6 -0
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +6 -0
- package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -1
- package/build/lazyLoad/vue/vue_stringJsFiles.js +6 -0
- package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
- package/build/load/index.js +316 -0
- package/build/load/index.js.map +1 -0
- package/build/map/graphql/resolveGraphql.js +296 -0
- package/build/map/graphql/resolveGraphql.js.map +1 -0
- package/build/map/index.js +104 -6
- package/build/map/index.js.map +1 -1
- package/build/map/next_js/interactive.js +30 -0
- package/build/map/next_js/interactive.js.map +1 -1
- package/build/map/next_js/interactive_helpers/commandHandler.js +26 -0
- package/build/map/next_js/interactive_helpers/commandHandler.js.map +1 -1
- package/build/map/next_js/interactive_helpers/commandHelpers.js +28 -0
- package/build/map/next_js/interactive_helpers/commandHelpers.js.map +1 -1
- package/build/map/next_js/interactive_helpers/esqueryGen.js +370 -0
- package/build/map/next_js/interactive_helpers/esqueryGen.js.map +1 -0
- package/build/map/next_js/interactive_helpers/helpMenu.js +2 -1
- package/build/map/next_js/interactive_helpers/helpMenu.js.map +1 -1
- package/build/map/next_js/interactive_helpers/inputPatch.js +207 -0
- package/build/map/next_js/interactive_helpers/inputPatch.js.map +1 -0
- package/build/map/next_js/interactive_helpers/ui.js +0 -1
- package/build/map/next_js/interactive_helpers/ui.js.map +1 -1
- package/build/map/next_js/resolveServerActions.js +449 -0
- package/build/map/next_js/resolveServerActions.js.map +1 -0
- package/build/map/next_js/utils.js +89 -2
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/react_js/getReactConnections.js +298 -0
- package/build/map/react_js/getReactConnections.js.map +1 -0
- package/build/map/react_js/interactive.js +4 -0
- package/build/map/react_js/interactive.js.map +1 -0
- package/build/map/react_js/react_resolveFetch.js +6 -0
- package/build/map/react_js/react_resolveFetch.js.map +1 -0
- package/build/map/svelte_js/interactive.js +58 -0
- package/build/map/svelte_js/interactive.js.map +1 -0
- package/build/map/svelte_js/interactive_helpers/commandHandler.js +4 -0
- package/build/map/svelte_js/interactive_helpers/commandHandler.js.map +1 -0
- package/build/map/vue_js/bodyResolver.js +477 -0
- package/build/map/vue_js/bodyResolver.js.map +1 -0
- package/build/map/vue_js/crossFileResolver.js +438 -0
- package/build/map/vue_js/crossFileResolver.js.map +1 -0
- package/build/map/vue_js/getViteConnections.js +151 -106
- package/build/map/vue_js/getViteConnections.js.map +1 -1
- package/build/map/vue_js/interactive.js +28 -0
- package/build/map/vue_js/interactive.js.map +1 -1
- package/build/map/vue_js/interactive_helpers/commandHandler.js +22 -0
- package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -1
- package/build/map/vue_js/interactive_helpers/helpMenu.js +1 -0
- package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -1
- package/build/map/vue_js/taint_utils.js +621 -0
- package/build/map/vue_js/taint_utils.js.map +1 -0
- package/build/map/vue_js/vue_resolveFetch.js +279 -25
- package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
- package/build/map/vue_js/vue_resolveHttpClient.js +733 -0
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -0
- package/build/map/vue_js/vue_resolveXhr.js +279 -0
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -0
- package/build/mcp/chatOneShot.js +101 -0
- package/build/mcp/chatOneShot.js.map +1 -0
- package/build/mcp/claudeCodeCreds.js +150 -0
- package/build/mcp/claudeCodeCreds.js.map +1 -0
- package/build/mcp/cli.js +140 -149
- package/build/mcp/cli.js.map +1 -1
- package/build/mcp/commands.js +80 -0
- package/build/mcp/commands.js.map +1 -1
- package/build/mcp/index.js +30 -9
- package/build/mcp/index.js.map +1 -1
- package/build/mcp/intent.js +204 -0
- package/build/mcp/intent.js.map +1 -0
- package/build/mcp/jobs.js +199 -0
- package/build/mcp/jobs.js.map +1 -0
- package/build/mcp/mcpServer.js +241 -0
- package/build/mcp/mcpServer.js.map +1 -0
- package/build/mcp/providers.js +18 -1
- package/build/mcp/providers.js.map +1 -1
- package/build/mcp/skills.js +115 -0
- package/build/mcp/skills.js.map +1 -0
- package/build/refactor/index.js +6 -0
- package/build/refactor/index.js.map +1 -1
- package/build/refactor/react/index.js +636 -0
- package/build/refactor/react/index.js.map +1 -0
- package/build/report/utility/populateDb/populateAnalysisFindings.js +1 -1
- package/build/report/utility/populateDb/populateAnalysisFindings.js.map +1 -1
- package/build/run/index.js +277 -60
- package/build/run/index.js.map +1 -1
- package/build/run/interruptHandler.js +93 -0
- package/build/run/interruptHandler.js.map +1 -0
- package/build/utility/globals.js +38 -0
- package/build/utility/globals.js.map +1 -1
- package/build/utility/makeReq.js +39 -5
- package/build/utility/makeReq.js.map +1 -1
- package/build/utility/openapiGenerator.js +61 -17
- package/build/utility/openapiGenerator.js.map +1 -1
- package/build/utility/postmanGenerator.js +69 -16
- package/build/utility/postmanGenerator.js.map +1 -1
- package/build/utility/progressLog.js +50 -0
- package/build/utility/progressLog.js.map +1 -0
- package/package.json +7 -4
|
@@ -37,7 +37,7 @@ const splitPath = (rawPath) => {
|
|
|
37
37
|
* request's full URL carry the variable.
|
|
38
38
|
*/
|
|
39
39
|
export const generatePostmanCollection = (items) => {
|
|
40
|
-
var _a, _b;
|
|
40
|
+
var _a, _b, _c, _d;
|
|
41
41
|
const collection = {
|
|
42
42
|
info: {
|
|
43
43
|
name: "API Collection",
|
|
@@ -45,7 +45,10 @@ export const generatePostmanCollection = (items) => {
|
|
|
45
45
|
schema: "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
|
46
46
|
},
|
|
47
47
|
item: [],
|
|
48
|
-
variable: [
|
|
48
|
+
variable: [
|
|
49
|
+
{ key: "baseUrl", value: "https://example.com" },
|
|
50
|
+
{ key: "graphqlEndpoint", value: "graphql" },
|
|
51
|
+
],
|
|
49
52
|
};
|
|
50
53
|
// Tracks (folder-path) → existing PMItem so the second endpoint under the same folder and reuses it
|
|
51
54
|
const folderIndex = new Map();
|
|
@@ -65,9 +68,11 @@ export const generatePostmanCollection = (items) => {
|
|
|
65
68
|
}
|
|
66
69
|
return parent;
|
|
67
70
|
};
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
+
// Track repeat (path, method) occurrences so duplicate callsites get a
|
|
72
|
+
// disambiguating suffix on their request name. We intentionally do NOT
|
|
73
|
+
// skip duplicates here — each distinct callsite is preserved so a reviewer
|
|
74
|
+
// can compare the headers/body shapes for the same endpoint.
|
|
75
|
+
const callsiteCounts = new Map();
|
|
71
76
|
for (const item of items) {
|
|
72
77
|
let rawPath = typeof item.path === "string" ? item.path : "";
|
|
73
78
|
// If path is an absolute URL, extract just the pathname so we don't
|
|
@@ -78,16 +83,55 @@ export const generatePostmanCollection = (items) => {
|
|
|
78
83
|
rawPath = u.pathname + (u.search || "");
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
|
-
catch (
|
|
86
|
+
catch (_e) {
|
|
82
87
|
// leave rawPath as-is if URL parsing fails
|
|
83
88
|
}
|
|
84
89
|
const normalized = replacePlaceholders(rawPath.startsWith("/") ? rawPath : `/${rawPath}`);
|
|
85
90
|
const method = typeof item.method === "string" ? item.method.toUpperCase() : "GET";
|
|
86
91
|
const dedupeKey = `${method} ${normalized}`;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
seen.add(dedupeKey);
|
|
92
|
+
const occurrenceIndex = (_a = callsiteCounts.get(dedupeKey)) !== null && _a !== void 0 ? _a : 0;
|
|
93
|
+
callsiteCounts.set(dedupeKey, occurrenceIndex + 1);
|
|
90
94
|
const { segments, query } = splitPath(normalized);
|
|
95
|
+
// Items with an explicit `collectionFolder` skip path-segment-derived
|
|
96
|
+
// folder hierarchy and are placed flat under a single named folder.
|
|
97
|
+
if (item.collectionFolder) {
|
|
98
|
+
const folder = ensureFolder([item.collectionFolder]);
|
|
99
|
+
const headers = Object.entries(item.headers || {}).map(([key, value]) => ({
|
|
100
|
+
key,
|
|
101
|
+
value: String(value),
|
|
102
|
+
type: "text",
|
|
103
|
+
}));
|
|
104
|
+
// Convert OpenAPI-style `{name}` path params to Postman `:name`,
|
|
105
|
+
// but leave `{{var}}` collection-variable placeholders untouched
|
|
106
|
+
// (Postman substitutes those at request time).
|
|
107
|
+
const pmUrlPath = segments.map((s) => s.startsWith("{{") && s.endsWith("}}")
|
|
108
|
+
? s
|
|
109
|
+
: s.startsWith("{") && s.endsWith("}")
|
|
110
|
+
? `:${s.slice(1, -1)}`
|
|
111
|
+
: s);
|
|
112
|
+
const request = {
|
|
113
|
+
method,
|
|
114
|
+
header: headers,
|
|
115
|
+
url: Object.assign({ raw: `{{baseUrl}}/${pmUrlPath.join("/")}${query.length > 0 ? "?" + query.map((q) => `${q.key}=${q.value}`).join("&") : ""}`, host: ["{{baseUrl}}"], path: pmUrlPath }, (query.length > 0 ? { query } : {})),
|
|
116
|
+
};
|
|
117
|
+
if (item.body) {
|
|
118
|
+
const bodyRaw = (_b = buildBodyExample(item.body)) !== null && _b !== void 0 ? _b : item.body;
|
|
119
|
+
request.body = {
|
|
120
|
+
mode: "raw",
|
|
121
|
+
raw: bodyRaw,
|
|
122
|
+
options: { raw: { language: "json" } },
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
request.body = { mode: "none" };
|
|
127
|
+
}
|
|
128
|
+
const descParts = [];
|
|
129
|
+
if (item.functionFile) {
|
|
130
|
+
descParts.push(`Found in ${item.functionFile}:${item.functionFileLine}`);
|
|
131
|
+
}
|
|
132
|
+
folder.item.push(Object.assign(Object.assign({ name: item.summary || `${method} request` }, (descParts.length > 0 ? { description: descParts.join("\n") } : {})), { request }));
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
91
135
|
// Folder segments = all path segments except path-parameter segments.
|
|
92
136
|
// A trailing `{id}` segment doesn't earn its own folder; we mount the
|
|
93
137
|
// request on the parent.
|
|
@@ -104,7 +148,7 @@ export const generatePostmanCollection = (items) => {
|
|
|
104
148
|
}
|
|
105
149
|
// The leaf segment is the endpoint's own name; remove it from the
|
|
106
150
|
// folder hierarchy so the request lands directly in its parent folder.
|
|
107
|
-
const leaf = (
|
|
151
|
+
const leaf = (_c = folderSegments.pop()) !== null && _c !== void 0 ? _c : "";
|
|
108
152
|
const folder = ensureFolder(folderSegments);
|
|
109
153
|
const headers = Object.entries(item.headers || {}).map(([key, value]) => ({
|
|
110
154
|
key,
|
|
@@ -119,7 +163,7 @@ export const generatePostmanCollection = (items) => {
|
|
|
119
163
|
url: Object.assign(Object.assign({ raw: `{{baseUrl}}/${pmUrlPath.join("/")}${query.length > 0 ? "?" + query.map((q) => `${q.key}=${q.value}`).join("&") : ""}`, host: ["{{baseUrl}}"], path: pmUrlPath }, (query.length > 0 ? { query } : {})), (pathVars.length > 0 ? { variable: pathVars } : {})),
|
|
120
164
|
};
|
|
121
165
|
if (item.body && ["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
|
|
122
|
-
const bodyRaw = (
|
|
166
|
+
const bodyRaw = (_d = buildBodyExample(item.body)) !== null && _d !== void 0 ? _d : item.body;
|
|
123
167
|
// Skip bodies that are empty objects — they only contain unresolvable spread artifacts.
|
|
124
168
|
let isEmptyObject = false;
|
|
125
169
|
try {
|
|
@@ -130,7 +174,7 @@ export const generatePostmanCollection = (items) => {
|
|
|
130
174
|
!Array.isArray(parsed) &&
|
|
131
175
|
Object.keys(parsed).length === 0;
|
|
132
176
|
}
|
|
133
|
-
catch (
|
|
177
|
+
catch (_f) { }
|
|
134
178
|
if (!isEmptyObject) {
|
|
135
179
|
request.body = {
|
|
136
180
|
mode: "raw",
|
|
@@ -147,11 +191,20 @@ export const generatePostmanCollection = (items) => {
|
|
|
147
191
|
}
|
|
148
192
|
// Friendly request label — keep the leaf in the name to disambiguate
|
|
149
193
|
// siblings under the same parent (e.g. invoices vs invoices/latest).
|
|
194
|
+
// When an action name is available (e.g. Next.js Server Actions) it is
|
|
195
|
+
// appended in parentheses and used as the primary disambiguator so
|
|
196
|
+
// each entry is immediately identifiable without a bare counter.
|
|
197
|
+
// For plain endpoints that share a path/method, a #N counter is kept.
|
|
150
198
|
const leafName = leaf || segments[segments.length - 1] || "/";
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
199
|
+
const disambig = item.summary ? ` (${item.summary})` : occurrenceIndex > 0 ? ` #${occurrenceIndex + 1}` : "";
|
|
200
|
+
const descParts = [];
|
|
201
|
+
if (item.functionFile) {
|
|
202
|
+
descParts.push(`Defined in chunk ${item.chunkId} at ${item.functionFile}:${item.functionFileLine}`);
|
|
203
|
+
}
|
|
204
|
+
if (item.serverActionCallFile) {
|
|
205
|
+
descParts.push(`Arguments from chunk ${item.serverActionCallChunkId} at ${item.serverActionCallFile}:${item.serverActionCallLine}`);
|
|
206
|
+
}
|
|
207
|
+
const itemEntry = Object.assign(Object.assign({ name: `${method} ${leafName}${disambig}` }, (descParts.length > 0 ? { description: descParts.join("\n") } : {})), { request });
|
|
155
208
|
// If this URL has no folder segments at all (e.g. `/version`), put it
|
|
156
209
|
// at the top level so it isn't lost.
|
|
157
210
|
folder.item.push(itemEntry);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postmanGenerator.js","sourceRoot":"","sources":["../../src/utility/postmanGenerator.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"postmanGenerator.js","sourceRoot":"","sources":["../../src/utility/postmanGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes a progress bar width that fits within the current terminal.
|
|
3
|
+
* @param formatOverhead Total visible characters in the format string excluding the bar itself
|
|
4
|
+
* (label before `[{bar}]` + stats after `[{bar}]` + surrounding brackets).
|
|
5
|
+
*/
|
|
6
|
+
export const computeBarSize = (formatOverhead) => {
|
|
7
|
+
const cols = process.stdout.columns || 80;
|
|
8
|
+
return Math.max(10, cols - formatOverhead);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Registers a SIGWINCH listener that keeps `bar.options.barsize` in sync with
|
|
12
|
+
* the terminal width for the lifetime of the bar. Call the returned cleanup
|
|
13
|
+
* function when the bar stops.
|
|
14
|
+
*/
|
|
15
|
+
export const watchBarResize = (bar, overhead) => {
|
|
16
|
+
const handler = () => {
|
|
17
|
+
bar.options.barsize = computeBarSize(overhead);
|
|
18
|
+
};
|
|
19
|
+
process.on("SIGWINCH", handler);
|
|
20
|
+
return () => process.off("SIGWINCH", handler);
|
|
21
|
+
};
|
|
22
|
+
let activeBarLogger = null;
|
|
23
|
+
export const setActiveBarLogger = (logger) => {
|
|
24
|
+
activeBarLogger = logger;
|
|
25
|
+
};
|
|
26
|
+
export const progressLog = (message) => {
|
|
27
|
+
if (activeBarLogger) {
|
|
28
|
+
activeBarLogger.log(message + "\n");
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log(message);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export const progressError = (message) => {
|
|
35
|
+
if (activeBarLogger) {
|
|
36
|
+
activeBarLogger.log(message + "\n");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.error(message);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
export const progressWarn = (message) => {
|
|
43
|
+
if (activeBarLogger) {
|
|
44
|
+
activeBarLogger.log(message + "\n");
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.warn(message);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=progressLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressLog.js","sourceRoot":"","sources":["../../src/utility/progressLog.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,cAAsB,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,cAAc,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,QAAgB,EAAgB,EAAE;IACvE,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,IAAI,eAAe,GAAqB,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAQ,EAAE;IACjE,eAAe,GAAG,MAAM,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAQ,EAAE;IACjD,IAAI,eAAe,EAAE,CAAC;QAClB,eAAe,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAQ,EAAE;IACnD,IAAI,eAAe,EAAE,CAAC;QAClB,eAAe,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAQ,EAAE;IAClD,IAAI,eAAe,EAAE,CAAC;QAClB,eAAe,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shriyanss/js-recon",
|
|
3
|
-
"version": "1.3.1-alpha.
|
|
3
|
+
"version": "1.3.1-alpha.4",
|
|
4
4
|
"description": "JS Recon Tool",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -10,19 +10,20 @@
|
|
|
10
10
|
"types": "build/index.d.ts",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "rm -rf build/ && tsc",
|
|
13
|
-
"start": "node build/index.js",
|
|
13
|
+
"start": "node --max-old-space-size=8192 build/index.js",
|
|
14
14
|
"test": "node build/index.js -h",
|
|
15
|
-
"cleanup": "rm -rf build output .resp_cache.json endpoints.json extracted_urls{.txt,.json,-openapi.json} strings.json mapped{-openapi.json,.json,-openapi.postman_collection.json} analyze.json test{.yaml,.js} shriyanss-js-recon-*.tgz js-recon.db report.{html,md} js_recon_run_output *_test.js extracted/ research.json && tsc"
|
|
15
|
+
"cleanup": "rm -rf build output .resp_cache.json endpoints.json extracted_urls{.txt,.json,-openapi.json} strings.json mapped{-openapi.json,.json,-openapi.postman_collection.json} analyze.json test{.yaml,.js} shriyanss-js-recon-*.tgz js-recon.db report.{html,md} js_recon_run_output *_test.js extracted/ research.json results* out.* && tsc"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [],
|
|
18
18
|
"author": "Shriyans Sudhi",
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@anthropic-ai/sdk": "^0.
|
|
21
|
+
"@anthropic-ai/sdk": "^0.102.0",
|
|
22
22
|
"@aws-sdk/client-api-gateway": "^3.958.0",
|
|
23
23
|
"@babel/parser": "^7.27.4",
|
|
24
24
|
"@babel/traverse": "^7.27.4",
|
|
25
25
|
"@babel/types": "^7.27.6",
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
26
27
|
"@types/chalk": "^0.4.31",
|
|
27
28
|
"@types/cli-progress": "^3.11.6",
|
|
28
29
|
"better-sqlite3": "^12.5.0",
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
"datatables.net-dt": "^2.3.2",
|
|
37
38
|
"esquery": "^1.6.0",
|
|
38
39
|
"fs": "^0.0.2",
|
|
40
|
+
"graphql": "^16.14.1",
|
|
39
41
|
"highlight.js": "^11.11.1",
|
|
40
42
|
"inquirer": "^12.6.3",
|
|
41
43
|
"marked": "^16.1.2",
|
|
@@ -64,6 +66,7 @@
|
|
|
64
66
|
"@types/babel__traverse": "^7.28.0",
|
|
65
67
|
"@types/better-sqlite3": "^7.6.13",
|
|
66
68
|
"@types/blessed": "^0.1.25",
|
|
69
|
+
"@types/graphql": "^14.2.3",
|
|
67
70
|
"@types/node": "^24.12.4",
|
|
68
71
|
"ts-node": "^10.9.2",
|
|
69
72
|
"tsconfig-paths": "^4.2.0",
|