@@ -71,32 +71,39 @@ async function* walk(
7171 filterDirectory : ( path : string ) => boolean ,
7272 signal ?: AbortSignal ,
7373) : AsyncIterableIterator < string > {
74- for await ( const entry of Deno . readDir ( root ) ) {
75- const path = `${ root } ${ SEPARATOR } ${ entry . name } ` ;
76- // Follow symbolic links to recursively yield files
77- let isDirectory = entry . isDirectory ;
78- if ( entry . isSymlink ) {
79- try {
80- const fileInfo = await Deno . stat ( path ) ;
81- signal ?. throwIfAborted ( ) ;
82- isDirectory = fileInfo . isDirectory ;
83- } catch ( err ) {
84- if ( isSilence ( err ) ) {
85- continue ;
74+ try {
75+ for await ( const entry of Deno . readDir ( root ) ) {
76+ const path = `${ root } ${ SEPARATOR } ${ entry . name } ` ;
77+ // Follow symbolic links to recursively yield files
78+ let isDirectory = entry . isDirectory ;
79+ if ( entry . isSymlink ) {
80+ try {
81+ const fileInfo = await Deno . stat ( path ) ;
82+ signal ?. throwIfAborted ( ) ;
83+ isDirectory = fileInfo . isDirectory ;
84+ } catch ( err ) {
85+ if ( isSilence ( err ) ) {
86+ continue ;
87+ }
88+ throw err ;
8689 }
87- throw err ;
8890 }
89- }
90- // Recursively yield files from directories, or yield file details
91- if ( isDirectory ) {
92- if ( filterDirectory ( path ) ) {
93- yield * walk ( path , filterFile , filterDirectory , signal ) ;
94- }
95- } else {
96- if ( filterFile ( path ) ) {
97- yield path ;
91+ // Recursively yield files from directories, or yield file details
92+ if ( isDirectory ) {
93+ if ( filterDirectory ( path ) ) {
94+ yield * walk ( path , filterFile , filterDirectory , signal ) ;
95+ }
96+ } else {
97+ if ( filterFile ( path ) ) {
98+ yield path ;
99+ }
98100 }
99101 }
102+ } catch ( err ) {
103+ if ( isSilence ( err ) ) {
104+ return ;
105+ }
106+ throw err ;
100107 }
101108}
102109
0 commit comments