@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/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/analyze.d.ts +6 -0
- package/dist/analyze.d.ts.map +1 -0
- package/dist/analyze.js +89 -0
- package/dist/analyze.js.map +1 -0
- package/dist/fs.d.ts +23 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +97 -0
- package/dist/fs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/resolve.d.ts +7 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +244 -0
- package/dist/resolve.js.map +1 -0
- package/dist/trace.d.ts +38 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +376 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +63 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/static-eval.d.ts +3 -0
- package/dist/utils/static-eval.d.ts.map +1 -0
- package/dist/utils/static-eval.js +570 -0
- package/dist/utils/static-eval.js.map +1 -0
- package/dist/utils/types.d.ts +24 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +51 -0
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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|