diff --git a/libs/remixd/package.json b/libs/remixd/package.json index 822e250976..07570b469a 100644 --- a/libs/remixd/package.json +++ b/libs/remixd/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remixd", - "version": "0.3.0", + "version": "0.3.2", "description": "remix server: allow accessing file system from remix.ethereum.org and start a dev environment (see help section)", "main": "index.js", "types": "./index.d.ts", diff --git a/libs/remixd/src/utils.ts b/libs/remixd/src/utils.ts index cfef199e34..aa8cd28a70 100644 --- a/libs/remixd/src/utils.ts +++ b/libs/remixd/src/utils.ts @@ -29,10 +29,10 @@ function relativePath (path: string, sharedFolder: string): string { } function normalizePath (path: string): string { + if (path === '/') path = './' if (process.platform === 'win32') { return path.replace(/\\/g, '/') } - if (path === '/') path = './' return path } @@ -42,8 +42,15 @@ function walkSync (dir: string, filelist: Filelist, sharedFolder: string): Filel filelist = filelist || {} files.forEach(function (file) { const subElement = pathModule.join(dir, file) + let isSymbolicLink - if (!fs.lstatSync(subElement).isSymbolicLink()) { + try { + isSymbolicLink = !fs.lstatSync(subElement).isSymbolicLink() + } catch (error) { + isSymbolicLink = false + } + + if (isSymbolicLink) { if (fs.statSync(subElement).isDirectory()) { filelist = walkSync(subElement, filelist, sharedFolder) } else { @@ -62,8 +69,14 @@ function resolveDirectory (dir: string, sharedFolder: string): ResolveDirectory files.forEach(function (file) { const subElement = pathModule.join(dir, file) + let isSymbolicLink - if (!fs.lstatSync(subElement).isSymbolicLink()) { + try { + isSymbolicLink = !fs.lstatSync(subElement).isSymbolicLink() + } catch (error) { + isSymbolicLink = false + } + if (isSymbolicLink) { const relative: string = relativePath(subElement, sharedFolder) ret[relative] = { isDirectory: fs.statSync(subElement).isDirectory() }