@js-recon/js-recon 2.0.1-beta.3 → 2.0.1-beta.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.
@@ -65,6 +65,13 @@ export const inferEnclosingFn = (callPath, file) => {
65
65
  }
66
66
  return innermost;
67
67
  };
68
+ /**
69
+ * Copies an EnclosingFn chain with every `node` nulled. Resolvers that hold
70
+ * entries past the per-file loop must store this instead: an outer function
71
+ * node (often the whole module wrapper) would otherwise pin the entire file
72
+ * AST, plus Babel's path/scope caches for it, for the rest of the run.
73
+ */
74
+ export const detachEnclosingFn = (fn) => fn ? Object.assign(Object.assign({}, fn), { node: null, parent: detachEnclosingFn(fn.parent) }) : null;
68
75
  /**
69
76
  * Walks an ObjectExpression and returns the property value node for the given
70
77
  * dotted property path (e.g. ["data"] → the value node of `data: ...`).
@@ -460,7 +467,16 @@ const buildAliasMap = (filePaths) => {
460
467
  }
461
468
  return aliasesByFile;
462
469
  };
463
- const loadFileCached = (filePath, cache) => {
470
+ // Per-instance caches keyed by file path. Avoids re-reading and re-parsing
471
+ // every JS file on every getCallers call — the dominant cost at high recursion
472
+ // depth. Contents are cached for every file (already bounded by the callers'
473
+ // total-size caps), but a Babel AST is ~50-100x its source size, so ASTs are
474
+ // parsed only for files that pass the text pre-filter and kept in an LRU
475
+ // weighted by source bytes. The most recent entry is always kept.
476
+ // ponytail: source bytes approximate AST size; weight by node count if this
477
+ // still OOMs on unusual (e.g. whitespace-heavy) bundles.
478
+ export const MAX_CACHED_CALLER_AST_BYTES = 4 * 1024 * 1024;
479
+ const readFileCached = (filePath, cache) => {
464
480
  var _a;
465
481
  if (cache.has(filePath))
466
482
  return (_a = cache.get(filePath)) !== null && _a !== void 0 ? _a : null;
@@ -469,28 +485,45 @@ const loadFileCached = (filePath, cache) => {
469
485
  content = fs.readFileSync(filePath, "utf-8");
470
486
  }
471
487
  catch (_b) {
472
- cache.set(filePath, null);
473
- return null;
488
+ content = null;
474
489
  }
475
- let ast = null;
476
- try {
477
- ast = parser.parse(content, {
478
- sourceType: "unambiguous",
479
- plugins: ["jsx", "typescript"],
480
- errorRecovery: true,
481
- });
482
- }
483
- catch (_c) {
484
- ast = null;
485
- }
486
- const entry = { content, ast };
487
- cache.set(filePath, entry);
488
- return entry;
490
+ cache.set(filePath, content);
491
+ return content;
489
492
  };
490
- export const makeGetCallers = (filePaths, maxCallers = 128) => {
493
+ export const makeGetCallers = (filePaths, maxCallers = 128, maxCachedAstBytes = MAX_CACHED_CALLER_AST_BYTES) => {
491
494
  let aliasMap = null;
492
- const fileCache = new Map();
493
- return (bindingName, sourceFile) => {
495
+ const contentCache = new Map();
496
+ const astCache = new Map();
497
+ let cachedAstBytes = 0;
498
+ const loadAst = (filePath, content) => {
499
+ let entry = astCache.get(filePath);
500
+ if (entry) {
501
+ astCache.delete(filePath);
502
+ }
503
+ else {
504
+ let ast = null;
505
+ try {
506
+ ast = parser.parse(content, {
507
+ sourceType: "unambiguous",
508
+ plugins: ["jsx", "typescript"],
509
+ errorRecovery: true,
510
+ });
511
+ }
512
+ catch (_a) {
513
+ ast = null;
514
+ }
515
+ entry = { ast, bytes: ast ? content.length : 0 };
516
+ cachedAstBytes += entry.bytes;
517
+ }
518
+ astCache.set(filePath, entry);
519
+ while (cachedAstBytes > maxCachedAstBytes && astCache.size > 1) {
520
+ const oldest = astCache.keys().next().value;
521
+ cachedAstBytes -= astCache.get(oldest).bytes;
522
+ astCache.delete(oldest);
523
+ }
524
+ return entry.ast;
525
+ };
526
+ const getCallers = (bindingName, sourceFile) => {
494
527
  var _a;
495
528
  if (!bindingName)
496
529
  return [];
@@ -512,13 +545,12 @@ export const makeGetCallers = (filePaths, maxCallers = 128) => {
512
545
  for (const filePath of filePaths) {
513
546
  if (overflowed)
514
547
  break;
515
- const cached = loadFileCached(filePath, fileCache);
516
- if (!cached)
548
+ const fileContent = readFileCached(filePath, contentCache);
549
+ if (fileContent === null)
517
550
  continue;
518
- const fileContent = cached.content;
519
551
  if (!needles.some((n) => fileContent.includes(n)))
520
552
  continue;
521
- const fileAst = cached.ast;
553
+ const fileAst = loadAst(filePath, fileContent);
522
554
  if (!fileAst)
523
555
  continue;
524
556
  traverse(fileAst, {
@@ -560,6 +592,7 @@ export const makeGetCallers = (filePaths, maxCallers = 128) => {
560
592
  // popular wrapper, and partial coverage beats none.
561
593
  return out;
562
594
  };
595
+ return Object.assign(getCallers, { cachedAstBytes: () => cachedAstBytes });
563
596
  };
564
597
  /**
565
598
  * Like makeGetCallers but searches only the source file and does NOT filter by
@@ -1 +1 @@
1
- {"version":3,"file":"taint_utils.js","sourceRoot":"","sources":["../../../src/map/vue_js/taint_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taint_utils.js","sourceRoot":"","sources":["../../../src/map/vue_js/taint_utils.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import fs from "fs";
14
14
  import path from "path";
15
15
  import { resolveNodeValue, substituteVariablesInString } from "../next_js/utils.js";
16
16
  import * as globals from "../../utility/globals.js";
17
- import { inferEnclosingFn, substituteCallerPlaceholders, substituteCallerHeaders, makeGetCallers, } from "./taint_utils.js";
17
+ import { inferEnclosingFn, detachEnclosingFn, substituteCallerPlaceholders, substituteCallerHeaders, makeGetCallers, } from "./taint_utils.js";
18
18
  import { deepSubstituteBodyValue } from "./bodyResolver.js";
19
19
  /**
20
20
  * Checks whether invoking the given function body would directly execute a
@@ -90,6 +90,178 @@ const isFunctionLike = (node) => !!node &&
90
90
  (node.type === "ArrowFunctionExpression" ||
91
91
  node.type === "FunctionExpression" ||
92
92
  node.type === "FunctionDeclaration");
93
+ // Each file's parse + traverse runs in one of these sync helpers rather than
94
+ // inline in the async resolver's loop: an inline local stays reachable from
95
+ // the async function's frame until the resolver returns, so every AST — ~200x
96
+ // its source size once Babel has built its path/scope caches — would stay
97
+ // pinned through the later passes and exhaust the heap on a single large
98
+ // bundle.
99
+ /**
100
+ * Pre-pass for one file: records object-literal keys whose value is a
101
+ * function that forwards its first argument to fetch().
102
+ */
103
+ const collectWrapperKeys = (fileContent, wrapperKeyNames) => {
104
+ let fileAst;
105
+ try {
106
+ fileAst = parser.parse(fileContent, {
107
+ sourceType: "unambiguous",
108
+ plugins: ["jsx", "typescript"],
109
+ errorRecovery: true,
110
+ });
111
+ }
112
+ catch (_a) {
113
+ return;
114
+ }
115
+ traverse(fileAst, {
116
+ ObjectProperty(p) {
117
+ const key = p.node.key;
118
+ const value = p.node.value;
119
+ if (!isFunctionLike(value))
120
+ return;
121
+ if (!bodyCallsFetch(value))
122
+ return;
123
+ const keyName = key.type === "Identifier" ? key.name : key.type === "StringLiteral" ? key.value : null;
124
+ if (keyName)
125
+ wrapperKeyNames.add(keyName);
126
+ },
127
+ });
128
+ };
129
+ /**
130
+ * Main pass for one file: resolves every fetch()/fetch-alias call and appends
131
+ * it to `entries`. Returns the number of fetch calls seen.
132
+ */
133
+ const collectFetchEntries = (file, filePath, fileContent, wrapperKeyNames, entries) => {
134
+ let fetchCalls = 0;
135
+ let fileAst;
136
+ try {
137
+ fileAst = parser.parse(fileContent, {
138
+ sourceType: "unambiguous",
139
+ plugins: ["jsx", "typescript"],
140
+ errorRecovery: true,
141
+ });
142
+ }
143
+ catch (_a) {
144
+ return 0;
145
+ }
146
+ // Collect fetch aliases:
147
+ // 1. `const x = fetch` (direct identifier aliasing)
148
+ // 2. `const x = (i, l) => fetch(i, l)` (function-literal wrappers)
149
+ // 3. `const { wrapperKey: x } = factory({...})` (destructured wrapper keys)
150
+ const fetchAliases = new Set();
151
+ traverse(fileAst, {
152
+ VariableDeclarator(p) {
153
+ const { id, init } = p.node;
154
+ if (!init)
155
+ return;
156
+ if (id.type === "Identifier") {
157
+ if (init.type === "Identifier" && init.name === "fetch") {
158
+ const binding = p.scope.getBinding(id.name);
159
+ if (binding)
160
+ fetchAliases.add(binding);
161
+ return;
162
+ }
163
+ if (isFunctionLike(init) && bodyCallsFetch(init)) {
164
+ const binding = p.scope.getBinding(id.name);
165
+ if (binding)
166
+ fetchAliases.add(binding);
167
+ return;
168
+ }
169
+ }
170
+ if (id.type === "ObjectPattern") {
171
+ for (const prop of id.properties) {
172
+ if (prop.type !== "ObjectProperty")
173
+ continue;
174
+ const keyName = prop.key.type === "Identifier"
175
+ ? prop.key.name
176
+ : prop.key.type === "StringLiteral"
177
+ ? prop.key.value
178
+ : null;
179
+ if (!keyName || !wrapperKeyNames.has(keyName))
180
+ continue;
181
+ const valueName = prop.value.type === "Identifier" ? prop.value.name : null;
182
+ if (!valueName)
183
+ continue;
184
+ const binding = p.scope.getBinding(valueName);
185
+ if (binding)
186
+ fetchAliases.add(binding);
187
+ }
188
+ }
189
+ },
190
+ });
191
+ // Resolve each fetch call
192
+ traverse(fileAst, {
193
+ CallExpression(callPath) {
194
+ var _a, _b;
195
+ const callee = callPath.node.callee;
196
+ let isFetchCall = false;
197
+ if (callee.type === "Identifier" && callee.name === "fetch") {
198
+ isFetchCall = true;
199
+ }
200
+ else if (callee.type === "Identifier") {
201
+ const binding = callPath.scope.getBinding(callee.name);
202
+ if (binding && fetchAliases.has(binding))
203
+ isFetchCall = true;
204
+ }
205
+ if (!isFetchCall)
206
+ return;
207
+ const args = callPath.node.arguments;
208
+ if (args.length === 0)
209
+ return;
210
+ const fileLine = (_b = (_a = callPath.node.loc) === null || _a === void 0 ? void 0 : _a.start.line) !== null && _b !== void 0 ? _b : 0;
211
+ fetchCalls++;
212
+ // Resolve URL (first argument)
213
+ const urlArgCode = fileContent.slice(args[0].start, args[0].end).replace(/\n\s*/g, "");
214
+ let url = resolveNodeValue(args[0], callPath.scope, urlArgCode, "fetch", fileContent);
215
+ if (typeof url === "string" && (url.includes("[var ") || url.includes("[MemberExpression"))) {
216
+ const substituted = substituteVariablesInString(url, fileContent);
217
+ if (substituted !== url) {
218
+ printMsg(MSG.Header, ` [i] Resolved variables in URL: ${url} -> ${substituted}`);
219
+ url = substituted;
220
+ }
221
+ }
222
+ let method = "GET";
223
+ let headers = {};
224
+ let body = "";
225
+ if (args.length > 1) {
226
+ const options = resolveNodeValue(args[1], callPath.scope, "", "fetch", fileContent);
227
+ if (typeof options === "object" && options !== null) {
228
+ method = options.method || "GET";
229
+ if (options.headers && typeof options.headers === "object") {
230
+ const resolvedHeaders = {};
231
+ for (const [k, v] of Object.entries(options.headers)) {
232
+ const rk = typeof k === "string" ? substituteVariablesInString(k, fileContent) : String(k);
233
+ const rv = typeof v === "string" ? substituteVariablesInString(v, fileContent) : String(v);
234
+ resolvedHeaders[rk] = rv;
235
+ }
236
+ headers = resolvedHeaders;
237
+ }
238
+ if (options.body) {
239
+ body = typeof options.body === "object" ? JSON.stringify(options.body) : String(options.body);
240
+ }
241
+ }
242
+ }
243
+ // Null out the AST node references (including the outer-function
244
+ // chain) — they are never read in the second pass, but keeping
245
+ // them alive would pin the entire file AST through `entries`.
246
+ const enclosingFn = detachEnclosingFn(inferEnclosingFn(callPath, filePath));
247
+ entries.push({
248
+ file,
249
+ filePath,
250
+ // fileContent is not used in the second pass; store an empty
251
+ // string so the full file content is not kept alive in memory
252
+ // through the entries array.
253
+ fileContent: "",
254
+ fileLine,
255
+ url: typeof url === "string" ? url : "",
256
+ method,
257
+ headers,
258
+ body,
259
+ enclosingFn,
260
+ });
261
+ },
262
+ });
263
+ return fetchCalls;
264
+ };
93
265
  /**
94
266
  * Scans all JS files in the given directory for fetch() calls,
95
267
  * resolves their URL / method / headers / body, and registers each
@@ -142,31 +314,7 @@ const vue_resolveFetch = (directory_1, ...args_1) => __awaiter(void 0, [director
142
314
  if (!fileContent.includes("fetch"))
143
315
  continue;
144
316
  fetchFilePaths.push(filePath);
145
- let fileAst;
146
- try {
147
- fileAst = parser.parse(fileContent, {
148
- sourceType: "unambiguous",
149
- plugins: ["jsx", "typescript"],
150
- errorRecovery: true,
151
- });
152
- }
153
- catch (_c) {
154
- continue;
155
- }
156
- traverse(fileAst, {
157
- ObjectProperty(p) {
158
- const key = p.node.key;
159
- const value = p.node.value;
160
- if (!isFunctionLike(value))
161
- return;
162
- if (!bodyCallsFetch(value))
163
- return;
164
- const keyName = key.type === "Identifier" ? key.name : key.type === "StringLiteral" ? key.value : null;
165
- if (keyName)
166
- wrapperKeyNames.add(keyName);
167
- },
168
- });
169
- // fileAst and fileContent go out of scope here — GC can reclaim them.
317
+ collectWrapperKeys(fileContent, wrapperKeyNames);
170
318
  }
171
319
  const getCallers = makeGetCallers(fetchFilePaths);
172
320
  let totalFetchCalls = 0;
@@ -184,149 +332,16 @@ const vue_resolveFetch = (directory_1, ...args_1) => __awaiter(void 0, [director
184
332
  printMsg(MSG.Warn, `[!] Skipping ${file} (${(fs.statSync(filePath).size / 1024 / 1024).toFixed(1)} MB > ${MAX_MAP_FILE_SIZE_BYTES / 1024 / 1024} MB limit) — fetch coverage may be incomplete`);
185
333
  continue;
186
334
  }
187
- // Parse each file fresh — no persistent cache. The AST goes out of scope
188
- // at the end of this loop body so the GC can reclaim it.
189
335
  let fileContent;
190
- let fileAst;
191
336
  try {
192
337
  fileContent = fs.readFileSync(filePath, "utf-8");
193
338
  }
194
- catch (_d) {
339
+ catch (_c) {
195
340
  continue;
196
341
  }
197
342
  if (!fileContent.includes("fetch"))
198
343
  continue;
199
- try {
200
- fileAst = parser.parse(fileContent, {
201
- sourceType: "unambiguous",
202
- plugins: ["jsx", "typescript"],
203
- errorRecovery: true,
204
- });
205
- }
206
- catch (_e) {
207
- continue;
208
- }
209
- // Collect fetch aliases:
210
- // 1. `const x = fetch` (direct identifier aliasing)
211
- // 2. `const x = (i, l) => fetch(i, l)` (function-literal wrappers)
212
- // 3. `const { wrapperKey: x } = factory({...})` (destructured wrapper keys)
213
- const fetchAliases = new Set();
214
- traverse(fileAst, {
215
- VariableDeclarator(p) {
216
- const { id, init } = p.node;
217
- if (!init)
218
- return;
219
- if (id.type === "Identifier") {
220
- if (init.type === "Identifier" && init.name === "fetch") {
221
- const binding = p.scope.getBinding(id.name);
222
- if (binding)
223
- fetchAliases.add(binding);
224
- return;
225
- }
226
- if (isFunctionLike(init) && bodyCallsFetch(init)) {
227
- const binding = p.scope.getBinding(id.name);
228
- if (binding)
229
- fetchAliases.add(binding);
230
- return;
231
- }
232
- }
233
- if (id.type === "ObjectPattern") {
234
- for (const prop of id.properties) {
235
- if (prop.type !== "ObjectProperty")
236
- continue;
237
- const keyName = prop.key.type === "Identifier"
238
- ? prop.key.name
239
- : prop.key.type === "StringLiteral"
240
- ? prop.key.value
241
- : null;
242
- if (!keyName || !wrapperKeyNames.has(keyName))
243
- continue;
244
- const valueName = prop.value.type === "Identifier" ? prop.value.name : null;
245
- if (!valueName)
246
- continue;
247
- const binding = p.scope.getBinding(valueName);
248
- if (binding)
249
- fetchAliases.add(binding);
250
- }
251
- }
252
- },
253
- });
254
- // Resolve each fetch call
255
- traverse(fileAst, {
256
- CallExpression(callPath) {
257
- var _a, _b;
258
- const callee = callPath.node.callee;
259
- let isFetchCall = false;
260
- if (callee.type === "Identifier" && callee.name === "fetch") {
261
- isFetchCall = true;
262
- }
263
- else if (callee.type === "Identifier") {
264
- const binding = callPath.scope.getBinding(callee.name);
265
- if (binding && fetchAliases.has(binding))
266
- isFetchCall = true;
267
- }
268
- if (!isFetchCall)
269
- return;
270
- const args = callPath.node.arguments;
271
- if (args.length === 0)
272
- return;
273
- const fileLine = (_b = (_a = callPath.node.loc) === null || _a === void 0 ? void 0 : _a.start.line) !== null && _b !== void 0 ? _b : 0;
274
- totalFetchCalls++;
275
- // Resolve URL (first argument)
276
- const urlArgCode = fileContent
277
- .slice(args[0].start, args[0].end)
278
- .replace(/\n\s*/g, "");
279
- let url = resolveNodeValue(args[0], callPath.scope, urlArgCode, "fetch", fileContent);
280
- if (typeof url === "string" && (url.includes("[var ") || url.includes("[MemberExpression"))) {
281
- const substituted = substituteVariablesInString(url, fileContent);
282
- if (substituted !== url) {
283
- printMsg(MSG.Header, ` [i] Resolved variables in URL: ${url} -> ${substituted}`);
284
- url = substituted;
285
- }
286
- }
287
- let method = "GET";
288
- let headers = {};
289
- let body = "";
290
- if (args.length > 1) {
291
- const options = resolveNodeValue(args[1], callPath.scope, "", "fetch", fileContent);
292
- if (typeof options === "object" && options !== null) {
293
- method = options.method || "GET";
294
- if (options.headers && typeof options.headers === "object") {
295
- const resolvedHeaders = {};
296
- for (const [k, v] of Object.entries(options.headers)) {
297
- const rk = typeof k === "string" ? substituteVariablesInString(k, fileContent) : String(k);
298
- const rv = typeof v === "string" ? substituteVariablesInString(v, fileContent) : String(v);
299
- resolvedHeaders[rk] = rv;
300
- }
301
- headers = resolvedHeaders;
302
- }
303
- if (options.body) {
304
- body =
305
- typeof options.body === "object" ? JSON.stringify(options.body) : String(options.body);
306
- }
307
- }
308
- }
309
- const rawEnclosingFn = inferEnclosingFn(callPath, filePath);
310
- // Null out the AST node reference — it is never read in the
311
- // second pass, but keeping it alive would pin the entire file
312
- // AST in memory through the entries array.
313
- const enclosingFn = rawEnclosingFn ? Object.assign(Object.assign({}, rawEnclosingFn), { node: null }) : null;
314
- entries.push({
315
- file,
316
- filePath,
317
- // fileContent is not used in the second pass; store an empty
318
- // string so the full file content is not kept alive in memory
319
- // through the entries array.
320
- fileContent: "",
321
- fileLine,
322
- url: typeof url === "string" ? url : "",
323
- method,
324
- headers,
325
- body,
326
- enclosingFn,
327
- });
328
- },
329
- });
344
+ totalFetchCalls += collectFetchEntries(file, filePath, fileContent, wrapperKeyNames, entries);
330
345
  }
331
346
  // Second pass: walk back to each fetch's enclosing function callers and
332
347
  // substitute markers we couldn't resolve in the first pass. This is where
@@ -366,7 +381,7 @@ const vue_resolveFetch = (directory_1, ...args_1) => __awaiter(void 0, [director
366
381
  entry.body = JSON.stringify(substituted);
367
382
  }
368
383
  }
369
- catch (_f) {
384
+ catch (_d) {
370
385
  // body is not valid JSON; fall back to string-level substitution
371
386
  if (entry.enclosingFn.bindingName.length <= 2) {
372
387
  entry.body = substituteCallerPlaceholders(entry.body, entry.enclosingFn, getCallers);