@mikrojs/analyze-imports 0.0.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/dist/trace.js ADDED
@@ -0,0 +1,376 @@
1
+ import { matchesGlob } from 'node:path';
2
+ import { basename, dirname, join, relative, resolve, sep } from 'path';
3
+ import analyze, {} from './analyze.js';
4
+ import { CachedFileSystem } from './fs.js';
5
+ import resolveDependency, { NotFoundError } from './resolve.js';
6
+ function inPath(path, parent) {
7
+ const pathWithSep = join(parent, sep);
8
+ return path.startsWith(pathWithSep) && path !== pathWithSep;
9
+ }
10
+ export async function nodeFileTrace(files, opts = {}) {
11
+ const job = new Tracer(opts);
12
+ if (opts.readFile)
13
+ job.readFile = opts.readFile;
14
+ if (opts.stat)
15
+ job.stat = opts.stat;
16
+ if (opts.readlink)
17
+ job.readlink = opts.readlink;
18
+ if (opts.resolve)
19
+ job.resolve = opts.resolve;
20
+ job.ts = true;
21
+ await Promise.all(files.map(async (file) => {
22
+ const path = resolve(file);
23
+ await job.emitFile(path, 'initial');
24
+ return job.emitDependency(path);
25
+ }));
26
+ // Build source path map: for files in the fileList that have virtual paths,
27
+ // map the relative output path to the real source path on disk
28
+ const sourcePathMap = new Map();
29
+ for (const file of job.fileList) {
30
+ const absPath = resolve(job.base, file);
31
+ const realPath = job.virtualPathToRealPath.get(absPath);
32
+ if (realPath) {
33
+ sourcePathMap.set(file, realPath);
34
+ }
35
+ }
36
+ return {
37
+ fileList: job.fileList,
38
+ reasons: job.reasons,
39
+ warnings: job.warnings,
40
+ sourcePathMap,
41
+ };
42
+ }
43
+ // Extract the package name from a path segment after node_modules/
44
+ // e.g. "pretty-ms/index.js" -> "pretty-ms", "@scope/pkg/index.js" -> "@scope/pkg"
45
+ function getPkgNameFromPath(pathAfterNodeModules) {
46
+ const segments = pathAfterNodeModules.split(sep);
47
+ if (segments[0][0] === '@' && segments.length > 1)
48
+ return segments.slice(0, 2).join(sep);
49
+ return segments[0];
50
+ }
51
+ export class Tracer {
52
+ ts;
53
+ base;
54
+ cwd;
55
+ conditions;
56
+ paths;
57
+ ignoreFn;
58
+ log;
59
+ depth;
60
+ assetExtensions;
61
+ analysis;
62
+ analysisCache;
63
+ fileList;
64
+ processed;
65
+ warnings;
66
+ reasons = new Map();
67
+ cachedFileSystem;
68
+ // Maps virtual paths (e.g. node_modules/A/node_modules/B/index.js) to their
69
+ // real filesystem paths (e.g. .pnpm/A@1/node_modules/B/index.js).
70
+ // This is needed for pnpm symlink stores where transitive dependencies don't
71
+ // have their own symlink in the project's node_modules.
72
+ virtualPathToRealPath = new Map();
73
+ constructor({ base = process.cwd(), processCwd, exports, conditions = exports || ['node'], paths = {}, ignore, log = false, ts = true, analysis = {}, cache, fileIOConcurrency = 1024, depth = Infinity, assetExtensions = [], }) {
74
+ this.ts = ts;
75
+ base = resolve(base);
76
+ this.ignoreFn = () => false;
77
+ if (typeof ignore === 'string')
78
+ ignore = [ignore];
79
+ if (typeof ignore === 'function') {
80
+ const ig = ignore;
81
+ this.ignoreFn = (path) => {
82
+ if (path.startsWith('..' + sep))
83
+ return true;
84
+ if (ig(path))
85
+ return true;
86
+ return false;
87
+ };
88
+ }
89
+ else if (Array.isArray(ignore)) {
90
+ const resolvedIgnores = ignore.map((ignore) => relative(base, resolve(base || process.cwd(), ignore)));
91
+ this.ignoreFn = (path) => {
92
+ if (path.startsWith('..' + sep))
93
+ return true;
94
+ if (resolvedIgnores.some((pattern) => matchesGlob(path, pattern)))
95
+ return true;
96
+ return false;
97
+ };
98
+ }
99
+ this.base = base;
100
+ this.cwd = resolve(processCwd || base);
101
+ this.conditions = conditions;
102
+ const resolvedPaths = {};
103
+ for (const path of Object.keys(paths)) {
104
+ const trailer = paths[path].endsWith('/');
105
+ const resolvedPath = resolve(base, paths[path]);
106
+ resolvedPaths[path] = resolvedPath + (trailer ? '/' : '');
107
+ }
108
+ this.paths = resolvedPaths;
109
+ this.log = log;
110
+ this.depth = depth;
111
+ this.assetExtensions = assetExtensions;
112
+ this.cachedFileSystem = new CachedFileSystem({ cache, fileIOConcurrency });
113
+ this.analysis = {};
114
+ if (analysis !== false) {
115
+ Object.assign(this.analysis, {
116
+ evaluatePureExpressions: true,
117
+ }, analysis === true ? {} : analysis);
118
+ }
119
+ this.analysisCache = (cache && cache.analysisCache) || new Map();
120
+ if (cache) {
121
+ cache.analysisCache = this.analysisCache;
122
+ }
123
+ this.fileList = new Set();
124
+ this.processed = new Set();
125
+ this.warnings = new Set();
126
+ }
127
+ async readlink(path) {
128
+ return this.cachedFileSystem.readlink(path);
129
+ }
130
+ async isFile(path) {
131
+ const stats = await this.stat(path);
132
+ if (stats)
133
+ return stats.isFile();
134
+ return false;
135
+ }
136
+ async stat(path) {
137
+ return this.cachedFileSystem.stat(path);
138
+ }
139
+ resolveWithTs = async (dep, parent) => {
140
+ try {
141
+ return await this.resolve(dep, parent, this);
142
+ }
143
+ catch (e1) {
144
+ if (this.ts && dep.endsWith('.js') && e1 instanceof NotFoundError) {
145
+ return await this.resolve(dep.slice(0, -3) + '.ts', parent, this);
146
+ }
147
+ throw e1;
148
+ }
149
+ };
150
+ // Remap a resolved real path to a virtual path nested under the symlink parent's
151
+ // package directory. This makes pnpm transitive dependencies appear as nested
152
+ // node_modules in the output (e.g. node_modules/A/node_modules/B/...).
153
+ remapToVirtualPath(resolved, symlinkParent, realParent) {
154
+ // Find the last node_modules/ segment in the real parent to locate the
155
+ // pnpm virtual store's node_modules directory
156
+ const nmSegment = sep + 'node_modules' + sep;
157
+ const realNmIdx = realParent.lastIndexOf(nmSegment);
158
+ if (realNmIdx === -1)
159
+ return resolved;
160
+ const realNodeModulesDir = realParent.slice(0, realNmIdx + nmSegment.length - 1);
161
+ if (!resolved.startsWith(realNodeModulesDir + sep))
162
+ return resolved;
163
+ // tail = "parse-ms/index.js"
164
+ const tail = resolved.slice(realNodeModulesDir.length + 1);
165
+ // Find the symlink parent's package directory
166
+ const symlinkNmIdx = symlinkParent.lastIndexOf(nmSegment);
167
+ if (symlinkNmIdx === -1)
168
+ return resolved;
169
+ const afterNm = symlinkParent.slice(symlinkNmIdx + nmSegment.length);
170
+ const pkgName = getPkgNameFromPath(afterNm);
171
+ const symlinkPkgDir = symlinkParent.slice(0, symlinkNmIdx + nmSegment.length) + pkgName;
172
+ // Construct virtual path: .../node_modules/A/node_modules/B/index.js
173
+ const virtualPath = join(symlinkPkgDir, 'node_modules', tail);
174
+ // Store mapping so realpath() and readFile() can find the real file
175
+ this.virtualPathToRealPath.set(virtualPath, resolved);
176
+ return virtualPath;
177
+ }
178
+ remapResolved(resolved, symlinkParent, realParent) {
179
+ if (Array.isArray(resolved)) {
180
+ return resolved.map((r) => this.remapToVirtualPath(r, symlinkParent, realParent));
181
+ }
182
+ return this.remapToVirtualPath(resolved, symlinkParent, realParent);
183
+ }
184
+ maybeEmitDep = async (dep, symlinkPath, realPath, depth) => {
185
+ let resolved = '';
186
+ let error;
187
+ // First, try resolving from the symlink path
188
+ try {
189
+ resolved = await this.resolveWithTs(dep, symlinkPath);
190
+ }
191
+ catch (e1) {
192
+ error = e1;
193
+ }
194
+ // If resolution failed and the real path differs from the symlink path,
195
+ // try resolving from the real path and remap the result to a virtual
196
+ // symlink-relative path (needed for pnpm transitive dependencies)
197
+ if (error && realPath !== symlinkPath) {
198
+ try {
199
+ resolved = await this.resolveWithTs(dep, realPath);
200
+ resolved = this.remapResolved(resolved, symlinkPath, realPath);
201
+ error = undefined;
202
+ }
203
+ catch {
204
+ // Keep original error
205
+ }
206
+ }
207
+ if (error) {
208
+ this.warnings.add(new Error(`Failed to resolve dependency "${dep}":\n${error?.message}`));
209
+ return;
210
+ }
211
+ if (Array.isArray(resolved)) {
212
+ for (const item of resolved) {
213
+ await this.emitDependency(item, symlinkPath, depth);
214
+ }
215
+ }
216
+ else {
217
+ await this.emitDependency(resolved, symlinkPath, depth);
218
+ }
219
+ };
220
+ async resolve(id, parent, job) {
221
+ return resolveDependency(id, parent, job);
222
+ }
223
+ async readFile(path) {
224
+ const realPath = this.virtualPathToRealPath.get(path);
225
+ if (realPath)
226
+ return this.cachedFileSystem.readFile(realPath);
227
+ return this.cachedFileSystem.readFile(path);
228
+ }
229
+ async realpath(path, parent, seen = new Set()) {
230
+ // Check virtual path map — these are synthetic paths that don't exist on disk
231
+ const mapped = this.virtualPathToRealPath.get(path);
232
+ if (mapped)
233
+ return this.realpath(mapped, parent, seen);
234
+ if (seen.has(path))
235
+ throw new Error('Recursive symlink detected resolving ' + path);
236
+ seen.add(path);
237
+ const symlink = await this.readlink(path);
238
+ if (symlink) {
239
+ // Resolve the parent directory to its real path first so that relative
240
+ // symlink targets are resolved against the actual filesystem location,
241
+ // not the virtual path we were given. Without this, a relative symlink
242
+ // accessed through a chain of symlinks (e.g. pnpm workspace transitive
243
+ // dependencies) would resolve against the virtual path and land
244
+ // somewhere non-existent.
245
+ const parentPath = dirname(path);
246
+ const realParentPath = await this.realpath(parentPath, parent, new Set(seen));
247
+ const resolved = resolve(realParentPath, symlink);
248
+ return this.realpath(resolved, parent, seen);
249
+ }
250
+ // If the path itself isn't a symlink, check if a parent directory is
251
+ const parentDir = dirname(path);
252
+ if (parentDir !== path) {
253
+ const realParentDir = await this.realpath(parentDir, parent, seen);
254
+ if (realParentDir !== parentDir) {
255
+ return join(realParentDir, basename(path));
256
+ }
257
+ }
258
+ if (!inPath(path, this.base))
259
+ return path;
260
+ return join(dirname(path), basename(path));
261
+ }
262
+ async emitFile(path, reasonType, parent) {
263
+ const real = await this.realpath(path, parent);
264
+ // Prefer the real path, but fall back to the original (symlink-based) path when
265
+ // the real path is outside base — the file is still reachable at the symlink path.
266
+ path = relative(this.base, inPath(real, this.base) ? real : path);
267
+ if (parent) {
268
+ parent = relative(this.base, parent);
269
+ }
270
+ let reasonEntry = this.reasons.get(path);
271
+ if (!reasonEntry) {
272
+ reasonEntry = {
273
+ type: [reasonType],
274
+ ignored: false,
275
+ parents: new Set(),
276
+ };
277
+ this.reasons.set(path, reasonEntry);
278
+ }
279
+ else if (!reasonEntry.type.includes(reasonType)) {
280
+ reasonEntry.type.push(reasonType);
281
+ }
282
+ if (parent && this.ignoreFn(path, parent)) {
283
+ if (!this.fileList.has(path) && reasonEntry) {
284
+ reasonEntry.ignored = true;
285
+ }
286
+ return false;
287
+ }
288
+ if (parent) {
289
+ reasonEntry.parents.add(parent);
290
+ }
291
+ this.fileList.add(path);
292
+ return true;
293
+ }
294
+ async getPjsonBoundary(path) {
295
+ const rootSeparatorIndex = path.indexOf(sep);
296
+ let separatorIndex;
297
+ while ((separatorIndex = path.lastIndexOf(sep)) > rootSeparatorIndex) {
298
+ path = path.slice(0, separatorIndex);
299
+ if (await this.isFile(path + sep + 'package.json'))
300
+ return path;
301
+ }
302
+ return undefined;
303
+ }
304
+ async emitDependency(path, parent, depth = this.depth) {
305
+ if (depth < 0)
306
+ throw new Error('invariant - depth option cannot be negative');
307
+ const realPath = await this.realpath(path, parent);
308
+ if (this.processed.has(realPath)) {
309
+ if (parent) {
310
+ await this.emitFile(path, 'dependency', parent);
311
+ }
312
+ return;
313
+ }
314
+ this.processed.add(realPath);
315
+ const emitted = await this.emitFile(path, 'dependency', parent);
316
+ if (!emitted)
317
+ return;
318
+ if (realPath.endsWith('.json'))
319
+ return;
320
+ if (this.assetExtensions.some((ext) => realPath.endsWith(ext)))
321
+ return;
322
+ // Check for package.json boundary — use the path that's inside base
323
+ // (which may be a virtual path for remapped pnpm transitive deps)
324
+ const isVirtual = this.virtualPathToRealPath.has(path);
325
+ const pjsonSearchPath = inPath(realPath, this.base) ? realPath : isVirtual ? path : undefined;
326
+ const pjsonBoundary = pjsonSearchPath
327
+ ? await this.getPjsonBoundary(isVirtual ? realPath : pjsonSearchPath)
328
+ : undefined;
329
+ if (pjsonBoundary) {
330
+ let pjsonEmitPath = pjsonBoundary + sep + 'package.json';
331
+ // For virtual paths, the pjsonBoundary is on the real filesystem but we need
332
+ // to emit the package.json under the virtual tree
333
+ if (isVirtual && !inPath(pjsonBoundary, this.base)) {
334
+ // Walk up from the virtual path to the package root (find last node_modules/pkg)
335
+ const nmSegment = sep + 'node_modules' + sep;
336
+ const nmIdx = path.lastIndexOf(nmSegment);
337
+ if (nmIdx !== -1) {
338
+ const afterNm = path.slice(nmIdx + nmSegment.length);
339
+ const pkgName = getPkgNameFromPath(afterNm);
340
+ const virtualPjsonDir = path.slice(0, nmIdx + nmSegment.length) + pkgName;
341
+ const virtualPjsonPath = virtualPjsonDir + sep + 'package.json';
342
+ this.virtualPathToRealPath.set(virtualPjsonPath, pjsonEmitPath);
343
+ pjsonEmitPath = virtualPjsonPath;
344
+ }
345
+ }
346
+ await this.emitFile(pjsonEmitPath, 'resolve', path);
347
+ const pjsonRaw = await this.readFile(pjsonEmitPath);
348
+ if (!pjsonRaw) {
349
+ throw new Error(`package.json found but not readable: ${pjsonEmitPath}`);
350
+ }
351
+ const pjson = JSON.parse(pjsonRaw.toString('utf-8'));
352
+ if (pjson.type !== 'module') {
353
+ throw new Error(`Non-ESM dependency detected: ${pjson.name}`);
354
+ }
355
+ }
356
+ if (depth === 0)
357
+ return;
358
+ let analyzeResult;
359
+ const cachedAnalysis = this.analysisCache.get(realPath);
360
+ if (cachedAnalysis) {
361
+ analyzeResult = cachedAnalysis;
362
+ }
363
+ else {
364
+ const source = await this.readFile(realPath);
365
+ if (source === null)
366
+ throw new Error('File ' + realPath + ' does not exist.');
367
+ analyzeResult = await analyze(realPath, source.toString(), this);
368
+ this.analysisCache.set(realPath, analyzeResult);
369
+ }
370
+ const { imports } = analyzeResult;
371
+ await Promise.all([...imports].map(async (dep) => {
372
+ return this.maybeEmitDep(dep, path, realPath, depth - 1);
373
+ }));
374
+ }
375
+ }
376
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { Tracer } from './trace.js';
2
+ export interface Stats {
3
+ isFile(): boolean;
4
+ isDirectory(): boolean;
5
+ isBlockDevice(): boolean;
6
+ isCharacterDevice(): boolean;
7
+ isSymbolicLink(): boolean;
8
+ isFIFO(): boolean;
9
+ isSocket(): boolean;
10
+ dev: number;
11
+ ino: number;
12
+ mode: number;
13
+ nlink: number;
14
+ uid: number;
15
+ gid: number;
16
+ rdev: number;
17
+ size: number;
18
+ blksize: number;
19
+ blocks: number;
20
+ atimeMs: number;
21
+ mtimeMs: number;
22
+ ctimeMs: number;
23
+ birthtimeMs: number;
24
+ atime: Date;
25
+ mtime: Date;
26
+ ctime: Date;
27
+ birthtime: Date;
28
+ }
29
+ export interface NodeFileTraceOptions {
30
+ base?: string;
31
+ processCwd?: string;
32
+ exports?: string[];
33
+ conditions?: string[];
34
+ ignore?: string | string[] | ((path: string) => boolean);
35
+ analysis?: boolean | {
36
+ evaluatePureExpressions?: boolean;
37
+ };
38
+ cache?: any;
39
+ paths?: Record<string, string>;
40
+ ts?: boolean;
41
+ log?: boolean;
42
+ readFile?: (path: string) => Promise<Buffer | string | null>;
43
+ stat?: (path: string) => Promise<Stats | null>;
44
+ readlink?: (path: string) => Promise<string | null>;
45
+ resolve?: (id: string, parent: string, job: Tracer) => Promise<string | string[]>;
46
+ fileIOConcurrency?: number;
47
+ depth?: number;
48
+ assetExtensions?: string[];
49
+ }
50
+ export type NodeFileTraceReasonType = 'initial' | 'resolve' | 'dependency' | 'asset';
51
+ export interface NodeFileTraceReasons extends Map<string, {
52
+ type: NodeFileTraceReasonType[];
53
+ ignored: boolean;
54
+ parents: Set<string>;
55
+ }> {
56
+ }
57
+ export interface NodeFileTraceResult {
58
+ fileList: Set<string>;
59
+ reasons: NodeFileTraceReasons;
60
+ warnings: Set<Error>;
61
+ sourcePathMap: Map<string, string>;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { EvaluatedValue, Node } from './types.js';
2
+ export declare function evaluate(ast: Node, vars?: {}, computeBranches?: boolean): Promise<EvaluatedValue>;
3
+ //# sourceMappingURL=static-eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-eval.d.ts","sourceRoot":"","sources":["../../src/utils/static-eval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,cAAc,EAAE,IAAI,EAAc,MAAM,YAAY,CAAA;AAInF,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,IAAI,EACT,IAAI,KAAK,EACT,eAAe,UAAO,GACrB,OAAO,CAAC,cAAc,CAAC,CAkBzB"}