optiprune 1.8.2 → 1.8.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/README.md +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-loader.js +15 -2
- package/dist/config-loader.js.map +1 -1
- package/dist/fs-utils.js +10 -5
- package/dist/fs-utils.js.map +1 -1
- package/dist/graph.js +6 -6
- package/dist/graph.js.map +1 -1
- package/dist/index.js +59 -67
- package/dist/index.js.map +1 -1
- package/dist/layer4.d.ts +1 -0
- package/dist/layer4.js +295 -34
- package/dist/layer4.js.map +1 -1
- package/dist/layer6.js +2 -1
- package/dist/layer6.js.map +1 -1
- package/dist/parser.js +55 -8
- package/dist/parser.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -2
package/dist/layer4.js
CHANGED
|
@@ -1,53 +1,320 @@
|
|
|
1
1
|
import { getQuickJS } from "quickjs-emscripten";
|
|
2
2
|
import { performance } from "node:perf_hooks";
|
|
3
|
+
import path from "pathe";
|
|
3
4
|
/**
|
|
4
5
|
* Layer 4: Proof Asserter Engine
|
|
5
6
|
* Validates candidate branches from Layer 3 using isolated execution.
|
|
6
7
|
* Uses a secure WebAssembly-based QuickJS sandbox.
|
|
8
|
+
* Now also resolves dynamic imports by simulating their path construction.
|
|
7
9
|
*/
|
|
8
10
|
export async function analyzeLayer4(context) {
|
|
9
|
-
if (context.candidateBranches.length === 0) {
|
|
10
|
-
return [];
|
|
11
|
-
}
|
|
12
11
|
const findings = [];
|
|
13
12
|
const quickJS = await getQuickJS();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
// 1. Resolve Dynamic Imports
|
|
14
|
+
if (context.dynamicImportCandidates.length > 0) {
|
|
15
|
+
await resolveDynamicImports(context, quickJS);
|
|
16
|
+
}
|
|
17
|
+
// 2. Validate Candidate Branches
|
|
18
|
+
if (context.candidateBranches.length > 0) {
|
|
19
|
+
for (const branch of context.candidateBranches) {
|
|
20
|
+
const result = await verifyPathInWasmSandbox(quickJS, branch.instrumentedCode, branch.seedInput, context.options.layers.smtTimeoutMs);
|
|
21
|
+
if (result.pathReached) {
|
|
22
|
+
// If reached, it's PROVEN alive.
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
findings.push({
|
|
26
|
+
rule: "unreachable-dynamic-path",
|
|
27
|
+
severity: "warning",
|
|
28
|
+
confidence: "medium",
|
|
29
|
+
message: `[Proof Asserter] Branch at line ${branch.line} could not be reached with SMT-generated seeds.`,
|
|
30
|
+
file: branch.file,
|
|
31
|
+
location: {
|
|
32
|
+
start: { line: branch.line, column: 0 },
|
|
33
|
+
end: { line: branch.line, column: 0 }
|
|
34
|
+
},
|
|
35
|
+
evidence: {
|
|
36
|
+
engine: "wasm-quickjs",
|
|
37
|
+
executionTimeMs: result.executionTimeMs,
|
|
38
|
+
seedInput: branch.seedInput,
|
|
39
|
+
status: "SUSPECT_UNREACHABLE"
|
|
40
|
+
},
|
|
41
|
+
});
|
|
19
42
|
}
|
|
20
|
-
findings.push({
|
|
21
|
-
rule: "unreachable-dynamic-path",
|
|
22
|
-
severity: "warning",
|
|
23
|
-
confidence: "medium",
|
|
24
|
-
message: `[Proof Asserter] Branch at line ${branch.line} could not be reached with SMT-generated seeds.`,
|
|
25
|
-
file: branch.file,
|
|
26
|
-
location: {
|
|
27
|
-
start: { line: branch.line, column: 0 },
|
|
28
|
-
end: { line: branch.line, column: 0 }
|
|
29
|
-
},
|
|
30
|
-
evidence: {
|
|
31
|
-
engine: "wasm-quickjs",
|
|
32
|
-
executionTimeMs: result.executionTimeMs,
|
|
33
|
-
seedInput: branch.seedInput,
|
|
34
|
-
status: "SUSPECT_UNREACHABLE"
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
43
|
}
|
|
38
44
|
return findings;
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
|
-
*
|
|
47
|
+
* Simulates dynamic import expressions in a QuickJS sandbox to resolve targets.
|
|
42
48
|
*/
|
|
49
|
+
async function resolveDynamicImports(context, quickJS) {
|
|
50
|
+
// Group candidates by file to avoid redundant simulations
|
|
51
|
+
const candidatesByFile = new Map();
|
|
52
|
+
for (const candidate of context.dynamicImportCandidates) {
|
|
53
|
+
const list = candidatesByFile.get(candidate.file) || [];
|
|
54
|
+
list.push(candidate);
|
|
55
|
+
candidatesByFile.set(candidate.file, list);
|
|
56
|
+
}
|
|
57
|
+
for (const [file, candidates] of candidatesByFile.entries()) {
|
|
58
|
+
for (const candidate of candidates) {
|
|
59
|
+
const runtime = quickJS.newRuntime();
|
|
60
|
+
const vm = runtime.newContext();
|
|
61
|
+
try {
|
|
62
|
+
runtime.setMemoryLimit(context.options.layers.isolateMemoryLimitMb * 1024 * 1024);
|
|
63
|
+
// Setup Mocks
|
|
64
|
+
setupQuickJSMocks(vm, candidate, context);
|
|
65
|
+
const globalHandle = vm.global;
|
|
66
|
+
const targetsHandle = vm.newArray();
|
|
67
|
+
vm.setProp(globalHandle, "__OPTIPRUNE_TARGETS__", targetsHandle);
|
|
68
|
+
const importMockFn = vm.newFunction("__optiprune_import", (arg) => {
|
|
69
|
+
const target = vm.dump(arg);
|
|
70
|
+
const currentTargets = vm.getProp(globalHandle, "__OPTIPRUNE_TARGETS__");
|
|
71
|
+
const lenHandle = vm.getProp(currentTargets, "length");
|
|
72
|
+
const len = vm.dump(lenHandle);
|
|
73
|
+
vm.setProp(currentTargets, len, vm.newString(String(target)));
|
|
74
|
+
lenHandle.dispose();
|
|
75
|
+
currentTargets.dispose();
|
|
76
|
+
return vm.newObject(); // Dummy module
|
|
77
|
+
});
|
|
78
|
+
vm.setProp(globalHandle, "__optiprune_import", importMockFn);
|
|
79
|
+
importMockFn.dispose();
|
|
80
|
+
targetsHandle.dispose();
|
|
81
|
+
globalHandle.dispose();
|
|
82
|
+
// Clean up code for QuickJS (strip common TS syntax)
|
|
83
|
+
const clean = (code) => code
|
|
84
|
+
.replace(/import\.meta\.url/g, '("file://" + __filename)')
|
|
85
|
+
.replace(/\bimport\s*\(/g, '__optiprune_import(')
|
|
86
|
+
// 1. Remove "as any", "as string", etc.
|
|
87
|
+
.replace(/\s+as\s+[a-zA-Z0-9_<>\[\]|& ]+(?=[,;=)]|$)/g, '')
|
|
88
|
+
// 2. Remove type annotations including arrays and common types
|
|
89
|
+
.replace(/:\s*(?:[a-zA-Z0-9_<>|& ]+(?:\[\])*)(?=\s*[,;=)]|$)/g, (match) => {
|
|
90
|
+
// Protect ternary colons and object properties
|
|
91
|
+
if (match.includes('null') || match.includes('undefined') || match.includes('true') || match.includes('false')) {
|
|
92
|
+
return match;
|
|
93
|
+
}
|
|
94
|
+
// Check if it's a common type or starts with Uppercase (Interface/Class)
|
|
95
|
+
const typePart = match.slice(1).trim();
|
|
96
|
+
const commonTypes = ['string', 'number', 'boolean', 'any', 'void', 'unknown', 'never', 'string[]', 'any[]', 'Config', 'ModuleRecord', 'AnalysisContext'];
|
|
97
|
+
if (commonTypes.includes(typePart) || /^[A-Z]/.test(typePart)) {
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
return match;
|
|
101
|
+
})
|
|
102
|
+
// 3. Remove interface/type imports
|
|
103
|
+
.replace(/import\s+type\s+.*?;/g, '');
|
|
104
|
+
const processedContext = clean(candidate.contextCode);
|
|
105
|
+
const simulationScript = `
|
|
106
|
+
(async function() {
|
|
107
|
+
const __dirname = path.dirname(__filename);
|
|
108
|
+
try {
|
|
109
|
+
${processedContext}
|
|
110
|
+
} catch (e) {
|
|
111
|
+
if (globalThis.__VERBOSE__) {
|
|
112
|
+
console.log("[QuickJS Runtime Error] " + (e instanceof Error ? e.message : String(e)));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}).call(globalThis);
|
|
116
|
+
`;
|
|
117
|
+
if (context.options.verbose) {
|
|
118
|
+
console.log(`[Layer 4] Simulation Script for ${file}:\n${simulationScript}`);
|
|
119
|
+
}
|
|
120
|
+
const evalResult = vm.evalCode(simulationScript);
|
|
121
|
+
if (evalResult.error) {
|
|
122
|
+
if (context.options.verbose) {
|
|
123
|
+
console.log(`[Layer 4] Simulation Syntax Error in ${file}:`, vm.dump(evalResult.error));
|
|
124
|
+
console.log(`[Layer 4] Script was:\n${simulationScript}`);
|
|
125
|
+
}
|
|
126
|
+
evalResult.error.dispose();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
evalResult.value.dispose();
|
|
130
|
+
let deadline = 1000;
|
|
131
|
+
while (deadline-- > 0) {
|
|
132
|
+
if (runtime.executePendingJobs() === 0)
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const finalGlobalHandle = vm.global;
|
|
137
|
+
const finalTargetsHandle = vm.getProp(finalGlobalHandle, "__OPTIPRUNE_TARGETS__");
|
|
138
|
+
const targets = vm.dump(finalTargetsHandle);
|
|
139
|
+
finalTargetsHandle.dispose();
|
|
140
|
+
finalGlobalHandle.dispose();
|
|
141
|
+
if (Array.isArray(targets)) {
|
|
142
|
+
for (const rawTarget of targets) {
|
|
143
|
+
if (typeof rawTarget === 'string') {
|
|
144
|
+
resolveAndMarkTarget(rawTarget, file, context);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
// Simulation failed
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
vm.dispose();
|
|
154
|
+
runtime.dispose();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function setupQuickJSMocks(vm, candidate, context) {
|
|
160
|
+
const globalHandle = vm.global;
|
|
161
|
+
// 1. __dirname and __filename
|
|
162
|
+
const fileDir = path.dirname(candidate.file);
|
|
163
|
+
const dirnameHandle = vm.newString(fileDir);
|
|
164
|
+
const filenameHandle = vm.newString(candidate.file);
|
|
165
|
+
vm.setProp(globalHandle, "__dirname", dirnameHandle);
|
|
166
|
+
vm.setProp(globalHandle, "__filename", filenameHandle);
|
|
167
|
+
dirnameHandle.dispose();
|
|
168
|
+
filenameHandle.dispose();
|
|
169
|
+
// 2. path mock using host's pathe
|
|
170
|
+
const pathMock = vm.newObject();
|
|
171
|
+
const joinFn = vm.newFunction("join", (...args) => {
|
|
172
|
+
const parts = args.map(arg => vm.dump(arg));
|
|
173
|
+
const result = vm.newString(path.join(...parts));
|
|
174
|
+
return result;
|
|
175
|
+
});
|
|
176
|
+
const dirnameFn = vm.newFunction("dirname", (arg) => {
|
|
177
|
+
const result = vm.newString(path.dirname(vm.dump(arg)));
|
|
178
|
+
return result;
|
|
179
|
+
});
|
|
180
|
+
vm.setProp(pathMock, "join", joinFn);
|
|
181
|
+
vm.setProp(pathMock, "dirname", dirnameFn);
|
|
182
|
+
vm.setProp(globalHandle, "path", pathMock);
|
|
183
|
+
joinFn.dispose();
|
|
184
|
+
dirnameFn.dispose();
|
|
185
|
+
pathMock.dispose();
|
|
186
|
+
// 3. url mock
|
|
187
|
+
const urlMock = vm.newObject();
|
|
188
|
+
const pathToFileURLFn = vm.newFunction("pathToFileURL", (arg) => {
|
|
189
|
+
const p = vm.dump(arg);
|
|
190
|
+
const obj = vm.newObject();
|
|
191
|
+
const hrefValue = vm.newString(`file://${p}`);
|
|
192
|
+
vm.setProp(obj, "href", hrefValue);
|
|
193
|
+
hrefValue.dispose();
|
|
194
|
+
return obj;
|
|
195
|
+
});
|
|
196
|
+
const fileURLToPathFn = vm.newFunction("fileURLToPath", (arg) => {
|
|
197
|
+
const urlStr = vm.dump(arg);
|
|
198
|
+
const p = urlStr.startsWith('file://') ? urlStr.slice(7) : urlStr;
|
|
199
|
+
return vm.newString(p);
|
|
200
|
+
});
|
|
201
|
+
vm.setProp(urlMock, "pathToFileURL", pathToFileURLFn);
|
|
202
|
+
vm.setProp(urlMock, "fileURLToPath", fileURLToPathFn);
|
|
203
|
+
vm.setProp(globalHandle, "url", urlMock);
|
|
204
|
+
vm.setProp(globalHandle, "pathToFileURL", pathToFileURLFn);
|
|
205
|
+
vm.setProp(globalHandle, "fileURLToPath", fileURLToPathFn);
|
|
206
|
+
urlMock.dispose();
|
|
207
|
+
pathToFileURLFn.dispose();
|
|
208
|
+
fileURLToPathFn.dispose();
|
|
209
|
+
// 4. fs mock
|
|
210
|
+
const fsMock = vm.newObject();
|
|
211
|
+
const readdirFn = vm.newFunction("readdir", (arg) => {
|
|
212
|
+
const rawDir = vm.dump(arg);
|
|
213
|
+
const cleanPath = String(rawDir).replace(/^file:\/\//, '');
|
|
214
|
+
const dir = path.isAbsolute(cleanPath) ? cleanPath : path.resolve(fileDir, cleanPath);
|
|
215
|
+
if (context.options.verbose) {
|
|
216
|
+
console.log(`[QuickJS Mock] fs.readdir called for: "${rawDir}" -> normalized: "${dir}"`);
|
|
217
|
+
}
|
|
218
|
+
const files = Array.from(context.modules.keys())
|
|
219
|
+
.filter(f => {
|
|
220
|
+
const parent = path.dirname(f);
|
|
221
|
+
return parent === dir || parent === dir.replace(/\/$/, '');
|
|
222
|
+
})
|
|
223
|
+
.map(f => path.basename(f));
|
|
224
|
+
if (context.options.verbose) {
|
|
225
|
+
console.log(`[QuickJS Mock] fs.readdir returned:`, files);
|
|
226
|
+
}
|
|
227
|
+
const arr = vm.newArray();
|
|
228
|
+
files.forEach((f, i) => {
|
|
229
|
+
const val = vm.newString(f);
|
|
230
|
+
vm.setProp(arr, i, val);
|
|
231
|
+
val.dispose();
|
|
232
|
+
});
|
|
233
|
+
return arr;
|
|
234
|
+
});
|
|
235
|
+
const existsSyncFn = vm.newFunction("existsSync", (arg) => {
|
|
236
|
+
const rawP = vm.dump(arg);
|
|
237
|
+
const cleanPath = String(rawP).replace(/^file:\/\//, '');
|
|
238
|
+
const p = path.isAbsolute(cleanPath) ? cleanPath : path.resolve(fileDir, cleanPath);
|
|
239
|
+
const exists = context.modules.has(p);
|
|
240
|
+
if (context.options.verbose) {
|
|
241
|
+
console.log(`[QuickJS Mock] fs.existsSync("${rawP}") -> ${exists}`);
|
|
242
|
+
}
|
|
243
|
+
return exists ? vm.true : vm.false;
|
|
244
|
+
});
|
|
245
|
+
vm.setProp(fsMock, "readdir", readdirFn);
|
|
246
|
+
vm.setProp(fsMock, "readdirSync", readdirFn);
|
|
247
|
+
vm.setProp(fsMock, "existsSync", existsSyncFn);
|
|
248
|
+
vm.setProp(globalHandle, "fs", fsMock);
|
|
249
|
+
fsMock.dispose();
|
|
250
|
+
readdirFn.dispose();
|
|
251
|
+
existsSyncFn.dispose();
|
|
252
|
+
// 5. console mock
|
|
253
|
+
const consoleMock = vm.newObject();
|
|
254
|
+
const logFn = vm.newFunction("log", (...args) => {
|
|
255
|
+
if (context.options.verbose) {
|
|
256
|
+
console.log(`[QuickJS Console]`, ...args.map(a => vm.dump(a)));
|
|
257
|
+
}
|
|
258
|
+
return vm.undefined;
|
|
259
|
+
});
|
|
260
|
+
const warnFn = vm.newFunction("warn", (...args) => {
|
|
261
|
+
if (context.options.verbose) {
|
|
262
|
+
console.warn(`[QuickJS Console]`, ...args.map(a => vm.dump(a)));
|
|
263
|
+
}
|
|
264
|
+
return vm.undefined;
|
|
265
|
+
});
|
|
266
|
+
const errorFn = vm.newFunction("error", (...args) => {
|
|
267
|
+
console.error(`[QuickJS Console Error]`, ...args.map(a => vm.dump(a)));
|
|
268
|
+
return vm.undefined;
|
|
269
|
+
});
|
|
270
|
+
vm.setProp(consoleMock, "log", logFn);
|
|
271
|
+
vm.setProp(consoleMock, "warn", warnFn);
|
|
272
|
+
vm.setProp(consoleMock, "error", errorFn);
|
|
273
|
+
vm.setProp(globalHandle, "console", consoleMock);
|
|
274
|
+
if (context.options.verbose) {
|
|
275
|
+
vm.setProp(globalHandle, "__VERBOSE__", vm.true);
|
|
276
|
+
}
|
|
277
|
+
consoleMock.dispose();
|
|
278
|
+
logFn.dispose();
|
|
279
|
+
warnFn.dispose();
|
|
280
|
+
errorFn.dispose();
|
|
281
|
+
globalHandle.dispose();
|
|
282
|
+
}
|
|
283
|
+
function resolveAndMarkTarget(specifier, sourceFile, context) {
|
|
284
|
+
let cleanSpecifier = specifier;
|
|
285
|
+
if (specifier.startsWith('file://')) {
|
|
286
|
+
cleanSpecifier = specifier.slice(7);
|
|
287
|
+
}
|
|
288
|
+
const sourceDir = path.dirname(sourceFile);
|
|
289
|
+
const absolutePath = path.isAbsolute(cleanSpecifier)
|
|
290
|
+
? cleanSpecifier
|
|
291
|
+
: path.resolve(sourceDir, cleanSpecifier);
|
|
292
|
+
let targetModule = context.modules.get(absolutePath);
|
|
293
|
+
if (!targetModule) {
|
|
294
|
+
for (const ext of context.options.extensions) {
|
|
295
|
+
const withExt = absolutePath + ext;
|
|
296
|
+
targetModule = context.modules.get(withExt);
|
|
297
|
+
if (targetModule)
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (targetModule) {
|
|
302
|
+
console.log(`[Layer 4] Marking reachable: ${targetModule.id}`);
|
|
303
|
+
context.reachable.add(targetModule.id);
|
|
304
|
+
for (const exp of targetModule.exports) {
|
|
305
|
+
context.usedExports.add(`${targetModule.id}:${exp.exportedAs}`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
console.log(`[Layer 4] Could not resolve target: ${absolutePath}`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
43
312
|
async function verifyPathInWasmSandbox(quickJS, instrumentedCode, seedInput, timeoutMs = 50) {
|
|
44
313
|
const startTime = performance.now();
|
|
45
314
|
const runtime = quickJS.newRuntime();
|
|
46
315
|
const context = runtime.newContext();
|
|
47
316
|
try {
|
|
48
|
-
// Set a memory limit (e.g., 16MB)
|
|
49
317
|
runtime.setMemoryLimit(16 * 1024 * 1024);
|
|
50
|
-
// Setup the sandbox environment
|
|
51
318
|
const setupScript = `
|
|
52
319
|
globalThis.__PROVE_REACHED__ = false;
|
|
53
320
|
globalThis.__coverage__ = {
|
|
@@ -56,18 +323,12 @@ async function verifyPathInWasmSandbox(quickJS, instrumentedCode, seedInput, tim
|
|
|
56
323
|
traceCall: () => {},
|
|
57
324
|
init: () => {}
|
|
58
325
|
};
|
|
59
|
-
// Inject seed inputs
|
|
60
326
|
const seeds = ${JSON.stringify(seedInput)};
|
|
61
327
|
Object.assign(globalThis, seeds);
|
|
62
328
|
`;
|
|
63
329
|
const setupResult = context.evalCode(setupScript);
|
|
64
330
|
setupResult.dispose();
|
|
65
|
-
// Execute the instrumented code
|
|
66
|
-
// We wrap it in a try-catch to prevent VM crashes from throwing in the host
|
|
67
331
|
const wrappedCode = `try { ${instrumentedCode} } catch (e) {}`;
|
|
68
|
-
// QuickJS-emscripten evalCode is synchronous but we can enforce a timeout
|
|
69
|
-
// In a more complex setup we'd use a worker, but for concolic execution snippets,
|
|
70
|
-
// we rely on the host's performance.now() and runtime limits.
|
|
71
332
|
const evalResult = context.evalCode(wrappedCode);
|
|
72
333
|
evalResult.dispose();
|
|
73
334
|
const globalHandle = context.global;
|
package/dist/layer4.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer4.js","sourceRoot":"","sources":["../src/layer4.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layer4.js","sourceRoot":"","sources":["../src/layer4.ts"],"names":[],"mappings":"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"}
|
package/dist/layer6.js
CHANGED
|
@@ -202,7 +202,8 @@ export async function analyzeLayer6(context) {
|
|
|
202
202
|
const CORE_TOOLING = [
|
|
203
203
|
'typescript', 'ts-node', 'tsx', 'babel', 'swc',
|
|
204
204
|
'eslint', 'prettier', 'husky', 'lint-staged',
|
|
205
|
-
'vitest', 'jest', 'cypress', 'playwright'
|
|
205
|
+
'vitest', 'jest', 'cypress', 'playwright',
|
|
206
|
+
'@types/node', '@types/react', '@types/react-dom', '@types/jest'
|
|
206
207
|
];
|
|
207
208
|
const isCoreTool = CORE_TOOLING.some(p => dep.includes(p));
|
|
208
209
|
// Heuristic: Check for common config files in root
|
package/dist/layer6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer6.js","sourceRoot":"","sources":["../src/layer6.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layer6.js","sourceRoot":"","sources":["../src/layer6.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.js
CHANGED
|
@@ -100,7 +100,7 @@ function addExport(exportsList, exportedAs, node, identifierNode, options = {})
|
|
|
100
100
|
exportsList.push(candidate);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
function addEdge(edges, sourceFile, rawSpecifier, kind, node, importedNames = [], isTypeOnly = false) {
|
|
103
|
+
function addEdge(edges, sourceFile, rawSpecifier, kind, node, importedNames = [], isTypeOnly = false, dynamicExpression) {
|
|
104
104
|
const edge = {
|
|
105
105
|
source: sourceFile,
|
|
106
106
|
rawSpecifier,
|
|
@@ -108,6 +108,7 @@ function addEdge(edges, sourceFile, rawSpecifier, kind, node, importedNames = []
|
|
|
108
108
|
importedNames,
|
|
109
109
|
resolution: "unknown",
|
|
110
110
|
isTypeOnly,
|
|
111
|
+
dynamicExpression,
|
|
111
112
|
};
|
|
112
113
|
const location = positionRange(node);
|
|
113
114
|
if (location) {
|
|
@@ -171,17 +172,18 @@ function templateParts(node) {
|
|
|
171
172
|
const lastValue = isNode(last) && isNode(last.value) && typeof last.value.cooked === "string" ? last.value.cooked : "";
|
|
172
173
|
return { prefix: firstValue, suffix: lastValue };
|
|
173
174
|
}
|
|
174
|
-
function walk(node, visitor) {
|
|
175
|
+
function walk(node, visitor, stack = []) {
|
|
175
176
|
if (Array.isArray(node)) {
|
|
176
177
|
for (const item of node) {
|
|
177
|
-
walk(item, visitor);
|
|
178
|
+
walk(item, visitor, stack);
|
|
178
179
|
}
|
|
179
180
|
return;
|
|
180
181
|
}
|
|
181
182
|
if (!isNode(node)) {
|
|
182
183
|
return;
|
|
183
184
|
}
|
|
184
|
-
|
|
185
|
+
const currentStack = [...stack, node];
|
|
186
|
+
visitor(node, stack);
|
|
185
187
|
for (const [key, value] of Object.entries(node)) {
|
|
186
188
|
if (key === "loc" ||
|
|
187
189
|
key === "start" ||
|
|
@@ -193,7 +195,7 @@ function walk(node, visitor) {
|
|
|
193
195
|
continue;
|
|
194
196
|
}
|
|
195
197
|
if (Array.isArray(value) || isNode(value)) {
|
|
196
|
-
walk(value, visitor);
|
|
198
|
+
walk(value, visitor, currentStack);
|
|
197
199
|
}
|
|
198
200
|
}
|
|
199
201
|
}
|
|
@@ -218,7 +220,8 @@ function extractAstModule(sourceText, file, ast, parserErrors) {
|
|
|
218
220
|
let hasUnknownDynamicBoundary = false;
|
|
219
221
|
let hasUnresolvedCommonJsExports = false;
|
|
220
222
|
const scannedDirectories = [];
|
|
221
|
-
|
|
223
|
+
const dynamicImportCandidates = [];
|
|
224
|
+
walk(ast, (node, stack) => {
|
|
222
225
|
if (node.type === "ImportDeclaration") {
|
|
223
226
|
const specifier = nodeStringValue(node.source);
|
|
224
227
|
if (specifier) {
|
|
@@ -322,7 +325,49 @@ function extractAstModule(sourceText, file, ast, parserErrors) {
|
|
|
322
325
|
}
|
|
323
326
|
else {
|
|
324
327
|
hasUnknownDynamicBoundary = true;
|
|
325
|
-
|
|
328
|
+
const expressionText = sourceText.slice(node.start, node.end);
|
|
329
|
+
const location = positionRange(node);
|
|
330
|
+
if (location) {
|
|
331
|
+
// Find the containing function or block to capture local variables
|
|
332
|
+
let contextCode = "";
|
|
333
|
+
const scopeNode = [...stack].reverse().find(n => n.type === "FunctionDeclaration" ||
|
|
334
|
+
n.type === "FunctionExpression" ||
|
|
335
|
+
n.type === "ArrowFunctionExpression" ||
|
|
336
|
+
n.type === "ClassMethod" ||
|
|
337
|
+
n.type === "ObjectMethod");
|
|
338
|
+
if (scopeNode && isNode(scopeNode.body)) {
|
|
339
|
+
const body = scopeNode.body;
|
|
340
|
+
const start = body.start;
|
|
341
|
+
if (typeof start === "number" && typeof node.start === "number") {
|
|
342
|
+
const bStart = (body.type === "BlockStatement" ? start + 1 : start);
|
|
343
|
+
const bEnd = body.end - (body.type === "BlockStatement" ? 1 : 0);
|
|
344
|
+
let code = sourceText.slice(bStart, bEnd);
|
|
345
|
+
// Prepend parameters as variables so they are defined (even if undefined)
|
|
346
|
+
const params = scopeNode.params;
|
|
347
|
+
if (Array.isArray(params)) {
|
|
348
|
+
const paramNames = params.flatMap(p => bindingNames(p));
|
|
349
|
+
if (paramNames.length > 0) {
|
|
350
|
+
code = `var ${paramNames.join(', ')};\n${code}`;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
contextCode = code;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// In a real scenario, we might want to log this if verbose is enabled
|
|
357
|
+
// However, parser.ts doesn't have easy access to options here.
|
|
358
|
+
// We'll leave it as is for now to avoid breaking the signature.
|
|
359
|
+
if (!contextCode) {
|
|
360
|
+
contextCode = sourceText.slice(Math.max(0, node.start - 500), node.end + 500);
|
|
361
|
+
}
|
|
362
|
+
dynamicImportCandidates.push({
|
|
363
|
+
file,
|
|
364
|
+
line: location.start.line,
|
|
365
|
+
column: location.start.column,
|
|
366
|
+
expression: expressionText,
|
|
367
|
+
contextCode: contextCode,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
addEdge(edges, file, "<unknown dynamic import>", "unknown-dynamic", node, ["*"], false, expressionText);
|
|
326
371
|
}
|
|
327
372
|
}
|
|
328
373
|
return;
|
|
@@ -389,6 +434,7 @@ function extractAstModule(sourceText, file, ast, parserErrors) {
|
|
|
389
434
|
hasParseError: parserErrors.length > 0,
|
|
390
435
|
hasUnresolvedCommonJsExports,
|
|
391
436
|
scannedDirectories,
|
|
437
|
+
dynamicImportCandidates,
|
|
392
438
|
};
|
|
393
439
|
return module;
|
|
394
440
|
}
|
|
@@ -504,8 +550,9 @@ function fallbackModule(sourceText, file, reason) {
|
|
|
504
550
|
edges: fallbackEdges(sourceText, file),
|
|
505
551
|
hasUnknownDynamicBoundary: false, // Parse error is not necessarily a dynamic boundary
|
|
506
552
|
hasParseError: true,
|
|
507
|
-
hasUnresolvedCommonJsExports:
|
|
553
|
+
hasUnresolvedCommonJsExports: false,
|
|
508
554
|
scannedDirectories: [],
|
|
555
|
+
dynamicImportCandidates: [],
|
|
509
556
|
};
|
|
510
557
|
}
|
|
511
558
|
export function parseModule(sourceText, file) {
|