feat(vscode): add support for tsgolint binary configuration#16921
Conversation
- Introduced new configuration option `oxc.path.tsgolint` in `package.json`. - Updated `VSCodeConfig` to handle the new `tsgolint` binary path. - Enhanced `ConfigService` to retrieve the `tsgolint` binary path. - Modified `runExecutable` to accept `tsgolintPath` as an argument. - Updated linter to utilize the `tsgolint` binary path. - Added tests for `tsgolint` configuration in `VSCodeConfig` and `ConfigService`. This change allows users to specify a custom path for the `tsgolint` binary, improving flexibility in the development environment.
There was a problem hiding this comment.
Pull request overview
This PR adds support for configuring a custom tsgolint binary path in the VSCode extension, addressing issue #16788. Users can now specify oxc.path.tsgolint to override the default binary location.
Key Changes:
- Added
oxc.path.tsgolintconfiguration option to allow custom binary path specification - Integrated tsgolint path into the language server environment via
OXLINT_TSGOLINT_PATH - Added comprehensive test coverage for the new configuration option
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
editors/vscode/package.json |
Added oxc.path.tsgolint configuration property and restricted configuration |
editors/vscode/client/VSCodeConfig.ts |
Added binPathTsGoLint property and methods to manage tsgolint binary path |
editors/vscode/client/ConfigService.ts |
Added getTsGoLintServerBinPath() method to resolve tsgolint binary path |
editors/vscode/client/tools/lsp_helper.ts |
Updated runExecutable() to accept and set tsgolintPath via environment variable |
editors/vscode/client/tools/linter.ts |
Modified linter initialization to retrieve and pass tsgolint path to executable |
editors/vscode/tests/VSCodeConfig.spec.ts |
Added test coverage for tsgolint configuration in VSCodeConfig |
editors/vscode/tests/ConfigService.spec.ts |
Added comprehensive tests for getTsGoLintServerBinPath() method |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
camc314
left a comment
There was a problem hiding this comment.
Looks good to me. Copilot's comments about casing are valid.
I was thinking the same thing before I pushed but there are 100+ matches of both cases (casings?) in the codebase and after checking they seemed to match the context in which they are placed. Happy to switch it though. I got the impression that copilot was suggesting the opposite casing of the respective contexts ( |
|
lol, I see you're point. @Sysix does it make sense for this to be |
Co-authored-by: Copilot <[email protected]> Signed-off-by: ColemanDunn <[email protected]>
|
Oh oops before you made that comment I already committed this one just fyi haha: 3fbc466 |
Sysix
left a comment
There was a problem hiding this comment.
does it make sense for this to be Tsgolint rather than TsGoLint ?
I do not mind how it is written in the code. The important part is the user configuration oxc.path.tsgolint, which should reflect the npm package name :)
Co-authored-by: Alexander S. <[email protected]> Signed-off-by: ColemanDunn <[email protected]>
… I change casing on because it breaks the references in the test
The `getTsGoLintServerBinPath` method and its associated tests have been removed. This functionality is no longer needed as tsgolint is being deprecated.
|
Oops the trailing comma from the suggested change failed a bunch of stuff. Just pushed the fix. |
|
Thank you for the work! |
# Oxlint ### 🚀 Features - 6cc3fdf linter/no-inferrable-types: Implement fixer (#17090) (camc314) - 2067997 linter/no-negation-in-equality-check: Implement suggestion (#17084) (camc314) - 552f9ef vscode: Auto-generate VSCode README configuration from package.json (#16970) (Copilot) - 9190c4b linter/no-unnecessary-array-flat-depth: Implement fixer (#17057) (camc314) - ed789de linter/misrefactored-assign-op: Implement fixer (#17056) (camc314) - a0f74a0 linter/config: Allow aliasing plugin names to allow names the same as builtin plugins (#15569) (Cameron) - a43d251 linter/plugins: `RuleTester` support `languageOptions.globals` (#17009) (overlookmotel) - 35070d9 linter/bad-bitwise-operator: Implement fixer (#17006) (camc314) - 322d995 linter/prefer-enum-initializers: Implement fixer (#17004) (camc314) - ae1e5bc vscode: Add support for tsgolint binary configuration (#16921) (ColemanDunn) - 3bfe31e linter/eslint-plugin-vitest: Add prefer-called-with as vitest compatible jest rule (#16993) (Said Atrahouch) - 0cd075f linter/eslint-plugin-jest: Add fix capabilities to prefer-called-with rule (#16987) (Said Atrahouch) - 357564b linter: Add options for `typescript/require-array-sort-compare` rule. (#16980) (connorshea) - 2b0ffba linter: Add options for `typescript/no-meaningless-void-operator` rule. (#16981) (connorshea) - 8bc4287 linter/plugins: Validate options against schema (#16974) (overlookmotel) - fdc7d08 linter: Implement eslint/capitalized-comments (#16896) (Tu Shaokun) - f8b6561 linter: Add support for `test.for` in vitest (#16925) (camchenry) - 7ee0379 linter/eslint-plugin-vitest: Implement prefer-spy-on (#16426) (Said Atrahouch) - fc96ee0 linter: Implement jest/prefer-to-have-been-called-times (#16938) (秦宇航) - 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314) - e31da2a linter: Implement jest/perfer-to-have-been-called (#16899) (秦宇航) - 1a31306 linter/eslint-plugin-vitest: Add require-hook as vitest compatible jest rule (#16880) (Said Atrahouch) - cd3db21 linter: Add ignoredTypeNames option to no-base-to-string rule (#16898) (camc314) - 763b25a linter: Implement eslint/no-inline-comments (#16885) (Tu Shaokun) ### 🐛 Bug Fixes - fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel) - 005ec25 linter: Permit `$schema` `.oxlintrc.json` struct (#17060) (Copilot) - fd03131 linter/plugins: Handle plugin names containing slashes (#17073) (overlookmotel) - b2a4fac linter/plugins: Error if plugin name alias is not normalized (#17071) (overlookmotel) - e046c4e linter/no-misused-spread: Add rule options support (#17054) (camc314) - 5c1a9e0 linter/no-deprecated: Add rule options support (#17053) (camc314) - 8c9cafe linter: `import/consistent-type-specifier-style`: add support for declaration files (#16979) (camchenry) - dab4780 linter/no-empty-pattern: Misleading help message for arrays (#17039) (Copilot) - 67f8c5d linter/plugins: Get correct plugin name in all cases (#17033) (overlookmotel) - 674dab9 linter/plugins: Fix indentation in error message (#17018) (overlookmotel) - 6524f72 linter/plugins: Add `@types/node` dev dependency to `oxlint` package (#17016) (overlookmotel) - 7a35513 linter/plugins: Better error for `null` in `globals` in `RuleTester` (#17011) (overlookmotel) - 42603ba linter/plugins: Always define `languageOptions.globals` (#17008) (overlookmotel) - 4cdc2f8 linter: Fix VITEST override rule list and add test for alphabetizing the two lists (#16975) (Connor Shea) - e466562 linter/consistent-type-definitions: Handle parenthesized types in rule (#16998) (camc314) - fce267c linter: Correct vitest plugin source to be `@vitest/eslint-plugin` (#16976) (connorshea) - 477bb57 linter: Fix `vitest/no-restricted-vi-methods` and add tests for it. (#16971) (connorshea) - 7d6974d linter: Ignore oxlint directive comments in capitalized-comments (#16989) (Tu Shaokun) - 23ac6b1 linter/plugins: Apply defaults from `meta.schema` to options (#16930) (overlookmotel) - 2f946cf linter/plugins: Error if `defaultOptions` is not JSON-serializable (#16959) (overlookmotel) - d8b8a57 linter/plugins: Freeze whole of merged options (#16958) (overlookmotel) - d446c43 linter: Prevent extra fields from being present on oxlint config file (#16874) (connorshea) - b845871 linter/plugins: Correctly handle object with `__proto__` keys in options merging (#16928) (overlookmotel) - c897794 linter: Fix eslint/sort-imports allowSeparatedGroups not working with single empty line (#16012) (Duc Nghiem Xuan) - 0c347a1 linter/array-type: Handle satisfies expression (#16903) (camc314) ### ⚡ Performance - 70d853c linter: Avoid cloning source text when cloning AST into fixed-size allocator (#17088) (overlookmotel) - 4d389f7 linter: Less bounds checks in `normalize_plugin_name` (#17030) (overlookmotel) - fd8e9c6 linter/plugins: Speed up cloning JSON objects (#16997) (overlookmotel) - d77e22d linter/plugins: Use `DEFAULT_OPTIONS` for rules with empty array as default options (#16913) (overlookmotel) ### 📚 Documentation - 6d053b4 linter: Fix typo in doc comment (#17091) (overlookmotel) - b5f3c91 linter: Document intentional exclusion of ignoreCase option in jsx-no-duplicate-props (#17046) (Copilot) - a0bf5d8 linter: Fix the config option docs for no-inline-comments rule. (#16983) (connorshea) - ca26a11 linter/plugins: Fix typo in doc comment (#16966) (overlookmotel) - 3183bf8 linter/plugins: Fix typo in JSDoc comment (#16900) (overlookmotel) # Oxfmt ### 🚀 Features - 15dfb55 oxfmt: Respect single nearest `.editorconfig` (#17043) (leaysgur) - 8c33ff4 oxfmt: Expose Node.js API: `format(fileName, sourceText, options?)` (#16939) (leaysgur) ### 🐛 Bug Fixes - d340c87 oxfmt: Update api `FormatOptions` type with `& Record<string, unknown>` (#17036) (leaysgur) - 827a256 oxfmt: Place ignorePatterns at bottom of JSON in --migrate prettier (#16926) (Boshen) Co-authored-by: overlookmotel <[email protected]>
That worked!
I was thinking the same thing |
…ect#16921) PR to address this issue: oxc-project#16788 I used cursor ask, plan, and agent mode to familiarize myself with the code and implement the changes. AI summary of changes: - Introduced new configuration option `oxc.path.tsgolint` in `package.json`. - Updated `VSCodeConfig` to handle the new `tsgolint` binary path. - Enhanced `ConfigService` to retrieve the `tsgolint` binary path. - Modified `runExecutable` to accept `tsgolintPath` as an argument. - Updated linter to utilize the `tsgolint` binary path. - Added tests for `tsgolint` configuration in `VSCodeConfig` and `ConfigService`. This change allows users to specify a custom path for the `tsgolint` binary, improving flexibility in the development environment. --------- Signed-off-by: ColemanDunn <[email protected]> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Copilot <[email protected]> Co-authored-by: Alexander S. <[email protected]> Co-authored-by: Cameron <[email protected]>



PR to address this issue: #16788
I used cursor ask, plan, and agent mode to familiarize myself with the code and implement the changes.
AI summary of changes:
oxc.path.tsgolintinpackage.json.VSCodeConfigto handle the newtsgolintbinary path.ConfigServiceto retrieve thetsgolintbinary path.runExecutableto accepttsgolintPathas an argument.tsgolintbinary path.tsgolintconfiguration inVSCodeConfigandConfigService.This change allows users to specify a custom path for the
tsgolintbinary, improving flexibility in the development environment.