Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

πŸ› extends option not extending #343

Closed
1 task done
Naoto-Ida opened this issue Sep 20, 2023 · 12 comments Β· Fixed by #516
Closed
1 task done

πŸ› extends option not extending #343

Naoto-Ida opened this issue Sep 20, 2023 · 12 comments Β· Fixed by #516
Labels
A-Project Area: project S-Bug-confirmed Status: report has been confirmed as a valid bug

Comments

@Naoto-Ida
Copy link
Contributor

Naoto-Ida commented Sep 20, 2023

Environment information

β”‚ β”‚ β”œβ”€0ms INFO biome_lsp::session Loaded workspace settings: Configuration {
β”‚ β”‚ β”‚     schema: None,
β”‚ β”‚ β”‚     vcs: None,
β”‚ β”‚ β”‚     files: Some(
β”‚ β”‚ β”‚         FilesConfiguration {
β”‚ β”‚ β”‚             max_size: None,
β”‚ β”‚ β”‚             ignore: Some(
β”‚ β”‚ β”‚                 StringSet(
β”‚ β”‚ β”‚                     {
β”‚ β”‚ β”‚                         "node_modules/",
β”‚ β”‚ β”‚                         "__generated__/",
β”‚ β”‚ β”‚                         "storybook-static/",
β”‚ β”‚ β”‚                         ".next/",
β”‚ β”‚ β”‚                         ".swc/",
β”‚ β”‚ β”‚                         "persisted_queries.json",
β”‚ β”‚ β”‚                         ".vscode/settings.json",
β”‚ β”‚ β”‚                         ".yarn/",
β”‚ β”‚ β”‚                         "coverage",
β”‚ β”‚ β”‚                         "out/",
β”‚ β”‚ β”‚                         "package.json",
β”‚ β”‚ β”‚                         "public/",
β”‚ β”‚ β”‚                     },
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore_unknown: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     formatter: None,
β”‚ β”‚ β”‚     organize_imports: Some(
β”‚ β”‚ β”‚         OrganizeImports {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 false,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     linter: Some(
β”‚ β”‚ β”‚         LinterConfiguration {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 false,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             rules: Some(
β”‚ β”‚ β”‚                 Rules {
β”‚ β”‚ β”‚                     recommended: Some(
β”‚ β”‚ β”‚                         true,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     all: None,
β”‚ β”‚ β”‚                     a11y: None,
β”‚ β”‚ β”‚                     complexity: None,
β”‚ β”‚ β”‚                     correctness: None,
β”‚ β”‚ β”‚                     nursery: None,
β”‚ β”‚ β”‚                     performance: None,
β”‚ β”‚ β”‚                     security: None,
β”‚ β”‚ β”‚                     style: None,
β”‚ β”‚ β”‚                     suspicious: None,
β”‚ β”‚ β”‚                 },
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     javascript: Some(
β”‚ β”‚ β”‚         JavascriptConfiguration {
β”‚ β”‚ β”‚             formatter: None,
β”‚ β”‚ β”‚             parser: None,
β”‚ β”‚ β”‚             globals: None,
β”‚ β”‚ β”‚             organize_imports: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     json: None,
β”‚ β”‚ β”‚     extends: Some(
β”‚ β”‚ β”‚         StringSet(
β”‚ β”‚ β”‚             {
β”‚ β”‚ β”‚                 "./node_modules/@company/biome-config/formatter.json",
β”‚ β”‚ β”‚             },
β”‚ β”‚ β”‚         ),
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚ }

What happened?

It seems that the extends option is not working as documented.

  • We're using @biomejs/[email protected].
  • We wanted to have the same formatter configuration across all projects using Biome.
  • extends doesn't extend the formatter configuration from the specified JSON.

Repro:

  1. Create/release a package outside of the project which contains biome configs OR create a local one.
  2. In the root biome.json, use extends: ['./node_modules/@company/biome-config/formatter.json'] or ['./my-other-biome-config.json']`.
  3. The extension contains { "formatter": "indentStyle": "space" }, whereas the project in question has no entry for formatter.
  4. Running yarn biome rage reveals that the formatter configuration is now None.

Expected result

Extending another configuration should not set the project one to None. This seems to happen with linter, as well as javascript.

Code of Conduct

  • I agree to follow Biome's Code of Conduct
@ematipico
Copy link
Member

ematipico commented Sep 20, 2023

The extends feature doesn't work with packages, only physical paths

The files defined in this array:

must exist in the file system;
are resolved from the path where the biome.json file is defined;
must be relative paths. Paths to libraries are not resolved;
must be reachable by Biome, e.g. symbolic links might not be resolved by Biome;
will be processed in order: from the first one to the last one;
can override the same properties, but ultimately only the last one will be used by Biome;

@Naoto-Ida
Copy link
Contributor Author

Naoto-Ida commented Sep 20, 2023

Woops, sorry, I mean to say ./node_modules/@company/biome-config/formatter.json. Will edit the message.

@ematipico
Copy link
Member

ematipico commented Sep 20, 2023

In the root biome.json, use extends: ['./node_modules/@company/biome-config/formatter.json'] or ['./my-other-biome-config.json']`.

Did you make sure that those paths are reachable by biome? Package managers tend to do different stuff. For example pnpm creates symbolic links, and they wouldn't work. What about your yarn setup?

@itsjavi
Copy link

itsjavi commented Sep 25, 2023

In my case, extends is completely ignored by the VSCode extension.

@jrson83
Copy link

jrson83 commented Sep 28, 2023

In my case, extends is completely ignored by the VSCode extension.

Same for me.

@ematipico
Copy link
Member

Someone please create a reproduction repository. Without it, it's not possible to help you guys

@jrson83
Copy link

jrson83 commented Sep 28, 2023

Someone please create a reproduction repository. Without it, it's not possible to help you guys

Edit: I re-init the repo, cause I made somthing wrong on first commit.

Repo: https://github.com/jrson83/biome-extends-issue

  1. git clone https://github.com/jrson83/biome-extends-issue.git
  2. Run pnpm install

Expected behaviour

./packages/module-a/biome.json and ./packages/module-b/biome.json extend ["../../biome.json"].

module-a

Running pnpm format in root should format ./src/index.ts with an indentSize of 4.

{
  "$schema": "https://biomejs.dev/schemas/1.2.2/schema.json",
  "extends": ["../../biome.json"],
  "formatter": {
    "indentSize": 4
  }
}

module-b

Opening ./src/index.ts, the linter should not throw any errors on both disabled rules:

{
  "$schema": "https://biomejs.dev/schemas/1.2.2/schema.json",
  "extends": ["../../biome.json"],
  "linter": {
    "enabled": true,
    "rules": {
      "suspicious": {
        "noConsoleLog": "off",
        "noExplicitAny": "off"
      }
    }
  }
}

Actual behaviour

module-a

Running pnpm format in root formats ./src/index.ts with an indentSize of 2.

module-b

Opening ./src/index.ts, the linter throws errors on both disabled rules.

2023-09-28_17h53_53


Environment information

CLI:
  Version:                      1.2.2
  Color support:                true

Platform:
  CPU Architecture:             x86_64
  OS:                           windows

Environment:
  BIOME_LOG_DIR:                unset
  NO_COLOR:                     unset
  TERM:                         "xterm-256color"
  JS_RUNTIME_VERSION:           "v20.2.0"
  JS_RUNTIME_NAME:              "node"
  NODE_PACKAGE_MANAGER:         "pnpm/8.7.6"

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...

Running Biome Server: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

i The client isn't connected to any server but rage discovered this running Biome server.

Server:
  Version:                      1.2.2
  Name:                         biome_lsp
  CPU Architecture:             x86_64
  OS:                           windows

Workspace:
  Open Documents:               0

Other Active Server Workspaces:

Workspace:
  Open Documents:               2
  Client Name:                  Visual Studio Code
  Client Version:               1.82.2

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=27688}
β”œβ”€β”biome_lsp::server::initialize{root_uri=file:///d%3A/___projects/_____________shrtcss/biome-issue, 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"]) }) }), 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(false) }), 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.82.2") }, root_path="d:\\___projects\\_____________shrtcss\\biome-issue", workspace_folders=[WorkspaceFolder { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/d%3A/___projects/_____________shrtcss/biome-issue", query: None, fragment: None }, name: "biome-issue" }]}
β”‚ β”œβ”€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="d:\\___projects\\_____________shrtcss\\biome-issue\\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 settings: Configuration {
β”‚ β”‚ β”‚     schema: Some(
β”‚ β”‚ β”‚         "./node_modules/@biomejs/biome/configuration_schema.json",
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     vcs: None,
β”‚ β”‚ β”‚     files: None,
β”‚ β”‚ β”‚     formatter: Some(
β”‚ β”‚ β”‚         FormatterConfiguration {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             format_with_errors: Some(
β”‚ β”‚ β”‚                 false,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             indent_style: Some(
β”‚ β”‚ β”‚                 Space,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             indent_size: Some(
β”‚ β”‚ β”‚                 2,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             line_width: Some(
β”‚ β”‚ β”‚                 LineWidth(
β”‚ β”‚ β”‚                     80,
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: Some(
β”‚ β”‚ β”‚                 StringSet(
β”‚ β”‚ β”‚                     {
β”‚ β”‚ β”‚                         "**/dist/**",
β”‚ β”‚ β”‚                         "**/node_modules",
β”‚ β”‚ β”‚                     },
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     organize_imports: Some(
β”‚ β”‚ β”‚         OrganizeImports {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     linter: Some(
β”‚ β”‚ β”‚         LinterConfiguration {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             rules: Some(
β”‚ β”‚ β”‚                 Rules {
β”‚ β”‚ β”‚                     recommended: Some(
β”‚ β”‚ β”‚                         true,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     all: None,
β”‚ β”‚ β”‚                     a11y: None,
β”‚ β”‚ β”‚                     complexity: None,
β”‚ β”‚ β”‚                     correctness: None,
β”‚ β”‚ β”‚                     nursery: None,
β”‚ β”‚ β”‚                     performance: None,
β”‚ β”‚ β”‚                     security: None,
β”‚ β”‚ β”‚                     style: None,
β”‚ β”‚ β”‚                     suspicious: Some(
β”‚ β”‚ β”‚                         Suspicious {
β”‚ β”‚ β”‚                             recommended: None,
β”‚ β”‚ β”‚                             all: None,
β”‚ β”‚ β”‚                             no_array_index_key: None,
β”‚ β”‚ β”‚                             no_assign_in_expressions: None,
β”‚ β”‚ β”‚                             no_async_promise_executor: None,
β”‚ β”‚ β”‚                             no_catch_assign: None,
β”‚ β”‚ β”‚                             no_class_assign: None,
β”‚ β”‚ β”‚                             no_comment_text: None,
β”‚ β”‚ β”‚                             no_compare_neg_zero: None,
β”‚ β”‚ β”‚                             no_confusing_labels: None,
β”‚ β”‚ β”‚                             no_console_log: Some(
β”‚ β”‚ β”‚                                 Plain(
β”‚ β”‚ β”‚                                     Error,
β”‚ β”‚ β”‚                                 ),
β”‚ β”‚ β”‚                             ),
β”‚ β”‚ β”‚                             no_const_enum: None,
β”‚ β”‚ β”‚                             no_control_characters_in_regex: None,
β”‚ β”‚ β”‚                             no_debugger: None,
β”‚ β”‚ β”‚                             no_double_equals: None,
β”‚ β”‚ β”‚                             no_duplicate_case: None,
β”‚ β”‚ β”‚                             no_duplicate_class_members: None,
β”‚ β”‚ β”‚                             no_duplicate_jsx_props: None,
β”‚ β”‚ β”‚                             no_duplicate_object_keys: None,
β”‚ β”‚ β”‚                             no_duplicate_parameters: None,
β”‚ β”‚ β”‚                             no_empty_interface: None,
β”‚ β”‚ β”‚                             no_explicit_any: Some(
β”‚ β”‚ β”‚                                 Plain(
β”‚ β”‚ β”‚                                     Error,
β”‚ β”‚ β”‚                                 ),
β”‚ β”‚ β”‚                             ),
β”‚ β”‚ β”‚                             no_extra_non_null_assertion: None,
β”‚ β”‚ β”‚                             no_function_assign: None,
β”‚ β”‚ β”‚                             no_import_assign: None,
β”‚ β”‚ β”‚                             no_label_var: None,
β”‚ β”‚ β”‚                             no_prototype_builtins: None,
β”‚ β”‚ β”‚                             no_redeclare: None,
β”‚ β”‚ β”‚                             no_redundant_use_strict: None,
β”‚ β”‚ β”‚                             no_self_compare: None,
β”‚ β”‚ β”‚                             no_shadow_restricted_names: None,
β”‚ β”‚ β”‚                             no_sparse_array: None,
β”‚ β”‚ β”‚                             no_unsafe_declaration_merging: None,
β”‚ β”‚ β”‚                             no_unsafe_negation: None,
β”‚ β”‚ β”‚                             use_default_switch_clause_last: None,
β”‚ β”‚ β”‚                             use_getter_return: None,
β”‚ β”‚ β”‚                             use_namespace_keyword: None,
β”‚ β”‚ β”‚                             use_valid_typeof: None,
β”‚ β”‚ β”‚                         },
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                 },
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: Some(
β”‚ β”‚ β”‚                 StringSet(
β”‚ β”‚ β”‚                     {
β”‚ β”‚ β”‚                         "**/dist/**",
β”‚ β”‚ β”‚                         "**/node_modules",
β”‚ β”‚ β”‚                     },
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     javascript: Some(
β”‚ β”‚ β”‚         JavascriptConfiguration {
β”‚ β”‚ β”‚             formatter: Some(
β”‚ β”‚ β”‚                 JavascriptFormatter {
β”‚ β”‚ β”‚                     quote_style: Some(
β”‚ β”‚ β”‚                         Single,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     jsx_quote_style: None,
β”‚ β”‚ β”‚                     quote_properties: Some(
β”‚ β”‚ β”‚                         AsNeeded,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     trailing_comma: Some(
β”‚ β”‚ β”‚                         Es5,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     semicolons: Some(
β”‚ β”‚ β”‚                         AsNeeded,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     arrow_parentheses: None,
β”‚ β”‚ β”‚                     enabled: None,
β”‚ β”‚ β”‚                     indent_style: None,
β”‚ β”‚ β”‚                     indent_size: None,
β”‚ β”‚ β”‚                     line_width: None,
β”‚ β”‚ β”‚                 },
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             parser: None,
β”‚ β”‚ β”‚             globals: None,
β”‚ β”‚ β”‚             organize_imports: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     json: None,
β”‚ β”‚ β”‚     extends: None,
β”‚ β”‚ β”‚ }
β”‚ β”‚ β”œβ”€β”biome_service::workspace::server::update_settings{params=UpdateSettingsParams { configuration: Configuration { schema: Some("./node_modules/@biomejs/biome/configuration_schema.json"), vcs: None, files: None, formatter: Some(FormatterConfiguration { enabled: Some(true), format_with_errors: Some(false), indent_style: Some(Space), indent_size: Some(2), line_width: Some(LineWidth(80)), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), organize_imports: Some(OrganizeImports { enabled: Some(true), ignore: None }), linter: Some(LinterConfiguration { enabled: Some(true), rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), javascript: Some(JavascriptConfiguration { formatter: Some(JavascriptFormatter { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, enabled: None, indent_style: None, indent_size: None, line_width: None }), parser: None, globals: None, organize_imports: None }), json: None, extends: None } }}
β”‚ β”‚ β”‚ β”œβ”€β”biome_service::settings::merge_with_configuration{configuration=Configuration { schema: Some("./node_modules/@biomejs/biome/configuration_schema.json"), vcs: None, files: None, formatter: Some(FormatterConfiguration { enabled: Some(true), format_with_errors: Some(false), indent_style: Some(Space), indent_size: Some(2), line_width: Some(LineWidth(80)), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), organize_imports: Some(OrganizeImports { enabled: Some(true), ignore: None }), linter: Some(LinterConfiguration { enabled: Some(true), rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), javascript: Some(JavascriptConfiguration { formatter: Some(JavascriptFormatter { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, enabled: None, indent_style: None, indent_size: None, line_width: None }), parser: None, globals: None, organize_imports: None }), json: None, extends: None }}
β”‚ β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”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: "/d%3A/___projects/_____________shrtcss/biome-issue/package.json", query: None, fragment: None }, language_id: "json", version: 1, text: "{\n  \"name\": \"biome-issue\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"preinstall\": \"npx only-allow pnpm\",\n    \"clean\": \"pnpm --stream -r clean\",\n    \"lint\": \"pnpm --stream -r lint\",\n    \"format\": \"pnpm --stream -r format\",\n    \"build\": \"pnpm --stream -r build\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"^1.2.2\",\n    \"@types/node\": \"^20.7.1\",\n    \"typescript\": \"^5.2.2\"\n  }\n}\n" } }}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/package.json}
β”‚ β”‚ β”œβ”€β”biome_json_parser::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”‚ β”‚ β”œβ”€3ms INFO biome_lsp::session Loaded client configuration: Object {
β”‚ β”‚ β”‚     "lspBin": Null,
β”‚ β”‚ β”‚     "rename": Null,
β”‚ β”‚ β”‚     "requireConfiguration": Bool(true),
β”‚ β”‚ β”‚ }
β”‚ β”œβ”€β”˜
β”‚ β”œβ”€7ms INFO biome_lsp::session Unregister capabilities "textDocument/rename, textDocument/rangeFormatting, workspace/didChangeConfiguration, textDocument/onTypeFormatting, workspace/didChangeWatchedFiles, textDocument/formatting"
β”‚ β”œβ”€10ms INFO biome_lsp::session Register capabilities "textDocument/rangeFormatting, workspace/didChangeConfiguration, textDocument/onTypeFormatting, workspace/didChangeWatchedFiles, textDocument/formatting"
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/package.json}
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::text_document::did_close{params=DidCloseTextDocumentParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/d%3A/___projects/_____________shrtcss/biome-issue/package.json", query: None, fragment: None } } }}
β”œβ”€β”˜
β”œβ”€β”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: "/d%3A/___projects/_____________shrtcss/biome-issue/package.json", query: None, fragment: None }, language_id: "json", version: 1, text: "{\n  \"name\": \"biome-issue\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"preinstall\": \"npx only-allow pnpm\",\n    \"clean\": \"pnpm --stream -r clean\",\n    \"lint\": \"pnpm --stream -r lint\",\n    \"format\": \"pnpm --stream -r format\",\n    \"build\": \"pnpm --stream -r build\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"^1.2.2\",\n    \"@types/node\": \"^20.7.1\",\n    \"typescript\": \"^5.2.2\"\n  }\n}\n" } }}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/package.json}
β”‚ β”‚ β”œβ”€β”biome_json_parser::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::analysis::code_actions{uri=file:///d%3A/___projects/_____________shrtcss/biome-issue/package.json, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]}
β”‚ β”œβ”€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_close{params=DidCloseTextDocumentParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/d%3A/___projects/_____________shrtcss/biome-issue/package.json", query: None, fragment: None } } }}
β”œβ”€β”˜
β”œβ”€171282ms INFO tower_lsp::service::layers shutdown request received, shutting down
β”œβ”€171283ms INFO tower_lsp::service::layers exit notification received, stopping
INFO biome_cli::commands::daemon Received shutdown signal
β”˜
┐biome_cli::commands::daemon::Running Server{pid=28744}
β”œβ”€β”biome_lsp::server::initialize{root_uri=file:///d%3A/___projects/_____________shrtcss/biome-issue, 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"]) }) }), 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(false) }), 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.82.2") }, root_path="d:\\___projects\\_____________shrtcss\\biome-issue", workspace_folders=[WorkspaceFolder { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/d%3A/___projects/_____________shrtcss/biome-issue", query: None, fragment: None }, name: "biome-issue" }]}
β”‚ β”œβ”€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="d:\\___projects\\_____________shrtcss\\biome-issue\\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 settings: Configuration {
β”‚ β”‚ β”‚     schema: Some(
β”‚ β”‚ β”‚         "./node_modules/@biomejs/biome/configuration_schema.json",
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     vcs: None,
β”‚ β”‚ β”‚     files: None,
β”‚ β”‚ β”‚     formatter: Some(
β”‚ β”‚ β”‚         FormatterConfiguration {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             format_with_errors: Some(
β”‚ β”‚ β”‚                 false,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             indent_style: Some(
β”‚ β”‚ β”‚                 Space,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             indent_size: Some(
β”‚ β”‚ β”‚                 2,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             line_width: Some(
β”‚ β”‚ β”‚                 LineWidth(
β”‚ β”‚ β”‚                     80,
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: Some(
β”‚ β”‚ β”‚                 StringSet(
β”‚ β”‚ β”‚                     {
β”‚ β”‚ β”‚                         "**/dist/**",
β”‚ β”‚ β”‚                         "**/node_modules",
β”‚ β”‚ β”‚                     },
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     organize_imports: Some(
β”‚ β”‚ β”‚         OrganizeImports {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     linter: Some(
β”‚ β”‚ β”‚         LinterConfiguration {
β”‚ β”‚ β”‚             enabled: Some(
β”‚ β”‚ β”‚                 true,
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             rules: Some(
β”‚ β”‚ β”‚                 Rules {
β”‚ β”‚ β”‚                     recommended: Some(
β”‚ β”‚ β”‚                         true,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     all: None,
β”‚ β”‚ β”‚                     a11y: None,
β”‚ β”‚ β”‚                     complexity: None,
β”‚ β”‚ β”‚                     correctness: None,
β”‚ β”‚ β”‚                     nursery: None,
β”‚ β”‚ β”‚                     performance: None,
β”‚ β”‚ β”‚                     security: None,
β”‚ β”‚ β”‚                     style: None,
β”‚ β”‚ β”‚                     suspicious: Some(
β”‚ β”‚ β”‚                         Suspicious {
β”‚ β”‚ β”‚                             recommended: None,
β”‚ β”‚ β”‚                             all: None,
β”‚ β”‚ β”‚                             no_array_index_key: None,
β”‚ β”‚ β”‚                             no_assign_in_expressions: None,
β”‚ β”‚ β”‚                             no_async_promise_executor: None,
β”‚ β”‚ β”‚                             no_catch_assign: None,
β”‚ β”‚ β”‚                             no_class_assign: None,
β”‚ β”‚ β”‚                             no_comment_text: None,
β”‚ β”‚ β”‚                             no_compare_neg_zero: None,
β”‚ β”‚ β”‚                             no_confusing_labels: None,
β”‚ β”‚ β”‚                             no_console_log: Some(
β”‚ β”‚ β”‚                                 Plain(
β”‚ β”‚ β”‚                                     Error,
β”‚ β”‚ β”‚                                 ),
β”‚ β”‚ β”‚                             ),
β”‚ β”‚ β”‚                             no_const_enum: None,
β”‚ β”‚ β”‚                             no_control_characters_in_regex: None,
β”‚ β”‚ β”‚                             no_debugger: None,
β”‚ β”‚ β”‚                             no_double_equals: None,
β”‚ β”‚ β”‚                             no_duplicate_case: None,
β”‚ β”‚ β”‚                             no_duplicate_class_members: None,
β”‚ β”‚ β”‚                             no_duplicate_jsx_props: None,
β”‚ β”‚ β”‚                             no_duplicate_object_keys: None,
β”‚ β”‚ β”‚                             no_duplicate_parameters: None,
β”‚ β”‚ β”‚                             no_empty_interface: None,
β”‚ β”‚ β”‚                             no_explicit_any: Some(
β”‚ β”‚ β”‚                                 Plain(
β”‚ β”‚ β”‚                                     Error,
β”‚ β”‚ β”‚                                 ),
β”‚ β”‚ β”‚                             ),
β”‚ β”‚ β”‚                             no_extra_non_null_assertion: None,
β”‚ β”‚ β”‚                             no_function_assign: None,
β”‚ β”‚ β”‚                             no_import_assign: None,
β”‚ β”‚ β”‚                             no_label_var: None,
β”‚ β”‚ β”‚                             no_prototype_builtins: None,
β”‚ β”‚ β”‚                             no_redeclare: None,
β”‚ β”‚ β”‚                             no_redundant_use_strict: None,
β”‚ β”‚ β”‚                             no_self_compare: None,
β”‚ β”‚ β”‚                             no_shadow_restricted_names: None,
β”‚ β”‚ β”‚                             no_sparse_array: None,
β”‚ β”‚ β”‚                             no_unsafe_declaration_merging: None,
β”‚ β”‚ β”‚                             no_unsafe_negation: None,
β”‚ β”‚ β”‚                             use_default_switch_clause_last: None,
β”‚ β”‚ β”‚                             use_getter_return: None,
β”‚ β”‚ β”‚                             use_namespace_keyword: None,
β”‚ β”‚ β”‚                             use_valid_typeof: None,
β”‚ β”‚ β”‚                         },
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                 },
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             ignore: Some(
β”‚ β”‚ β”‚                 StringSet(
β”‚ β”‚ β”‚                     {
β”‚ β”‚ β”‚                         "**/dist/**",
β”‚ β”‚ β”‚                         "**/node_modules",
β”‚ β”‚ β”‚                     },
β”‚ β”‚ β”‚                 ),
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     javascript: Some(
β”‚ β”‚ β”‚         JavascriptConfiguration {
β”‚ β”‚ β”‚             formatter: Some(
β”‚ β”‚ β”‚                 JavascriptFormatter {
β”‚ β”‚ β”‚                     quote_style: Some(
β”‚ β”‚ β”‚                         Single,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     jsx_quote_style: None,
β”‚ β”‚ β”‚                     quote_properties: Some(
β”‚ β”‚ β”‚                         AsNeeded,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     trailing_comma: Some(
β”‚ β”‚ β”‚                         Es5,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     semicolons: Some(
β”‚ β”‚ β”‚                         AsNeeded,
β”‚ β”‚ β”‚                     ),
β”‚ β”‚ β”‚                     arrow_parentheses: None,
β”‚ β”‚ β”‚                     enabled: None,
β”‚ β”‚ β”‚                     indent_style: None,
β”‚ β”‚ β”‚                     indent_size: None,
β”‚ β”‚ β”‚                     line_width: None,
β”‚ β”‚ β”‚                 },
β”‚ β”‚ β”‚             ),
β”‚ β”‚ β”‚             parser: None,
β”‚ β”‚ β”‚             globals: None,
β”‚ β”‚ β”‚             organize_imports: None,
β”‚ β”‚ β”‚         },
β”‚ β”‚ β”‚     ),
β”‚ β”‚ β”‚     json: None,
β”‚ β”‚ β”‚     extends: None,
β”‚ β”‚ β”‚ }
β”‚ β”‚ β”œβ”€β”biome_service::workspace::server::update_settings{params=UpdateSettingsParams { configuration: Configuration { schema: Some("./node_modules/@biomejs/biome/configuration_schema.json"), vcs: None, files: None, formatter: Some(FormatterConfiguration { enabled: Some(true), format_with_errors: Some(false), indent_style: Some(Space), indent_size: Some(2), line_width: Some(LineWidth(80)), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), organize_imports: Some(OrganizeImports { enabled: Some(true), ignore: None }), linter: Some(LinterConfiguration { enabled: Some(true), rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), javascript: Some(JavascriptConfiguration { formatter: Some(JavascriptFormatter { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, enabled: None, indent_style: None, indent_size: None, line_width: None }), parser: None, globals: None, organize_imports: None }), json: None, extends: None } }}
β”‚ β”‚ β”‚ β”œβ”€β”biome_service::settings::merge_with_configuration{configuration=Configuration { schema: Some("./node_modules/@biomejs/biome/configuration_schema.json"), vcs: None, files: None, formatter: Some(FormatterConfiguration { enabled: Some(true), format_with_errors: Some(false), indent_style: Some(Space), indent_size: Some(2), line_width: Some(LineWidth(80)), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), organize_imports: Some(OrganizeImports { enabled: Some(true), ignore: None }), linter: Some(LinterConfiguration { enabled: Some(true), rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignore: Some(StringSet({"**/dist/**", "**/node_modules"})) }), javascript: Some(JavascriptConfiguration { formatter: Some(JavascriptFormatter { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, enabled: None, indent_style: None, indent_size: None, line_width: None }), parser: None, globals: None, organize_imports: None }), json: None, extends: None }}
β”‚ β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”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: "/d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json", query: None, fragment: None }, language_id: "json", version: 1, text: "{\n  \"$schema\": \"https://biomejs.dev/schemas/1.2.2/schema.json\",\n  \"extends\": [\"../../biome.json\"],\n  \"linter\": {\n    \"enabled\": true,\n    \"rules\": {\n      \"suspicious\": {\n        \"noConsoleLog\": \"off\",\n        \"noExplicitAny\": \"off\"\n      }\n    }\n  }\n}\n" } }}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json}
β”‚ β”‚ β”œβ”€β”biome_json_parser::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”‚ β”‚ β”œβ”€1ms INFO biome_lsp::session Loaded client configuration: Object {
β”‚ β”‚ β”‚     "lspBin": Null,
β”‚ β”‚ β”‚     "rename": Null,
β”‚ β”‚ β”‚     "requireConfiguration": Bool(true),
β”‚ β”‚ β”‚ }
β”‚ β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::analysis::code_actions{uri=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json, range=Range { start: Position { line: 4, character: 0 }, end: Position { line: 4, character: 20 } }, only=None, diagnostics=[]}
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] }
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::analysis Suggested actions: 
β”‚ β”‚ []
β”œβ”€β”˜
β”‚ β”œβ”€2ms INFO biome_lsp::session Unregister capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles, textDocument/rangeFormatting, textDocument/formatting, textDocument/rename, textDocument/onTypeFormatting"
β”‚ β”œβ”€4ms INFO biome_lsp::session Register capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles, textDocument/rangeFormatting, textDocument/formatting, textDocument/onTypeFormatting"
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json}
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::text_document::did_change{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json, version=2}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json}
β”‚ β”‚ β”œβ”€β”biome_json_parser::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::text_document::did_change{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json, version=3}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json}
β”‚ β”‚ β”œβ”€β”biome_json_parser::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€β”biome_service::file_handlers::json::lint{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::analysis::code_actions{uri=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json, range=Range { start: Position { line: 3, character: 13 }, end: Position { line: 3, character: 13 } }, only=None, diagnostics=[]}
β”‚ β”œβ”€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:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 12, character: 0 } }, only=Some([CodeActionKind("source.organizeImports.biome")]), diagnostics=[]}
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [] }
β”‚ β”œβ”€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: "/d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/biome.json", query: None, fragment: None } }, options: FormattingOptions { tab_size: 2, insert_spaces: true, properties: {}, trim_trailing_whitespace: None, insert_final_newline: Some(true), trim_final_newlines: None }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None } }}
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::formatting Formatting...
β”‚ β”œβ”€β”biome_service::file_handlers::json::format{rome_path=RomePath { path: "packages\\module-b\\biome.json" }, settings=SettingsHandle { inner: WorkspaceSettings { formatter: FormatSettings { enabled: true, format_with_errors: false, indent_style: Some(Space), indent_size: Some(IndentWidth(2)), line_width: Some(LineWidth(80)), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, linter: LinterSettings { enabled: true, rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, languages: LanguagesSettings { javascript: LanguageSettings { formatter: JsFormatterSettings { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: JsLinterSettings { globals: [] }, globals: None, organize_imports: JsOrganizeImportsSettings, parser: JsParserSettings { parse_class_parameter_decorators: false } }, json: LanguageSettings { formatter: JsonFormatterSettings { line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: (), globals: None, organize_imports: (), parser: JsonParserSettings { allow_comments: false } } }, files: FilesSettings { max_size: 1048576, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } }, ignore_unknown: false }, organize_imports: OrganizeImportsSettings { enabled: true, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } } } } }}
β”‚ β”‚ β”œβ”€0ms DEBUG biome_service::file_handlers::json Format with the following options: 
β”‚ β”‚ β”‚ Indent style: Space
β”‚ β”‚ β”‚ Indent width: 2
β”‚ β”‚ β”‚ Line width: 80
β”‚ β”‚ β”‚ 
β”‚ β”‚ β”œβ”€β”biome_formatter::printer::Printer::print{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€2407ms WARN tower_lsp Got a textDocument/didSave notification, but it is not implemented
β”œβ”€β”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: "/d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/src/index.ts", query: None, fragment: None }, language_id: "typescript", version: 1, text: "export function moduleA(name: any) {\n  console.log(`Hello from module-b ${name}`)\n}\n" } }}
β”‚ β”œβ”€β”biome_lsp::session::update_diagnostics{url=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/src/index.ts}
β”‚ β”‚ β”œβ”€β”biome_js_parser::parse::parse{}
β”‚ β”‚ β”œβ”€β”˜
β”‚ β”‚ β”œβ”€0ms DEBUG biome_rowan::ast::batch pushing change...
β”‚ β”‚ β”œβ”€1ms DEBUG biome_rowan::ast::batch pushing change...
β”‚ β”œβ”€β”˜
β”œβ”€β”˜
β”œβ”€β”biome_lsp::handlers::analysis::code_actions{uri=file:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/src/index.ts, range=Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, only=None, diagnostics=[]}
β”‚ β”œβ”€β”biome_service::file_handlers::javascript::code_actions{range=0..0, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), settings=SettingsHandle { inner: WorkspaceSettings { formatter: FormatSettings { enabled: true, format_with_errors: false, indent_style: Some(Space), indent_size: Some(IndentWidth(2)), line_width: Some(LineWidth(80)), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, linter: LinterSettings { enabled: true, rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\src\\index.ts": false, "packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, languages: LanguagesSettings { javascript: LanguageSettings { formatter: JsFormatterSettings { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: JsLinterSettings { globals: [] }, globals: None, organize_imports: JsOrganizeImportsSettings, parser: JsParserSettings { parse_class_parameter_decorators: false } }, json: LanguageSettings { formatter: JsonFormatterSettings { line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: (), globals: None, organize_imports: (), parser: JsonParserSettings { allow_comments: false } } }, files: FilesSettings { max_size: 1048576, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false, "packages\\module-b\\src\\index.ts": false}, poisoned: false, .. } }, ignore_unknown: false }, organize_imports: OrganizeImportsSettings { enabled: true, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false, "packages\\module-b\\src\\index.ts": false}, poisoned: false, .. } } } } }, path=RomePath { path: "packages\\module-b\\src\\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:///d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/src/index.ts, range=Range { start: Position { line: 0, character: 30 }, end: Position { line: 0, character: 33 } }, only=Some([CodeActionKind("quickfix")]), diagnostics=[Diagnostic { range: Range { start: Position { line: 0, character: 30 }, end: Position { line: 0, character: 33 } }, severity: Some(Error), code: Some(String("lint/suspicious/noExplicitAny")), 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-explicit-any", query: None, fragment: None } }), source: Some("biome"), message: "Unexpected any. Specify a different type.", related_information: None, tags: None, data: None }]}
β”‚ β”œβ”€β”biome_service::file_handlers::javascript::code_actions{range=30..33, rules=Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), settings=SettingsHandle { inner: WorkspaceSettings { formatter: FormatSettings { enabled: true, format_with_errors: false, indent_style: Some(Space), indent_size: Some(IndentWidth(2)), line_width: Some(LineWidth(80)), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, linter: LinterSettings { enabled: true, rules: Some(Rules { recommended: Some(true), all: None, a11y: None, complexity: None, correctness: None, nursery: None, performance: None, security: None, style: None, suspicious: Some(Suspicious { recommended: None, all: None, no_array_index_key: None, no_assign_in_expressions: None, no_async_promise_executor: None, no_catch_assign: None, no_class_assign: None, no_comment_text: None, no_compare_neg_zero: None, no_confusing_labels: None, no_console_log: Some(Plain(Error)), no_const_enum: None, no_control_characters_in_regex: None, no_debugger: None, no_double_equals: None, no_duplicate_case: None, no_duplicate_class_members: None, no_duplicate_jsx_props: None, no_duplicate_object_keys: None, no_duplicate_parameters: None, no_empty_interface: None, no_explicit_any: Some(Plain(Error)), no_extra_non_null_assertion: None, no_function_assign: None, no_import_assign: None, no_label_var: None, no_prototype_builtins: None, no_redeclare: None, no_redundant_use_strict: None, no_self_compare: None, no_shadow_restricted_names: None, no_sparse_array: None, no_unsafe_declaration_merging: None, no_unsafe_negation: None, use_default_switch_clause_last: None, use_getter_return: None, use_namespace_keyword: None, use_valid_typeof: None }) }), ignored_files: Matcher { patterns: [Pattern { original: "**/dist/**", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('d'), Char('i'), Char('s'), Char('t'), Char('/'), AnyRecursiveSequence], is_recursive: true }, Pattern { original: "**/node_modules", tokens: [AnyRecursiveSequence, AnyRecursiveSequence, Char('n'), Char('o'), Char('d'), Char('e'), Char('_'), Char('m'), Char('o'), Char('d'), Char('u'), Char('l'), Char('e'), Char('s')], is_recursive: true }], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\src\\index.ts": false, "packages\\module-b\\biome.json": false}, poisoned: false, .. } } }, languages: LanguagesSettings { javascript: LanguageSettings { formatter: JsFormatterSettings { quote_style: Some(Single), jsx_quote_style: None, quote_properties: Some(AsNeeded), trailing_comma: Some(Es5), semicolons: Some(AsNeeded), arrow_parentheses: None, line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: JsLinterSettings { globals: [] }, globals: None, organize_imports: JsOrganizeImportsSettings, parser: JsParserSettings { parse_class_parameter_decorators: false } }, json: LanguageSettings { formatter: JsonFormatterSettings { line_width: None, indent_width: None, indent_style: None, enabled: None }, linter: (), globals: None, organize_imports: (), parser: JsonParserSettings { allow_comments: false } } }, files: FilesSettings { max_size: 1048576, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false, "packages\\module-b\\src\\index.ts": false}, poisoned: false, .. } }, ignore_unknown: false }, organize_imports: OrganizeImportsSettings { enabled: true, ignored_files: Matcher { patterns: [], options: MatchOptions { case_sensitive: true, require_literal_separator: false, require_literal_leading_dot: false }, already_ignored: RwLock { data: {"packages\\module-b\\biome.json": false, "packages\\module-b\\src\\index.ts": false}, poisoned: false, .. } } } } }, path=RomePath { path: "packages\\module-b\\src\\index.ts" }}
β”‚ β”‚ β”œβ”€0ms DEBUG biome_rowan::ast::batch pushing change...
β”‚ β”‚ β”œβ”€0ms DEBUG biome_rowan::ast::batch  changes [CommitChange { parent_depth: 3, parent: Some([email protected]), parent_range: Some((0, 83)), new_node_slot: 1, new_node: Some(Token([email protected] "export" [Comments("// biome-ignore lint/ ..."), Newline("\n")] [Whitespace(" "), Whitespace(" ")])) }]
β”‚ β”œβ”€β”˜
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::analysis Pull actions result: PullActionsResult { actions: [CodeAction { category: Other("quickfix.suppressRule"), rule_name: Some(("suspicious", "noExplicitAny")), suggestion: CodeSuggestion { span: 0..7, applicability: Always, msg: "Suppress rule lint/suspicious/noExplicitAny", suggestion: TextEdit { dictionary: "// biome-ignore lint/suspicious/noExplicitAny: <explanation>\nexport   function moduleA(name: any) {\n  console.log(`Hello from module-b ${name}`)\n}\n", ops: [DiffOp(Insert { range: 0..61 }), DiffOp(Equal { range: 61..67 }), DiffOp(Delete { range: 67..68 }), DiffOp(Insert { range: 68..70 }), DiffOp(Equal { range: 70..147 })] }, labels: [] } }] }
β”‚ β”œβ”€0ms DEBUG biome_lsp::handlers::analysis Suggested actions: 
β”‚ β”‚ [CodeAction(CodeAction { title: "Suppress rule lint/suspicious/noExplicitAny", kind: Some(CodeActionKind("quickfix.suppressRule.biome.suspicious.noExplicitAny")), diagnostics: Some([Diagnostic { range: Range { start: Position { line: 0, character: 30 }, end: Position { line: 0, character: 33 } }, severity: Some(Error), code: Some(String("lint/suspicious/noExplicitAny")), 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-explicit-any", query: None, fragment: None } }), source: Some("biome"), message: "Unexpected any. Specify a different type.", 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: "/d%3A/___projects/_____________shrtcss/biome-issue/packages/module-b/src/index.ts", query: None, fragment: None }: [TextEdit { range: Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } }, new_text: "// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n" }, TextEdit { range: Range { start: Position { line: 0, character: 6 }, end: Position { line: 0, character: 7 } }, new_text: "  " }]}), document_changes: None, change_annotations: None }), command: None, is_preferred: None, disabled: None, data: None })]
β”œβ”€β”˜
β”œβ”€β”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.2.2") }}
β”‚ β”œβ”€0ms INFO biome_lsp::server Starting Biome Language Server...
β”œβ”€β”˜
β”œβ”€β”biome_lsp::server::biome/rage{params=RageParams}
β”œβ”€β”˜
β”œβ”€β”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.2.2") }}
β”‚ β”œβ”€0ms INFO biome_lsp::server Starting Biome Language Server...
β”œβ”€β”˜
β”œβ”€β”biome_lsp::server::biome/rage{params=RageParams}
β”œβ”€β”˜

@Rainson12
Copy link

this is a deal breaker, we are experiencing the same issue, forcing same rules between frontend and backend folder

@ematipico ematipico added A-Project Area: project S-Bug-confirmed Status: report has been confirmed as a valid bug labels Oct 12, 2023
@ematipico
Copy link
Member

Thank you @jrson83

I see now what you mean. I believe I made some wrong assumptions on how extends works. It should be an easy fix, that will be shipped in the next minor.

@Naoto-Ida
Copy link
Contributor Author

Thanks @ematipico for this fix, as well as @jrson83 for the better example than mine :)

Now we can format/lint all our projects consistently once its released πŸŽ‰

@ematipico
Copy link
Member

Tomorrow/Sunday I'll make a nightly release so you can try it

@Naoto-Ida
Copy link
Contributor Author

Just came back to report that this now seems to work the way that I expect extends to be as well. Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Project Area: project S-Bug-confirmed Status: report has been confirmed as a valid bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants