optiprune 2.1.5 → 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 (101) hide show
  1. package/bin/runner.js +26 -0
  2. package/package.json +10 -37
  3. package/dist/ast-utils.d.ts +0 -149
  4. package/dist/ast-utils.js +0 -36
  5. package/dist/ast-utils.js.map +0 -1
  6. package/dist/cache.d.ts +0 -14
  7. package/dist/cache.js +0 -36
  8. package/dist/cache.js.map +0 -1
  9. package/dist/cli.d.ts +0 -2
  10. package/dist/cli.js +0 -68
  11. package/dist/cli.js.map +0 -1
  12. package/dist/config-loader.d.ts +0 -4
  13. package/dist/config-loader.js +0 -84
  14. package/dist/config-loader.js.map +0 -1
  15. package/dist/coverage-tracker.d.ts +0 -39
  16. package/dist/coverage-tracker.js +0 -61
  17. package/dist/coverage-tracker.js.map +0 -1
  18. package/dist/engine.d.ts +0 -17
  19. package/dist/engine.js +0 -215
  20. package/dist/engine.js.map +0 -1
  21. package/dist/framework-plugins.d.ts +0 -16
  22. package/dist/framework-plugins.js +0 -127
  23. package/dist/framework-plugins.js.map +0 -1
  24. package/dist/fs-utils.d.ts +0 -32
  25. package/dist/fs-utils.js +0 -415
  26. package/dist/fs-utils.js.map +0 -1
  27. package/dist/graph.d.ts +0 -42
  28. package/dist/graph.js +0 -583
  29. package/dist/graph.js.map +0 -1
  30. package/dist/index.d.ts +0 -3
  31. package/dist/index.js +0 -451
  32. package/dist/index.js.map +0 -1
  33. package/dist/instrument.d.ts +0 -5
  34. package/dist/instrument.js +0 -108
  35. package/dist/instrument.js.map +0 -1
  36. package/dist/layer2.d.ts +0 -6
  37. package/dist/layer2.js +0 -224
  38. package/dist/layer2.js.map +0 -1
  39. package/dist/layer3.d.ts +0 -7
  40. package/dist/layer3.js +0 -346
  41. package/dist/layer3.js.map +0 -1
  42. package/dist/layer4.d.ts +0 -8
  43. package/dist/layer4.js +0 -627
  44. package/dist/layer4.js.map +0 -1
  45. package/dist/layer5.d.ts +0 -6
  46. package/dist/layer5.js +0 -141
  47. package/dist/layer5.js.map +0 -1
  48. package/dist/layer6.d.ts +0 -26
  49. package/dist/layer6.js +0 -268
  50. package/dist/layer6.js.map +0 -1
  51. package/dist/layer7.d.ts +0 -28
  52. package/dist/layer7.js +0 -267
  53. package/dist/layer7.js.map +0 -1
  54. package/dist/parser.d.ts +0 -20
  55. package/dist/parser.js +0 -832
  56. package/dist/parser.js.map +0 -1
  57. package/dist/plugins/angular-plugin.d.ts +0 -7
  58. package/dist/plugins/angular-plugin.js +0 -60
  59. package/dist/plugins/angular-plugin.js.map +0 -1
  60. package/dist/plugins/astro-plugin.d.ts +0 -7
  61. package/dist/plugins/astro-plugin.js +0 -88
  62. package/dist/plugins/astro-plugin.js.map +0 -1
  63. package/dist/plugins/babel-plugin.d.ts +0 -8
  64. package/dist/plugins/babel-plugin.js +0 -132
  65. package/dist/plugins/babel-plugin.js.map +0 -1
  66. package/dist/plugins/esbuild-plugin.d.ts +0 -8
  67. package/dist/plugins/esbuild-plugin.js +0 -121
  68. package/dist/plugins/esbuild-plugin.js.map +0 -1
  69. package/dist/plugins/nestjs-plugin.d.ts +0 -7
  70. package/dist/plugins/nestjs-plugin.js +0 -69
  71. package/dist/plugins/nestjs-plugin.js.map +0 -1
  72. package/dist/plugins/nextjs-plugin.d.ts +0 -7
  73. package/dist/plugins/nextjs-plugin.js +0 -66
  74. package/dist/plugins/nextjs-plugin.js.map +0 -1
  75. package/dist/plugins/nuxtjs-plugin.d.ts +0 -7
  76. package/dist/plugins/nuxtjs-plugin.js +0 -80
  77. package/dist/plugins/nuxtjs-plugin.js.map +0 -1
  78. package/dist/plugins/svelte-plugin.d.ts +0 -7
  79. package/dist/plugins/svelte-plugin.js +0 -38
  80. package/dist/plugins/svelte-plugin.js.map +0 -1
  81. package/dist/plugins/vuejs-plugin.d.ts +0 -7
  82. package/dist/plugins/vuejs-plugin.js +0 -63
  83. package/dist/plugins/vuejs-plugin.js.map +0 -1
  84. package/dist/reporters.d.ts +0 -3
  85. package/dist/reporters.js +0 -75
  86. package/dist/reporters.js.map +0 -1
  87. package/dist/semantic-graph.d.ts +0 -44
  88. package/dist/semantic-graph.js +0 -88
  89. package/dist/semantic-graph.js.map +0 -1
  90. package/dist/symbolic-engine.d.ts +0 -19
  91. package/dist/symbolic-engine.js +0 -51
  92. package/dist/symbolic-engine.js.map +0 -1
  93. package/dist/topology-manager.d.ts +0 -23
  94. package/dist/topology-manager.js +0 -144
  95. package/dist/topology-manager.js.map +0 -1
  96. package/dist/types.d.ts +0 -265
  97. package/dist/types.js +0 -11
  98. package/dist/types.js.map +0 -1
  99. package/dist/workspace.d.ts +0 -6
  100. package/dist/workspace.js +0 -105
  101. 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;