diff --git a/.vscode/settings.json b/.vscode/settings.json index 999c48e92c..656f4dbf56 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,4 @@ { - // Set this value to `messages` to see names of LSP requests and responses, - // or to `verbose` to see the full JSON content of LSP requests and responses - "ruby lsp.trace.server": "off", "[ruby]": { "editor.defaultFormatter": "Shopify.ruby-lsp" }, diff --git a/Gemfile.lock b/Gemfile.lock index 1da4ca64d8..64b0ae5f94 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - ruby-lsp (0.23.13) + ruby-lsp (0.23.14) language_server-protocol (~> 3.17.0) prism (>= 1.2, < 2.0) rbs (>= 3, < 4) diff --git a/VERSION b/VERSION index da000a8fbc..da8da2d983 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.23.13 +0.23.14 diff --git a/jekyll/rails-add-on.markdown b/jekyll/rails-add-on.markdown index 79a35271ad..4608e99ab0 100644 --- a/jekyll/rails-add-on.markdown +++ b/jekyll/rails-add-on.markdown @@ -150,3 +150,18 @@ The Rails add-on provides 3 ways to run and debug `ActiveSupport` tests using th ### Debug Tests With VS Code ![Debug Tests With VS Code](images/ruby-lsp-rails-debug.gif) + +## Settings + +The following setting configures aspects of the Rails add-on. Values shown are the defaults. + +```jsonc +// Settings for all add-ons +"rubyLsp.addonSettings": { + // Settings for the Rails add-on + "Ruby LSP Rails": { + // Enable prompt for pending migrations + "enablePendingMigrationsPrompt": true + } + } +``` diff --git a/lib/ruby_indexer/lib/ruby_indexer/uri.rb b/lib/ruby_indexer/lib/ruby_indexer/uri.rb index a8f9d2a6a0..6eeff8b478 100644 --- a/lib/ruby_indexer/lib/ruby_indexer/uri.rb +++ b/lib/ruby_indexer/lib/ruby_indexer/uri.rb @@ -15,14 +15,19 @@ class Generic class << self #: (path: String, ?fragment: String?, ?scheme: String, ?load_path_entry: String?) -> URI::Generic def from_path(path:, fragment: nil, scheme: "file", load_path_entry: nil) + # This unsafe regex is the same one used in the URI::RFC2396_REGEXP class with the exception of the fact that we + # do not include colon as a safe character. VS Code URIs always escape colons and we need to ensure we do the + # same to avoid inconsistencies in our URIs, which are used to identify resources + unsafe_regex = %r{[^\-_.!~*'()a-zA-Z\d;/?@&=+$,\[\]]} + # On Windows, if the path begins with the disk name, we need to add a leading slash to make it a valid URI escaped_path = if /^[A-Z]:/i.match?(path) - PARSER.escape("/#{path}") + PARSER.escape("/#{path}", unsafe_regex) elsif path.start_with?("//?/") # Some paths on Windows start with "//?/". This is a special prefix that allows for long file paths - PARSER.escape(path.delete_prefix("//?")) + PARSER.escape(path.delete_prefix("//?"), unsafe_regex) else - PARSER.escape(path) + PARSER.escape(path, unsafe_regex) end uri = build(scheme: scheme, path: escaped_path, fragment: fragment) diff --git a/lib/ruby_indexer/test/uri_test.rb b/lib/ruby_indexer/test/uri_test.rb index be9c0af717..8c064a1a77 100644 --- a/lib/ruby_indexer/test/uri_test.rb +++ b/lib/ruby_indexer/test/uri_test.rb @@ -12,12 +12,12 @@ def test_from_path_on_unix def test_from_path_on_windows uri = URI::Generic.from_path(path: "C:/some/windows/path/to/file.rb") - assert_equal("/C:/some/windows/path/to/file.rb", uri.path) + assert_equal("/C%3A/some/windows/path/to/file.rb", uri.path) end def test_from_path_on_windows_with_lowercase_drive uri = URI::Generic.from_path(path: "c:/some/windows/path/to/file.rb") - assert_equal("/c:/some/windows/path/to/file.rb", uri.path) + assert_equal("/c%3A/some/windows/path/to/file.rb", uri.path) end def test_to_standardized_path_on_unix @@ -68,5 +68,18 @@ def test_allows_adding_require_path_with_load_path_entry uri.add_require_path_from_load_entry("/some/unix/path") assert_equal("to/file", uri.require_path) end + + def test_from_path_escapes_colon_characters + uri = URI::Generic.from_path(path: "c:/some/windows/path with/spaces/file.rb") + assert_equal("c:/some/windows/path with/spaces/file.rb", uri.to_standardized_path) + assert_equal("file:///c%3A/some/windows/path%20with/spaces/file.rb", uri.to_s) + end + + def test_from_path_with_unicode_characters + path = "/path/with/unicode/文件.rb" + uri = URI::Generic.from_path(path: path) + assert_equal(path, uri.to_standardized_path) + assert_equal("file:///path/with/unicode/%E6%96%87%E4%BB%B6.rb", uri.to_s) + end end end diff --git a/lib/ruby_lsp/test_helper.rb b/lib/ruby_lsp/test_helper.rb index 915517ef76..a5d2e9f51d 100644 --- a/lib/ruby_lsp/test_helper.rb +++ b/lib/ruby_lsp/test_helper.rb @@ -42,7 +42,6 @@ def with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typec ensure if load_addons RubyLsp::Addon.addons.each(&:deactivate) - RubyLsp::Addon.addon_classes.clear RubyLsp::Addon.addons.clear end server.run_shutdown diff --git a/ruby-lsp.code-workspace b/ruby-lsp.code-workspace index 5127fa8c20..35902de9d7 100644 --- a/ruby-lsp.code-workspace +++ b/ruby-lsp.code-workspace @@ -22,6 +22,9 @@ "search.exclude": { "**/out": true, }, + // Set this value to `messages` to see names of LSP requests and responses, + // or to `verbose` to see the full JSON content of LSP requests and responses + "ruby lsp.trace.server": "off", "rubyLsp.bypassTypechecker": true, "rubyLsp.indexing": { "excludedPatterns": [ diff --git a/test/fixtures/prism b/test/fixtures/prism index 8af7b4e671..a3326c0dd9 160000 --- a/test/fixtures/prism +++ b/test/fixtures/prism @@ -1 +1 @@ -Subproject commit 8af7b4e67107212d96d35877339c8de3a5277461 +Subproject commit a3326c0dd9f2a9be868df57e7e00eed40548792c diff --git a/test/requests/code_lens_expectations_test.rb b/test/requests/code_lens_expectations_test.rb index cb56587aac..4abd4f9af5 100644 --- a/test/requests/code_lens_expectations_test.rb +++ b/test/requests/code_lens_expectations_test.rb @@ -213,28 +213,32 @@ def test_code_lens_addons class Test < Minitest::Test; end RUBY - create_code_lens_addon - - with_server(source) do |server, uri| - server.process_message({ - id: 1, - method: "textDocument/codeLens", - params: { textDocument: { uri: uri }, position: { line: 1, character: 2 } }, - }) - - # Pop the re-indexing notification - server.pop_response - - result = server.pop_response - assert_instance_of(RubyLsp::Result, result) - - response = result.response - - assert_equal(response.size, 4) - assert_match("▶ Run", response[0].command.title) - assert_match("▶ Run In Terminal", response[1].command.title) - assert_match("Debug", response[2].command.title) - assert_match("Run Test", response[3].command.title) + begin + create_code_lens_addon + + with_server(source) do |server, uri| + server.process_message({ + id: 1, + method: "textDocument/codeLens", + params: { textDocument: { uri: uri }, position: { line: 1, character: 2 } }, + }) + + # Pop the re-indexing notification + server.pop_response + + result = server.pop_response + assert_instance_of(RubyLsp::Result, result) + + response = result.response + + assert_equal(response.size, 4) + assert_match("▶ Run", response[0].command.title) + assert_match("▶ Run In Terminal", response[1].command.title) + assert_match("Debug", response[2].command.title) + assert_match("Run Test", response[3].command.title) + ensure + RubyLsp::Addon.addon_classes.clear + end end end diff --git a/test/requests/completion_test.rb b/test/requests/completion_test.rb index bf2e485bc1..fac94acdc6 100644 --- a/test/requests/completion_test.rb +++ b/test/requests/completion_test.rb @@ -1002,18 +1002,22 @@ def test_completion_addons R RUBY - create_completion_addon + begin + create_completion_addon - with_server(source) do |server, uri| - server.process_message( - id: 1, - method: "textDocument/completion", - params: { textDocument: { uri: uri }, position: { character: 1, line: 0 } }, - ) - response = server.pop_response.response + with_server(source) do |server, uri| + server.process_message( + id: 1, + method: "textDocument/completion", + params: { textDocument: { uri: uri }, position: { character: 1, line: 0 } }, + ) + response = server.pop_response.response - assert_equal(1, response.size) - assert_match("MyCompletion", response[0].label) + assert_equal(1, response.size) + assert_match("MyCompletion", response[0].label) + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/test/requests/definition_expectations_test.rb b/test/requests/definition_expectations_test.rb index e1ca0381e1..1c68a0069f 100644 --- a/test/requests/definition_expectations_test.rb +++ b/test/requests/definition_expectations_test.rb @@ -226,28 +226,32 @@ def test_definition_addons RubyLsp RUBY - create_definition_addon - - with_server(source, stub_no_typechecker: true) do |server, uri| - server.global_state.index.index_file( - URI::Generic.from_path( - load_path_entry: "#{Dir.pwd}/lib", - path: File.expand_path( - "../../test/fixtures/class_reference_target.rb", - __dir__, + begin + create_definition_addon + + with_server(source, stub_no_typechecker: true) do |server, uri| + server.global_state.index.index_file( + URI::Generic.from_path( + load_path_entry: "#{Dir.pwd}/lib", + path: File.expand_path( + "../../test/fixtures/class_reference_target.rb", + __dir__, + ), ), - ), - ) - server.process_message( - id: 1, - method: "textDocument/definition", - params: { textDocument: { uri: uri }, position: { character: 0, line: 0 } }, - ) - response = server.pop_response.response + ) + server.process_message( + id: 1, + method: "textDocument/definition", + params: { textDocument: { uri: uri }, position: { character: 0, line: 0 } }, + ) + response = server.pop_response.response - assert_equal(2, response.size) - assert_match("class_reference_target.rb", response[0].target_uri) - assert_match("generated_by_addon.rb", response[1].uri) + assert_equal(2, response.size) + assert_match("class_reference_target.rb", response[0].target_uri) + assert_match("generated_by_addon.rb", response[1].uri) + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/test/requests/discover_tests_test.rb b/test/requests/discover_tests_test.rb index b3c72c4c28..c780ecb2ff 100644 --- a/test/requests/discover_tests_test.rb +++ b/test/requests/discover_tests_test.rb @@ -327,25 +327,29 @@ class MyTest end RUBY - create_test_discovery_addon + begin + create_test_discovery_addon - with_server(source) do |server, uri| - server.process_message({ - id: 1, - method: "rubyLsp/discoverTests", - params: { textDocument: { uri: uri } }, - }) + with_server(source) do |server, uri| + server.process_message({ + id: 1, + method: "rubyLsp/discoverTests", + params: { textDocument: { uri: uri } }, + }) - response = pop_result(server) + response = pop_result(server) - assert_instance_of(RubyLsp::Result, response) - items = response.response + assert_instance_of(RubyLsp::Result, response) + items = response.response - test_classes = items.map { |i| i[:label] } - assert_equal(["MyTest"], test_classes) + test_classes = items.map { |i| i[:label] } + assert_equal(["MyTest"], test_classes) - test_methods = items[0][:children].map { |i| i[:label] } - assert_equal(["should do something", "should do something else"], test_methods) + test_methods = items[0][:children].map { |i| i[:label] } + assert_equal(["should do something", "should do something else"], test_methods) + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/test/requests/document_symbol_expectations_test.rb b/test/requests/document_symbol_expectations_test.rb index c89f5535a5..cc5d02e69b 100644 --- a/test/requests/document_symbol_expectations_test.rb +++ b/test/requests/document_symbol_expectations_test.rb @@ -81,28 +81,31 @@ class Foo end RUBY - create_document_symbol_addon + begin + create_document_symbol_addon + with_server(source) do |server, uri| + server.process_message({ + id: 1, + method: "textDocument/documentSymbol", + params: { textDocument: { uri: uri } }, + }) - with_server(source) do |server, uri| - server.process_message({ - id: 1, - method: "textDocument/documentSymbol", - params: { textDocument: { uri: uri } }, - }) + # Pop the re-indexing notification + server.pop_response - # Pop the re-indexing notification - server.pop_response + result = server.pop_response + assert_instance_of(RubyLsp::Result, result) - result = server.pop_response - assert_instance_of(RubyLsp::Result, result) + response = result.response - response = result.response + assert_equal(1, response.count) + assert_equal("Foo", response.first.name) - assert_equal(1, response.count) - assert_equal("Foo", response.first.name) - - test_symbol = response.first.children.first - assert_equal(LanguageServer::Protocol::Constant::SymbolKind::METHOD, test_symbol.kind) + test_symbol = response.first.children.first + assert_equal(LanguageServer::Protocol::Constant::SymbolKind::METHOD, test_symbol.kind) + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/test/requests/hover_expectations_test.rb b/test/requests/hover_expectations_test.rb index 1c496241fd..cadd6892aa 100644 --- a/test/requests/hover_expectations_test.rb +++ b/test/requests/hover_expectations_test.rb @@ -338,26 +338,30 @@ class Post Post RUBY - create_hover_addon + begin + create_hover_addon - with_server(source, stub_no_typechecker: true) do |server, uri| - server.process_message( - id: 1, - method: "textDocument/hover", - params: { textDocument: { uri: uri }, position: { character: 0, line: 4 } }, - ) + with_server(source, stub_no_typechecker: true) do |server, uri| + server.process_message( + id: 1, + method: "textDocument/hover", + params: { textDocument: { uri: uri }, position: { character: 0, line: 4 } }, + ) - assert_match(<<~RESPONSE.strip, server.pop_response.response.contents.value) - Title + assert_match(<<~RESPONSE.strip, server.pop_response.response.contents.value) + Title - **Definitions**: [fake.rb](file:///fake.rb#L2,1-3,4) - Links + **Definitions**: [fake.rb](file:///fake.rb#L2,1-3,4) + Links - Hello - Documentation from middleware: Post - RESPONSE + Hello + Documentation from middleware: Post + RESPONSE + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/test/requests/resolve_test_commands_test.rb b/test/requests/resolve_test_commands_test.rb index ba16abb769..61b53cc2a0 100644 --- a/test/requests/resolve_test_commands_test.rb +++ b/test/requests/resolve_test_commands_test.rb @@ -1195,6 +1195,8 @@ def resolve_test_commands(items) result = server.pop_response.response assert_equal(["bin/rails test /test/server_test.rb:2"], result[:commands]) + ensure + RubyLsp::Addon.addon_classes.clear end end end diff --git a/test/requests/semantic_highlighting_expectations_test.rb b/test/requests/semantic_highlighting_expectations_test.rb index b3eb3f7588..a9faf90060 100644 --- a/test/requests/semantic_highlighting_expectations_test.rb +++ b/test/requests/semantic_highlighting_expectations_test.rb @@ -49,32 +49,36 @@ class Post end RUBY - create_semantic_highlighting_addon - - with_server(source) do |server, uri| - server.process_message({ - id: 1, - method: "textDocument/semanticTokens/full", - params: { textDocument: { uri: uri } }, - }) - - result = server.pop_response - assert_instance_of(RubyLsp::Result, result) - - decoded_response = decode_tokens(result.response.data) - assert_equal( - { delta_line: 0, delta_start_char: 6, length: 4, token_type: 2, token_modifiers: 1 }, - decoded_response[0], - ) - assert_equal( - { delta_line: 1, delta_start_char: 2, length: 13, token_type: 13, token_modifiers: 0 }, - decoded_response[1], - ) - # This is the token modified by the add-on - assert_equal( - { delta_line: 1, delta_start_char: 2, length: 13, token_type: 15, token_modifiers: 1 }, - decoded_response[2], - ) + begin + create_semantic_highlighting_addon + + with_server(source) do |server, uri| + server.process_message({ + id: 1, + method: "textDocument/semanticTokens/full", + params: { textDocument: { uri: uri } }, + }) + + result = server.pop_response + assert_instance_of(RubyLsp::Result, result) + + decoded_response = decode_tokens(result.response.data) + assert_equal( + { delta_line: 0, delta_start_char: 6, length: 4, token_type: 2, token_modifiers: 1 }, + decoded_response[0], + ) + assert_equal( + { delta_line: 1, delta_start_char: 2, length: 13, token_type: 13, token_modifiers: 0 }, + decoded_response[1], + ) + # This is the token modified by the add-on + assert_equal( + { delta_line: 1, delta_start_char: 2, length: 13, token_type: 15, token_modifiers: 1 }, + decoded_response[2], + ) + end + ensure + RubyLsp::Addon.addon_classes.clear end end diff --git a/vscode/package.json b/vscode/package.json index ef2c3e6e88..3372526557 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -2,7 +2,7 @@ "name": "ruby-lsp", "displayName": "Ruby LSP", "description": "VS Code plugin for connecting with the Ruby LSP", - "version": "0.9.13", + "version": "0.9.14", "publisher": "Shopify", "repository": { "type": "git", @@ -790,7 +790,7 @@ "devDependencies": { "@babel/core": "^7.26.10", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.23.0", + "@eslint/js": "^9.24.0", "@shopify/eslint-plugin": "^47.0.1", "@shopify/prettier-config": "^1.1.4", "@types/glob": "^8.1.0", @@ -801,17 +801,17 @@ "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "@vscode/test-electron": "^2.4.1", - "@vscode/vsce": "^3.3.0", - "esbuild": "^0.25.1", + "@vscode/vsce": "^3.3.2", + "esbuild": "^0.25.2", "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^4.2.2", - "eslint-plugin-prettier": "^5.2.4", + "eslint-import-resolver-typescript": "^4.3.1", + "eslint-plugin-prettier": "^5.2.6", "glob": "^11.0.1", "mocha": "^11.1.0", "ovsx": "^0.10.1", "prettier": "^3.5.3", "sinon": "^19.0.4", - "typescript": "^5.8.2", + "typescript": "^5.8.3", "typescript-eslint": "8", "vscode-oniguruma": "^2.0.1", "vscode-textmate": "^9.2.0" diff --git a/vscode/src/linkedCancellationSource.ts b/vscode/src/linkedCancellationSource.ts new file mode 100644 index 0000000000..9d5ba27da9 --- /dev/null +++ b/vscode/src/linkedCancellationSource.ts @@ -0,0 +1,33 @@ +import * as vscode from "vscode"; + +export class LinkedCancellationSource implements vscode.Disposable { + private readonly tokenSource = new vscode.CancellationTokenSource(); + private readonly disposables: vscode.Disposable[] = [this.tokenSource]; + + constructor( + token: vscode.CancellationToken, + ...additionalTokens: vscode.CancellationToken[] + ) { + [token, ...additionalTokens].forEach((token) => { + const disposable = token.onCancellationRequested(() => { + this.tokenSource.cancel(); + }); + + this.disposables.push(disposable); + }); + } + + dispose() { + this.disposables.forEach((disposable) => disposable.dispose()); + } + + isCancellationRequested() { + return this.tokenSource.token.isCancellationRequested; + } + + onCancellationRequested(callback: () => void) { + this.disposables.push( + this.tokenSource.token.onCancellationRequested(callback), + ); + } +} diff --git a/vscode/src/test/suite/linkendCancellationSource.test.ts b/vscode/src/test/suite/linkendCancellationSource.test.ts new file mode 100644 index 0000000000..939ed106b4 --- /dev/null +++ b/vscode/src/test/suite/linkendCancellationSource.test.ts @@ -0,0 +1,27 @@ +import * as assert from "assert"; + +import * as vscode from "vscode"; + +import { LinkedCancellationSource } from "../../linkedCancellationSource"; + +suite("LinkedCancellationSource", () => { + test("isCancellationRequested", async () => { + const cancellationSource = new vscode.CancellationTokenSource(); + const linkedCancellationSource = new LinkedCancellationSource( + cancellationSource.token, + ); + let callbackCalled = false; + + await new Promise((resolve) => { + linkedCancellationSource.onCancellationRequested(() => { + callbackCalled = true; + resolve(); + }); + + cancellationSource.cancel(); + }); + + assert.ok(linkedCancellationSource.isCancellationRequested()); + assert.ok(callbackCalled); + }); +}); diff --git a/vscode/src/test/suite/testController.test.ts b/vscode/src/test/suite/testController.test.ts index 9be335813e..36cc0602ca 100644 --- a/vscode/src/test/suite/testController.test.ts +++ b/vscode/src/test/suite/testController.test.ts @@ -843,23 +843,24 @@ suite("TestController", () => { }), } as any; + const cancellationSource = new vscode.CancellationTokenSource(); const runStub = { started: sinon.stub(), passed: sinon.stub(), enqueued: sinon.stub(), end: sinon.stub(), + token: cancellationSource.token, } as any; const createRunStub = sinon .stub(controller.testController, "createTestRun") .returns(runStub); const runRequest = new vscode.TestRunRequest([testItem]); - const cancellationSource = new vscode.CancellationTokenSource(); await controller.runTest(runRequest, cancellationSource.token); - assert.ok(runStub.enqueued.calledWithExactly(testItem)); - assert.ok(runStub.started.calledWithExactly(testItem)); - assert.ok(runStub.passed.calledWithExactly(testItem)); + assert.ok(runStub.enqueued.calledWith(testItem)); + assert.ok(runStub.started.calledWith(testItem)); + assert.ok(runStub.passed.calledWith(testItem)); assert.ok(runStub.end.calledWithExactly()); createRunStub.restore(); @@ -893,18 +894,19 @@ suite("TestController", () => { }), } as any; + const cancellationSource = new vscode.CancellationTokenSource(); const runStub = { started: sinon.stub(), passed: sinon.stub(), enqueued: sinon.stub(), end: sinon.stub(), + token: cancellationSource.token, } as any; const createRunStub = sinon .stub(controller.testController, "createTestRun") .returns(runStub); const debug = new Debugger(context, () => workspace); - const cancellationSource = new vscode.CancellationTokenSource(); const startDebuggingSpy = sinon.spy(vscode.debug, "startDebugging"); const runRequest = new vscode.TestRunRequest( @@ -968,6 +970,7 @@ suite("TestController", () => { }), } as any; + const cancellationSource = new vscode.CancellationTokenSource(); const runStub = { started: sinon.stub(), passed: sinon.stub(), @@ -975,6 +978,7 @@ suite("TestController", () => { end: sinon.stub(), addCoverage: sinon.stub(), appendOutput: sinon.stub(), + token: cancellationSource.token, } as any; const createRunStub = sinon .stub(controller.testController, "createTestRun") @@ -985,7 +989,6 @@ suite("TestController", () => { [], controller.coverageProfile, ); - const cancellationSource = new vscode.CancellationTokenSource(); const fakeFileContents = Buffer.from( JSON.stringify({ // eslint-disable-next-line @typescript-eslint/naming-convention @@ -1008,9 +1011,9 @@ suite("TestController", () => { await controller.runTest(runRequest, cancellationSource.token); fsStub.restore(); - assert.ok(runStub.enqueued.calledWithExactly(testItem)); - assert.ok(runStub.started.calledWithExactly(testItem)); - assert.ok(runStub.passed.calledWithExactly(testItem)); + assert.ok(runStub.enqueued.calledWith(testItem)); + assert.ok(runStub.started.calledWith(testItem)); + assert.ok(runStub.passed.calledWith(testItem)); assert.ok(runStub.end.calledWithExactly()); assert.ok( runStub.appendOutput.calledWithExactly( diff --git a/vscode/src/testController.ts b/vscode/src/testController.ts index 723ce98baf..28d6a8748c 100644 --- a/vscode/src/testController.ts +++ b/vscode/src/testController.ts @@ -9,6 +9,7 @@ import { CodeLens } from "vscode-languageclient/node"; import { Workspace } from "./workspace"; import { featureEnabled } from "./common"; import { LspTestItem, ResolvedCommands, ServerTestItem } from "./client"; +import { LinkedCancellationSource } from "./linkedCancellationSource"; const asyncExec = promisify(exec); @@ -402,8 +403,13 @@ export class TestController { } }); + const linkedCancellationSource = new LinkedCancellationSource( + token, + run.token, + ); + for (const [workspaceFolder, testItems] of workspaceToTestItems) { - if (token.isCancellationRequested) { + if (linkedCancellationSource.isCancellationRequested()) { break; } @@ -444,14 +450,20 @@ export class TestController { workspace, run, profile, - token, + linkedCancellationSource, ); } else if (profile.label === DEBUG_PROFILE_LABEL) { - await this.debugTestCommands(response, workspace, run, token); + await this.debugTestCommands( + response, + workspace, + run, + linkedCancellationSource, + ); } } run.end(); + linkedCancellationSource.dispose(); } // Public for testing purposes. Finds a test item based on its ID and URI @@ -497,7 +509,7 @@ export class TestController { workspace: Workspace, run: vscode.TestRun, profile: vscode.TestRunProfile | undefined, - token: vscode.CancellationToken, + linkedCancellationSource: LinkedCancellationSource, ) { // Require the custom JSON RPC reporters through RUBYOPT. We cannot use Ruby's `-r` flag because the moment the // test framework is loaded, it might change which options are accepted. For example, if we append `-r` after the @@ -522,7 +534,7 @@ export class TestController { RUBYOPT: rubyOpt, }, workspace.workspaceFolder.uri.fsPath, - token, + linkedCancellationSource, ); } catch (error: any) { await vscode.window.showErrorMessage( @@ -543,10 +555,10 @@ export class TestController { response: ResolvedCommands, workspace: Workspace, run: vscode.TestRun, - token: vscode.CancellationToken, + linkedCancellationSource: LinkedCancellationSource, ) { for (const command of response.commands) { - if (token.isCancellationRequested) { + if (linkedCancellationSource.isCancellationRequested()) { break; } @@ -556,8 +568,11 @@ export class TestController { // `vscode.debug.startDebugging` resolve immediately after successfully starting the debugger, not after it // finishes await new Promise((resolve, reject) => { + linkedCancellationSource.onCancellationRequested( + vscode.debug.stopDebugging, + ); + disposables.push( - token.onCancellationRequested(vscode.debug.stopDebugging), vscode.debug.onDidTerminateDebugSession(() => { disposables.forEach((disposable) => disposable.dispose()); resolve(); @@ -1271,13 +1286,23 @@ export class TestController { command: string, env: NodeJS.ProcessEnv, cwd: string, - token: vscode.CancellationToken, + linkedCancellationSource: LinkedCancellationSource, ) { await new Promise((resolve, reject) => { const promises: Promise[] = []; + const startTimestamps = new Map(); + const withDuration = ( + id: string, + callback: (duration?: number) => void, + ) => { + const startTime = startTimestamps.get(id); + const duration = startTime ? Date.now() - startTime : undefined; + callback(duration); + }; const abortController = new AbortController(); - token.onCancellationRequested(() => { + + linkedCancellationSource.onCancellationRequested(() => { run.appendOutput("\r\nTest run cancelled."); abortController.abort(); }); @@ -1326,6 +1351,7 @@ export class TestController { (test) => { if (test) { run.started(test); + startTimestamps.set(test.id, Date.now()); } }, ), @@ -1339,7 +1365,9 @@ export class TestController { this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then( (test) => { if (test) { - run.passed(test); + withDuration(test.id, (duration) => + run.passed(test, duration), + ); } }, ), @@ -1353,7 +1381,13 @@ export class TestController { this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then( (test) => { if (test) { - run.failed(test, new vscode.TestMessage(params.message)); + withDuration(test.id, (duration) => + run.failed( + test, + new vscode.TestMessage(params.message), + duration, + ), + ); } }, ), @@ -1367,7 +1401,13 @@ export class TestController { this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then( (test) => { if (test) { - run.errored(test, new vscode.TestMessage(params.message)); + withDuration(test.id, (duration) => + run.errored( + test, + new vscode.TestMessage(params.message), + duration, + ), + ); } }, ), diff --git a/vscode/yarn.lock b/vscode/yarn.lock index d5a521bdd5..f10addfcd5 100644 --- a/vscode/yarn.lock +++ b/vscode/yarn.lock @@ -289,130 +289,130 @@ dependencies: tslib "^2.4.0" -"@esbuild/aix-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" - integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== - -"@esbuild/android-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" - integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== - -"@esbuild/android-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" - integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== - -"@esbuild/android-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" - integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== - -"@esbuild/darwin-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" - integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== - -"@esbuild/darwin-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" - integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== - -"@esbuild/freebsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" - integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== - -"@esbuild/freebsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" - integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== - -"@esbuild/linux-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" - integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== - -"@esbuild/linux-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" - integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== - -"@esbuild/linux-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" - integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== - -"@esbuild/linux-loong64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" - integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== - -"@esbuild/linux-mips64el@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" - integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== - -"@esbuild/linux-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" - integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== - -"@esbuild/linux-riscv64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" - integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== - -"@esbuild/linux-s390x@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" - integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== - -"@esbuild/linux-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" - integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== - -"@esbuild/netbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" - integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== - -"@esbuild/netbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" - integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== - -"@esbuild/openbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" - integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== - -"@esbuild/openbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" - integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== - -"@esbuild/sunos-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" - integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== - -"@esbuild/win32-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" - integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== - -"@esbuild/win32-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" - integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== - -"@esbuild/win32-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" - integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== +"@esbuild/aix-ppc64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8" + integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== + +"@esbuild/android-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196" + integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== + +"@esbuild/android-arm@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee" + integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== + +"@esbuild/android-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2" + integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== + +"@esbuild/darwin-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423" + integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== + +"@esbuild/darwin-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374" + integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== + +"@esbuild/freebsd-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6" + integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== + +"@esbuild/freebsd-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809" + integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== + +"@esbuild/linux-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058" + integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== + +"@esbuild/linux-arm@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6" + integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== + +"@esbuild/linux-ia32@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737" + integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== + +"@esbuild/linux-loong64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a" + integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== + +"@esbuild/linux-mips64el@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30" + integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== + +"@esbuild/linux-ppc64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067" + integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== + +"@esbuild/linux-riscv64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3" + integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== + +"@esbuild/linux-s390x@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602" + integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== + +"@esbuild/linux-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb" + integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== + +"@esbuild/netbsd-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac" + integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== + +"@esbuild/netbsd-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f" + integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== + +"@esbuild/openbsd-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f" + integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== + +"@esbuild/openbsd-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768" + integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== + +"@esbuild/sunos-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb" + integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== + +"@esbuild/win32-arm64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf" + integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== + +"@esbuild/win32-ia32@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f" + integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== + +"@esbuild/win32-x64@0.25.2": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d" + integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.4.1": version "4.4.1" @@ -473,10 +473,10 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@eslint/js@^9.23.0": - version "9.23.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.23.0.tgz#c09ded4f3dc63b40b933bcaeb853fceddb64da30" - integrity sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw== +"@eslint/js@^9.24.0": + version "9.24.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.24.0.tgz#685277980bb7bf84ecc8e4e133ccdda7545a691e" + integrity sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA== "@humanwhocodes/config-array@^0.11.14": version "0.11.14" @@ -699,11 +699,11 @@ integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== "@types/node@*", "@types/node@22.x": - version "22.13.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.11.tgz#f0ed6b302dcf0f4229d44ea707e77484ad46d234" - integrity sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g== + version "22.14.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.14.0.tgz#d3bfa3936fef0dbacd79ea3eb17d521c628bb47e" + integrity sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA== dependencies: - undici-types "~6.20.0" + undici-types "~6.21.0" "@types/sinon@^17.0.4": version "17.0.4" @@ -722,16 +722,16 @@ resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.92.0.tgz#b4d6bc180e7206defe643a1a5f38a1367947d418" integrity sha512-DcZoCj17RXlzB4XJ7IfKdPTcTGDLYvTOcTNkvtjXWF+K2TlKzHHkBEXNWQRpBIXixNEUgx39cQeTFunY0E2msw== -"@typescript-eslint/eslint-plugin@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz#fbef10802365832ee1d1bd5d2117dcec82727a72" - integrity sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA== +"@typescript-eslint/eslint-plugin@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz#151c4878700a5ad229ce6713d2674d58b626b3d9" + integrity sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/type-utils" "8.27.0" - "@typescript-eslint/utils" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/type-utils" "8.29.0" + "@typescript-eslint/utils" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -752,15 +752,15 @@ natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.27.0.tgz#3f6beaa83934467eda34ae82ef04090014df8227" - integrity sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA== +"@typescript-eslint/parser@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.29.0.tgz#b98841e0a8099728cb8583da92326fcb7f5be1d2" + integrity sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g== dependencies: - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/typescript-estree" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/typescript-estree" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" debug "^4.3.4" "@typescript-eslint/parser@^7.18.0": @@ -782,13 +782,13 @@ "@typescript-eslint/types" "7.18.0" "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/scope-manager@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz#b51042927067d677fbfc471605cf40d1ffaee482" - integrity sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw== +"@typescript-eslint/scope-manager@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz#8fd9872823aef65ff71d3f6d1ec9316ace0b6bf3" + integrity sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw== dependencies: - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" "@typescript-eslint/type-utils@7.18.0": version "7.18.0" @@ -800,13 +800,13 @@ debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/type-utils@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz#af3c4eefcb64455ee50aae2d7069918467af085c" - integrity sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA== +"@typescript-eslint/type-utils@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz#98dcfd1193cb4e2b2d0294a8656ce5eb58c443a9" + integrity sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q== dependencies: - "@typescript-eslint/typescript-estree" "8.27.0" - "@typescript-eslint/utils" "8.27.0" + "@typescript-eslint/typescript-estree" "8.29.0" + "@typescript-eslint/utils" "8.29.0" debug "^4.3.4" ts-api-utils "^2.0.1" @@ -815,10 +815,10 @@ 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.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.27.0.tgz#3dd01ced4c81e798d1106fda0904f8d5c91051aa" - integrity sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A== +"@typescript-eslint/types@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.29.0.tgz#65add70ab4ef66beaa42a5addf87dab2b05b1f33" + integrity sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg== "@typescript-eslint/typescript-estree@7.18.0": version "7.18.0" @@ -834,13 +834,13 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/typescript-estree@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz#4e02a1056454a84418cc9bce7c00b1c08b03567a" - integrity sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A== +"@typescript-eslint/typescript-estree@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz#d201a4f115327ec90496307c9958262285065b00" + integrity sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow== dependencies: - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -858,15 +858,15 @@ "@typescript-eslint/types" "7.18.0" "@typescript-eslint/typescript-estree" "7.18.0" -"@typescript-eslint/utils@8.27.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.27.0.tgz#d9c2a4891c6a85b952a9d5f9656c379ab111cf6d" - integrity sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q== +"@typescript-eslint/utils@8.29.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.29.0.tgz#d6d22b19c8c4812a874f00341f686b45b9fe895f" + integrity sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/typescript-estree" "8.27.0" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/typescript-estree" "8.29.0" "@typescript-eslint/visitor-keys@7.18.0": version "7.18.0" @@ -876,12 +876,12 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" -"@typescript-eslint/visitor-keys@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz#4a13e9d7ad7e311a07ea1b178b4c9f848ce11334" - integrity sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ== +"@typescript-eslint/visitor-keys@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz#2356336c9efdc3597ffcd2aa1ce95432852b743d" + integrity sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg== dependencies: - "@typescript-eslint/types" "8.27.0" + "@typescript-eslint/types" "8.29.0" eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.2.0": @@ -889,62 +889,82 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@unrs/rspack-resolver-binding-darwin-arm64@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-darwin-arm64/-/rspack-resolver-binding-darwin-arm64-1.2.2.tgz#4a40be18ae1d5a417ca9246b0e9c7eda11a49998" - integrity sha512-i7z0B+C0P8Q63O/5PXJAzeFtA1ttY3OR2VSJgGv18S+PFNwD98xHgAgPOT1H5HIV6jlQP8Avzbp09qxJUdpPNw== +"@unrs/resolver-binding-darwin-arm64@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.3.tgz#394065916f98cdc1897cf7234adfdee395725fa8" + integrity sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw== -"@unrs/rspack-resolver-binding-darwin-x64@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-darwin-x64/-/rspack-resolver-binding-darwin-x64-1.2.2.tgz#f1d9226724fa4f47f0eaab50fb046568e29d68e0" - integrity sha512-YEdFzPjIbDUCfmehC6eS+AdJYtFWY35YYgWUnqqTM2oe/N58GhNy5yRllxYhxwJ9GcfHoNc6Ubze1yjkNv+9Qg== +"@unrs/resolver-binding-darwin-x64@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.3.3.tgz#6a3c75ca984342261c7346db53293b0002e8cde1" + integrity sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g== -"@unrs/rspack-resolver-binding-freebsd-x64@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-freebsd-x64/-/rspack-resolver-binding-freebsd-x64-1.2.2.tgz#3f14520900a130bf1b30922a7be0024968506e8c" - integrity sha512-TU4ntNXDgPN2giQyyzSnGWf/dVCem5lvwxg0XYvsvz35h5H19WrhTmHgbrULMuypCB3aHe1enYUC9rPLDw45mA== +"@unrs/resolver-binding-freebsd-x64@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.3.3.tgz#6532b8d4fecaca6c4424791c82f7a27aac94fcd5" + integrity sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw== -"@unrs/rspack-resolver-binding-linux-arm-gnueabihf@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-linux-arm-gnueabihf/-/rspack-resolver-binding-linux-arm-gnueabihf-1.2.2.tgz#7aa5ae2d6c762b0737694b48cd069629dd205c0c" - integrity sha512-ik3w4/rU6RujBvNWiDnKdXi1smBhqxEDhccNi/j2rHaMjm0Fk49KkJ6XKsoUnD2kZ5xaMJf9JjailW/okfUPIw== +"@unrs/resolver-binding-linux-arm-gnueabihf@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.3.3.tgz#69a8e430095fcf6a76f7350cc27b83464f8cbb91" + integrity sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ== -"@unrs/rspack-resolver-binding-linux-arm64-gnu@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-linux-arm64-gnu/-/rspack-resolver-binding-linux-arm64-gnu-1.2.2.tgz#1422b244db1ff7eb79d74260d25dac976c423e91" - integrity sha512-fp4Azi8kHz6TX8SFmKfyScZrMLfp++uRm2srpqRjsRZIIBzH74NtSkdEUHImR4G7f7XJ+sVZjCc6KDDK04YEpQ== +"@unrs/resolver-binding-linux-arm-musleabihf@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.3.3.tgz#e1fc8440e54929b1f0f6aff6f6e3e9e19ac4a73c" + integrity sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A== -"@unrs/rspack-resolver-binding-linux-arm64-musl@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-linux-arm64-musl/-/rspack-resolver-binding-linux-arm64-musl-1.2.2.tgz#9cc30a98b25b704b3d3bb17b9932a24d39049719" - integrity sha512-gMiG3DCFioJxdGBzhlL86KcFgt9HGz0iDhw0YVYPsShItpN5pqIkNrI+L/Q/0gfDiGrfcE0X3VANSYIPmqEAlQ== +"@unrs/resolver-binding-linux-arm64-gnu@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.3.3.tgz#1249e18b5fa1419addda637d62ef201ce9bcf5a4" + integrity sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ== -"@unrs/rspack-resolver-binding-linux-x64-gnu@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-linux-x64-gnu/-/rspack-resolver-binding-linux-x64-gnu-1.2.2.tgz#1ce389a2317c96276ceec82de4e6e325974946a7" - integrity sha512-n/4n2CxaUF9tcaJxEaZm+lqvaw2gflfWQ1R9I7WQgYkKEKbRKbpG/R3hopYdUmLSRI4xaW1Cy0Bz40eS2Yi4Sw== +"@unrs/resolver-binding-linux-arm64-musl@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.3.3.tgz#9af549ce9dde57b31c32a36cbe9eafa05f96befd" + integrity sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q== -"@unrs/rspack-resolver-binding-linux-x64-musl@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-linux-x64-musl/-/rspack-resolver-binding-linux-x64-musl-1.2.2.tgz#6d262acedac6d6e3d85c2d370de47e8e669cc316" - integrity sha512-cHyhAr6rlYYbon1L2Ag449YCj3p6XMfcYTP0AQX+KkQo025d1y/VFtPWvjMhuEsE2lLvtHm7GdJozj6BOMtzVg== +"@unrs/resolver-binding-linux-ppc64-gnu@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.3.3.tgz#45aab52319f3e3b2627038a80c0331b0793a4be3" + integrity sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg== -"@unrs/rspack-resolver-binding-wasm32-wasi@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-wasm32-wasi/-/rspack-resolver-binding-wasm32-wasi-1.2.2.tgz#72bf01b52c5e2d567b5f90ee842cde674e0356c7" - integrity sha512-eogDKuICghDLGc32FtP+WniG38IB1RcGOGz0G3z8406dUdjJvxfHGuGs/dSlM9YEp/v0lEqhJ4mBu6X2nL9pog== +"@unrs/resolver-binding-linux-s390x-gnu@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.3.3.tgz#7d2fe5c43e291d42e66d74fce07d9cf0050b4241" + integrity sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ== + +"@unrs/resolver-binding-linux-x64-gnu@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.3.3.tgz#be54ff88c581610c42d8614475c0560f043d7ded" + integrity sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg== + +"@unrs/resolver-binding-linux-x64-musl@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.3.3.tgz#4efa7a1e4f7bf231098ed23df1e19174d360c24f" + integrity sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA== + +"@unrs/resolver-binding-wasm32-wasi@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.3.3.tgz#6df454b4a9b28d47850bcb665d243f09101b782c" + integrity sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA== dependencies: "@napi-rs/wasm-runtime" "^0.2.7" -"@unrs/rspack-resolver-binding-win32-arm64-msvc@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-win32-arm64-msvc/-/rspack-resolver-binding-win32-arm64-msvc-1.2.2.tgz#e1a74655a42d48d2c005dd69ba148547167e1701" - integrity sha512-7sWRJumhpXSi2lccX8aQpfFXHsSVASdWndLv8AmD8nDRA/5PBi8IplQVZNx2mYRx6+Bp91Z00kuVqpXO9NfCTg== +"@unrs/resolver-binding-win32-arm64-msvc@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.3.3.tgz#fb19e118350e1392993a0a6565b427d38c1c1760" + integrity sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng== -"@unrs/rspack-resolver-binding-win32-x64-msvc@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@unrs/rspack-resolver-binding-win32-x64-msvc/-/rspack-resolver-binding-win32-x64-msvc-1.2.2.tgz#ac441b3bd8cf97b7d3d35f4e7f9792f8e257e729" - integrity sha512-hewo/UMGP1a7O6FG/ThcPzSJdm/WwrYDNkdGgWl6M18H6K6MSitklomWpT9MUtT5KGj++QJb06va/14QBC4pvw== +"@unrs/resolver-binding-win32-ia32-msvc@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.3.3.tgz#23a9c4b5621bba2d472bc78fadde7273a8c4548d" + integrity sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A== + +"@unrs/resolver-binding-win32-x64-msvc@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.3.3.tgz#eee226e5b4c4d91c862248afd24452c8698ed542" + integrity sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w== "@vscode/test-electron@^2.4.1": version "2.4.1" @@ -1017,10 +1037,10 @@ "@vscode/vsce-sign-win32-arm64" "2.0.2" "@vscode/vsce-sign-win32-x64" "2.0.2" -"@vscode/vsce@^3.2.1", "@vscode/vsce@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-3.3.0.tgz#803e41368a95d35693ce049076503f34f89fde09" - integrity sha512-HA/pUyvh/TQWkc4wG7AudPIWUvsR8i4jiWZZgM/a69ncPi9Nm5FDogf/wVEk4EWJs4/UdxU7J6X18dfAwfPbxA== +"@vscode/vsce@^3.2.1", "@vscode/vsce@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-3.3.2.tgz#1bb86222987814dbb3217c3f8befd63f249c8101" + integrity sha512-XQ4IhctYalSTMwLnMS8+nUaGbU7v99Qm2sOoGfIEf2QC7jpiLXZZMh7NwArEFsKX4gHTJLx0/GqAUlCdC3gKCw== dependencies: "@azure/identity" "^4.1.0" "@vscode/vsce-sign" "^2.0.0" @@ -2201,36 +2221,36 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -esbuild@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" - integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== +esbuild@^0.25.2: + version "0.25.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b" + integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.1" - "@esbuild/android-arm" "0.25.1" - "@esbuild/android-arm64" "0.25.1" - "@esbuild/android-x64" "0.25.1" - "@esbuild/darwin-arm64" "0.25.1" - "@esbuild/darwin-x64" "0.25.1" - "@esbuild/freebsd-arm64" "0.25.1" - "@esbuild/freebsd-x64" "0.25.1" - "@esbuild/linux-arm" "0.25.1" - "@esbuild/linux-arm64" "0.25.1" - "@esbuild/linux-ia32" "0.25.1" - "@esbuild/linux-loong64" "0.25.1" - "@esbuild/linux-mips64el" "0.25.1" - "@esbuild/linux-ppc64" "0.25.1" - "@esbuild/linux-riscv64" "0.25.1" - "@esbuild/linux-s390x" "0.25.1" - "@esbuild/linux-x64" "0.25.1" - "@esbuild/netbsd-arm64" "0.25.1" - "@esbuild/netbsd-x64" "0.25.1" - "@esbuild/openbsd-arm64" "0.25.1" - "@esbuild/openbsd-x64" "0.25.1" - "@esbuild/sunos-x64" "0.25.1" - "@esbuild/win32-arm64" "0.25.1" - "@esbuild/win32-ia32" "0.25.1" - "@esbuild/win32-x64" "0.25.1" + "@esbuild/aix-ppc64" "0.25.2" + "@esbuild/android-arm" "0.25.2" + "@esbuild/android-arm64" "0.25.2" + "@esbuild/android-x64" "0.25.2" + "@esbuild/darwin-arm64" "0.25.2" + "@esbuild/darwin-x64" "0.25.2" + "@esbuild/freebsd-arm64" "0.25.2" + "@esbuild/freebsd-x64" "0.25.2" + "@esbuild/linux-arm" "0.25.2" + "@esbuild/linux-arm64" "0.25.2" + "@esbuild/linux-ia32" "0.25.2" + "@esbuild/linux-loong64" "0.25.2" + "@esbuild/linux-mips64el" "0.25.2" + "@esbuild/linux-ppc64" "0.25.2" + "@esbuild/linux-riscv64" "0.25.2" + "@esbuild/linux-s390x" "0.25.2" + "@esbuild/linux-x64" "0.25.2" + "@esbuild/netbsd-arm64" "0.25.2" + "@esbuild/netbsd-x64" "0.25.2" + "@esbuild/openbsd-arm64" "0.25.2" + "@esbuild/openbsd-x64" "0.25.2" + "@esbuild/sunos-x64" "0.25.2" + "@esbuild/win32-arm64" "0.25.2" + "@esbuild/win32-ia32" "0.25.2" + "@esbuild/win32-x64" "0.25.2" escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" @@ -2268,16 +2288,17 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-import-resolver-typescript@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.2.2.tgz#1b5d302af7b4b8c0b3c1076f3faf8bbfa9321b0d" - integrity sha512-Rg1YEsb9UKLQ8BOv27cS3TZ6LhEAKQVgVOXArcE/sQrlnX8+FjmJRSC29ij1qrn+eurFuMsCFUcs7/+27T0vqQ== +eslint-import-resolver-typescript@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.1.tgz#6721c639716de3685363ddb284e2cec60cee60ee" + integrity sha512-/dR9YMomeBlvfuvX5q0C3Y/2PHC9OCRdT2ijFwdfq/4Bq+4m5/lqstEp9k3P6ocha1pCbhoY9fkwVYLmOqR0VQ== dependencies: debug "^4.4.0" get-tsconfig "^4.10.0" - rspack-resolver "^1.2.2" + is-bun-module "^2.0.0" stable-hash "^0.0.5" tinyglobby "^0.2.12" + unrs-resolver "^1.3.3" eslint-module-utils@^2.12.0: version "2.12.0" @@ -2375,13 +2396,13 @@ eslint-plugin-n@^17.5.0: minimatch "^9.0.5" semver "^7.6.3" -eslint-plugin-prettier@^5.2.1, eslint-plugin-prettier@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.4.tgz#6daa54a11da8c48971475d7c0e239d0b6c6dbc60" - integrity sha512-SFtuYmnhwYCtuCDTKPoK+CEzCnEgKTU2qTLwoCxvrC0MFBTIXo1i6hDYOI4cwHaE5GZtlWmTN3YfucYi7KJwPw== +eslint-plugin-prettier@^5.2.1, eslint-plugin-prettier@^5.2.6: + version "5.2.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz#be39e3bb23bb3eeb7e7df0927cdb46e4d7945096" + integrity sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.10.2" + synckit "^0.11.0" eslint-plugin-promise@^7.2.1: version "7.2.1" @@ -3157,6 +3178,13 @@ is-boolean-object@^1.2.1: call-bound "^1.0.3" has-tostringtag "^1.0.2" +is-bun-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-2.0.0.tgz#4d7859a87c0fcac950c95e666730e745eae8bddd" + integrity sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ== + dependencies: + semver "^7.7.1" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -4516,23 +4544,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rspack-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rspack-resolver/-/rspack-resolver-1.2.2.tgz#f4f8f740246c59bc83525f830aca628b71843e8a" - integrity sha512-Fwc19jMBA3g+fxDJH2B4WxwZjE0VaaOL7OX/A4Wn5Zv7bOD/vyPZhzXfaO73Xc2GAlfi96g5fGUa378WbIGfFw== - optionalDependencies: - "@unrs/rspack-resolver-binding-darwin-arm64" "1.2.2" - "@unrs/rspack-resolver-binding-darwin-x64" "1.2.2" - "@unrs/rspack-resolver-binding-freebsd-x64" "1.2.2" - "@unrs/rspack-resolver-binding-linux-arm-gnueabihf" "1.2.2" - "@unrs/rspack-resolver-binding-linux-arm64-gnu" "1.2.2" - "@unrs/rspack-resolver-binding-linux-arm64-musl" "1.2.2" - "@unrs/rspack-resolver-binding-linux-x64-gnu" "1.2.2" - "@unrs/rspack-resolver-binding-linux-x64-musl" "1.2.2" - "@unrs/rspack-resolver-binding-wasm32-wasi" "1.2.2" - "@unrs/rspack-resolver-binding-win32-arm64-msvc" "1.2.2" - "@unrs/rspack-resolver-binding-win32-x64-msvc" "1.2.2" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4622,10 +4633,10 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3, semver@^7.7.1: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== sentence-case@^3.0.4: version "3.0.4" @@ -5045,10 +5056,10 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.10.2.tgz#000b87488453b7943edd7ee5c3028057c4490af0" - integrity sha512-cSGiaCPhFzeFIQY8KKEacv46LclENY4d60jgkwCrKomvRkIjtMyss1dPkHLp/62c1leuOjEedB1+lWcwqTJSvA== +synckit@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.2.tgz#2a8015ce5df8d5eb0cc47ee55924ad8f8756c24b" + integrity sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA== dependencies: "@pkgr/core" "^0.2.0" tslib "^2.8.1" @@ -5059,9 +5070,9 @@ tapable@^2.2.0: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + version "2.1.2" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5" + integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" @@ -5279,18 +5290,18 @@ typed-rest-client@^1.8.4: underscore "^1.12.1" typescript-eslint@8, typescript-eslint@^8.18.0: - version "8.27.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.27.0.tgz#96cc34213723ec41a0bcaffc808f04c8d3cd64fb" - integrity sha512-ZZ/8+Y0rRUMuW1gJaPtLWe4ryHbsPLzzibk5Sq+IFa2aOH1Vo0gPr1fbA6pOnzBke7zC2Da4w8AyCgxKXo3lqA== + version "8.29.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.29.0.tgz#fc059b4c840889e5180dd822594eb46fa4619093" + integrity sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg== dependencies: - "@typescript-eslint/eslint-plugin" "8.27.0" - "@typescript-eslint/parser" "8.27.0" - "@typescript-eslint/utils" "8.27.0" + "@typescript-eslint/eslint-plugin" "8.29.0" + "@typescript-eslint/parser" "8.29.0" + "@typescript-eslint/utils" "8.29.0" -typescript@^5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== +typescript@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" @@ -5322,10 +5333,31 @@ underscore@^1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +unrs-resolver@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.3.3.tgz#46bd5dd2ecc650365e050055fc208b5f4ae57803" + integrity sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A== + optionalDependencies: + "@unrs/resolver-binding-darwin-arm64" "1.3.3" + "@unrs/resolver-binding-darwin-x64" "1.3.3" + "@unrs/resolver-binding-freebsd-x64" "1.3.3" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.3.3" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.3.3" + "@unrs/resolver-binding-linux-arm64-gnu" "1.3.3" + "@unrs/resolver-binding-linux-arm64-musl" "1.3.3" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.3.3" + "@unrs/resolver-binding-linux-s390x-gnu" "1.3.3" + "@unrs/resolver-binding-linux-x64-gnu" "1.3.3" + "@unrs/resolver-binding-linux-x64-musl" "1.3.3" + "@unrs/resolver-binding-wasm32-wasi" "1.3.3" + "@unrs/resolver-binding-win32-arm64-msvc" "1.3.3" + "@unrs/resolver-binding-win32-ia32-msvc" "1.3.3" + "@unrs/resolver-binding-win32-x64-msvc" "1.3.3" update-browserslist-db@^1.1.0: version "1.1.0"