diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 7d899c71..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": ["@typescript-eslint"], - "rules": { - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "warn", - { - "varsIgnorePattern": "^_", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-explicit-any": "off", - "semi": ["error", "always"] - } -} diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 31c072e9..c63ead0c 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -23,7 +23,6 @@ jobs: ## make sure this corresponds with the version in release.yml node-version: latest - - run: yarn install --immutable --immutable-cache --check-cache - name: Package extension diff --git a/.vscode-test.js b/.vscode-test.js index 5a43f210..6ee96d71 100644 --- a/.vscode-test.js +++ b/.vscode-test.js @@ -8,8 +8,8 @@ module.exports = defineConfig([ workspaceFolder: './test-workspace', installExtensions: ['justusadam.language-haskell'], mocha: { - timeout: 120 * 1000 // 2 minute timeout - } - } + timeout: 120 * 1000, // 2 minute timeout + }, + }, // you can specify additional test configurations, too ]); diff --git a/Changelog.md b/Changelog.md index 59552986..c7dccd8c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,13 +3,13 @@ ## 2.5.3 - Split out packaging action - ([#1080](https://github.com/haskell/vscode-haskell/pull/1080)) by @fendor + ([#1080](https://github.com/haskell/vscode-haskell/pull/1080)) by @fendor - Add Session Loading style to list of known configs - ([#1077](https://github.com/haskell/vscode-haskell/pull/1077)) by @fendor + ([#1077](https://github.com/haskell/vscode-haskell/pull/1077)) by @fendor - Tooling update - ([#1043](https://github.com/haskell/vscode-haskell/pull/1043)) by @bzm3r + ([#1043](https://github.com/haskell/vscode-haskell/pull/1043)) by @bzm3r - Add `haskell.plugin.fourmolu.config.path` option - ([#987](https://github.com/haskell/vscode-haskell/pull/987)) by @georgefst + ([#987](https://github.com/haskell/vscode-haskell/pull/987)) by @georgefst ## 2.5.2 @@ -22,94 +22,94 @@ ## 2.5.0 - Add tracking of cabal files - ([#618](https://github.com/haskell/vscode-haskell/pull/618)) by @fendor + ([#618](https://github.com/haskell/vscode-haskell/pull/618)) by @fendor ## 2.4.3 - Address invalid byte sequence error #1022 - ([#1022](https://github.com/haskell/vscode-haskell/pull/1022)) by @felixlinker + ([#1022](https://github.com/haskell/vscode-haskell/pull/1022)) by @felixlinker - Always set the cwd for the executable (#1011) - ([#1011](https://github.com/haskell/vscode-haskell/pull/1011)) by @fendor + ([#1011](https://github.com/haskell/vscode-haskell/pull/1011)) by @fendor ## 2.4.2 - Add stan plugin option #1000 - ([#1000](https://github.com/haskell/vscode-haskell/pull/1000)) by @fendor + ([#1000](https://github.com/haskell/vscode-haskell/pull/1000)) by @fendor - Probe for GHCup binary wrt #962 - ([#963](https://github.com/haskell/vscode-haskell/pull/963)) by @hasufell + ([#963](https://github.com/haskell/vscode-haskell/pull/963)) by @hasufell - Bump old hls version and upgrade test runner to macos-latest - ([#960](https://github.com/haskell/vscode-haskell/pull/960)) by @July541 + ([#960](https://github.com/haskell/vscode-haskell/pull/960)) by @July541 - Increase time limitation to make test on Windows more stable - ([#959](https://github.com/haskell/vscode-haskell/pull/959)) by @July541 + ([#959](https://github.com/haskell/vscode-haskell/pull/959)) by @July541 - Update release docs for refreshing CI tokens - ([#942](https://github.com/haskell/vscode-haskell/pull/942)) by @fendor + ([#942](https://github.com/haskell/vscode-haskell/pull/942)) by @fendor ## 2.4.1 - Downgrade vscode-languageclient - ([#934](https://github.com/haskell/vscode-haskell/pull/934)) by @fendor + ([#934](https://github.com/haskell/vscode-haskell/pull/934)) by @fendor - Bump vscode to 1.80.0 - ([#912](https://github.com/haskell/vscode-haskell/pull/912)) by @July541 + ([#912](https://github.com/haskell/vscode-haskell/pull/912)) by @July541 ## 2.4.0 - Prepare release 2.4.0 - ([#906](https://github.com/haskell/vscode-haskell/pull/906)) by @VeryMilkyJoe + ([#906](https://github.com/haskell/vscode-haskell/pull/906)) by @VeryMilkyJoe - Simplify tests - ([#904](https://github.com/haskell/vscode-haskell/pull/904)) by @July541 + ([#904](https://github.com/haskell/vscode-haskell/pull/904)) by @July541 - Remove unused code - ([#898](https://github.com/haskell/vscode-haskell/pull/898)) by @fendor + ([#898](https://github.com/haskell/vscode-haskell/pull/898)) by @fendor - Remove hoogle command from vscode extension - ([#896](https://github.com/haskell/vscode-haskell/pull/896)) by @fendor + ([#896](https://github.com/haskell/vscode-haskell/pull/896)) by @fendor - Update readme - ([#886](https://github.com/haskell/vscode-haskell/pull/886)) by @VeryMilkyJoe + ([#886](https://github.com/haskell/vscode-haskell/pull/886)) by @VeryMilkyJoe - Fix broken tests - ([#880](https://github.com/haskell/vscode-haskell/pull/880)) by @July541 + ([#880](https://github.com/haskell/vscode-haskell/pull/880)) by @July541 - Update README.md: clarify how to use Stack with vscode-haskell extension - ([#874](https://github.com/haskell/vscode-haskell/pull/874)) by @miguel-negrao + ([#874](https://github.com/haskell/vscode-haskell/pull/874)) by @miguel-negrao - Remove debugger tools from CI - ([#873](https://github.com/haskell/vscode-haskell/pull/873)) by @fendor + ([#873](https://github.com/haskell/vscode-haskell/pull/873)) by @fendor - Refactor tests to work correctly - ([#872](https://github.com/haskell/vscode-haskell/pull/872)) by @July541 + ([#872](https://github.com/haskell/vscode-haskell/pull/872)) by @July541 - Downgrade vscode language client to 7.0.0 - ([#853](https://github.com/haskell/vscode-haskell/pull/853)) by @fendor + ([#853](https://github.com/haskell/vscode-haskell/pull/853)) by @fendor - Update badge url for VSCode Marketplace - ([#851](https://github.com/haskell/vscode-haskell/pull/851)) by @fendor + ([#851](https://github.com/haskell/vscode-haskell/pull/851)) by @fendor ## 2.2.4 -- Downgrade vscode language client to 7.0.0 - ([#843](https://github.com/haskell/vscode-haskell/pull/853)) by @fendor +- Downgrade vscode language client to 7.0.0 + ([#843](https://github.com/haskell/vscode-haskell/pull/853)) by @fendor ## 2.2.3 - Prepare release 2.2.3 - ([#843](https://github.com/haskell/vscode-haskell/pull/843)) by @fendor + ([#843](https://github.com/haskell/vscode-haskell/pull/843)) by @fendor - Add new plugins fields - ([#842](https://github.com/haskell/vscode-haskell/pull/842)) by @fendor + ([#842](https://github.com/haskell/vscode-haskell/pull/842)) by @fendor - Migrate to eslint - ([#782](https://github.com/haskell/vscode-haskell/pull/782)) by @fendor + ([#782](https://github.com/haskell/vscode-haskell/pull/782)) by @fendor - Bump minor versions of package dependencies - ([#781](https://github.com/haskell/vscode-haskell/pull/781)) by @fendor + ([#781](https://github.com/haskell/vscode-haskell/pull/781)) by @fendor - Update unsupported GHC doc link - ([#776](https://github.com/haskell/vscode-haskell/pull/776)) by @limaak + ([#776](https://github.com/haskell/vscode-haskell/pull/776)) by @limaak - Fix release CI - ([#775](https://github.com/haskell/vscode-haskell/pull/775)) by @fendor + ([#775](https://github.com/haskell/vscode-haskell/pull/775)) by @fendor - Fix mistake in generated ChangeLog - ([#774](https://github.com/haskell/vscode-haskell/pull/774)) by @fendor + ([#774](https://github.com/haskell/vscode-haskell/pull/774)) by @fendor ## 2.2.2 - Add link to HLS installation webpage - ([#751](https://github.com/haskell/vscode-haskell/pull/751)) by @fendor + ([#751](https://github.com/haskell/vscode-haskell/pull/751)) by @fendor - Change scope of serverExecutablePath to machine-overridable - ([#742](https://github.com/haskell/vscode-haskell/pull/742)) by @fendor + ([#742](https://github.com/haskell/vscode-haskell/pull/742)) by @fendor - Add Fourmolu config property - ([#736](https://github.com/haskell/vscode-haskell/pull/736)) by @georgefst + ([#736](https://github.com/haskell/vscode-haskell/pull/736)) by @georgefst - Add missing configuration options for the latest HLS version - ([#717](https://github.com/haskell/vscode-haskell/pull/717)) by @fendor + ([#717](https://github.com/haskell/vscode-haskell/pull/717)) by @fendor - Change sensible to sensitive - ([#709](https://github.com/haskell/vscode-haskell/pull/709)) by @ploeh + ([#709](https://github.com/haskell/vscode-haskell/pull/709)) by @ploeh ## 2.2.1 diff --git a/README.md b/README.md index fafc0464..1a76c8e5 100644 --- a/README.md +++ b/README.md @@ -212,8 +212,6 @@ You can check each GHC version's support status and the policy followed for depr The exact list of binaries can be checked in the last release of haskell-language-server: - - ## Using multi-root workspaces First, check out [what multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces) are. The idea of using multi-root workspaces, is to be able to work on several different Haskell projects, where the GHC version or stackage LTS could differ, and have it work smoothly. @@ -262,6 +260,7 @@ setup-info: 9.0.2: url: 'https://downloads.haskell.org/ghc/9.0.2/ghc-9.0.2a-x86_64-fedora27-linux.tar.xz' ``` + Now make sure to remove cached/installed libraries to avoid getting segfaults at runtime. As a final workaround, you can try to compile HLS from source (the extension should pick it up) via ghcup, see [https://haskell-language-server.readthedocs.io/en/stable/installation.html#ghcup](https://haskell-language-server.readthedocs.io/en/stable/installation.html#ghcup). In any case, the recommended approach is to let GHCup install the GHC binaries. diff --git a/docs/Release.md b/docs/Release.md index e160ed76..f9e9057d 100644 --- a/docs/Release.md +++ b/docs/Release.md @@ -21,13 +21,13 @@ Follow this list for items that must be completed for release of the `vscode-has Sometimes there is a release (stable) and pre-release (unstable) at the same time and we need to do a release for the stable release and sometimes we need to do a release for the pre-release series. To simplify the release management, the following policy is in place: -* The branch `master` contains the current pre-release - * As such, its `package.json` must always have the form `major.ODD_NUMBER.patch` - * Dependency version bumps are automatically performed by dependabot against `master` - * For each release, a tag must be created -* Stable releases are located on a separate branch called `release-` - * Before a release, the branch is rebased on top of current master - * For each stable release, a tag must be created of the form `major.EVEN_NUMBER.patch` +- The branch `master` contains the current pre-release + - As such, its `package.json` must always have the form `major.ODD_NUMBER.patch` + - Dependency version bumps are automatically performed by dependabot against `master` + - For each release, a tag must be created +- Stable releases are located on a separate branch called `release-` + - Before a release, the branch is rebased on top of current master + - For each stable release, a tag must be created of the form `major.EVEN_NUMBER.patch` ## Release CI @@ -37,9 +37,9 @@ Seemingly, the VSX Marketplace token does not expire. If it is lost for some rea The latter needs to be refreshed once a year. -* Send an email to `committee@haskell.org` requesting the token - * Include your public GPG key so they can send you the token encrypted -* Update the repository secrets - * People from the [@haskell-ide](https://github.com/orgs/haskell/teams/haskell-ide) have full access to the vscode-haskell repo and can update secrets +- Send an email to `committee@haskell.org` requesting the token + - Include your public GPG key so they can send you the token encrypted +- Update the repository secrets + - People from the [@haskell-ide](https://github.com/orgs/haskell/teams/haskell-ide) have full access to the vscode-haskell repo and can update secrets Last time the VSCode Marketplace token was updated: 2023-08-17 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..32aa338c --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,27 @@ +import globals from 'globals'; +import pluginJs from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +export default [ + { files: ['**/*.{js,mjs,cjs,ts}'] }, + { languageOptions: { globals: globals.node } }, + { + ...pluginJs.configs.recommended, + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + }, + }, + ...tseslint.configs.recommended, +]; diff --git a/package.json b/package.json index e8365481..2bf91fd0 100644 --- a/package.json +++ b/package.json @@ -1289,8 +1289,8 @@ "vscode:prepublish": "webpack --mode production", "webpack": "webpack --mode none", "watch": "webpack --mode development --watch", - "lint": "eslint -c .eslintrc.json --ext .ts src", - "lint-fix": "eslint --fix -c .eslintrc.json --ext .ts src", + "lint": "eslint -c eslint.config.mjs src", + "lint-fix": "eslint --fix -c eslint.config.mjs src", "push-tag": "git tag -a $npm_package_version -m \"Version $npm_package_version\" && git push origin $npm_package_version", "pretest": "tsc --alwaysStrict -p ./", "format": "prettier . --write", @@ -1302,23 +1302,26 @@ } }, "devDependencies": { + "@eslint/js": "^9.13.0", "@types/glob": "^8.1.0", "@types/mocha": "^10.0.9", "@types/node": "^22.7.7", "@types/vscode": "^1.88.0", "@types/which": "^3.0.4", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.11.0", + "@typescript-eslint/parser": "^8.11.0", "@vscode/test-cli": "^0.0.10", "@vscode/test-electron": "^2.4.1", - "eslint": "^8.57.0", + "eslint": "^9.13.0", "eslint-webpack-plugin": "^4.2.0", "glob": "^11.0.0", + "globals": "^15.11.0", "husky": "^9.1.6", "mocha": "^10.7.3", "prettier": "^3.3.3", "ts-loader": "^9.5.1", "typescript": "^5.5.4", + "typescript-eslint": "^8.11.0", "webpack": "^5.95.0", "webpack-cli": "^5.1.1" }, diff --git a/src/docsBrowser.ts b/src/docsBrowser.ts index 097ba29c..0d9ec779 100644 --- a/src/docsBrowser.ts +++ b/src/docsBrowser.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { dirname } from 'path'; import { CancellationToken, @@ -99,7 +100,7 @@ export function hoverLinksMiddlewareHook( document: TextDocument, position: Position, token: CancellationToken, - next: ProvideHoverSignature + next: ProvideHoverSignature, ): ProviderResult { const res = next(document, position, token); return Promise.resolve(res).then((r) => { @@ -115,7 +116,7 @@ export function completionLinksMiddlewareHook( position: Position, context: CompletionContext, token: CancellationToken, - next: ProvideCompletionItemsSignature + next: ProvideCompletionItemsSignature, ): ProviderResult { const res = next(document, position, context, token); @@ -141,7 +142,7 @@ function processLink(ms: MarkdownString | MarkedString): string | MarkdownString function transform(s: string): string { return s.replace( /\[(.+)\]\((file:.+\/doc\/(?:.*html\/libraries\/)?([^/]+)\/(?:.*\/)?(.+\.html#?.*))\)/gi, - (all, title, localPath, packageName, fileAndAnchor) => { + (_all, title, localPath, packageName, fileAndAnchor) => { let hackageUri: string; if (title === 'Documentation') { hackageUri = `https://hackage.haskell.org/package/${packageName}/docs/${fileAndAnchor}`; @@ -156,7 +157,7 @@ function processLink(ms: MarkdownString | MarkedString): string | MarkdownString } else if (title === 'Source') { hackageUri = `https://hackage.haskell.org/package/${packageName}/docs/src/${fileAndAnchor.replace( /-/gi, - '.' + '.', )}`; const encoded = encodeURIComponent(JSON.stringify({ title, localPath, hackageUri })); let cmd: string; @@ -169,7 +170,7 @@ function processLink(ms: MarkdownString | MarkedString): string | MarkdownString } else { return s; } - } + }, ); } if (typeof ms === 'string') { diff --git a/src/errors.ts b/src/errors.ts index 83d09382..5bcb92d1 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -1,6 +1,6 @@ import { Uri } from 'vscode'; -export class HlsError extends Error { } +export class HlsError extends Error {} export class MissingToolError extends HlsError { public readonly tool: string; diff --git a/src/extension.ts b/src/extension.ts index 0d562f06..111b72ed 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -153,7 +153,7 @@ async function activateServerForFolder(context: ExtensionContext, uri: Uri, fold context, logger, currentWorkingDir, - folder + folder, ); if (!serverExecutable) { return; diff --git a/src/hlsBinaries.ts b/src/hlsBinaries.ts index d2c8a788..91a42f59 100644 --- a/src/hlsBinaries.ts +++ b/src/hlsBinaries.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import * as child_process from 'child_process'; import * as fs from 'fs'; import { stat } from 'fs/promises'; @@ -38,7 +39,7 @@ type ProcessCallback = ( stdout: string, stderr: string, resolve: (value: string | PromiseLike) => void, - reject: (reason?: HlsError | Error | string) => void + reject: (reason?: HlsError | Error | string) => void, ) => void; /** @@ -65,10 +66,10 @@ async function callAsync( title?: string, cancellable?: boolean, envAdd?: IEnvVars, - callback?: ProcessCallback + callback?: ProcessCallback, ): Promise { let newEnv: IEnvVars = resolveServerEnvironmentPATH( - workspace.getConfiguration('haskell').get('serverEnvironment') || {} + workspace.getConfiguration('haskell').get('serverEnvironment') || {}, ); newEnv = { ...(process.env as IEnvVars), ...newEnv, ...(envAdd || {}) }; return window.withProgress( @@ -106,13 +107,13 @@ async function callAsync( reject( Error(`\`${command}\` exited with exit code ${err.code}. Consult the [Extensions Output](https://github.com/haskell/vscode-haskell#investigating-and-reporting-problems) - for details.`) + for details.`), ); } else { resolve(stdout?.trim()); } } - } + }, ) .on('exit', (code, signal) => { const msg = @@ -127,7 +128,7 @@ async function callAsync( }); token.onCancellationRequested(() => childProcess.kill()); }); - } + }, ); } @@ -179,7 +180,7 @@ export async function findHaskellLanguageServer( context: ExtensionContext, logger: Logger, workingDir: string, - folder?: WorkspaceFolder + folder?: WorkspaceFolder, ): Promise<[string, string | undefined]> { logger.info('Finding haskell-language-server'); @@ -205,7 +206,7 @@ export async function findHaskellLanguageServer( promptMessage, { modal: true }, 'Automatically via GHCup', - 'Manually via PATH' + 'Manually via PATH', ); const decision = (await popup) || null; @@ -215,7 +216,7 @@ export async function findHaskellLanguageServer( manageHLS = 'PATH'; } else { window.showWarningMessage( - "Choosing default PATH method for HLS discovery. You can change this via 'haskell.manageHLS' in the settings." + "Choosing default PATH method for HLS discovery. You can change this via 'haskell.manageHLS' in the settings.", ); manageHLS = 'PATH'; } @@ -240,7 +241,7 @@ export async function findHaskellLanguageServer( // support explicit toolchain config const toolchainConfig = new Map( - Object.entries(workspace.getConfiguration('haskell').get('toolchain') as any) + Object.entries(workspace.getConfiguration('haskell').get('toolchain') as any), ) as ToolConfig; if (toolchainConfig) { latestHLS = toolchainConfig.get('hls'); @@ -278,28 +279,28 @@ export async function findHaskellLanguageServer( const stackInstalled = latestStack ? await toolInstalled(context, logger, 'stack', latestStack) : undefined; const ghcInstalled = executableExists('ghc') ? new InstalledTool( - 'ghc', - await callAsync(`ghc${exeExt}`, ['--numeric-version'], logger, undefined, undefined, false) - ) + 'ghc', + await callAsync(`ghc${exeExt}`, ['--numeric-version'], logger, undefined, undefined, false), + ) : // if recGHC is null, that means user disabled automatic handling, - recGHC !== null + recGHC !== null ? await toolInstalled(context, logger, 'ghc', recGHC) : undefined; const toInstall: InstalledTool[] = [hlsInstalled, cabalInstalled, stackInstalled, ghcInstalled].filter( - (tool) => tool && !tool.installed + (tool) => tool && !tool.installed, ) as InstalledTool[]; if (toInstall.length > 0) { const decision = await window.showInformationMessage( `Need to download ${toInstall.map((t) => t.nameWithVersion).join(', ')}, continue?`, 'Yes', 'No', - "Yes, don't ask again" + "Yes, don't ask again", ); if (decision === 'Yes') { logger.info(`User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')}.`); } else if (decision === "Yes, don't ask again") { logger.info( - `User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')} and won't be asked again.` + `User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')} and won't be asked again.`, ); workspace.getConfiguration('haskell').update('promptBeforeDownloads', false); } else { @@ -335,8 +336,12 @@ export async function findHaskellLanguageServer( 'Installing latest toolchain for bootstrap', true, (err, stdout, _stderr, resolve, reject) => { - err ? reject("Couldn't install latest toolchain") : resolve(stdout?.trim()); - } + if (err) { + reject("Couldn't install latest toolchain"); + } else { + resolve(stdout?.trim()); + } + }, ); // now figure out the actual project GHC version and the latest supported HLS version @@ -356,7 +361,7 @@ export async function findHaskellLanguageServer( const hlsInstalled = projectHls ? await toolInstalled(context, logger, 'hls', projectHls) : undefined; const ghcInstalled = projectGhc ? await toolInstalled(context, logger, 'ghc', projectGhc) : undefined; const toInstall: InstalledTool[] = [hlsInstalled, ghcInstalled].filter( - (tool) => tool && !tool.installed + (tool) => tool && !tool.installed, ) as InstalledTool[]; if (toInstall.length > 0) { const decision = await window.showInformationMessage( @@ -364,13 +369,13 @@ export async function findHaskellLanguageServer( { modal: true }, 'Yes', 'No', - "Yes, don't ask again" + "Yes, don't ask again", ); if (decision === 'Yes') { logger.info(`User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')}.`); } else if (decision === "Yes, don't ask again") { logger.info( - `User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')} and won't be asked again.` + `User accepted download for ${toInstall.map((t) => t.nameWithVersion).join(', ')} and won't be asked again.`, ); workspace.getConfiguration('haskell').update('promptBeforeDownloads', false); } else { @@ -408,7 +413,7 @@ export async function findHaskellLanguageServer( .filter((t) => t[1]) .map((t) => `${t[0]}-${t[1]}`) .join(', ')}`, - true + true, ); if (projectHls) { @@ -426,7 +431,7 @@ async function callGHCup( args: string[], title?: string, cancellable?: boolean, - callback?: ProcessCallback + callback?: ProcessCallback, ): Promise { const metadataUrl = workspace.getConfiguration('haskell').metadataURL; @@ -443,7 +448,7 @@ async function callGHCup( // omit colourful output because the logs are uglier NO_COLOR: '1', }, - callback + callback, ); } else { throw new HlsError(`Internal error: tried to call ghcup while haskell.manageHLS is set to ${manageHLS}. Aborting!`); @@ -454,17 +459,17 @@ async function getLatestProjectHLS( context: ExtensionContext, logger: Logger, workingDir: string, - toolchainBindir: string + toolchainBindir: string, ): Promise<[string, string]> { // get project GHC version, but fallback to system ghc if necessary. const projectGhc = toolchainBindir ? await getProjectGHCVersion(toolchainBindir, workingDir, logger).catch(async (e) => { - logger.error(`${e}`); - window.showWarningMessage( - `I had trouble figuring out the exact GHC version for the project. Falling back to using 'ghc${exeExt}'.` - ); - return await callAsync(`ghc${exeExt}`, ['--numeric-version'], logger, undefined, undefined, false); - }) + logger.error(`${e}`); + window.showWarningMessage( + `I had trouble figuring out the exact GHC version for the project. Falling back to using 'ghc${exeExt}'.`, + ); + return await callAsync(`ghc${exeExt}`, ['--numeric-version'], logger, undefined, undefined, false); + }) : await callAsync(`ghc${exeExt}`, ['--numeric-version'], logger, undefined, undefined, false); // first we get supported GHC versions from available HLS bindists (whether installed or not) @@ -499,7 +504,7 @@ async function getLatestProjectHLS( export async function getProjectGHCVersion( toolchainBindir: string, workingDir: string, - logger: Logger + logger: Logger, ): Promise { const title = 'Working out the project GHC version. This might take a while...'; logger.info(title); @@ -535,14 +540,14 @@ export async function getProjectGHCVersion( } reject( Error( - `haskell-language-server --project-ghc-version exited with exit code ${err.code}:\n${stdout}\n${stderr}` - ) + `haskell-language-server --project-ghc-version exited with exit code ${err.code}:\n${stdout}\n${stderr}`, + ), ); } else { logger.info(`The GHC version for the project or file: ${stdout?.trim()}`); resolve(stdout?.trim()); } - } + }, ); } @@ -633,7 +638,7 @@ async function getLatestToolFromGHCup(context: ExtensionContext, logger: Logger, logger, ['list', '-t', tool, '-c', 'installed', '-r'], undefined, - false + false, ); const latestInstalled = installedVersions.split(/\r?\n/).pop(); if (latestInstalled) { @@ -648,7 +653,7 @@ async function getLatestAvailableToolFromGHCup( logger: Logger, tool: Tool, tag?: string, - criteria?: string + criteria?: string, ): Promise { // fall back to installable versions const availableVersions = await callGHCup( @@ -656,7 +661,7 @@ async function getLatestAvailableToolFromGHCup( logger, ['list', '-t', tool, '-c', criteria ? criteria : 'available', '-r'], undefined, - false + false, ).then((s) => s.split(/\r?\n/)); let latestAvailable: string | null = null; @@ -687,7 +692,7 @@ async function getHLSesFromGHCup(context: ExtensionContext, logger: Logger): Pro logger, ['list', '-t', 'hls', '-c', 'installed', '-r'], undefined, - false + false, ); const bindir = await callGHCup(context, logger, ['whereis', 'bindir'], undefined, false); @@ -721,7 +726,7 @@ async function toolInstalled( context: ExtensionContext, logger: Logger, tool: Tool, - version: string + version: string, ): Promise { const b = await callGHCup(context, logger, ['whereis', tool, version], undefined, false) .then(() => true) @@ -821,7 +826,7 @@ export function findSupportedHlsPerGhc( platform: Platform, arch: Arch, metadata: ReleaseMetadata, - logger: Logger + logger: Logger, ): Map { logger.info(`Platform constants: ${platform}, ${arch}`); const newMap = new Map(); @@ -851,20 +856,20 @@ export function findSupportedHlsPerGhc( async function getReleaseMetadata( _context: ExtensionContext, storagePath: string, - logger: Logger + logger: Logger, ): Promise { const releasesUrl = workspace.getConfiguration('haskell').releasesURL ? new URL(workspace.getConfiguration('haskell').releasesURL) : undefined; const opts: https.RequestOptions = releasesUrl ? { - host: releasesUrl.host, - path: releasesUrl.pathname, - } + host: releasesUrl.host, + path: releasesUrl.pathname, + } : { - host: 'raw.githubusercontent.com', - path: '/haskell/ghcup-metadata/master/hls-metadata-0.0.1.json', - }; + host: 'raw.githubusercontent.com', + path: '/haskell/ghcup-metadata/master/hls-metadata-0.0.1.json', + }; const offlineCache = path.join(storagePath, 'ghcupReleases.cache.json'); @@ -915,10 +920,10 @@ async function getReleaseMetadata( window.showWarningMessage( "Couldn't get the latest haskell-language-server releases from GitHub, used local cache instead: " + - githubError.message + githubError.message, ); return cachedInfoParsed; - } catch (fileError) { + } catch (_fileError) { throw new Error("Couldn't get the latest haskell-language-server releases from GitHub: " + githubError.message); } } @@ -942,7 +947,11 @@ class InstalledTool { * @param version Version of the tool, expected to be either SemVer or PVP versioned. * @param installed Is this tool currently installed? */ - public constructor(readonly name: string, readonly version: string, readonly installed: boolean = true) { + public constructor( + readonly name: string, + readonly version: string, + readonly installed: boolean = true, + ) { this.nameWithVersion = `${name}-${version}`; } } diff --git a/src/utils.ts b/src/utils.ts index 2e82e12d..1a68061c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -159,14 +159,13 @@ export async function httpsGetSilently(options: https.RequestOptions): Promise { const serverEnvironment: IEnvVars = (await workspace.getConfiguration('haskell').get('serverEnvironment')) || {}; const path: string[] = serverEnvironment.PATH ? serverEnvironment.PATH.split(pathSep).map((p) => resolvePATHPlaceHolders(p)) - : process.env.PATH?.split(pathSep) ?? []; + : (process.env.PATH?.split(pathSep) ?? []); path.unshift(extraPath); return path.join(pathSep); } diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index fbdb1733..e3759517 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -27,7 +27,7 @@ suite('Extension Test Suite', () => { await haskellConfig.update('trace.server', 'messages'); await haskellConfig.update('releasesDownloadStoragePath', path.normalize(getWorkspaceFile(BIN).fsPath)); await haskellConfig.update('serverEnvironment', { - XDG_CACHE_HOME: path.normalize(getWorkspaceFile(CACHE).fsPath) + XDG_CACHE_HOME: path.normalize(getWorkspaceFile(CACHE).fsPath), }); const contents = new TextEncoder().encode('main = putStrLn "hi vscode tests"'); @@ -57,14 +57,15 @@ suite('Extension Test Suite', () => { } return false; }; - assert.ok(await runWithIntervalAndTimeout(checkServerLog, 1, 60), - 'Extension log file has no expected hls output'); + assert.ok(await runWithIntervalAndTimeout(checkServerLog, 1, 60), 'Extension log file has no expected hls output'); }); test('5. Server should inherit environment variables defined in the settings', async () => { vscode.workspace.openTextDocument(getWorkspaceFile('Main.hs')); - assert.ok(await runWithIntervalAndTimeout(() => workspaceFileExist(CACHE), 1, 30), - 'Server did not inherit XDG_CACHE_DIR from environment variables set in the settings'); + assert.ok( + await runWithIntervalAndTimeout(() => workspaceFileExist(CACHE), 1, 30), + 'Server did not inherit XDG_CACHE_DIR from environment variables set in the settings', + ); }); suiteTeardown(async () => { @@ -121,7 +122,7 @@ async function runWithIntervalAndTimeout(fn: () => boolean, interval: number, ti const intervalMs = interval * 1000; const timeoutMs = timeout * 1000; const endTime = startTime + timeoutMs; - const wait = (ms: number) => new Promise(r => setTimeout(r, ms)); + const wait = (ms: number) => new Promise((r) => setTimeout(r, ms)); while (Date.now() <= endTime) { if (fn()) { diff --git a/tsconfig.json b/tsconfig.json index a1efbd37..7b551f75 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,9 +4,7 @@ "moduleResolution": "node", "target": "es6", "outDir": "out", - "lib": [ - "es6" - ], + "lib": ["es6"], "sourceMap": true, "rootDir": ".", "noUnusedLocals": true, @@ -16,13 +14,6 @@ "noFallthroughCasesInSwitch": true, "strictNullChecks": true }, - "include": [ - "./src/**/*.ts", - "./test/**/*.ts" - ], - "exclude": [ - "node_modules", - ".vscode", - ".vscode-test" - ] -} \ No newline at end of file + "include": ["./src/**/*.ts", "./test/**/*.ts"], + "exclude": ["node_modules", ".vscode", ".vscode-test"] +} diff --git a/yarn.lock b/yarn.lock index 78d99013..37302f50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,49 +24,84 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint-community/regexpp@^4.11.0": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint/config-array@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" + integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" + integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== + +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.13.0", "@eslint/js@^9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547" + integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@eslint/plugin-kit@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz#cd14fe2db79fa639839dfef4105e83bad1814482" + integrity sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + levn "^0.4.1" + +"@humanfs/core@^0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.0.tgz#08db7a8c73bb07673d9ebd925f2dad746411fcec" + integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw== + +"@humanfs/node@^0.16.5": + version "0.16.5" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.5.tgz#a9febb7e7ad2aff65890fdc630938f8d20aa84ba" + integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg== + dependencies: + "@humanfs/core" "^0.19.0" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -183,7 +218,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -214,6 +249,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/glob@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" @@ -251,6 +291,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -290,92 +335,87 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" - integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== +"@typescript-eslint/eslint-plugin@8.11.0", "@typescript-eslint/eslint-plugin@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz#c3f087d20715fa94310b30666c08b3349e0ab084" + integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/type-utils" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/type-utils" "8.11.0" + "@typescript-eslint/utils" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" - integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== +"@typescript-eslint/parser@8.11.0", "@typescript-eslint/parser@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.11.0.tgz#2ad1481388dc1c937f50b2d138c9ca57cc6c5cce" + integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg== dependencies: - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" - integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== +"@typescript-eslint/scope-manager@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405" + integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" -"@typescript-eslint/type-utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" - integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== +"@typescript-eslint/type-utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz#b7f9e6120c1ddee8a1a07615646642ad85fc91b5" + integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg== dependencies: - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/utils" "8.11.0" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" - integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== +"@typescript-eslint/types@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8" + integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== -"@typescript-eslint/typescript-estree@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" - integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== +"@typescript-eslint/typescript-estree@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b" + integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" debug "^4.3.4" - globby "^11.1.0" + fast-glob "^3.3.2" is-glob "^4.0.3" minimatch "^9.0.4" semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" - integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== +"@typescript-eslint/utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d" + integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" -"@typescript-eslint/visitor-keys@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" - integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== +"@typescript-eslint/visitor-keys@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92" + integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== dependencies: - "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/types" "8.11.0" eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@vscode/test-cli@^0.0.10": version "0.0.10" resolved "https://registry.yarnpkg.com/@vscode/test-cli/-/test-cli-0.0.10.tgz#35f0e81c2e0ff8daceb223e99d1b65306c15822c" @@ -558,7 +598,12 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.12.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3" + integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== + +acorn@^8.7.1, acorn@^8.8.2: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -649,11 +694,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -910,20 +950,6 @@ diff@^5.2.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -985,19 +1011,24 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30" + integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c" + integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== + eslint-webpack-plugin@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz#41f54b25379908eb9eca8645bc997c90cfdbd34e" @@ -1009,63 +1040,60 @@ eslint-webpack-plugin@^4.2.0: normalize-path "^3.0.0" schema-utils "^4.2.0" -eslint@^8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint@^9.13.0: + version "9.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6" + integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.18.0" + "@eslint/core" "^0.7.0" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.13.0" + "@eslint/plugin-kit" "^0.2.0" + "@humanfs/node" "^0.16.5" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.3.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.1.0" + eslint-visitor-keys "^4.1.0" + espree "^10.2.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^10.0.1, espree@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6" + integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== dependencies: - acorn "^8.9.0" + acorn "^8.12.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.1.0" -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -1101,7 +1129,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: +fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -1134,12 +1162,12 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.1.1: version "7.1.1" @@ -1164,14 +1192,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" @@ -1262,7 +1289,7 @@ glob@^11.0.0: package-json-from-dist "^1.0.0" path-scurry "^2.0.0" -glob@^7.1.3, glob@^7.1.4: +glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1285,24 +1312,15 @@ glob@^8.1.0: minimatch "^5.0.1" once "^1.3.0" -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" +globals@^15.11.0: + version "15.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" + integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" @@ -1452,11 +1470,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -1612,7 +1625,7 @@ jszip@^3.10.1: readable-stream "~2.3.6" setimmediate "^1.0.5" -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -1701,7 +1714,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -1738,7 +1751,7 @@ minimatch@^10.0.0: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -1949,11 +1962,6 @@ path-scurry@^2.0.0: lru-cache "^11.0.0" minipass "^7.1.2" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -2088,13 +2096,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -2182,11 +2183,6 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -2387,10 +2383,14 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +typescript-eslint@^8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.11.0.tgz#74a0551972d675b4141672cec3acc5139b7399c0" + integrity sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA== + dependencies: + "@typescript-eslint/eslint-plugin" "8.11.0" + "@typescript-eslint/parser" "8.11.0" + "@typescript-eslint/utils" "8.11.0" typescript@^5.5.4: version "5.5.4"