optiprune 2.1.4 → 2.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +52 -22
  2. package/bin/runner.js +26 -0
  3. package/package.json +10 -37
  4. package/dist/ast-utils.d.ts +0 -149
  5. package/dist/ast-utils.js +0 -36
  6. package/dist/ast-utils.js.map +0 -1
  7. package/dist/cache.d.ts +0 -14
  8. package/dist/cache.js +0 -36
  9. package/dist/cache.js.map +0 -1
  10. package/dist/cli.d.ts +0 -2
  11. package/dist/cli.js +0 -68
  12. package/dist/cli.js.map +0 -1
  13. package/dist/config-loader.d.ts +0 -4
  14. package/dist/config-loader.js +0 -84
  15. package/dist/config-loader.js.map +0 -1
  16. package/dist/coverage-tracker.d.ts +0 -39
  17. package/dist/coverage-tracker.js +0 -61
  18. package/dist/coverage-tracker.js.map +0 -1
  19. package/dist/engine.d.ts +0 -17
  20. package/dist/engine.js +0 -215
  21. package/dist/engine.js.map +0 -1
  22. package/dist/framework-plugins.d.ts +0 -16
  23. package/dist/framework-plugins.js +0 -127
  24. package/dist/framework-plugins.js.map +0 -1
  25. package/dist/fs-utils.d.ts +0 -32
  26. package/dist/fs-utils.js +0 -415
  27. package/dist/fs-utils.js.map +0 -1
  28. package/dist/graph.d.ts +0 -42
  29. package/dist/graph.js +0 -583
  30. package/dist/graph.js.map +0 -1
  31. package/dist/index.d.ts +0 -3
  32. package/dist/index.js +0 -451
  33. package/dist/index.js.map +0 -1
  34. package/dist/instrument.d.ts +0 -5
  35. package/dist/instrument.js +0 -108
  36. package/dist/instrument.js.map +0 -1
  37. package/dist/layer2.d.ts +0 -6
  38. package/dist/layer2.js +0 -224
  39. package/dist/layer2.js.map +0 -1
  40. package/dist/layer3.d.ts +0 -7
  41. package/dist/layer3.js +0 -346
  42. package/dist/layer3.js.map +0 -1
  43. package/dist/layer4.d.ts +0 -8
  44. package/dist/layer4.js +0 -627
  45. package/dist/layer4.js.map +0 -1
  46. package/dist/layer5.d.ts +0 -6
  47. package/dist/layer5.js +0 -141
  48. package/dist/layer5.js.map +0 -1
  49. package/dist/layer6.d.ts +0 -26
  50. package/dist/layer6.js +0 -268
  51. package/dist/layer6.js.map +0 -1
  52. package/dist/layer7.d.ts +0 -28
  53. package/dist/layer7.js +0 -267
  54. package/dist/layer7.js.map +0 -1
  55. package/dist/parser.d.ts +0 -20
  56. package/dist/parser.js +0 -832
  57. package/dist/parser.js.map +0 -1
  58. package/dist/plugins/angular-plugin.d.ts +0 -7
  59. package/dist/plugins/angular-plugin.js +0 -60
  60. package/dist/plugins/angular-plugin.js.map +0 -1
  61. package/dist/plugins/astro-plugin.d.ts +0 -7
  62. package/dist/plugins/astro-plugin.js +0 -88
  63. package/dist/plugins/astro-plugin.js.map +0 -1
  64. package/dist/plugins/babel-plugin.d.ts +0 -8
  65. package/dist/plugins/babel-plugin.js +0 -132
  66. package/dist/plugins/babel-plugin.js.map +0 -1
  67. package/dist/plugins/esbuild-plugin.d.ts +0 -8
  68. package/dist/plugins/esbuild-plugin.js +0 -121
  69. package/dist/plugins/esbuild-plugin.js.map +0 -1
  70. package/dist/plugins/nestjs-plugin.d.ts +0 -7
  71. package/dist/plugins/nestjs-plugin.js +0 -69
  72. package/dist/plugins/nestjs-plugin.js.map +0 -1
  73. package/dist/plugins/nextjs-plugin.d.ts +0 -7
  74. package/dist/plugins/nextjs-plugin.js +0 -66
  75. package/dist/plugins/nextjs-plugin.js.map +0 -1
  76. package/dist/plugins/nuxtjs-plugin.d.ts +0 -7
  77. package/dist/plugins/nuxtjs-plugin.js +0 -80
  78. package/dist/plugins/nuxtjs-plugin.js.map +0 -1
  79. package/dist/plugins/svelte-plugin.d.ts +0 -7
  80. package/dist/plugins/svelte-plugin.js +0 -38
  81. package/dist/plugins/svelte-plugin.js.map +0 -1
  82. package/dist/plugins/vuejs-plugin.d.ts +0 -7
  83. package/dist/plugins/vuejs-plugin.js +0 -63
  84. package/dist/plugins/vuejs-plugin.js.map +0 -1
  85. package/dist/reporters.d.ts +0 -3
  86. package/dist/reporters.js +0 -75
  87. package/dist/reporters.js.map +0 -1
  88. package/dist/semantic-graph.d.ts +0 -44
  89. package/dist/semantic-graph.js +0 -88
  90. package/dist/semantic-graph.js.map +0 -1
  91. package/dist/symbolic-engine.d.ts +0 -19
  92. package/dist/symbolic-engine.js +0 -51
  93. package/dist/symbolic-engine.js.map +0 -1
  94. package/dist/topology-manager.d.ts +0 -23
  95. package/dist/topology-manager.js +0 -144
  96. package/dist/topology-manager.js.map +0 -1
  97. package/dist/types.d.ts +0 -265
  98. package/dist/types.js +0 -11
  99. package/dist/types.js.map +0 -1
  100. package/dist/workspace.d.ts +0 -6
  101. package/dist/workspace.js +0 -105
  102. package/dist/workspace.js.map +0 -1
package/dist/index.js DELETED
@@ -1,451 +0,0 @@
1
- import { promises as fs } from "node:fs";
2
- import path from "pathe";
3
- import { fileURLToPath } from "node:url";
4
- import { parseModule, walkAst } from "./parser.js";
5
- import { contextWithGraph, buildImportUsage } from "./graph.js";
6
- import { analyzeLayer2 } from "./layer2.js";
7
- import { analyzeLayer3 } from "./layer3.js";
8
- import { analyzeLayer4 } from "./layer4.js";
9
- import { analyzeLayer5 } from "./layer5.js";
10
- import { analyzeLayer6 } from "./layer6.js";
11
- import { analyzeLayer7 } from "./layer7.js";
12
- import { SemanticGraph } from "./semantic-graph.js";
13
- import { TopologyManager } from "./topology-manager.js";
14
- import { SymbolicEngine } from "./symbolic-engine.js";
15
- import { buildMonorepoTopology } from "./workspace.js";
16
- import { PluginEngine, ZodPlugin } from "./engine.js";
17
- import { ReactPlugin, NextjsPlugin, NuxtPlugin } from "./framework-plugins.js";
18
- import { loadCache, saveCache, getFileHash, isCacheValid } from "./cache.js";
19
- import { compileGlobs, conventionalEntryPatterns, DEFAULT_IGNORE, discoverPackageEntryPatterns, discoverSourceFiles, expandEntryPatterns, ingestTsConfigPaths, normalizeAbsolute, readJsonFile, relativeDisplayPath, rootLooksValid, } from "./fs-utils.js";
20
- import { CONFIDENCE_RANK } from "./types.js";
21
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
- const pkg = (await readJsonFile(path.join(__dirname, "..", "package.json")));
23
- const VERSION = pkg?.version ?? "1.8.2";
24
- import { DEFAULT_CONFIG, loadConfig, mergeConfig } from "./config-loader.js";
25
- async function resolveOptions(options) {
26
- const rootDir = normalizeAbsolute(options.rootDir ?? process.cwd());
27
- const userConfig = await loadConfig(rootDir);
28
- const merged = mergeConfig(DEFAULT_CONFIG, {
29
- ...userConfig,
30
- ...options,
31
- rootDir,
32
- });
33
- // Map top-level skip flags from CLI/Options to layers object
34
- if (options.skip3 !== undefined)
35
- merged.layers.skip3 = options.skip3;
36
- if (options.skip4 !== undefined)
37
- merged.layers.skip4 = options.skip4;
38
- const { paths: pathAliases, baseUrl } = await ingestTsConfigPaths(rootDir);
39
- return {
40
- ...merged,
41
- entry: merged.entry?.map((entry) => normalizeAbsolute(path.resolve(rootDir, entry))) ?? [],
42
- ignore: [...DEFAULT_IGNORE, ...(merged.ignore ?? [])],
43
- pathAliases,
44
- baseUrl,
45
- };
46
- }
47
- export async function analyze(options) {
48
- const resolvedOptions = await resolveOptions(options);
49
- const cache = loadCache(resolvedOptions.rootDir);
50
- const newCache = { version: "1.0", entries: {} };
51
- // Phase 1: Core Graph & AST (Instant)
52
- // Discover Monorepo Topology
53
- let hasMonorepo = false;
54
- try {
55
- resolvedOptions.monorepo = await buildMonorepoTopology(resolvedOptions.rootDir);
56
- hasMonorepo = !!resolvedOptions.monorepo;
57
- }
58
- catch (e) {
59
- // console.error(`[Monorepo] Discovery failed: ${e}`);
60
- }
61
- const { rootDir, extensions, ignore, entry, includeConventionalEntries } = resolvedOptions;
62
- const compiledIgnorePatterns = compileGlobs(ignore);
63
- if (!(await rootLooksValid(rootDir))) {
64
- throw new Error(`Root directory does not exist: ${rootDir}`);
65
- }
66
- const allSourceFiles = await discoverSourceFiles(rootDir, extensions, compiledIgnorePatterns);
67
- const modules = new Map();
68
- const semanticGraph = new SemanticGraph();
69
- const topologyManager = new TopologyManager(semanticGraph);
70
- const symbolicEngine = new SymbolicEngine(semanticGraph);
71
- let filesParsed = 0;
72
- let filesRecovered = 0;
73
- let filesFallback = 0;
74
- let hasFrameworkNodes = false;
75
- for (const file of allSourceFiles) {
76
- let rawText;
77
- try {
78
- // BOM-safe file reader to prevent Babel/TS AST parse recovery warnings
79
- rawText = await fs.readFile(file, "utf8");
80
- }
81
- catch (e) {
82
- if (e.code === 'ENOENT')
83
- continue;
84
- throw e;
85
- }
86
- const sourceText = rawText.charCodeAt(0) === 0xFEFF ? rawText.slice(1) : rawText;
87
- const currentHash = getFileHash(sourceText);
88
- let moduleRecord;
89
- const cached = cache.entries[file];
90
- if (cached && isCacheValid(cached, sourceText)) {
91
- moduleRecord = cached.moduleRecord;
92
- newCache.entries[file] = cached;
93
- }
94
- else {
95
- moduleRecord = parseModule(sourceText, file);
96
- newCache.entries[file] = {
97
- hash: currentHash,
98
- moduleRecord,
99
- timestamp: Date.now()
100
- };
101
- }
102
- modules.set(file, moduleRecord);
103
- if (moduleRecord.parseStatus === "parsed") {
104
- filesParsed += 1;
105
- // Quick framework detection for Layer 5 gating
106
- if (!hasFrameworkNodes && moduleRecord.ast) {
107
- walkAst(moduleRecord.ast, (rawNode) => {
108
- const node = rawNode;
109
- const isDecorator = !!node.decorators || (Array.isArray(node.modifiers) && node.modifiers.some((m) => m.type === 'Decorator' || m.kind === 'Decorator'));
110
- const isZodCall = node.type === "CallExpression" && ((node.callee?.type === "MemberExpression" && (node.callee.object?.name === "z" || node.callee.object?.name === "zod")) ||
111
- (node.callee?.type === "Identifier" && (node.callee.name === "z" || node.callee.name.startsWith("zod"))));
112
- if (isDecorator || isZodCall) {
113
- hasFrameworkNodes = true;
114
- return true;
115
- }
116
- });
117
- }
118
- }
119
- else if (moduleRecord.parseStatus === "recovered") {
120
- filesRecovered += 1;
121
- }
122
- else {
123
- filesFallback += 1;
124
- }
125
- }
126
- saveCache(resolvedOptions.rootDir, newCache);
127
- let entryPoints = new Set();
128
- const publicEntryPoints = new Set();
129
- // 1. Explicit Entry Points
130
- if (entry.length > 0) {
131
- for (const pattern of entry) {
132
- const expanded = expandEntryPatterns(allSourceFiles, rootDir, [pattern]);
133
- for (const e of expanded) {
134
- entryPoints.add(path.normalize(e));
135
- }
136
- }
137
- }
138
- // 2. Conventional Entry Points (Public)
139
- // Helper to add patterns relative to a base directory
140
- const addPatterns = async (baseDir, relativeToRoot = "", isRoot = false) => {
141
- const rawEntries = await discoverPackageEntryPatterns(baseDir);
142
- const entries = rawEntries.flatMap(e => {
143
- if (e.startsWith('dist/')) {
144
- const srcEntry = e.replace('dist/', 'src/').replace(/\.js$/, '.ts').replace(/\.jsx$/, '.tsx');
145
- return [e, srcEntry];
146
- }
147
- return [e];
148
- });
149
- for (const pattern of [...entries, ...conventionalEntryPatterns()]) {
150
- const adjustedPattern = (relativeToRoot && !pattern.startsWith('/'))
151
- ? path.posix.join(relativeToRoot, pattern)
152
- : pattern;
153
- const expanded = expandEntryPatterns(allSourceFiles, rootDir, [adjustedPattern]);
154
- for (const e of expanded) {
155
- const normalized = path.normalize(e);
156
- if (isRoot && includeConventionalEntries) {
157
- entryPoints.add(normalized);
158
- }
159
- // Monorepo package entries are ALWAYS publicEntryPoints to protect their API
160
- publicEntryPoints.add(normalized);
161
- }
162
- }
163
- };
164
- // Root entries
165
- await addPatterns(rootDir, "", true);
166
- // Monorepo sub-package entries
167
- if (resolvedOptions.monorepo) {
168
- for (const pkg of resolvedOptions.monorepo.packageMap.values()) {
169
- const relativeToRoot = path.posix.relative(rootDir, pkg.location);
170
- await addPatterns(pkg.location, relativeToRoot, false);
171
- }
172
- }
173
- const findings = [];
174
- if (entryPoints.size === 0) {
175
- findings.push({
176
- rule: "no-entry-points",
177
- severity: "warning",
178
- confidence: "info",
179
- message: "No entry points found or configured. All files will be considered unreachable.",
180
- file: rootDir,
181
- evidence: {},
182
- });
183
- }
184
- const context = contextWithGraph(modules, entryPoints, resolvedOptions);
185
- context.publicEntryPoints = publicEntryPoints;
186
- context.semanticGraph = semanticGraph;
187
- context.symbolicContracts = new Map();
188
- // Gated Layer 2: Plugin-based Instruction Engine (Hardening)
189
- const pluginEngine = new PluginEngine();
190
- pluginEngine.register(ZodPlugin);
191
- pluginEngine.register(ReactPlugin);
192
- pluginEngine.register(NextjsPlugin);
193
- pluginEngine.register(NuxtPlugin);
194
- const pluginFindings = await pluginEngine.run(context);
195
- findings.push(...pluginFindings);
196
- // Headless Living Graph Engine: Initial Ingestion
197
- for (const module of modules.values()) {
198
- const fileNode = {
199
- id: SemanticGraph.generateLei(module.id, 'File'),
200
- contentHash: SemanticGraph.generateContentHash(module.sourceText),
201
- type: 'File',
202
- name: module.id,
203
- fileId: module.id,
204
- metadata: {},
205
- incomingReferences: [],
206
- outgoingReferences: []
207
- };
208
- semanticGraph.addNode(fileNode);
209
- }
210
- // Gated Layer 5: Schema Alignment
211
- if (hasFrameworkNodes || resolvedOptions.externalContracts?.length) {
212
- await analyzeLayer5(context);
213
- }
214
- // Gated Layer 6: Dependency & Boundary Engine
215
- if (hasMonorepo || allSourceFiles.some(f => f.endsWith('.d.ts'))) {
216
- const layer6Findings = await analyzeLayer6(context);
217
- findings.push(...layer6Findings);
218
- }
219
- // Layer 2: Control Flow Graph (CFG)
220
- const layer2Findings = analyzeLayer2(context);
221
- findings.push(...layer2Findings);
222
- // Phase 2: Layer 3 (Conditional Z3 SMT)
223
- if (!resolvedOptions.layers.skip3) {
224
- const layer3Findings = await analyzeLayer3(context);
225
- findings.push(...layer3Findings);
226
- }
227
- // Phase 3: Layer 4 (node:vm sandbox)
228
- if (!resolvedOptions.layers.skip4) {
229
- const layer4Findings = await analyzeLayer4(context);
230
- findings.push(...layer4Findings);
231
- }
232
- // Phase 4: Layer 7 (Non-Standard Entry & Implicit Binding Engine)
233
- const layer7Findings = await analyzeLayer7(context);
234
- findings.push(...layer7Findings);
235
- // Phase 5: Headless Living Graph Engine (Symbolic Evaluation)
236
- const symbolicFindings = await symbolicEngine.evaluateContracts(context);
237
- findings.push(...symbolicFindings);
238
- // Add parser and resolution findings after all layers had a chance to resolve them
239
- for (const module of modules.values()) {
240
- for (const diagnostic of module.parseDiagnostics) {
241
- findings.push({
242
- rule: "parse-recovery",
243
- severity: diagnostic.recovered ? "info" : "error",
244
- confidence: diagnostic.recovered ? "low" : "high",
245
- message: "Parse " + (diagnostic.recovered ? "recovered with errors" : "failed") + ": " + diagnostic.message,
246
- file: diagnostic.file,
247
- ...(diagnostic.location && { location: diagnostic.location }),
248
- evidence: {},
249
- });
250
- }
251
- for (const edge of module.edges) {
252
- if (edge.resolution === "unresolved") {
253
- findings.push({
254
- rule: "unresolved-import",
255
- severity: "warning",
256
- confidence: "high",
257
- message: "Unresolved import specifier: '" + edge.rawSpecifier + "'",
258
- file: edge.source,
259
- ...(edge.location && { location: edge.location }),
260
- evidence: {},
261
- });
262
- }
263
- if (edge.kind === "unknown-dynamic" && edge.resolution !== "resolved") {
264
- findings.push({
265
- rule: "unknown-dynamic-import",
266
- severity: "warning",
267
- confidence: "medium",
268
- message: "Unknown dynamic import pattern: '" + edge.rawSpecifier + "'. This may hide reachable code.",
269
- file: edge.source,
270
- ...(edge.location && { location: edge.location }),
271
- evidence: {},
272
- });
273
- }
274
- }
275
- }
276
- // Final Reporting Phase: Unused Exports & Unreachable Files
277
- if (resolvedOptions.reportUnusedExports) {
278
- const importUsage = buildImportUsage(modules);
279
- for (const module of modules.values()) {
280
- if (context.reachable.has(module.id) || context.maybeReachable.has(module.id)) {
281
- for (const exp of module.exports) {
282
- if (exp.isExternalContract)
283
- continue;
284
- const isExportUsed = context.usedExports.has(`${module.id}:${exp.exportedAs}`);
285
- let confidence = "high";
286
- if (context.maybeReachable.has(module.id))
287
- confidence = "medium";
288
- if (context.hasReachableUnknownDynamicBoundary)
289
- confidence = "low";
290
- if (context.hasReachableUnknownDynamicBoundary && isExportUsed)
291
- continue;
292
- let isEffectivelyUsed = isExportUsed;
293
- // PUBLIC ENTRY POINT & BARREL PROTECTION
294
- const visited = new Set();
295
- const checkPublicReachability = (moduleId) => {
296
- if (visited.has(moduleId))
297
- return false;
298
- visited.add(moduleId);
299
- if (publicEntryPoints.has(moduleId))
300
- return true;
301
- const usage = importUsage.get(moduleId);
302
- if (!usage || !usage.reExportOnly)
303
- return false;
304
- // If this module is only a re-exporter (Barrel), check if its consumers are public
305
- return Array.from(usage.consumers).some(c => checkPublicReachability(c));
306
- };
307
- if (checkPublicReachability(module.id)) {
308
- isEffectivelyUsed = true;
309
- }
310
- else if (isExportUsed) {
311
- const usage = importUsage.get(module.id);
312
- if (usage && usage.reExportOnly) {
313
- const deepVisited = new Set();
314
- const checkConsumer = (consumerId) => {
315
- if (deepVisited.has(consumerId))
316
- return false;
317
- deepVisited.add(consumerId);
318
- if (context.entryPoints.has(consumerId))
319
- return true;
320
- if (publicEntryPoints.has(consumerId))
321
- return true;
322
- const consumerUsage = importUsage.get(consumerId);
323
- if (!consumerUsage)
324
- return false;
325
- if (!consumerUsage.reExportOnly)
326
- return true;
327
- return Array.from(consumerUsage.consumers).some(c => checkConsumer(c));
328
- };
329
- const hasRealConsumer = Array.from(usage.consumers).some(c => checkConsumer(c));
330
- if (!hasRealConsumer) {
331
- isEffectivelyUsed = false;
332
- }
333
- }
334
- }
335
- if (!isEffectivelyUsed && exp.exportedAs !== "default" && exp.exportedAs !== "*") {
336
- findings.push({
337
- rule: "unused-export",
338
- severity: "warning",
339
- confidence: confidence,
340
- message: "Export '" + exp.exportedAs + "' is never imported or referenced.",
341
- file: module.id,
342
- ...(exp.location && { location: exp.location }),
343
- evidence: { exportName: exp.exportedAs },
344
- });
345
- }
346
- else if (isEffectivelyUsed && exp.members && exp.members.length > 0) {
347
- // Check for unused members
348
- for (const member of exp.members) {
349
- // We check both the internal name and the exported name
350
- const memberKey = `${module.id}:${exp.exportedAs}:${member.name}`;
351
- const internalKey = `${module.id}:${exp.name}:${member.name}`;
352
- if (!context.usedMembers.has(memberKey) && !context.usedMembers.has(internalKey)) {
353
- findings.push({
354
- rule: "unused-member",
355
- severity: "warning",
356
- confidence: confidence,
357
- message: `Member '${member.name}' of export '${exp.exportedAs}' is never referenced.`,
358
- file: module.id,
359
- ...(member.location && { location: member.location }),
360
- evidence: { exportName: exp.exportedAs, memberName: member.name },
361
- });
362
- }
363
- }
364
- }
365
- }
366
- }
367
- }
368
- }
369
- for (const module of modules.values()) {
370
- if (!context.reachable.has(module.id) && !context.maybeReachable.has(module.id)) {
371
- const fileComponent = context.components.find((c) => c.modules.includes(module.id));
372
- const isIsolatedComponent = fileComponent && !fileComponent.isReachable && !fileComponent.isMaybeReachable;
373
- findings.push({
374
- rule: "unreachable-file",
375
- severity: "warning",
376
- confidence: module.hasUnknownDynamicBoundary ? "medium" : "high",
377
- message: isIsolatedComponent
378
- ? `File is part of an isolated ${fileComponent.isCycle ? 'cycle' : 'component'} (#${fileComponent.id}) that is unreachable from any entry point.`
379
- : "File is not reachable from any entry point.",
380
- file: module.id,
381
- evidence: {
382
- entryPoints: [...context.entryPoints].map((p) => relativeDisplayPath(rootDir, p)),
383
- componentId: fileComponent?.id,
384
- componentSize: fileComponent?.modules.length,
385
- isCycle: fileComponent?.isCycle ?? false,
386
- },
387
- });
388
- }
389
- }
390
- const summary = {
391
- filesDiscovered: allSourceFiles.length,
392
- filesParsed,
393
- filesRecovered,
394
- filesFallback,
395
- edges: [...modules.values()].reduce((sum, module) => sum + module.edges.length, 0),
396
- entryPoints: entryPoints.size,
397
- stronglyConnectedComponents: context.components.length,
398
- cycles: context.components.filter((c) => c.isCycle).length,
399
- findings: findings.length,
400
- errors: findings.filter((f) => f.severity === "error").length,
401
- warnings: findings.filter((f) => f.severity === "warning").length,
402
- };
403
- return {
404
- version: VERSION,
405
- rootDir,
406
- entryPoints: [...entryPoints].map((p) => relativeDisplayPath(rootDir, p)),
407
- summary,
408
- findings: findings.sort((a, b) => {
409
- if (a.file !== b.file)
410
- return a.file.localeCompare(b.file);
411
- if (a.location && b.location) {
412
- if (a.location.start.line !== b.location.start.line)
413
- return a.location.start.line - b.location.start.line;
414
- return a.location.start.column - b.location.start.column;
415
- }
416
- return 0;
417
- }),
418
- modules: [...modules.values()].map((module) => ({
419
- path: relativeDisplayPath(rootDir, module.id),
420
- parseStatus: module.parseStatus,
421
- exports: module.exports.map((e) => ({
422
- name: e.name,
423
- exportedAs: e.exportedAs,
424
- isDefault: e.isDefault,
425
- isReExport: e.isReExport,
426
- isWildcard: e.isWildcard,
427
- isTypeOnly: e.isTypeOnly ?? false,
428
- isExternalContract: e.isExternalContract ?? false,
429
- })),
430
- edges: module.edges.map((edge) => ({
431
- kind: edge.kind,
432
- specifier: edge.rawSpecifier,
433
- ...(edge.target && { target: relativeDisplayPath(rootDir, edge.target) }),
434
- resolution: edge.resolution,
435
- })),
436
- })),
437
- components: context.components.map((c) => ({
438
- id: c.id,
439
- modules: c.modules.map((m) => relativeDisplayPath(rootDir, m)),
440
- isCycle: c.isCycle,
441
- })),
442
- };
443
- }
444
- export function shouldFail(report, failOn) {
445
- if (failOn === "none") {
446
- return false;
447
- }
448
- const failThreshold = CONFIDENCE_RANK[failOn];
449
- return report.findings.some((f) => CONFIDENCE_RANK[f.confidence] >= failThreshold);
450
- }
451
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Instruments code for concolic execution using yuku-parser and yuku-codegen.
3
- * It injects tracing hooks around conditional branches and function calls.
4
- */
5
- export declare function instrumentCode(code: string, filename: string): string | null;
@@ -1,108 +0,0 @@
1
- import { parse as yukuParse, langFromPath, sourceTypeFromPath } from "yuku-parser";
2
- import { print as yukuPrint } from "yuku-codegen";
3
- import { walk as yukuWalk } from "yuku-ast";
4
- /**
5
- * Instruments code for concolic execution using yuku-parser and yuku-codegen.
6
- * It injects tracing hooks around conditional branches and function calls.
7
- */
8
- export function instrumentCode(code, filename) {
9
- try {
10
- const lang = langFromPath(filename) ?? "tsx";
11
- const sourceType = sourceTypeFromPath(filename) ?? "module";
12
- const result = yukuParse(code, { lang, sourceType });
13
- const ast = result.program;
14
- const coverageVariable = "__coverage__";
15
- // Helper to get line number from byte offset
16
- const getLine = (offset) => {
17
- const before = code.slice(0, Math.max(0, offset));
18
- return before.split("\n").length;
19
- };
20
- // Helper to create AST nodes (ESTree compatible)
21
- const createLiteral = (val) => ({ type: "Literal", value: val, raw: JSON.stringify(val) });
22
- const createIdentifier = (name) => ({ type: "Identifier", name });
23
- const createMemberExpression = (obj, prop) => ({ type: "MemberExpression", object: obj, property: prop, computed: false });
24
- const createCallExpression = (callee, args) => ({ type: "CallExpression", callee, arguments: args });
25
- const createExpressionStatement = (exp) => ({ type: "ExpressionStatement", expression: exp });
26
- // Mark injected nodes to avoid re-instrumentation
27
- const markInjected = (node) => {
28
- if (node && node.type === "CallExpression") {
29
- node.callee._concolicInstrumented = true;
30
- }
31
- return node;
32
- };
33
- // 1. Initialize coverage at program start
34
- const initCoverage = createExpressionStatement(markInjected(createCallExpression(createMemberExpression(createIdentifier(coverageVariable), createIdentifier("init")), [createLiteral(filename)])));
35
- ast.body.unshift(initCoverage);
36
- // 2. Traverse and instrument
37
- yukuWalk(ast, {
38
- enter: (node, parent) => {
39
- // Avoid re-instrumenting our own injected calls
40
- if (node.type === "CallExpression" && node.callee?._concolicInstrumented) {
41
- return;
42
- }
43
- const line = getLine(node.start);
44
- // Instrument IfStatement
45
- if (node.type === "IfStatement") {
46
- const traceCall = markInjected(createCallExpression(createMemberExpression(createIdentifier(coverageVariable), createIdentifier("traceBranch")), [createLiteral(filename), createLiteral(line), node.test]));
47
- // Wrap test with sequence expression: (traceBranch(...), originalTest)
48
- node.test = {
49
- type: "SequenceExpression",
50
- expressions: [traceCall, node.test]
51
- };
52
- }
53
- // Instrument Functions
54
- if (node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") {
55
- const functionName = node.id?.name || "anonymous";
56
- const traceCall = createExpressionStatement(markInjected(createCallExpression(createMemberExpression(createIdentifier(coverageVariable), createIdentifier("traceFunction")), [createLiteral(filename), createLiteral(line), createLiteral(functionName)])));
57
- if (node.body.type === "BlockStatement") {
58
- node.body.body.unshift(traceCall);
59
- }
60
- else {
61
- // Arrow function with implicit return: () => expr -> () => { trace(); return expr; }
62
- node.body = {
63
- type: "BlockStatement",
64
- body: [
65
- traceCall,
66
- { type: "ReturnStatement", argument: node.body }
67
- ]
68
- };
69
- }
70
- }
71
- // Instrument CallExpression
72
- if (node.type === "CallExpression" && !(node.callee?._concolicInstrumented)) {
73
- const calleeName = node.callee.type === "Identifier" ? node.callee.name : "unknown";
74
- const tracedCall = markInjected(createCallExpression(createMemberExpression(createIdentifier(coverageVariable), createIdentifier("traceAndExecuteCall")), [
75
- createLiteral(filename),
76
- createLiteral(line),
77
- createLiteral(calleeName),
78
- node.callee,
79
- { type: "ArrayExpression", elements: node.arguments }
80
- ]));
81
- // We need to replace the node in the parent.
82
- if (parent) {
83
- for (const key in parent) {
84
- if (parent[key] === node) {
85
- parent[key] = tracedCall;
86
- break;
87
- }
88
- else if (Array.isArray(parent[key])) {
89
- const idx = parent[key].indexOf(node);
90
- if (idx !== -1) {
91
- parent[key][idx] = tracedCall;
92
- break;
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- });
100
- const output = yukuPrint(ast);
101
- return output.code;
102
- }
103
- catch (err) {
104
- console.error(`[Instrumentation] Failed to instrument ${filename}:`, err);
105
- return null;
106
- }
107
- }
108
- //# sourceMappingURL=instrument.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
package/dist/layer2.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { AnalysisContext, Finding } from "./types.js";
2
- /**
3
- * Layer 2: Control Flow Graph (CFG) & Type-Based Abstract Interpretation
4
- * Detects unreachable code within functions and modules.
5
- */
6
- export declare function analyzeLayer2(context: AnalysisContext): Finding[];