From d275a544e4443e7a0a260d9ecb27e895f1cd4584 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Fri, 16 Jun 2023 22:28:59 +0800 Subject: [PATCH] chore: use try catch instead of `existsSync` --- packages/typescript-vue-plugin/src/index.ts | 33 +++++++++++++------ .../tests/utils/createTester.ts | 33 +++++++++++++------ packages/vue-tsc/src/index.ts | 33 +++++++++++++------ 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/packages/typescript-vue-plugin/src/index.ts b/packages/typescript-vue-plugin/src/index.ts index 102ad3d8dd..a30d06ff98 100644 --- a/packages/typescript-vue-plugin/src/index.ts +++ b/packages/typescript-vue-plugin/src/index.ts @@ -71,24 +71,37 @@ const init: ts.server.PluginModuleFactory = (modules) => { size: stats.size, }; } - } catch { } + } + catch { + return undefined; + } } }, readFile(uri, encoding) { if (uri.startsWith('file://')) { - return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + try { + return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + } + catch { + return undefined; + } } }, readDirectory(uri) { if (uri.startsWith('file://')) { - const dirName = uriToFileName(uri); - const files = fs.existsSync(dirName) ? fs.readdirSync(dirName, { withFileTypes: true }) : []; - return files.map<[string, FileType]>(file => { - return [file.name, file.isFile() ? 1 satisfies FileType.File - : file.isDirectory() ? 2 satisfies FileType.Directory - : file.isSymbolicLink() ? 64 satisfies FileType.SymbolicLink - : 0 satisfies FileType.Unknown]; - }); + try { + const dirName = uriToFileName(uri); + const files = fs.readdirSync(dirName, { withFileTypes: true }); + return files.map<[string, FileType]>(file => { + return [file.name, file.isFile() ? 1 satisfies FileType.File + : file.isDirectory() ? 2 satisfies FileType.Directory + : file.isSymbolicLink() ? 64 satisfies FileType.SymbolicLink + : 0 satisfies FileType.Unknown]; + }); + } + catch { + return []; + } } return []; }, diff --git a/packages/vue-language-service/tests/utils/createTester.ts b/packages/vue-language-service/tests/utils/createTester.ts index c06b9e3974..0509570520 100644 --- a/packages/vue-language-service/tests/utils/createTester.ts +++ b/packages/vue-language-service/tests/utils/createTester.ts @@ -68,24 +68,37 @@ function createTester(root: string) { size: stats.size, }; } - } catch { } + } + catch { + return undefined; + } } }, readFile(uri, encoding) { if (uri.startsWith('file://')) { - return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + try { + return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + } + catch { + return undefined; + } } }, readDirectory(uri) { if (uri.startsWith('file://')) { - const dirName = uriToFileName(uri); - const files = fs.existsSync(dirName) ? fs.readdirSync(dirName, { withFileTypes: true }) : []; - return files.map<[string, FileType]>(file => { - return [file.name, file.isFile() ? FileType.File - : file.isDirectory() ? FileType.Directory - : file.isSymbolicLink() ? FileType.SymbolicLink - : FileType.Unknown]; - }); + try { + const dirName = uriToFileName(uri); + const files = fs.readdirSync(dirName, { withFileTypes: true }); + return files.map<[string, FileType]>(file => { + return [file.name, file.isFile() ? FileType.File + : file.isDirectory() ? FileType.Directory + : file.isSymbolicLink() ? FileType.SymbolicLink + : FileType.Unknown]; + }); + } + catch { + return []; + } } return []; }, diff --git a/packages/vue-tsc/src/index.ts b/packages/vue-tsc/src/index.ts index 9ff9012b24..3ddcf0c9b6 100644 --- a/packages/vue-tsc/src/index.ts +++ b/packages/vue-tsc/src/index.ts @@ -94,24 +94,37 @@ export function createProgram(options: ts.CreateProgramOptions) { size: stats.size, }; } - } catch { } + } + catch { + return undefined; + } } }, readFile(uri, encoding) { if (uri.startsWith('file://')) { - return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + try { + return fs.readFileSync(uriToFileName(uri), { encoding: encoding as 'utf-8' ?? 'utf-8' }); + } + catch { + return undefined; + } } }, readDirectory(uri) { if (uri.startsWith('file://')) { - const dirName = uriToFileName(uri); - const files = fs.existsSync(dirName) ? fs.readdirSync(dirName, { withFileTypes: true }) : []; - return files.map<[string, FileType]>(file => { - return [file.name, file.isFile() ? 1 satisfies FileType.File - : file.isDirectory() ? 2 satisfies FileType.Directory - : file.isSymbolicLink() ? 64 satisfies FileType.SymbolicLink - : 0 satisfies FileType.Unknown]; - }); + try { + const dirName = uriToFileName(uri); + const files = fs.readdirSync(dirName, { withFileTypes: true }); + return files.map<[string, FileType]>(file => { + return [file.name, file.isFile() ? 1 satisfies FileType.File + : file.isDirectory() ? 2 satisfies FileType.Directory + : file.isSymbolicLink() ? 64 satisfies FileType.SymbolicLink + : 0 satisfies FileType.Unknown]; + }); + } + catch { + return []; + } } return []; },