➜ biome-unsafe git:(main) ./node_modules/@biomejs/biome/bin/biome rage --daemon-logs CLI: Version: 1.5.3 Color support: true Platform: CPU Architecture: aarch64 OS: macos Environment: BIOME_LOG_DIR: unset NO_COLOR: unset TERM: "xterm-256color" JS_RUNTIME_VERSION: "v18.18.2" JS_RUNTIME_NAME: "node" NODE_PACKAGE_MANAGER: unset Biome Configuration: Status: Loaded successfully Formatter disabled: false Linter disabled: false Organize imports disabled: false VCS disabled: true Workspace: Open Documents: 0 Discovering running Biome servers... Incompatible Biome Server: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ℹ Rage discovered this running server using an incompatible version of Biome. Server: Version: 1.5.0 Incompatible Biome Server: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ℹ Rage discovered this running server using an incompatible version of Biome. Server: Version: 1.5.1 Running Biome Server: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ℹ The client isn't connected to any server but rage discovered this running Biome server. Server: Version: 1.5.3 Name: biome_lsp CPU Architecture: aarch64 OS: macos Workspace: Open Documents: 0 Other Active Server Workspaces: Workspace: Open Documents: 2 Client Name: Visual Studio Code Client Version: 1.86.1 Biome Server Log: ⚠ Please review the content of the log file before sharing it publicly as it may contain sensitive information: * Path names that may reveal your name, a project name, or the name of your employer. * Source code ┐biome_cli::commands::daemon::Running Server{pid=30183} ├─0ms INFO biome_cli::service::unix Trying to connect to socket /Users/gustaf/Library/Caches/dev.biomejs.biome/biome-socket-1.5.3 ├─0ms INFO biome_cli::service::unix Remove socket folder /Users/gustaf/Library/Caches/dev.biomejs.biome/biome-socket-1.5.3 ├─49ms ERROR tower_lsp::transport failed to encode message: failed to encode response: Socket is not connected (os error 57) ├─┐biome_lsp::server::initialize{root_uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe, capabilities=ClientCapabilities { workspace: Some(WorkspaceClientCapabilities { apply_edit: Some(true), workspace_edit: Some(WorkspaceEditClientCapabilities { document_changes: Some(true), resource_operations: Some([Create, Rename, Delete]), failure_handling: Some(TextOnlyTransactional), normalizes_line_endings: Some(true), change_annotation_support: Some(ChangeAnnotationWorkspaceEditClientCapabilities { groups_on_label: Some(true) }) }), did_change_configuration: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), did_change_watched_files: Some(DidChangeWatchedFilesClientCapabilities { dynamic_registration: Some(true), relative_pattern_support: Some(true) }), symbol: Some(WorkspaceSymbolClientCapabilities { dynamic_registration: Some(true), symbol_kind: Some(SymbolKindCapability { value_set: Some([File, Module, Namespace, Package, Class, Method, Property, Field, Constructor, Enum, Interface, Function, Variable, Constant, String, Number, Boolean, Array, Object, Key, Null, EnumMember, Struct, Event, Operator, TypeParameter]) }), tag_support: Some(TagSupport { value_set: [Deprecated] }), resolve_support: Some(WorkspaceSymbolResolveSupportCapability { properties: ["location.range"] }) }), execute_command: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), workspace_folders: Some(true), configuration: Some(true), semantic_tokens: Some(SemanticTokensWorkspaceClientCapabilities { refresh_support: Some(true) }), code_lens: Some(CodeLensWorkspaceClientCapabilities { refresh_support: Some(true) }), file_operations: Some(WorkspaceFileOperationsClientCapabilities { dynamic_registration: Some(true), did_create: Some(true), will_create: Some(true), did_rename: Some(true), will_rename: Some(true), did_delete: Some(true), will_delete: Some(true) }), inline_value: Some(InlineValueWorkspaceClientCapabilities { refresh_support: Some(true) }), inlay_hint: Some(InlayHintWorkspaceClientCapabilities { refresh_support: Some(true) }) }), text_document: Some(TextDocumentClientCapabilities { synchronization: Some(TextDocumentSyncClientCapabilities { dynamic_registration: Some(true), will_save: Some(true), will_save_wait_until: Some(true), did_save: Some(true) }), completion: Some(CompletionClientCapabilities { dynamic_registration: Some(true), completion_item: Some(CompletionItemCapability { snippet_support: Some(true), commit_characters_support: Some(true), documentation_format: Some([Markdown, PlainText]), deprecated_support: Some(true), preselect_support: Some(true), tag_support: Some(TagSupport { value_set: [Deprecated] }), insert_replace_support: Some(true), resolve_support: Some(CompletionItemCapabilityResolveSupport { properties: ["documentation", "detail", "additionalTextEdits"] }), insert_text_mode_support: Some(InsertTextModeSupport { value_set: [AsIs, AdjustIndentation] }), label_details_support: Some(true) }), completion_item_kind: Some(CompletionItemKindCapability { value_set: Some([Text, Method, Function, Constructor, Field, Variable, Class, Interface, Module, Property, Unit, Value, Enum, Keyword, Snippet, Color, File, Reference, Folder, EnumMember, Constant, Struct, Event, Operator, TypeParameter]) }), context_support: Some(true), insert_text_mode: Some(AdjustIndentation), completion_list: Some(CompletionListCapability { item_defaults: Some(["commitCharacters", "editRange", "insertTextFormat", "insertTextMode", "data"]) }) }), hover: Some(HoverClientCapabilities { dynamic_registration: Some(true), content_format: Some([Markdown, PlainText]) }), signature_help: Some(SignatureHelpClientCapabilities { dynamic_registration: Some(true), signature_information: Some(SignatureInformationSettings { documentation_format: Some([Markdown, PlainText]), parameter_information: Some(ParameterInformationSettings { label_offset_support: Some(true) }), active_parameter_support: Some(true) }), context_support: Some(true) }), references: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_highlight: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_symbol: Some(DocumentSymbolClientCapabilities { dynamic_registration: Some(true), symbol_kind: Some(SymbolKindCapability { value_set: Some([File, Module, Namespace, Package, Class, Method, Property, Field, Constructor, Enum, Interface, Function, Variable, Constant, String, Number, Boolean, Array, Object, Key, Null, EnumMember, Struct, Event, Operator, TypeParameter]) }), hierarchical_document_symbol_support: Some(true), tag_support: Some(TagSupport { value_set: [Deprecated] }) }), formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), range_formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), on_type_formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), declaration: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), definition: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), type_definition: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), implementation: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), code_action: Some(CodeActionClientCapabilities { dynamic_registration: Some(true), code_action_literal_support: Some(CodeActionLiteralSupport { code_action_kind: CodeActionKindLiteralSupport { value_set: ["", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports"] } }), is_preferred_support: Some(true), disabled_support: Some(true), data_support: Some(true), resolve_support: Some(CodeActionCapabilityResolveSupport { properties: ["edit"] }), honors_change_annotations: Some(true) }), code_lens: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_link: Some(DocumentLinkClientCapabilities { dynamic_registration: Some(true), tooltip_support: Some(true) }), color_provider: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), rename: Some(RenameClientCapabilities { dynamic_registration: Some(true), prepare_support: Some(true), prepare_support_default_behavior: Some(Identifier), honors_change_annotations: Some(true) }), publish_diagnostics: Some(PublishDiagnosticsClientCapabilities { related_information: Some(true), tag_support: Some(TagSupport { value_set: [Unnecessary, Deprecated] }), version_support: Some(false), code_description_support: Some(true), data_support: Some(true) }), folding_range: Some(FoldingRangeClientCapabilities { dynamic_registration: Some(true), range_limit: Some(5000), line_folding_only: Some(true), folding_range_kind: Some(FoldingRangeKindCapability { value_set: Some([Comment, Imports, Region]) }), folding_range: Some(FoldingRangeCapability { collapsed_text: Some(false) }) }), selection_range: Some(SelectionRangeClientCapabilities { dynamic_registration: Some(true) }), linked_editing_range: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), call_hierarchy: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), semantic_tokens: Some(SemanticTokensClientCapabilities { dynamic_registration: Some(true), requests: SemanticTokensClientCapabilitiesRequests { range: Some(true), full: Some(Delta { delta: Some(true) }) }, token_types: [SemanticTokenType("namespace"), SemanticTokenType("type"), SemanticTokenType("class"), SemanticTokenType("enum"), SemanticTokenType("interface"), SemanticTokenType("struct"), SemanticTokenType("typeParameter"), SemanticTokenType("parameter"), SemanticTokenType("variable"), SemanticTokenType("property"), SemanticTokenType("enumMember"), SemanticTokenType("event"), SemanticTokenType("function"), SemanticTokenType("method"), SemanticTokenType("macro"), SemanticTokenType("keyword"), SemanticTokenType("modifier"), SemanticTokenType("comment"), SemanticTokenType("string"), SemanticTokenType("number"), SemanticTokenType("regexp"), SemanticTokenType("operator"), SemanticTokenType("decorator")], token_modifiers: [SemanticTokenModifier("declaration"), SemanticTokenModifier("definition"), SemanticTokenModifier("readonly"), SemanticTokenModifier("static"), SemanticTokenModifier("deprecated"), SemanticTokenModifier("abstract"), SemanticTokenModifier("async"), SemanticTokenModifier("modification"), SemanticTokenModifier("documentation"), SemanticTokenModifier("defaultLibrary")], formats: [TokenFormat("relative")], overlapping_token_support: Some(false), multiline_token_support: Some(false), server_cancel_support: Some(true), augments_syntax_tokens: Some(true) }), moniker: None, type_hierarchy: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), inline_value: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), inlay_hint: Some(InlayHintClientCapabilities { dynamic_registration: Some(true), resolve_support: Some(InlayHintResolveClientCapabilities { properties: ["tooltip", "textEdits", "label.tooltip", "label.location", "label.command"] }) }) }), window: Some(WindowClientCapabilities { work_done_progress: Some(true), show_message: Some(ShowMessageRequestClientCapabilities { message_action_item: Some(MessageActionItemCapabilities { additional_properties_support: Some(true) }) }), show_document: Some(ShowDocumentClientCapabilities { support: true }) }), general: Some(GeneralClientCapabilities { regular_expressions: Some(RegularExpressionsClientCapabilities { engine: "ECMAScript", version: Some("ES2020") }), markdown: Some(MarkdownClientCapabilities { parser: "marked", version: Some("1.1.0"), allowed_tags: None }), stale_request_support: Some(StaleRequestSupportClientCapabilities { cancel: true, retry_on_content_modified: ["textDocument/semanticTokens/full", "textDocument/semanticTokens/range", "textDocument/semanticTokens/full/delta"] }), position_encodings: Some([PositionEncodingKind("utf-16")]) }), experimental: None }, client_info=ClientInfo { name: "Visual Studio Code", version: Some("1.86.1") }, root_path="/Users/gustaf/Repos/Gustaf/biome-unsafe", workspace_folders=[WorkspaceFolder { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe", query: None, fragment: None }, name: "biome-unsafe" }]} │ ├─0ms INFO biome_lsp::server Starting Biome Language Server... │ ├─0ms WARN biome_lsp::server The Biome Server was initialized with the deprecated `root_path` parameter: this is not supported, use `root_uri` instead │ ├─0ms WARN biome_lsp::server The Biome Server was initialized with the `workspace_folders` parameter: this is unsupported at the moment, use `root_uri` instead ├─┘ ├─┐biome_lsp::server::initialized{params=InitializedParams} │ ├─0ms INFO biome_lsp::server Attempting to load the configuration from 'biome.json' file │ ├─┐biome_lsp::session::load_extension_settings{} │ ├─┐biome_lsp::session::load_workspace_settings{} │ │ ├─┐biome_fs::fs::os::OsFileSystem::open_with_options{path="/Users/gustaf/Repos/Gustaf/biome-unsafe/biome.json", options=OpenOptions { read: true, write: false, truncate: false, create: false, create_new: false }} │ │ ├─┘ │ │ ├─┐biome_fs::fs::os::OsFile::read_to_string{} │ │ ├─┘ │ │ ├─┐biome_json_parser::parse{} │ │ ├─┘ │ │ ├─0ms INFO biome_lsp::session Loaded workspace setting │ │ ├─0ms DEBUG biome_lsp::session Configuration { │ │ │ schema: Some( │ │ │ "https://biomejs.dev/schemas/1.5.1/schema.json", │ │ │ ), │ │ │ vcs: None, │ │ │ files: Some( │ │ │ FilesConfiguration { │ │ │ max_size: None, │ │ │ ignore: Some( │ │ │ StringSet( │ │ │ { │ │ │ "**/cdk.out/**", │ │ │ "**/build/**", │ │ │ }, │ │ │ ), │ │ │ ), │ │ │ include: None, │ │ │ ignore_unknown: None, │ │ │ }, │ │ │ ), │ │ │ formatter: None, │ │ │ organize_imports: Some( │ │ │ OrganizeImports { │ │ │ enabled: Some( │ │ │ true, │ │ │ ), │ │ │ ignore: None, │ │ │ include: None, │ │ │ }, │ │ │ ), │ │ │ linter: Some( │ │ │ LinterConfiguration { │ │ │ enabled: Some( │ │ │ true, │ │ │ ), │ │ │ rules: Some( │ │ │ Rules { │ │ │ recommended: Some( │ │ │ true, │ │ │ ), │ │ │ all: None, │ │ │ a11y: None, │ │ │ complexity: None, │ │ │ correctness: Some( │ │ │ Correctness { │ │ │ recommended: None, │ │ │ all: None, │ │ │ no_children_prop: None, │ │ │ no_const_assign: None, │ │ │ no_constant_condition: None, │ │ │ no_constructor_return: None, │ │ │ no_empty_character_class_in_regex: None, │ │ │ no_empty_pattern: None, │ │ │ no_global_object_calls: None, │ │ │ no_inner_declarations: None, │ │ │ no_invalid_constructor_super: None, │ │ │ no_invalid_new_builtin: None, │ │ │ no_new_symbol: None, │ │ │ no_nonoctal_decimal_escape: None, │ │ │ no_precision_loss: None, │ │ │ no_render_return_value: None, │ │ │ no_self_assign: None, │ │ │ no_setter_return: None, │ │ │ no_string_case_mismatch: None, │ │ │ no_switch_declarations: None, │ │ │ no_undeclared_variables: None, │ │ │ no_unnecessary_continue: None, │ │ │ no_unreachable: None, │ │ │ no_unreachable_super: None, │ │ │ no_unsafe_finally: None, │ │ │ no_unsafe_optional_chaining: None, │ │ │ no_unused_labels: None, │ │ │ no_unused_variables: Some( │ │ │ Plain( │ │ │ Error, │ │ │ ), │ │ │ ), │ │ │ no_void_elements_with_children: None, │ │ │ no_void_type_return: None, │ │ │ use_exhaustive_dependencies: Some( │ │ │ Plain( │ │ │ Warn, │ │ │ ), │ │ │ ), │ │ │ use_hook_at_top_level: None, │ │ │ use_is_nan: None, │ │ │ use_valid_for_direction: None, │ │ │ use_yield: None, │ │ │ }, │ │ │ ), │ │ │ nursery: None, │ │ │ performance: None, │ │ │ security: None, │ │ │ style: Some( │ │ │ Style { │ │ │ recommended: None, │ │ │ all: None, │ │ │ no_arguments: None, │ │ │ no_comma_operator: None, │ │ │ no_default_export: None, │ │ │ no_implicit_boolean: None, │ │ │ no_inferrable_types: None, │ │ │ no_namespace: None, │ │ │ no_negation_else: None, │ │ │ no_non_null_assertion: Some( │ │ │ Plain( │ │ │ Warn, │ │ │ ), │ │ │ ), │ │ │ no_parameter_assign: None, │ │ │ no_parameter_properties: None, │ │ │ no_restricted_globals: None, │ │ │ no_shouty_constants: None, │ │ │ no_unused_template_literal: None, │ │ │ no_useless_else: None, │ │ │ no_var: None, │ │ │ use_as_const_assertion: None, │ │ │ use_block_statements: None, │ │ │ use_collapsed_else_if: None, │ │ │ use_const: None, │ │ │ use_default_parameter_last: None, │ │ │ use_enum_initializers: None, │ │ │ use_exponentiation_operator: None, │ │ │ use_fragment_syntax: None, │ │ │ use_literal_enum_members: None, │ │ │ use_naming_convention: None, │ │ │ use_numeric_literals: None, │ │ │ use_self_closing_elements: None, │ │ │ use_shorthand_array_type: None, │ │ │ use_shorthand_assign: None, │ │ │ use_single_case_statement: None, │ │ │ use_single_var_declarator: None, │ │ │ use_template: None, │ │ │ use_while: None, │ │ │ }, │ │ │ ), │ │ │ suspicious: None, │ │ │ }, │ │ │ ), │ │ │ ignore: None, │ │ │ include: None, │ │ │ }, │ │ │ ), │ │ │ javascript: Some( │ │ │ JavascriptConfiguration { │ │ │ formatter: Some( │ │ │ JavascriptFormatter { │ │ │ jsx_quote_style: None, │ │ │ quote_properties: None, │ │ │ trailing_comma: Some( │ │ │ Es5, │ │ │ ), │ │ │ semicolons: Some( │ │ │ AsNeeded, │ │ │ ), │ │ │ arrow_parentheses: None, │ │ │ bracket_spacing: None, │ │ │ bracket_same_line: None, │ │ │ enabled: None, │ │ │ indent_style: Some( │ │ │ Space, │ │ │ ), │ │ │ indent_size: None, │ │ │ indent_width: Some( │ │ │ 4, │ │ │ ), │ │ │ line_ending: None, │ │ │ line_width: Some( │ │ │ LineWidth( │ │ │ 120, │ │ │ ), │ │ │ ), │ │ │ quote_style: Some( │ │ │ Double, │ │ │ ), │ │ │ }, │ │ │ ), │ │ │ parser: None, │ │ │ globals: None, │ │ │ organize_imports: None, │ │ │ }, │ │ │ ), │ │ │ json: Some( │ │ │ JsonConfiguration { │ │ │ parser: None, │ │ │ formatter: Some( │ │ │ JsonFormatter { │ │ │ enabled: None, │ │ │ indent_style: Some( │ │ │ Space, │ │ │ ), │ │ │ indent_width: Some( │ │ │ 2, │ │ │ ), │ │ │ indent_size: None, │ │ │ line_ending: None, │ │ │ line_width: None, │ │ │ }, │ │ │ ), │ │ │ }, │ │ │ ), │ │ │ css: None, │ │ │ extends: None, │ │ │ overrides: None, │ │ │ } │ │ ├─┐biome_service::workspace::server::update_settings{params=UpdateSettingsParams { configuration: Configuration { schema: Some("https://biomejs.dev/schemas/1.5.1/schema.json"), vcs: None, files: Some(FilesConfiguration { max_size: None, ignore: Some(StringSet({"**/cdk.out/**", "**/build/**"})), include: None, ignore_unknown: None }), formatter: None, organize_imports: Some(OrganizeImports { enabled: Some(true), ignore: None, include: None }), linter: Some(LinterConfiguration { enabled: Some(true), rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), ignore: None, include: None }), javascript: Some(JavascriptConfiguration { formatter: Some(JavascriptFormatter { jsx_quote_style: None, quote_properties: None, trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, bracket_spacing: None, bracket_same_line: None, enabled: None, indent_style: Some(Space), indent_size: None, indent_width: Some(4), line_ending: None, line_width: Some(LineWidth(120)), quote_style: Some(Double) }), parser: None, globals: None, organize_imports: None }), json: Some(JsonConfiguration { parser: None, formatter: Some(JsonFormatter { enabled: None, indent_style: Some(Space), indent_width: Some(2), indent_size: None, line_ending: None, line_width: None }) }), css: None, extends: None, overrides: None }, vcs_base_path: None, gitignore_matches: [], working_directory: Some("/") }} │ │ ├─┘ │ ├─┘ │ │ ├─5ms INFO biome_lsp::session Loaded client configuration: Object { │ │ │ "lspBin": String("./node_modules/@biomejs/biome/bin/biome"), │ │ │ "rename": Null, │ │ │ } │ ├─┘ │ ├─6ms INFO biome_lsp::session Unregister capabilities "workspace/didChangeConfiguration, textDocument/rangeFormatting, textDocument/onTypeFormatting, textDocument/rename, textDocument/formatting, workspace/didChangeWatchedFiles" │ ├─7ms INFO biome_lsp::session Register capabilities "workspace/didChangeConfiguration, textDocument/rangeFormatting, textDocument/onTypeFormatting, textDocument/formatting, workspace/didChangeWatchedFiles" ├─┘ ├─┐biome_lsp::handlers::text_document::did_open{params=DidOpenTextDocumentParams { text_document: TextDocumentItem { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/package.json", query: None, fragment: None }, language_id: "json", version: 1, text: "{\n \"name\": \"biome-unsafe\",\n \"module\": \"index.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"lint\": \"biome check .\",\n \"apply\": \"biome lint . --apply\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"1.5.3\",\n \"@types/bun\": \"latest\"\n },\n \"peerDependencies\": {\n \"typescript\": \"^5.0.0\"\n }\n}\n" } }} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/package.json} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: Json RomePath { path: "package.json" } │ │ ├─0ms DEBUG biome_service::workspace The file has the following feature sets: │ │ │ {OrganizeImports: Supported, Lint: Supported, Format: Supported} │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_open{params=DidOpenTextDocumentParams { text_document: TextDocumentItem { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }, language_id: "typescript", version: 1, text: "// const hello = `there`\n\nconst hello = `there`\n" } }} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─0ms DEBUG biome_service::workspace The file has the following feature sets: │ │ │ {Format: Supported, OrganizeImports: Supported, Lint: Supported} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("quickfix.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..48 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..48, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `there`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("source.organizeImports.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..48 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..48, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `there`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::formatting::format{params=DocumentFormattingParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None } }, options: FormattingOptions { tab_size: 2, insert_spaces: true, properties: {}, trim_trailing_whitespace: None, insert_final_newline: None, trim_final_newlines: None }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None } }} │ ├─0ms DEBUG biome_lsp::handlers::formatting Formatting... │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ ├─0ms DEBUG biome_service::file_handlers::javascript Options used for format: │ │ Indent style: Space │ │ Indent width: 4 │ │ Line ending: LF │ │ Line width: 120 │ │ Quote style: Double Quotes │ │ JSX quote style: Double Quotes │ │ Quote properties: As needed │ │ Trailing comma: ES5 │ │ Semicolons: As needed │ │ Arrow parentheses: Always │ │ Bracket spacing: true │ │ Bracket same line: false │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Format file index.ts │ ├─┐biome_formatter::printer::Printer::print{} │ ├─┘ ├─┘ ├─58403ms WARN tower_lsp Got a textDocument/didSave notification, but it is not implemented ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("quickfix.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..48 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..48, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `there`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("source.organizeImports.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..48 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..48, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `there`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::formatting::format{params=DocumentFormattingParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None } }, options: FormattingOptions { tab_size: 2, insert_spaces: true, properties: {}, trim_trailing_whitespace: None, insert_final_newline: None, trim_final_newlines: None }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None } }} │ ├─0ms DEBUG biome_lsp::handlers::formatting Formatting... │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ ├─0ms DEBUG biome_service::file_handlers::javascript Options used for format: │ │ Indent style: Space │ │ Indent width: 4 │ │ Line ending: LF │ │ Line width: 120 │ │ Quote style: Double Quotes │ │ JSX quote style: Double Quotes │ │ Quote properties: As needed │ │ Trailing comma: ES5 │ │ Semicolons: As needed │ │ Arrow parentheses: Always │ │ Bracket spacing: true │ │ Bracket same line: false │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Format file index.ts │ ├─┐biome_formatter::printer::Printer::print{} │ ├─┘ ├─┘ ├─59279ms WARN tower_lsp Got a textDocument/didSave notification, but it is not implemented ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 20 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 46..46 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=46..46, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 21 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=2} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 8, parent: Some(JS_TEMPLATE_EXPRESSION@40..49), parent_range: Some((40, 49)), new_node_slot: 0, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 3 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(Number(2349)), code_description: None, source: Some("ts"), message: "This expression is not callable.\n Type 'String' has no call signatures.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=3} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 20 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(Number(2349)), code_description: None, source: Some("ts"), message: "This expression is not callable.\n Type 'String' has no call signatures.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 46..46 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=46..46, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 21 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 20 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 46..46 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=46..46, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 21 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=4} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there?\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there?`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 22 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there?\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there?`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 22 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=5} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─1ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 20 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 46..46 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=46..46, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 21 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 20 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 46..46 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=46..46, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..47), parent_range: Some((0, 47)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..47, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"there\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..47 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 47..48 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `there`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..116 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 20 }, end: Position { line: 2, character: 21 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 21 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=6} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=7} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..49), parent_range: Some((38, 49)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..9)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=8} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..50), parent_range: Some((38, 50)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..10)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=9} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..51), parent_range: Some((38, 51)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..11)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=10} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..52), parent_range: Some((38, 52)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..12)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=11} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..53), parent_range: Some((38, 53)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..13)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 26 }, end: Position { line: 2, character: 26 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 52..52 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=52..52, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..53), parent_range: Some((38, 53)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..13)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..53), parent_range: Some((0, 53)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..53, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"therechange\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..53 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 53..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `therechange`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..122 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 26 }, end: Position { line: 2, character: 27 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 26 }, end: Position { line: 2, character: 26 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 52..52 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=52..52, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─1ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─1ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..53), parent_range: Some((38, 53)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..13)) }] │ │ │ ├─1ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..53), parent_range: Some((0, 53)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..53, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"therechange\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..53 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 53..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `therechange`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..122 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 26 }, end: Position { line: 2, character: 27 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 15 }, end: Position { line: 2, character: 26 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 41..52 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=41..52, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..53), parent_range: Some((38, 53)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..13)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..53), parent_range: Some((0, 53)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..53, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"therechange\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..53 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 53..54 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `therechange`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..122 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 26 }, end: Position { line: 2, character: 27 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 27 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=12} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..43), parent_range: Some((38, 43)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..3)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─1ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=13} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..44), parent_range: Some((38, 44)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..4)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=14} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..45), parent_range: Some((38, 45)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..5)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=15} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..46), parent_range: Some((38, 46)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..6)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=16} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..47), parent_range: Some((38, 47)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..7)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=17} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 2 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"change\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 22 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 21 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 47..47 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=47..47, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─1ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"change\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 22 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("quickfix.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..49 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..49, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"change\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `change`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..55 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─1ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=Some([CodeActionKind("source.organizeImports.biome")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..49 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..49, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"change\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `change`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..55 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::formatting::format{params=DocumentFormattingParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None } }, options: FormattingOptions { tab_size: 2, insert_spaces: true, properties: {}, trim_trailing_whitespace: None, insert_final_newline: None, trim_final_newlines: None }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None } }} │ ├─0ms DEBUG biome_lsp::handlers::formatting Formatting... │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ ├─0ms DEBUG biome_service::file_handlers::javascript Options used for format: │ │ Indent style: Space │ │ Indent width: 4 │ │ Line ending: LF │ │ Line width: 120 │ │ Quote style: Double Quotes │ │ JSX quote style: Double Quotes │ │ Quote properties: As needed │ │ Trailing comma: ES5 │ │ Semicolons: As needed │ │ Arrow parentheses: Always │ │ Bracket spacing: true │ │ Bracket same line: false │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Format file index.ts │ ├─┐biome_formatter::printer::Printer::print{} │ ├─┘ ├─┘ ├─75989ms WARN tower_lsp Got a textDocument/didSave notification, but it is not implemented ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..49 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..49, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_INITIALIZER_CLAUSE@38..48), parent_range: Some((38, 48)), new_node_slot: 1, new_node: Some(Node(JS_STRING_LITERAL_EXPRESSION@0..8)) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 4, parent: Some(JS_VARIABLE_DECLARATION@0..48), parent_range: Some((0, 48)), new_node_slot: 1, new_node: Some(Token(CONST_KW@0..99 "const" [Comments("// const hello = `there`"), Newline("\n"), Newline("\n"), Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }] │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: QuickFix, rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 40..48, applicability: MaybeIncorrect, msg: "Replace with string literal", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello = `\"change\n", ops: [DiffOp(Equal { range: 0..40 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 42..48 }), DiffOp(Delete { range: 40..41 }), DiffOp(Insert { range: 41..42 }), DiffOp(Equal { range: 48..49 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("style", "noUnusedTemplateLiteral")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/style/noUnusedTemplateLiteral", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/style/noUnusedTemplateLiteral: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }, CodeAction { category: QuickFix, rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 32..38, applicability: MaybeIncorrect, msg: "If this is intentional, prepend ""hello"" with an underscore.", suggestion: TextEdit { dictionary: "// const hello = `there`\n\nconst hello_hello = `change`\n", ops: [DiffOp(Equal { range: 0..32 }), DiffOp(Delete { range: 32..37 }), DiffOp(Insert { range: 37..43 }), DiffOp(Equal { range: 43..55 })] }, labels: [] } }, CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("correctness", "noUnusedVariables")), suggestion: CodeSuggestion { span: 0..32, applicability: Always, msg: "Suppress rule lint/correctness/noUnusedVariables", suggestion: TextEdit { dictionary: "// const hello = `there`\n\n// biome-ignore lint/correctness/noUnusedVariables: \nconst hello = `change`\n", ops: [DiffOp(Equal { range: 0..26 }), DiffOp(Insert { range: 26..92 }), DiffOp(Equal { range: 92..97 }), DiffOp(Delete { range: 97..98 }), DiffOp(Insert { range: 98..100 }), DiffOp(Equal { range: 100..117 })] }, labels: [] } }] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [CodeAction(CodeAction { title: "Replace with string literal", kind: Some(CodeActionKind("quickfix.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 15 } }, new_text: "\"" }, TextEdit { range: Range { start: Position { line: 2, character: 21 }, end: Position { line: 2, character: 22 } }, new_text: "\"" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/style/noUnusedTemplateLiteral", kind: Some(CodeActionKind("quickfix.suppressRule.biome.style.noUnusedTemplateLiteral")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 14 }, end: Position { line: 2, character: 22 } }, severity: Some(Error), code: Some(String("lint/style/noUnusedTemplateLiteral")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-template-literal", query: None, fragment: None } }), source: Some("biome"), message: "Do not use template literals if interpolation and special-character handling are not needed.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/style/noUnusedTemplateLiteral: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "If this is intentional, prepend hello with an underscore.", kind: Some(CodeActionKind("quickfix.biome.correctness.noUnusedVariables")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, new_text: "_hello" }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None }), CodeAction(CodeAction { title: "Suppress rule lint/correctness/noUnusedVariables", kind: Some(CodeActionKind("quickfix.suppressRule.biome.correctness.noUnusedVariables")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }]), edit: Some(WorkspaceEdit { changes: Some({Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 2, character: 0 }, end: Position { line: 2, character: 0 } }, new_text: "// biome-ignore lint/correctness/noUnusedVariables: \n" }, TextEdit { range: Range { start: Position { line: 2, character: 5 }, end: Position { line: 2, character: 6 } }, new_text: " " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })] ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=18} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch pushing change... │ │ │ │ │ ├─0ms DEBUG biome_rowan::ast::batch changes [CommitChange { parent_depth: 7, parent: Some(JS_IDENTIFIER_BINDING@32..38), parent_range: Some((32, 38)), new_node_slot: 0, new_node: Some(Token(IDENT@0..7 "_hello" [] [Whitespace(" ")])) }] │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 1 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::text_document::did_change{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, version=19} │ ├─┐biome_lsp::session::update_diagnostics{url=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts} │ │ ├─┐biome_service::workspace::server::pull_diagnostics{params=PullDiagnosticsParams { path: RomePath { path: "index.ts" }, categories: RuleCategories(SYNTAX | LINT | ACTION), max_diagnostics: 18446744073709551615 }} │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_js_parser::parse::parse{} │ │ │ ├─┘ │ │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ │ ├─┐biome_service::workspace::server::Pulling diagnostics{categories=RuleCategories(SYNTAX | LINT | ACTION)} │ │ │ │ ├─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=RomePath { path: "index.ts" }, language=TypeScript} │ │ │ │ │ ├─0ms INFO biome_service::file_handlers::javascript Analyze file index.ts │ │ │ │ ├─┘ │ │ │ ├─┘ │ │ │ ├─0ms INFO biome_service::workspace::server Pulled 0 diagnostic(s) │ │ ├─┘ │ ├─┘ ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 3, character: 0 } }, only=None, diagnostics=[Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Error), code: Some(String("lint/correctness/noUnusedVariables")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("biomejs.dev")), port: None, path: "/linter/rules/no-unused-variables", query: None, fragment: None } }), source: Some("biome"), message: "This variable is unused.", related_information: None, tags: None, data: None }, Diagnostic { range: Range { start: Position { line: 2, character: 6 }, end: Position { line: 2, character: 11 } }, severity: Some(Hint), code: Some(Number(6133)), code_description: None, source: Some("ts"), message: "'hello' is declared but its value is never read.", related_information: None, tags: Some([Unnecessary]), data: None }]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..50 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..50, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 23 }, end: Position { line: 2, character: 23 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 49..49 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=49..49, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 2, character: 23 }, end: Position { line: 2, character: 23 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 49..49 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=49..49, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::handlers::analysis::code_actions{uri=file:///Users/gustaf/Repos/Gustaf/biome-unsafe/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]} │ ├─┐biome_service::workspace::server::pull_actions{params=PullActionsParams { path: RomePath { path: "index.ts" }, range: 0..0 }} │ │ ├─0ms DEBUG biome_service::workspace::server File capabilities: TypeScript RomePath { path: "index.ts" } │ │ ├─┐biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: Some(Correctness { recommended: None, all: None, no_children_prop: None, no_const_assign: None, no_constant_condition: None, no_constructor_return: None, no_empty_character_class_in_regex: None, no_empty_pattern: None, no_global_object_calls: None, no_inner_declarations: None, no_invalid_constructor_super: None, no_invalid_new_builtin: None, no_new_symbol: None, no_nonoctal_decimal_escape: None, no_precision_loss: None, no_render_return_value: None, no_self_assign: None, no_setter_return: None, no_string_case_mismatch: None, no_switch_declarations: None, no_undeclared_variables: None, no_unnecessary_continue: None, no_unreachable: None, no_unreachable_super: None, no_unsafe_finally: None, no_unsafe_optional_chaining: None, no_unused_labels: None, no_unused_variables: Some(Plain(Error)), no_void_elements_with_children: None, no_void_type_return: None, use_exhaustive_dependencies: Some(Plain(Warn)), use_hook_at_top_level: None, use_is_nan: None, use_valid_for_direction: None, use_yield: None }), nursery: None, performance: None, security: None, style: Some(Style { recommended: None, all: None, no_arguments: None, no_comma_operator: None, no_default_export: None, no_implicit_boolean: None, no_inferrable_types: None, no_namespace: None, no_negation_else: None, no_non_null_assertion: Some(Plain(Warn)), no_parameter_assign: None, no_parameter_properties: None, no_restricted_globals: None, no_shouty_constants: None, no_unused_template_literal: None, no_useless_else: None, no_var: None, use_as_const_assertion: None, use_block_statements: None, use_collapsed_else_if: None, use_const: None, use_default_parameter_last: None, use_enum_initializers: None, use_exponentiation_operator: None, use_fragment_syntax: None, use_literal_enum_members: None, use_naming_convention: None, use_numeric_literals: None, use_self_closing_elements: None, use_shorthand_array_type: None, use_shorthand_assign: None, use_single_case_statement: None, use_single_var_declarator: None, use_template: None, use_while: None }), suspicious: None }), path=RomePath { path: "index.ts" }} │ │ ├─┘ │ ├─┘ │ ├─0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] } │ ├─0ms DEBUG biome_lsp::handlers::analysis Suggested actions: │ │ [] ├─┘ ├─┐biome_lsp::server::initialize{capabilities=ClientCapabilities { workspace: None, text_document: None, window: None, general: None, experimental: None }, client_info=ClientInfo { name: "biome_service", version: Some("1.5.3") }} │ ├─0ms INFO biome_lsp::server Starting Biome Language Server... ├─┘ ├─┐biome_lsp::server::biome/rage{params=RageParams} ├─┘ ├─78546ms ERROR tower_lsp::transport failed to encode message: failed to encode response: Socket is not connected (os error 57) Incompatible Biome Server: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ℹ Rage discovered this running server using an incompatible version of Biome. Server: Version: 1.5.2