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.
- package/README.md +52 -22
- package/bin/runner.js +26 -0
- package/package.json +10 -37
- package/dist/ast-utils.d.ts +0 -149
- package/dist/ast-utils.js +0 -36
- package/dist/ast-utils.js.map +0 -1
- package/dist/cache.d.ts +0 -14
- package/dist/cache.js +0 -36
- package/dist/cache.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -68
- package/dist/cli.js.map +0 -1
- package/dist/config-loader.d.ts +0 -4
- package/dist/config-loader.js +0 -84
- package/dist/config-loader.js.map +0 -1
- package/dist/coverage-tracker.d.ts +0 -39
- package/dist/coverage-tracker.js +0 -61
- package/dist/coverage-tracker.js.map +0 -1
- package/dist/engine.d.ts +0 -17
- package/dist/engine.js +0 -215
- package/dist/engine.js.map +0 -1
- package/dist/framework-plugins.d.ts +0 -16
- package/dist/framework-plugins.js +0 -127
- package/dist/framework-plugins.js.map +0 -1
- package/dist/fs-utils.d.ts +0 -32
- package/dist/fs-utils.js +0 -415
- package/dist/fs-utils.js.map +0 -1
- package/dist/graph.d.ts +0 -42
- package/dist/graph.js +0 -583
- package/dist/graph.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -451
- package/dist/index.js.map +0 -1
- package/dist/instrument.d.ts +0 -5
- package/dist/instrument.js +0 -108
- package/dist/instrument.js.map +0 -1
- package/dist/layer2.d.ts +0 -6
- package/dist/layer2.js +0 -224
- package/dist/layer2.js.map +0 -1
- package/dist/layer3.d.ts +0 -7
- package/dist/layer3.js +0 -346
- package/dist/layer3.js.map +0 -1
- package/dist/layer4.d.ts +0 -8
- package/dist/layer4.js +0 -627
- package/dist/layer4.js.map +0 -1
- package/dist/layer5.d.ts +0 -6
- package/dist/layer5.js +0 -141
- package/dist/layer5.js.map +0 -1
- package/dist/layer6.d.ts +0 -26
- package/dist/layer6.js +0 -268
- package/dist/layer6.js.map +0 -1
- package/dist/layer7.d.ts +0 -28
- package/dist/layer7.js +0 -267
- package/dist/layer7.js.map +0 -1
- package/dist/parser.d.ts +0 -20
- package/dist/parser.js +0 -832
- package/dist/parser.js.map +0 -1
- package/dist/plugins/angular-plugin.d.ts +0 -7
- package/dist/plugins/angular-plugin.js +0 -60
- package/dist/plugins/angular-plugin.js.map +0 -1
- package/dist/plugins/astro-plugin.d.ts +0 -7
- package/dist/plugins/astro-plugin.js +0 -88
- package/dist/plugins/astro-plugin.js.map +0 -1
- package/dist/plugins/babel-plugin.d.ts +0 -8
- package/dist/plugins/babel-plugin.js +0 -132
- package/dist/plugins/babel-plugin.js.map +0 -1
- package/dist/plugins/esbuild-plugin.d.ts +0 -8
- package/dist/plugins/esbuild-plugin.js +0 -121
- package/dist/plugins/esbuild-plugin.js.map +0 -1
- package/dist/plugins/nestjs-plugin.d.ts +0 -7
- package/dist/plugins/nestjs-plugin.js +0 -69
- package/dist/plugins/nestjs-plugin.js.map +0 -1
- package/dist/plugins/nextjs-plugin.d.ts +0 -7
- package/dist/plugins/nextjs-plugin.js +0 -66
- package/dist/plugins/nextjs-plugin.js.map +0 -1
- package/dist/plugins/nuxtjs-plugin.d.ts +0 -7
- package/dist/plugins/nuxtjs-plugin.js +0 -80
- package/dist/plugins/nuxtjs-plugin.js.map +0 -1
- package/dist/plugins/svelte-plugin.d.ts +0 -7
- package/dist/plugins/svelte-plugin.js +0 -38
- package/dist/plugins/svelte-plugin.js.map +0 -1
- package/dist/plugins/vuejs-plugin.d.ts +0 -7
- package/dist/plugins/vuejs-plugin.js +0 -63
- package/dist/plugins/vuejs-plugin.js.map +0 -1
- package/dist/reporters.d.ts +0 -3
- package/dist/reporters.js +0 -75
- package/dist/reporters.js.map +0 -1
- package/dist/semantic-graph.d.ts +0 -44
- package/dist/semantic-graph.js +0 -88
- package/dist/semantic-graph.js.map +0 -1
- package/dist/symbolic-engine.d.ts +0 -19
- package/dist/symbolic-engine.js +0 -51
- package/dist/symbolic-engine.js.map +0 -1
- package/dist/topology-manager.d.ts +0 -23
- package/dist/topology-manager.js +0 -144
- package/dist/topology-manager.js.map +0 -1
- package/dist/types.d.ts +0 -265
- package/dist/types.js +0 -11
- package/dist/types.js.map +0 -1
- package/dist/workspace.d.ts +0 -6
- package/dist/workspace.js +0 -105
- package/dist/workspace.js.map +0 -1
package/dist/graph.js
DELETED
|
@@ -1,583 +0,0 @@
|
|
|
1
|
-
import path from "pathe";
|
|
2
|
-
import { resolveDynamicPattern, resolveLocalSpecifier } from "./fs-utils.js";
|
|
3
|
-
import { walkAst } from "./parser.js";
|
|
4
|
-
function dynamicParts(rawSpecifier) {
|
|
5
|
-
const marker = "${…}";
|
|
6
|
-
const index = rawSpecifier.indexOf(marker);
|
|
7
|
-
if (index < 0) {
|
|
8
|
-
return undefined;
|
|
9
|
-
}
|
|
10
|
-
return {
|
|
11
|
-
prefix: rawSpecifier.slice(0, index),
|
|
12
|
-
suffix: rawSpecifier.slice(index + marker.length),
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
function resolveEdge(edge, source, knownFiles, options) {
|
|
16
|
-
if (edge.kind === "unknown-dynamic") {
|
|
17
|
-
edge.resolution = "unknown";
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
if (edge.kind === "dynamic-pattern") {
|
|
21
|
-
const parts = edge.dynamicPattern || dynamicParts(edge.rawSpecifier);
|
|
22
|
-
if (!parts) {
|
|
23
|
-
edge.resolution = "unknown";
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const candidates = resolveDynamicPattern(source.id, parts.prefix, parts.suffix, knownFiles);
|
|
27
|
-
const baseDirectory = path.resolve(path.dirname(source.id), parts.prefix || ".");
|
|
28
|
-
edge.dynamicPattern = {
|
|
29
|
-
prefix: parts.prefix,
|
|
30
|
-
suffix: parts.suffix,
|
|
31
|
-
baseDirectory,
|
|
32
|
-
candidates,
|
|
33
|
-
};
|
|
34
|
-
edge.resolution = candidates.length > 0 ? "resolved" : "unresolved";
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
// 1. Try local resolution
|
|
38
|
-
let target = resolveLocalSpecifier(source.id, edge.rawSpecifier, knownFiles, options.extensions);
|
|
39
|
-
if (edge.rawSpecifier.startsWith(".")) {
|
|
40
|
-
// console.log("Resolving " + edge.rawSpecifier + " from " + source.id + " -> " + target);
|
|
41
|
-
}
|
|
42
|
-
// 2. Try tsconfig path aliases
|
|
43
|
-
if (!target && options.pathAliases.size > 0) {
|
|
44
|
-
for (const [alias, targets] of options.pathAliases.entries()) {
|
|
45
|
-
const aliasPattern = alias.replace(/\*/g, "(.*)");
|
|
46
|
-
const matcher = new RegExp(`^${aliasPattern}$`);
|
|
47
|
-
const match = edge.rawSpecifier.match(matcher);
|
|
48
|
-
if (match) {
|
|
49
|
-
for (const targetPattern of targets) {
|
|
50
|
-
const resolvedSpecifier = targetPattern.replace(/\*/g, match[1] || "");
|
|
51
|
-
const absoluteTarget = path.resolve(options.rootDir, options.baseUrl || ".", resolvedSpecifier);
|
|
52
|
-
target = resolveLocalSpecifier(source.id, absoluteTarget, knownFiles, options.extensions);
|
|
53
|
-
if (target)
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (target)
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// 3. Try baseUrl resolution (non-relative imports)
|
|
62
|
-
if (!target && options.baseUrl && !edge.rawSpecifier.startsWith(".") && !path.isAbsolute(edge.rawSpecifier)) {
|
|
63
|
-
const absoluteTarget = path.resolve(options.rootDir, options.baseUrl, edge.rawSpecifier);
|
|
64
|
-
target = resolveLocalSpecifier(source.id, absoluteTarget, knownFiles, options.extensions);
|
|
65
|
-
}
|
|
66
|
-
// 4. Try Monorepo Workspace resolution
|
|
67
|
-
if (!target && options.monorepo) {
|
|
68
|
-
// Check if the specifier starts with a workspace package name
|
|
69
|
-
for (const [pkgName, pkg] of options.monorepo.packageMap.entries()) {
|
|
70
|
-
if (edge.rawSpecifier === pkgName || edge.rawSpecifier.startsWith(pkgName + '/')) {
|
|
71
|
-
// Resolve to the package's entry point (main/exports)
|
|
72
|
-
// For simplicity, we assume index.ts/js in the package root or src
|
|
73
|
-
const subPath = edge.rawSpecifier.slice(pkgName.length);
|
|
74
|
-
const pkgRoot = pkg.location;
|
|
75
|
-
// Try common entry points if it's just the package name
|
|
76
|
-
if (!subPath || subPath === '/') {
|
|
77
|
-
const entries = ['src/index.ts', 'src/index.js', 'index.ts', 'index.js'];
|
|
78
|
-
for (const e of entries) {
|
|
79
|
-
const entryPath = path.join(pkgRoot, e);
|
|
80
|
-
if (knownFiles.has(entryPath)) {
|
|
81
|
-
target = entryPath;
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
// Try resolving the sub-path
|
|
88
|
-
target = resolveLocalSpecifier(path.join(pkgRoot, 'package.json'), '.' + subPath, knownFiles, options.extensions);
|
|
89
|
-
}
|
|
90
|
-
if (target)
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (target) {
|
|
96
|
-
edge.target = target;
|
|
97
|
-
edge.resolution = "resolved";
|
|
98
|
-
}
|
|
99
|
-
else if (edge.rawSpecifier.startsWith(".") || edge.rawSpecifier.startsWith("/") || edge.rawSpecifier.startsWith("file:")) {
|
|
100
|
-
edge.resolution = "unresolved";
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
edge.resolution = "external";
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
export function resolveDependencies(modules, options) {
|
|
107
|
-
const knownFiles = new Set(modules.keys());
|
|
108
|
-
for (const module of modules.values()) {
|
|
109
|
-
for (const edge of module.edges) {
|
|
110
|
-
resolveEdge(edge, module, knownFiles, options);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export function edgeTargets(edge) {
|
|
115
|
-
if (edge.target) {
|
|
116
|
-
return [edge.target];
|
|
117
|
-
}
|
|
118
|
-
return edge.dynamicPattern?.candidates ?? [];
|
|
119
|
-
}
|
|
120
|
-
function adjacencyFor(modules, moduleId) {
|
|
121
|
-
const module = modules.get(moduleId);
|
|
122
|
-
if (!module) {
|
|
123
|
-
return [];
|
|
124
|
-
}
|
|
125
|
-
return module.edges.flatMap(edgeTargets).filter((target) => modules.has(target));
|
|
126
|
-
}
|
|
127
|
-
function reverseAdjacency(modules) {
|
|
128
|
-
const reverse = new Map();
|
|
129
|
-
for (const moduleId of modules.keys()) {
|
|
130
|
-
reverse.set(moduleId, []);
|
|
131
|
-
}
|
|
132
|
-
for (const module of modules.values()) {
|
|
133
|
-
for (const target of module.edges.flatMap(edgeTargets)) {
|
|
134
|
-
const reverseTargets = reverse.get(target);
|
|
135
|
-
if (reverseTargets) {
|
|
136
|
-
reverseTargets.push(module.id);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return reverse;
|
|
141
|
-
}
|
|
142
|
-
/** Kosaraju with explicit stacks avoids stack overflows on deep graphs and cycles. */
|
|
143
|
-
export function stronglyConnectedComponents(modules) {
|
|
144
|
-
const visited = new Set();
|
|
145
|
-
const finishOrder = [];
|
|
146
|
-
for (const root of modules.keys()) {
|
|
147
|
-
if (visited.has(root)) {
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
const stack = [];
|
|
151
|
-
visited.add(root);
|
|
152
|
-
stack.push({ moduleId: root, nextIndex: 0, neighbors: adjacencyFor(modules, root) });
|
|
153
|
-
while (stack.length > 0) {
|
|
154
|
-
const frame = stack[stack.length - 1];
|
|
155
|
-
if (!frame) {
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
if (frame.nextIndex < frame.neighbors.length) {
|
|
159
|
-
const neighbor = frame.neighbors[frame.nextIndex];
|
|
160
|
-
frame.nextIndex += 1;
|
|
161
|
-
if (neighbor && !visited.has(neighbor)) {
|
|
162
|
-
visited.add(neighbor);
|
|
163
|
-
stack.push({ moduleId: neighbor, nextIndex: 0, neighbors: adjacencyFor(modules, neighbor) });
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
finishOrder.push(frame.moduleId);
|
|
168
|
-
stack.pop();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
const reverse = reverseAdjacency(modules);
|
|
173
|
-
const assigned = new Set();
|
|
174
|
-
const components = [];
|
|
175
|
-
while (finishOrder.length > 0) {
|
|
176
|
-
const root = finishOrder.pop();
|
|
177
|
-
if (!root || assigned.has(root)) {
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
const members = [];
|
|
181
|
-
const stack = [root];
|
|
182
|
-
assigned.add(root);
|
|
183
|
-
while (stack.length > 0) {
|
|
184
|
-
const current = stack.pop();
|
|
185
|
-
if (!current) {
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
members.push(current);
|
|
189
|
-
for (const neighbor of reverse.get(current) ?? []) {
|
|
190
|
-
if (!assigned.has(neighbor)) {
|
|
191
|
-
assigned.add(neighbor);
|
|
192
|
-
stack.push(neighbor);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
members.sort((left, right) => left.localeCompare(right));
|
|
197
|
-
const selfLoop = members.length === 1 && adjacencyFor(modules, members[0] ?? "").includes(members[0] ?? "");
|
|
198
|
-
components.push({
|
|
199
|
-
id: components.length,
|
|
200
|
-
modules: members,
|
|
201
|
-
isCycle: members.length > 1 || selfLoop,
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
return components;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Traverse the graph iteratively. Pattern imports and edges extracted from malformed files
|
|
208
|
-
* propagate `maybe` reachability. A reachable completely unknown dynamic boundary makes every
|
|
209
|
-
* project module only maybe-reachable, preventing unsafe unreachable-file claims.
|
|
210
|
-
*/
|
|
211
|
-
export function calculateReachability(modules, entryPoints) {
|
|
212
|
-
const reachable = new Set();
|
|
213
|
-
const maybeReachable = new Set();
|
|
214
|
-
const queue = [...entryPoints].map((moduleId) => ({ moduleId, certainty: "exact" }));
|
|
215
|
-
let cursor = 0;
|
|
216
|
-
let hasReachableUnknownDynamicBoundary = false;
|
|
217
|
-
while (cursor < queue.length) {
|
|
218
|
-
const current = queue[cursor];
|
|
219
|
-
cursor += 1;
|
|
220
|
-
if (!current || !modules.has(current.moduleId)) {
|
|
221
|
-
continue;
|
|
222
|
-
}
|
|
223
|
-
if (current.certainty === "exact") {
|
|
224
|
-
if (reachable.has(current.moduleId)) {
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
reachable.add(current.moduleId);
|
|
228
|
-
maybeReachable.delete(current.moduleId);
|
|
229
|
-
}
|
|
230
|
-
else if (reachable.has(current.moduleId) || maybeReachable.has(current.moduleId)) {
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
maybeReachable.add(current.moduleId);
|
|
235
|
-
}
|
|
236
|
-
const module = modules.get(current.moduleId);
|
|
237
|
-
if (!module) {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
if (module.hasUnknownDynamicBoundary) {
|
|
241
|
-
hasReachableUnknownDynamicBoundary = true;
|
|
242
|
-
}
|
|
243
|
-
for (const edge of module.edges) {
|
|
244
|
-
// Type-only imports DO contribute to file reachability, but not necessarily runtime usage
|
|
245
|
-
// The `isTypeOnly` flag is preserved on the edge for later analysis.
|
|
246
|
-
// If a module has a parse error, we treat its edges as "maybe" because the AST might be incomplete.
|
|
247
|
-
const edgeIsMaybe = edge.kind === "dynamic-pattern" || module.hasParseError;
|
|
248
|
-
const childCertainty = current.certainty === "maybe" || edgeIsMaybe ? "maybe" : "exact";
|
|
249
|
-
for (const target of edgeTargets(edge)) {
|
|
250
|
-
queue.push({ moduleId: target, certainty: childCertainty });
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
// Generic Dynamic Discovery:
|
|
255
|
-
// If a reachable module scans a directory (readdir) and also has dynamic import patterns,
|
|
256
|
-
// we assume it's a plugin loader and mark all files in that directory as maybe-reachable.
|
|
257
|
-
for (const module of modules.values()) {
|
|
258
|
-
if (reachable.has(module.id)) {
|
|
259
|
-
const hasDynamicPatterns = module.edges.some(e => e.kind === "dynamic-pattern" || e.kind === "unknown-dynamic");
|
|
260
|
-
const hasScannedDirs = module.scannedDirectories && module.scannedDirectories.length > 0;
|
|
261
|
-
if (hasDynamicPatterns && (hasScannedDirs || module.hasUnknownDynamicBoundary)) {
|
|
262
|
-
if (hasScannedDirs) {
|
|
263
|
-
for (const dir of module.scannedDirectories) {
|
|
264
|
-
// Resolve the scanned directory relative to the module
|
|
265
|
-
const absoluteDir = path.resolve(path.dirname(module.id), dir);
|
|
266
|
-
for (const candidate of modules.keys()) {
|
|
267
|
-
if (!reachable.has(candidate) && !maybeReachable.has(candidate)) {
|
|
268
|
-
if (candidate.startsWith(absoluteDir)) {
|
|
269
|
-
maybeReachable.add(candidate);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
// If we have an unknown dynamic boundary (like a variable readdir or unknown import),
|
|
276
|
-
// we must be conservative to ensure "World Peace" and not flag unreachable files
|
|
277
|
-
// that might be part of this dynamic system.
|
|
278
|
-
if (module.hasUnknownDynamicBoundary) {
|
|
279
|
-
hasReachableUnknownDynamicBoundary = true;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
if (hasReachableUnknownDynamicBoundary) {
|
|
285
|
-
for (const moduleId of modules.keys()) {
|
|
286
|
-
if (!reachable.has(moduleId)) {
|
|
287
|
-
maybeReachable.add(moduleId);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return { reachable, maybeReachable, hasReachableUnknownDynamicBoundary };
|
|
292
|
-
}
|
|
293
|
-
export function buildImportUsage(modules) {
|
|
294
|
-
const usage = new Map();
|
|
295
|
-
for (const module of modules.values()) {
|
|
296
|
-
// Member Access Tracking within the module
|
|
297
|
-
const localMemberAccess = new Map();
|
|
298
|
-
if (module.ast) {
|
|
299
|
-
walkAst(module.ast, (node, stack) => {
|
|
300
|
-
// 1. Track Member Expressions (e.g., Status.Active, user.id)
|
|
301
|
-
if (node.type === "MemberExpression" && node.object.type === "Identifier" && !node.computed) {
|
|
302
|
-
const objectName = node.object.name;
|
|
303
|
-
const propertyName = node.property.name || node.property.value;
|
|
304
|
-
if (propertyName) {
|
|
305
|
-
// Track direct access (Status.Active)
|
|
306
|
-
if (!localMemberAccess.has(objectName))
|
|
307
|
-
localMemberAccess.set(objectName, new Set());
|
|
308
|
-
localMemberAccess.get(objectName).add(propertyName);
|
|
309
|
-
// Track type-aware access (user.id where user is of type User)
|
|
310
|
-
const typeName = module.localTypeMap?.[objectName];
|
|
311
|
-
if (typeName) {
|
|
312
|
-
if (!localMemberAccess.has(typeName))
|
|
313
|
-
localMemberAccess.set(typeName, new Set());
|
|
314
|
-
localMemberAccess.get(typeName).add(propertyName);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
for (const edge of module.edges) {
|
|
321
|
-
for (const target of edgeTargets(edge)) {
|
|
322
|
-
const current = usage.get(target) ?? {
|
|
323
|
-
consumers: new Set(),
|
|
324
|
-
names: new Set(),
|
|
325
|
-
memberAccess: new Map(),
|
|
326
|
-
wildcard: false,
|
|
327
|
-
reExportOnly: true
|
|
328
|
-
};
|
|
329
|
-
current.consumers.add(module.id);
|
|
330
|
-
const isReExport = edge.kind === "export-all" || edge.kind === "export-from";
|
|
331
|
-
if (!isReExport) {
|
|
332
|
-
current.reExportOnly = false;
|
|
333
|
-
}
|
|
334
|
-
for (const name of edge.importedNames) {
|
|
335
|
-
current.names.add(name);
|
|
336
|
-
if (name === "*") {
|
|
337
|
-
current.wildcard = true;
|
|
338
|
-
}
|
|
339
|
-
// Map local member access to the imported name
|
|
340
|
-
const accessed = localMemberAccess.get(name);
|
|
341
|
-
if (accessed) {
|
|
342
|
-
if (!current.memberAccess.has(name))
|
|
343
|
-
current.memberAccess.set(name, new Set());
|
|
344
|
-
for (const m of accessed)
|
|
345
|
-
current.memberAccess.get(name).add(m);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
if (edge.kind === "dynamic-pattern") {
|
|
349
|
-
current.wildcard = true;
|
|
350
|
-
}
|
|
351
|
-
usage.set(target, current);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
// Mark exports as used if they are referenced locally within the module
|
|
355
|
-
for (const exportRecord of module.exports) {
|
|
356
|
-
if (module.localReferences && module.localReferences.includes(exportRecord.name)) {
|
|
357
|
-
const current = usage.get(module.id) ?? {
|
|
358
|
-
consumers: new Set(),
|
|
359
|
-
names: new Set(),
|
|
360
|
-
memberAccess: new Map(),
|
|
361
|
-
wildcard: false,
|
|
362
|
-
reExportOnly: true
|
|
363
|
-
};
|
|
364
|
-
current.names.add(exportRecord.exportedAs);
|
|
365
|
-
// We don't set reExportOnly = false here because local usage
|
|
366
|
-
// within an entry point shouldn't protect OTHER exports in the same file.
|
|
367
|
-
// The export is already marked as used via current.names.add().
|
|
368
|
-
usage.set(module.id, current);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
return usage;
|
|
373
|
-
}
|
|
374
|
-
export function buildUsedExports(modules) {
|
|
375
|
-
const usedExports = new Set();
|
|
376
|
-
const usedMembers = new Set();
|
|
377
|
-
const importUsage = buildImportUsage(modules);
|
|
378
|
-
// 1. Initial pass: Mark exports used by non-re-export imports
|
|
379
|
-
// and resolve explicit re-exports (export { x } from 'mod')
|
|
380
|
-
const worklist = [];
|
|
381
|
-
for (const [moduleId, usage] of importUsage.entries()) {
|
|
382
|
-
const module = modules.get(moduleId);
|
|
383
|
-
if (!module)
|
|
384
|
-
continue;
|
|
385
|
-
for (const exp of module.exports) {
|
|
386
|
-
if (exp.isExternalContract) {
|
|
387
|
-
usedExports.add(`${moduleId}:${exp.exportedAs}`);
|
|
388
|
-
continue;
|
|
389
|
-
}
|
|
390
|
-
// If it's a direct import (not a re-export)
|
|
391
|
-
if (!usage.reExportOnly) {
|
|
392
|
-
const isRequested = usage.wildcard || usage.names.has(exp.exportedAs) || (exp.isDefault && usage.names.has('default'));
|
|
393
|
-
if (isRequested) {
|
|
394
|
-
if (!usedExports.has(`${moduleId}:${exp.exportedAs}`)) {
|
|
395
|
-
usedExports.add(`${moduleId}:${exp.exportedAs}`);
|
|
396
|
-
worklist.push({ moduleId, name: exp.exportedAs });
|
|
397
|
-
}
|
|
398
|
-
// Track member access
|
|
399
|
-
const accessed = usage.memberAccess.get(exp.exportedAs);
|
|
400
|
-
if (accessed) {
|
|
401
|
-
for (const m of accessed) {
|
|
402
|
-
usedMembers.add(`${moduleId}:${exp.exportedAs}:${m}`);
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
// 2. Propagation pass: Follow re-export chains
|
|
410
|
-
// This handles: App -> Barrel (export * from 'Lib') -> Lib
|
|
411
|
-
let changed = true;
|
|
412
|
-
while (changed) {
|
|
413
|
-
changed = false;
|
|
414
|
-
for (const module of modules.values()) {
|
|
415
|
-
for (const edge of module.edges) {
|
|
416
|
-
if (edge.kind === 'export-all' || edge.kind === 'export-from') {
|
|
417
|
-
for (const targetId of edgeTargets(edge)) {
|
|
418
|
-
const targetModule = modules.get(targetId);
|
|
419
|
-
if (!targetModule)
|
|
420
|
-
continue;
|
|
421
|
-
// If someone uses an export from 'module', and 'module' re-exports it from 'targetModule'
|
|
422
|
-
const moduleUsage = importUsage.get(module.id);
|
|
423
|
-
if (!moduleUsage)
|
|
424
|
-
continue;
|
|
425
|
-
for (const exp of targetModule.exports) {
|
|
426
|
-
const exportKey = `${targetId}:${exp.exportedAs}`;
|
|
427
|
-
if (usedExports.has(exportKey))
|
|
428
|
-
continue;
|
|
429
|
-
let isUsedViaReExport = false;
|
|
430
|
-
if (edge.kind === 'export-all') {
|
|
431
|
-
// PRECISION FIX: Only mark this specific export as used if it's actually requested from the barrel
|
|
432
|
-
const isRequested = moduleUsage.wildcard || moduleUsage.names.has(exp.exportedAs);
|
|
433
|
-
// Also check if it's a default export being requested via a name (not common for export *)
|
|
434
|
-
const isDefaultRequested = exp.isDefault && moduleUsage.names.has('default');
|
|
435
|
-
if (isRequested || isDefaultRequested) {
|
|
436
|
-
isUsedViaReExport = true;
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
// DEEP ALIAS FIX for export *
|
|
440
|
-
// Check if any consumer of 'module' uses this name via wildcard or direct name
|
|
441
|
-
if (moduleUsage.wildcard || moduleUsage.names.has(exp.exportedAs)) {
|
|
442
|
-
isUsedViaReExport = true;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
else if (edge.kind === 'export-from') {
|
|
447
|
-
// Explicit re-export: export { x } from 'mod'
|
|
448
|
-
// edge.importedNames contains the names from 'targetModule'
|
|
449
|
-
// We need to see if the corresponding exported name in 'module' is used
|
|
450
|
-
for (const edgeImportName of edge.importedNames) {
|
|
451
|
-
if (edgeImportName === exp.exportedAs || (exp.isDefault && edgeImportName === 'default')) {
|
|
452
|
-
// Find the name this is exported as in 'module'
|
|
453
|
-
const correspondingExport = module.exports.find(e => e.isReExport && e.name === edgeImportName);
|
|
454
|
-
if (correspondingExport) {
|
|
455
|
-
const exportKeyInModule = `${module.id}:${correspondingExport.exportedAs}`;
|
|
456
|
-
if (usedExports.has(exportKeyInModule)) {
|
|
457
|
-
isUsedViaReExport = true;
|
|
458
|
-
break;
|
|
459
|
-
}
|
|
460
|
-
// DEEP ALIAS FIX: If this re-export is itself re-exported further,
|
|
461
|
-
// the usage might be further down the chain.
|
|
462
|
-
// We check if any consumer of 'module' uses this specific exported name.
|
|
463
|
-
const moduleUsage = importUsage.get(module.id);
|
|
464
|
-
if (moduleUsage && (moduleUsage.wildcard || moduleUsage.names.has(correspondingExport.exportedAs))) {
|
|
465
|
-
isUsedViaReExport = true;
|
|
466
|
-
break;
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
if (isUsedViaReExport) {
|
|
473
|
-
usedExports.add(exportKey);
|
|
474
|
-
changed = true;
|
|
475
|
-
// PROPAGATE MEMBER ACCESS THROUGH RE-EXPORTS
|
|
476
|
-
const accessedInModule = moduleUsage.memberAccess.get(edge.kind === 'export-all' ? exp.exportedAs : (module.exports.find(e => e.isReExport && e.name === exp.exportedAs)?.exportedAs || ""));
|
|
477
|
-
if (accessedInModule) {
|
|
478
|
-
for (const m of accessedInModule) {
|
|
479
|
-
usedMembers.add(`${targetId}:${exp.exportedAs}:${m}`);
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
// 3. Local Symbol Propagation (Fix 3: TypeScript False Positives)
|
|
490
|
-
// This handles two things:
|
|
491
|
-
// A) If an export A is used, any local symbol B it references must also be used.
|
|
492
|
-
// B) INTERNAL REFERENCE FIX: Symbols used in top-level code (captured under "")
|
|
493
|
-
changed = true;
|
|
494
|
-
while (changed) {
|
|
495
|
-
changed = false;
|
|
496
|
-
for (const module of modules.values()) {
|
|
497
|
-
const localDeps = module.localSymbolMap || {};
|
|
498
|
-
// INTERNAL REFERENCE FIX: Symbols used in top-level code
|
|
499
|
-
const topLevelRefs = localDeps[""] || [];
|
|
500
|
-
for (const refName of topLevelRefs) {
|
|
501
|
-
const internalExport = module.exports.find(e => e.name === refName);
|
|
502
|
-
if (internalExport) {
|
|
503
|
-
const internalKey = `${module.id}:${internalExport.exportedAs}`;
|
|
504
|
-
if (!usedExports.has(internalKey)) {
|
|
505
|
-
usedExports.add(internalKey);
|
|
506
|
-
changed = true;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
for (const exp of module.exports) {
|
|
511
|
-
const exportKey = `${module.id}:${exp.exportedAs}`;
|
|
512
|
-
if (usedExports.has(exportKey)) {
|
|
513
|
-
const queue = [...(exp.localReferences || [])];
|
|
514
|
-
const visited = new Set();
|
|
515
|
-
while (queue.length > 0) {
|
|
516
|
-
const current = queue.shift();
|
|
517
|
-
if (!current || visited.has(current))
|
|
518
|
-
continue;
|
|
519
|
-
visited.add(current);
|
|
520
|
-
// If this local symbol is also an export (e.g. an Interface used as a type)
|
|
521
|
-
const internalExport = module.exports.find(e => e.name === current);
|
|
522
|
-
if (internalExport) {
|
|
523
|
-
const internalKey = `${module.id}:${internalExport.exportedAs}`;
|
|
524
|
-
if (!usedExports.has(internalKey)) {
|
|
525
|
-
usedExports.add(internalKey);
|
|
526
|
-
changed = true;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
// Propagate to symbols used by this symbol
|
|
530
|
-
const deps = localDeps[current];
|
|
531
|
-
if (Array.isArray(deps)) {
|
|
532
|
-
queue.push(...deps);
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
return { usedExports, usedMembers };
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Refines component reachability. A component is reachable if at least one of its
|
|
543
|
-
* modules is reachable from an entry point.
|
|
544
|
-
*/
|
|
545
|
-
/**
|
|
546
|
-
* Refines component reachability. A component is reachable if at least one of its
|
|
547
|
-
* modules is reachable from an entry point.
|
|
548
|
-
*/
|
|
549
|
-
export function calculateComponentReachability(components, reachable, maybeReachable) {
|
|
550
|
-
for (const comp of components) {
|
|
551
|
-
// A component is reachable if ANY of its modules are in the reachable set
|
|
552
|
-
comp.isReachable = comp.modules.some(m => reachable.has(m));
|
|
553
|
-
// A component is maybe reachable if ANY of its modules are in the maybeReachable set
|
|
554
|
-
// OR if it's not reachable but one of its modules is reachable via a maybe-path
|
|
555
|
-
comp.isMaybeReachable = comp.modules.some(m => maybeReachable.has(m));
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
export function buildGraph(modules, entryPoints, options) {
|
|
559
|
-
resolveDependencies(modules, options);
|
|
560
|
-
const components = stronglyConnectedComponents(modules);
|
|
561
|
-
const reachability = calculateReachability(modules, entryPoints);
|
|
562
|
-
// Apply SCC reachability check
|
|
563
|
-
calculateComponentReachability(components, reachability.reachable, reachability.maybeReachable);
|
|
564
|
-
const { usedExports, usedMembers } = buildUsedExports(modules);
|
|
565
|
-
return { components, ...reachability, usedExports, usedMembers };
|
|
566
|
-
}
|
|
567
|
-
export function contextWithGraph(modules, entryPoints, options) {
|
|
568
|
-
const graph = buildGraph(modules, entryPoints, options);
|
|
569
|
-
return {
|
|
570
|
-
options,
|
|
571
|
-
modules,
|
|
572
|
-
entryPoints,
|
|
573
|
-
reachable: graph.reachable,
|
|
574
|
-
maybeReachable: graph.maybeReachable,
|
|
575
|
-
hasReachableUnknownDynamicBoundary: graph.hasReachableUnknownDynamicBoundary,
|
|
576
|
-
components: graph.components,
|
|
577
|
-
usedExports: graph.usedExports,
|
|
578
|
-
usedMembers: graph.usedMembers,
|
|
579
|
-
candidateBranches: [],
|
|
580
|
-
dynamicImportCandidates: Array.from(modules.values()).flatMap(m => m.dynamicImportCandidates || []),
|
|
581
|
-
};
|
|
582
|
-
}
|
|
583
|
-
//# sourceMappingURL=graph.js.map
|
package/dist/graph.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED