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/fs-utils.js DELETED
@@ -1,415 +0,0 @@
1
- import { promises as fs } from "node:fs";
2
- import { normalize, resolve, dirname, extname, relative as patheRelative, isAbsolute, join, } from "pathe";
3
- const SOURCE_EXTENSION_ALIASES = new Map([
4
- [".js", [".ts", ".tsx", ".js", ".jsx"]],
5
- [".jsx", [".tsx", ".jsx"]],
6
- [".mjs", [".mts", ".mjs", ".ts", ".js"]],
7
- [".cjs", [".cts", ".cjs", ".ts", ".js"]],
8
- ]);
9
- export const DEFAULT_EXTENSIONS = [
10
- ".ts",
11
- ".tsx",
12
- ".mts",
13
- ".cts",
14
- ".js",
15
- ".jsx",
16
- ".mjs",
17
- ".cjs",
18
- ];
19
- export const DEFAULT_IGNORE = [
20
- "**/node_modules/**",
21
- "**/.git/**",
22
- "**/dist/**",
23
- "**/build/**",
24
- "**/coverage/**",
25
- "**/.next/**",
26
- "**/.turbo/**",
27
- "**/.cache/**",
28
- "**/vendor/**",
29
- ];
30
- export function normalizeCanonicalPath(filePath) {
31
- if (!filePath)
32
- return "";
33
- let posixPath = filePath.replace(/\\/g, "/");
34
- if (/^[a-z]:\//i.test(posixPath)) {
35
- posixPath = posixPath.charAt(0).toUpperCase() + posixPath.slice(1);
36
- }
37
- const normalized = normalize(posixPath);
38
- return normalized.length > 1 && normalized.endsWith("/")
39
- ? normalized.slice(0, -1)
40
- : normalized;
41
- }
42
- export function toPosix(value) {
43
- return normalizeCanonicalPath(value);
44
- }
45
- export function normalizeAbsolute(value) {
46
- return normalizeCanonicalPath(resolve(value));
47
- }
48
- export function pathInside(parent, candidate) {
49
- const p = normalizeCanonicalPath(parent);
50
- const c = normalizeCanonicalPath(candidate);
51
- const relPath = patheRelative(p, c);
52
- return relPath === "" || (!relPath.startsWith("..") && !isAbsolute(relPath));
53
- }
54
- function escapeRegex(value) {
55
- return value.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
56
- }
57
- export function globToRegExp(pattern) {
58
- let source = "^";
59
- const normalized = pattern.replace(/\\/g, "/");
60
- for (let index = 0; index < normalized.length; index += 1) {
61
- const char = normalized[index];
62
- const next = normalized[index + 1];
63
- if (char === "*" && next === "*") {
64
- const after = normalized[index + 2];
65
- if (after === "/") {
66
- source += "(?:.*/)?";
67
- index += 2;
68
- }
69
- else {
70
- source += ".*";
71
- index += 1;
72
- }
73
- }
74
- else if (char === "*") {
75
- source += "[^/]*";
76
- }
77
- else if (char === "?") {
78
- source += "[^/]";
79
- }
80
- else {
81
- source += escapeRegex(char ?? "");
82
- }
83
- }
84
- source += "$";
85
- return new RegExp(source);
86
- }
87
- export function compileGlobs(patterns) {
88
- return patterns.map(globToRegExp);
89
- }
90
- export function matchesAnyGlob(relativePath, compiledPatterns) {
91
- const normalized = toPosix(relativePath).replace(/^\.\//, "");
92
- return compiledPatterns.some((pattern) => pattern.test(normalized));
93
- }
94
- export async function fileExists(candidate) {
95
- try {
96
- const status = await fs.stat(candidate);
97
- return status.isFile();
98
- }
99
- catch {
100
- return false;
101
- }
102
- }
103
- export async function directoryExists(candidate) {
104
- try {
105
- const status = await fs.stat(candidate);
106
- return status.isDirectory();
107
- }
108
- catch {
109
- return false;
110
- }
111
- }
112
- export async function discoverSourceFiles(rootDir, extensions, compiledIgnorePatterns) {
113
- const discovered = [];
114
- const normalizedRoot = normalizeAbsolute(rootDir);
115
- async function walk(currentDirectory) {
116
- let entries;
117
- try {
118
- entries = await fs.readdir(currentDirectory, { encoding: "utf8", withFileTypes: true });
119
- }
120
- catch {
121
- return;
122
- }
123
- for (const entry of entries) {
124
- const absolute = join(currentDirectory, entry.name.toString());
125
- const relPath = toPosix(patheRelative(normalizedRoot, normalizeAbsolute(absolute)));
126
- const probe = entry.isDirectory() ? `${relPath}/` : relPath;
127
- if (matchesAnyGlob(probe, compiledIgnorePatterns)) {
128
- continue;
129
- }
130
- if (entry.isDirectory()) {
131
- await walk(absolute);
132
- }
133
- else if (entry.isFile() && extensions.includes(extname(entry.name.toString()))) {
134
- discovered.push(normalizeAbsolute(absolute));
135
- }
136
- }
137
- }
138
- await walk(normalizedRoot);
139
- return discovered.sort((left, right) => left.localeCompare(right));
140
- }
141
- export function isLikelyLocalSpecifier(specifier) {
142
- return (specifier.startsWith(".") ||
143
- specifier.startsWith("file:") ||
144
- isAbsolute(specifier));
145
- }
146
- export function removeQueryAndHash(specifier) {
147
- return specifier.replace(/[?#].*$/, "");
148
- }
149
- /**
150
- * Resolves an import specifier against a set of known files.
151
- * Handles .js -> .ts / .tsx extension mapping.
152
- */
153
- export function resolveLocalSpecifier(sourceFilePath, rawSpecifier, knownFiles, extensions = [".ts", ".tsx", ".js", ".jsx", ".json"]) {
154
- const cleaned = removeQueryAndHash(rawSpecifier);
155
- if (!isLikelyLocalSpecifier(cleaned)) {
156
- return undefined;
157
- }
158
- const sourceDir = dirname(normalizeCanonicalPath(sourceFilePath));
159
- const absoluteBasePath = normalizeCanonicalPath(resolve(sourceDir, cleaned));
160
- const existsInKnown = (p) => knownFiles instanceof Set ? knownFiles.has(p) : knownFiles.has(p);
161
- // Strategy A: Exact match
162
- if (existsInKnown(absoluteBasePath)) {
163
- return absoluteBasePath;
164
- }
165
- // Strategy B: Try extension aliases (.js -> .ts/.tsx)
166
- const baseExtension = extname(absoluteBasePath);
167
- if (baseExtension) {
168
- const aliases = SOURCE_EXTENSION_ALIASES.get(baseExtension);
169
- if (aliases) {
170
- for (const alias of aliases) {
171
- const candidate = `${absoluteBasePath.slice(0, -baseExtension.length)}${alias}`;
172
- if (existsInKnown(candidate)) {
173
- return candidate;
174
- }
175
- }
176
- }
177
- }
178
- // Strategy C: Append extensions
179
- for (const ext of extensions) {
180
- const candidate = `${absoluteBasePath}${ext}`;
181
- if (existsInKnown(candidate)) {
182
- return candidate;
183
- }
184
- }
185
- // Strategy D: Search for index file
186
- for (const ext of extensions) {
187
- const candidate = `${absoluteBasePath}/index${ext}`;
188
- if (existsInKnown(candidate)) {
189
- return candidate;
190
- }
191
- }
192
- return undefined;
193
- }
194
- function candidateSpecifiers(fromFile, candidate) {
195
- const from = normalizeCanonicalPath(fromFile);
196
- const target = normalizeCanonicalPath(candidate);
197
- const relPath = patheRelative(dirname(from), target);
198
- const withPrefix = relPath.startsWith(".") ? relPath : `./${relPath}`;
199
- const extension = extname(withPrefix);
200
- const withoutExtension = extension ? withPrefix.slice(0, -extension.length) : withPrefix;
201
- const aliases = extension ? SOURCE_EXTENSION_ALIASES.get(extension) ?? [extension] : [""];
202
- const mapped = aliases.map((alias) => `${withoutExtension}${alias}`);
203
- return [...new Set([withPrefix, withoutExtension, ...mapped])];
204
- }
205
- export function resolveDynamicPattern(fromFile, prefix, suffix, knownFiles) {
206
- if (!isLikelyLocalSpecifier(prefix)) {
207
- return [];
208
- }
209
- const matches = [];
210
- for (const candidate of knownFiles) {
211
- const forms = candidateSpecifiers(fromFile, candidate);
212
- if (forms.some((form) => form.startsWith(prefix) && form.endsWith(suffix))) {
213
- matches.push(candidate);
214
- }
215
- }
216
- return matches.sort((left, right) => left.localeCompare(right));
217
- }
218
- export function expandEntryPatterns(sourceFiles, rootDir, patterns) {
219
- const matches = new Set();
220
- const normalizedRoot = normalizeAbsolute(rootDir);
221
- const normalizedSourceFiles = sourceFiles.map(f => normalizeAbsolute(f));
222
- for (const pattern of patterns) {
223
- // 1. Direct absolute or relative path resolution
224
- const direct = normalizeAbsolute(isAbsolute(pattern) ? pattern : resolve(rootDir, pattern));
225
- if (normalizedSourceFiles.includes(direct)) {
226
- matches.add(direct);
227
- continue;
228
- }
229
- // 2. Clean glob pattern (strip leading ./ or drive letter if relative to root)
230
- let p = toPosix(pattern);
231
- if (isAbsolute(p)) {
232
- p = patheRelative(normalizedRoot, p);
233
- }
234
- p = p.replace(/^\.\//, "");
235
- const matcher = globToRegExp(p);
236
- for (const sourceFile of normalizedSourceFiles) {
237
- // Stripping leading ./ from relPath ensures "^src\/..." regex matches cleanly
238
- const relPath = toPosix(patheRelative(normalizedRoot, sourceFile)).replace(/^\.\//, "");
239
- if (matcher.test(relPath)) {
240
- matches.add(sourceFile);
241
- }
242
- }
243
- }
244
- return [...matches].sort((left, right) => left.localeCompare(right));
245
- }
246
- export async function discoverPackageEntryPatterns(rootDir) {
247
- const packageFile = join(rootDir, "package.json");
248
- try {
249
- const packageJson = await readJsonFile(packageFile);
250
- if (!packageJson || typeof packageJson !== "object" || Array.isArray(packageJson)) {
251
- return [];
252
- }
253
- const entries = new Set();
254
- for (const field of ["main", "module", "browser", "types", "typings"]) {
255
- if (typeof packageJson[field] === "string") {
256
- entries.add(packageJson[field]);
257
- }
258
- }
259
- collectPackageExportStrings(packageJson.exports, entries);
260
- return [...entries]
261
- .filter((entry) => entry.startsWith(".") || entry.startsWith("src/") || entry.startsWith("lib/"))
262
- .map((entry) => entry.replace(/^\.\//, ""));
263
- }
264
- catch {
265
- return [];
266
- }
267
- }
268
- function collectPackageExportStrings(value, collected) {
269
- if (typeof value === "string") {
270
- collected.add(value);
271
- }
272
- else if (Array.isArray(value)) {
273
- for (const item of value) {
274
- collectPackageExportStrings(item, collected);
275
- }
276
- }
277
- else if (value !== null && typeof value === "object") {
278
- for (const nested of Object.values(value)) {
279
- collectPackageExportStrings(nested, collected);
280
- }
281
- }
282
- }
283
- export function conventionalEntryPatterns() {
284
- return [
285
- "src/main.*",
286
- "src/index.*",
287
- "src/app.*",
288
- "src/server.*",
289
- "src/cli.*",
290
- "app/**/*.ts",
291
- "app/**/*.tsx",
292
- "app/**/*.js",
293
- "app/**/*.jsx",
294
- "apps/**/*.ts",
295
- "apps/**/*.tsx",
296
- "apps/**/*.js",
297
- "apps/**/*.jsx",
298
- "pages/**/*.ts",
299
- "pages/**/*.tsx",
300
- "pages/**/*.js",
301
- "pages/**/*.jsx",
302
- ];
303
- }
304
- export function normalizedConventionalEntryPatterns() {
305
- return [
306
- "src/main.*",
307
- "src/index.*",
308
- "src/app.*",
309
- "src/server.*",
310
- "src/cli.*",
311
- "app/**/*.ts",
312
- "app/**/*.tsx",
313
- "app/**/*.js",
314
- "app/**/*.jsx",
315
- "pages/**/*.ts",
316
- "pages/**/*.tsx",
317
- "pages/**/*.js",
318
- "pages/**/*.jsx",
319
- ];
320
- }
321
- export async function readJsonFile(candidate) {
322
- try {
323
- let rawContent = await fs.readFile(candidate, "utf8");
324
- // Strip UTF-8 BOM
325
- if (rawContent.charCodeAt(0) === 0xFEFF) {
326
- rawContent = rawContent.slice(1);
327
- }
328
- rawContent = rawContent.trim();
329
- try {
330
- // Strip comments for JSONC support (common in tsconfig.json)
331
- const stripped = rawContent
332
- .replace(/\/\/.*$/gm, "") // Strip single line comments
333
- .replace(/\/\*[\s\S]*?\*\//g, ""); // Strip multi-line comments
334
- return JSON.parse(stripped);
335
- }
336
- catch {
337
- // Fallback for literal escaped strings in synthetic test fixtures
338
- const sanitized = rawContent
339
- .replace(/\\n/g, "\n")
340
- .replace(/\\r/g, "\r")
341
- .replace(/\\t/g, "\t");
342
- return JSON.parse(sanitized);
343
- }
344
- }
345
- catch {
346
- return undefined;
347
- }
348
- }
349
- export async function findNearestConfig(startDirectory) {
350
- let current = normalizeAbsolute(startDirectory);
351
- while (true) {
352
- const candidate = join(current, "optiprune.config.json");
353
- if (await fileExists(candidate)) {
354
- return candidate;
355
- }
356
- const parent = dirname(current);
357
- if (parent === current) {
358
- return undefined;
359
- }
360
- current = parent;
361
- }
362
- }
363
- export function relativeDisplayPath(rootDir, candidate) {
364
- const relPath = patheRelative(normalizeAbsolute(rootDir), normalizeAbsolute(candidate));
365
- return relPath || ".";
366
- }
367
- export async function rootLooksValid(rootDir) {
368
- return directoryExists(rootDir);
369
- }
370
- export async function ingestTsConfigPaths(rootDir, configPath = "tsconfig.json") {
371
- const pathAliases = new Map();
372
- const fullTsconfigPath = isAbsolute(configPath) ? configPath : join(rootDir, configPath);
373
- const tsconfig = await readJsonFile(fullTsconfigPath);
374
- if (!tsconfig)
375
- return { paths: pathAliases, baseUrl: undefined };
376
- // 1. Handle inheritance (extends)
377
- if (tsconfig.extends) {
378
- const extensions = Array.isArray(tsconfig.extends) ? tsconfig.extends : [tsconfig.extends];
379
- for (const ext of extensions) {
380
- let extPath = ext;
381
- if (ext.startsWith(".")) {
382
- extPath = join(dirname(fullTsconfigPath), ext);
383
- if (!extPath.endsWith(".json"))
384
- extPath += ".json";
385
- }
386
- else {
387
- // Handle node_modules resolution for extends (simplified)
388
- extPath = join(rootDir, "node_modules", ext);
389
- if (!(await fileExists(extPath))) {
390
- if (await fileExists(extPath + ".json"))
391
- extPath += ".json";
392
- else if (await fileExists(join(extPath, "tsconfig.json")))
393
- extPath = join(extPath, "tsconfig.json");
394
- }
395
- }
396
- const parentConfig = await ingestTsConfigPaths(rootDir, extPath);
397
- for (const [alias, targets] of parentConfig.paths.entries()) {
398
- pathAliases.set(alias, targets);
399
- }
400
- }
401
- }
402
- // 2. Base URL
403
- const baseUrl = tsconfig.compilerOptions?.baseUrl;
404
- // 3. Paths
405
- const paths = tsconfig.compilerOptions?.paths;
406
- if (paths && typeof paths === "object") {
407
- for (const [alias, targets] of Object.entries(paths)) {
408
- if (Array.isArray(targets)) {
409
- pathAliases.set(alias, targets);
410
- }
411
- }
412
- }
413
- return { paths: pathAliases, baseUrl };
414
- }
415
- //# sourceMappingURL=fs-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"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"}
package/dist/graph.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import type { AnalysisContext, DependencyEdge, ModuleRecord, ResolvedOptions, StronglyConnectedComponent } from "./types.js";
2
- export interface GraphBuildResult {
3
- components: StronglyConnectedComponent[];
4
- reachable: Set<string>;
5
- maybeReachable: Set<string>;
6
- hasReachableUnknownDynamicBoundary: boolean;
7
- usedExports: Set<string>;
8
- usedMembers: Set<string>;
9
- }
10
- export interface ImportUsage {
11
- consumers: Set<string>;
12
- names: Set<string>;
13
- memberAccess: Map<string, Set<string>>;
14
- wildcard: boolean;
15
- reExportOnly: boolean;
16
- }
17
- export declare function resolveDependencies(modules: Map<string, ModuleRecord>, options: ResolvedOptions): void;
18
- export declare function edgeTargets(edge: DependencyEdge): string[];
19
- /** Kosaraju with explicit stacks avoids stack overflows on deep graphs and cycles. */
20
- export declare function stronglyConnectedComponents(modules: Map<string, ModuleRecord>): StronglyConnectedComponent[];
21
- /**
22
- * Traverse the graph iteratively. Pattern imports and edges extracted from malformed files
23
- * propagate `maybe` reachability. A reachable completely unknown dynamic boundary makes every
24
- * project module only maybe-reachable, preventing unsafe unreachable-file claims.
25
- */
26
- export declare function calculateReachability(modules: Map<string, ModuleRecord>, entryPoints: Set<string>): Pick<GraphBuildResult, "reachable" | "maybeReachable" | "hasReachableUnknownDynamicBoundary">;
27
- export declare function buildImportUsage(modules: Map<string, ModuleRecord>): Map<string, ImportUsage>;
28
- export declare function buildUsedExports(modules: Map<string, ModuleRecord>): {
29
- usedExports: Set<string>;
30
- usedMembers: Set<string>;
31
- };
32
- /**
33
- * Refines component reachability. A component is reachable if at least one of its
34
- * modules is reachable from an entry point.
35
- */
36
- /**
37
- * Refines component reachability. A component is reachable if at least one of its
38
- * modules is reachable from an entry point.
39
- */
40
- export declare function calculateComponentReachability(components: StronglyConnectedComponent[], reachable: Set<string>, maybeReachable: Set<string>): void;
41
- export declare function buildGraph(modules: Map<string, ModuleRecord>, entryPoints: Set<string>, options: ResolvedOptions): GraphBuildResult;
42
- export declare function contextWithGraph(modules: Map<string, ModuleRecord>, entryPoints: Set<string>, options: ResolvedOptions): AnalysisContext;