From 26ddd996226187f7f7c33a14084eb73ed956dd12 Mon Sep 17 00:00:00 2001 From: Noritaka Kobayashi Date: Sat, 28 Jun 2025 18:04:42 +0900 Subject: [PATCH 1/2] refactor: replace substr with slice & use startsWith and endsWith --- client/src/client.ts | 2 +- server/src/eslint.ts | 32 ++++++++++++++++---------------- server/src/eslintServer.ts | 4 ++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/client/src/client.ts b/client/src/client.ts index 561322d5..0ed053ff 100644 --- a/client/src/client.ts +++ b/client/src/client.ts @@ -962,7 +962,7 @@ export namespace ESLintClient { } if (detail !== undefined && languageStatus.detail !== detail) { - languageStatus.detail = detail; + languageStatus.detail = detail; } if (languageStatus.severity !== severity) { languageStatus.severity = severity; diff --git a/server/src/eslint.ts b/server/src/eslint.ts index 7e6976bb..a9b9f6b7 100644 --- a/server/src/eslint.ts +++ b/server/src/eslint.ts @@ -192,20 +192,20 @@ type ParserOptions = { }; type ESLintRcConfig = { - env: Record; + env: Record; extends: string | string[]; - // globals: Record; - ignorePatterns: string | string[]; - noInlineConfig: boolean; - // overrides: OverrideConfigData[]; - parser: string | null; - parserOptions?: ParserOptions; - plugins: string[]; - processor: string; - reportUnusedDisableDirectives: boolean | undefined; - root: boolean; - rules: Record; - settings: object; + // globals: Record; + ignorePatterns: string | string[]; + noInlineConfig: boolean; + // overrides: OverrideConfigData[]; + parser: string | null; + parserOptions?: ParserOptions; + plugins: string[]; + processor: string; + reportUnusedDisableDirectives: boolean | undefined; + root: boolean; + rules: Record; + settings: object; }; type ESLintConfig = ESLintRcConfig; @@ -1167,7 +1167,7 @@ export namespace ESLint { if (result.length === 0) { return result; } - return result[result.length - 1] === path.sep + return result.endsWith(path.sep) ? result.substring(0, result.length - 1) : result; } @@ -1331,8 +1331,8 @@ export namespace ESLint { if (typeof err.message === 'string' || err.message instanceof String) { result = err.message; result = result.replace(/\r?\n/g, ' '); - if (/^CLI: /.test(result)) { - result = result.substr(5); + if (result.startsWith('CLI: ')) { + result = result.slice(5); } } else { result = `An unknown error occurred while validating document: ${document.uri}`; diff --git a/server/src/eslintServer.ts b/server/src/eslintServer.ts index b6d7183e..596b878a 100644 --- a/server/src/eslintServer.ts +++ b/server/src/eslintServer.ts @@ -136,7 +136,7 @@ function inferFilePath(documentOrUri: string | TextDocument | URI | undefined): const extension = LanguageDefaults.getExtension(textDocument.languageId); if (extension !== undefined) { const extname = path.extname(filePath); - if (extname.length === 0 && filePath[0] === '.') { + if (extname.length === 0 && filePath.startsWith('.')) { return `${filePath}.${extension}`; } else if (extname.length > 0 && extname !== extension) { return `${filePath.substring(0, filePath.length - extname.length)}.${extension}`; @@ -802,7 +802,7 @@ async function computeAllFixes(identifier: VersionedTextDocumentIdentifier, mode start: textDocument.positionAt(diff.originalStart), end: textDocument.positionAt(diff.originalStart + diff.originalLength) }, - newText: fixedContent.substr(diff.modifiedStart, diff.modifiedLength) + newText: fixedContent.slice(diff.modifiedStart, diff.modifiedStart + diff.modifiedLength) }); } } From 5e7690f1919680a92a11ed26710e50203acae9d7 Mon Sep 17 00:00:00 2001 From: Noritaka Kobayashi Date: Mon, 18 Aug 2025 19:42:50 +0900 Subject: [PATCH 2/2] revert startsWith in eslintServer.ts --- server/src/eslintServer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/eslintServer.ts b/server/src/eslintServer.ts index 596b878a..dbd7c61b 100644 --- a/server/src/eslintServer.ts +++ b/server/src/eslintServer.ts @@ -136,7 +136,7 @@ function inferFilePath(documentOrUri: string | TextDocument | URI | undefined): const extension = LanguageDefaults.getExtension(textDocument.languageId); if (extension !== undefined) { const extname = path.extname(filePath); - if (extname.length === 0 && filePath.startsWith('.')) { + if (extname.length === 0 && filePath[0] === '.') { return `${filePath}.${extension}`; } else if (extname.length > 0 && extname !== extension) { return `${filePath.substring(0, filePath.length - extname.length)}.${extension}`;