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/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
|
package/dist/fs-utils.js.map
DELETED
|
@@ -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;
|