@@ -38,12 +38,30 @@ function lazyMinimatch() {
38
38
const isWindows = process . platform === 'win32' ;
39
39
const isOSX = process . platform === 'darwin' ;
40
40
41
+ /**
42
+ * @param {string } path
43
+ * @returns {Promise<DirentFromStats|null> }
44
+ */
41
45
async function getDirent ( path ) {
42
- return new DirentFromStats ( basename ( path ) , await lstat ( path ) , path ) ;
46
+ let stat ;
47
+ try {
48
+ stat = await lstat ( path ) ;
49
+ } catch {
50
+ return null ;
51
+ }
52
+ return new DirentFromStats ( basename ( path ) , stat , path ) ;
43
53
}
44
54
55
+ /**
56
+ * @param {string } path
57
+ * @returns {DirentFromStats|null }
58
+ */
45
59
function getDirentSync ( path ) {
46
- return new DirentFromStats ( basename ( path ) , lstatSync ( path ) , path ) ;
60
+ const stat = lstatSync ( path , { throwIfNoEntry : false } ) ;
61
+ if ( stat === undefined ) {
62
+ return null ;
63
+ }
64
+ return new DirentFromStats ( basename ( path ) , stat , path ) ;
47
65
}
48
66
49
67
class Cache {
@@ -56,7 +74,7 @@ class Cache {
56
74
if ( cached ) {
57
75
return cached ;
58
76
}
59
- const promise = PromisePrototypeThen ( getDirent ( path ) , null , ( ) => null ) ;
77
+ const promise = getDirent ( path ) ;
60
78
this . #statsCache. set ( path , promise ) ;
61
79
return promise ;
62
80
}
@@ -65,12 +83,7 @@ class Cache {
65
83
if ( cached ) {
66
84
return cached ;
67
85
}
68
- let val ;
69
- try {
70
- val = getDirentSync ( path ) ;
71
- } catch {
72
- val = null ;
73
- }
86
+ const val = getDirentSync ( path ) ;
74
87
this . #statsCache. set ( path , val ) ;
75
88
return val ;
76
89
}
0 commit comments