Skip to content

Commit 32c1050

Browse files
committed
move jsdoc comment into separate crate
1 parent 067ebd0 commit 32c1050

File tree

17 files changed

+92
-49
lines changed

17 files changed

+92
-49
lines changed

.changeset/honest-bikes-smell.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
"@biomejs/biome": minor
33
---
44

5-
Add [useSingleJsDocAsterisk](https://biomejs.dev/linter/rules/use-single-js-doc-asterisk/)
5+
Add [useSingleJsDocAsterisk](https://biomejs.dev/linter/rules/use-single-js-doc-asterisk/) which enforces JSDoc comment lines to start with a single asterisk.

Cargo.lock

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ biome_js_semantic = { version = "0.5.7", path = "./crates/biome_js_se
140140
biome_js_syntax = { version = "0.5.7", path = "./crates/biome_js_syntax" }
141141
biome_js_type_info = { version = "0.0.1", path = "./crates/biome_js_type_info" }
142142
biome_js_type_info_macros = { version = "0.0.1", path = "./crates/biome_js_type_info_macros" }
143+
biome_jsdoc_comment = { version = "0.0.1", path = "./crates/biome_jsdoc_comment" }
143144
biome_json_analyze = { version = "0.5.7", path = "./crates/biome_json_analyze" }
144145
biome_json_factory = { version = "0.5.7", path = "./crates/biome_json_factory" }
145146
biome_json_formatter = { version = "0.5.7", path = "./crates/biome_json_formatter" }

crates/biome_js_analyze/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ biome_js_factory = { workspace = true }
2424
biome_js_semantic = { workspace = true }
2525
biome_js_syntax = { workspace = true }
2626
biome_js_type_info = { workspace = true }
27+
biome_jsdoc_comment = { workspace = true }
2728
biome_module_graph = { workspace = true }
2829
biome_package = { workspace = true }
2930
biome_project_layout = { workspace = true }

crates/biome_js_analyze/src/lint/nursery/use_single_js_doc_asterisk.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use biome_analyze::{
33
};
44
use biome_console::markup;
55
use biome_js_syntax::{JsModule, JsSyntaxToken};
6-
use biome_module_graph::JsdocComment;
6+
use biome_jsdoc_comment::JsdocComment;
77
use biome_rowan::{
88
AstNode, BatchMutationExt, Direction, TextLen, TextRange, TextSize, TriviaPiece,
99
};
@@ -286,12 +286,9 @@ fn get_invalid_jsdoc_last_line(text: &str) -> Option<InvalidJsDocLineIndexes> {
286286
continue;
287287
}
288288

289-
if char_is_whitespace(b) {
290-
continue;
289+
if !char_is_whitespace(b) {
290+
break;
291291
}
292-
293-
// Found non-whitespace character
294-
break;
295292
}
296293

297294
Some(InvalidJsDocLineIndexes {

crates/biome_jsdoc_comment/Cargo.toml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[package]
2+
authors.workspace = true
3+
categories.workspace = true
4+
description = "JSDoc comment handling helpers"
5+
edition.workspace = true
6+
homepage.workspace = true
7+
keywords.workspace = true
8+
license.workspace = true
9+
name = "biome_jsdoc_comment"
10+
repository.workspace = true
11+
version = "0.0.1"
12+
13+
[lints]
14+
workspace = true
15+
16+
[dependencies]
17+
biome_formatter = { workspace = true }
18+
biome_js_syntax = { workspace = true }
19+
biome_js_type_info = { workspace = true }
20+
biome_rowan = { workspace = true }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use crate::JsdocComment;
2+
use biome_formatter::prelude::*;
3+
use biome_formatter::{format_args, write};
4+
use biome_js_type_info::FormatTypeContext;
5+
use biome_rowan::TextSize;
6+
use std::ops::Deref;
7+
8+
impl Format<FormatTypeContext> for JsdocComment {
9+
fn fmt(
10+
&self,
11+
f: &mut biome_formatter::formatter::Formatter<FormatTypeContext>,
12+
) -> FormatResult<()> {
13+
let comment = self.deref();
14+
15+
let comment = format_with(|f| {
16+
let mut joiner = f.join_with(hard_line_break());
17+
comment.lines().for_each(|line| {
18+
joiner.entry(&format_args![dynamic_text(
19+
line.trim(),
20+
TextSize::default()
21+
),]);
22+
});
23+
joiner.finish()
24+
});
25+
26+
write!(
27+
f,
28+
[&format_args![
29+
text("JsDoc"),
30+
text("("),
31+
block_indent(&comment),
32+
text(")")
33+
]]
34+
)
35+
}
36+
}

crates/biome_jsdoc_comment/src/lib.rs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#![deny(clippy::use_self)]
2+
3+
mod format_jsdoc_comment;
4+
mod jsdoc_comment;
5+
6+
pub use jsdoc_comment::JsdocComment;

crates/biome_module_graph/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ biome_fs = { workspace = true }
1919
biome_js_semantic = { workspace = true }
2020
biome_js_syntax = { workspace = true }
2121
biome_js_type_info = { workspace = true }
22+
biome_jsdoc_comment = { workspace = true }
2223
biome_package = { workspace = true }
2324
biome_project_layout = { workspace = true }
2425
biome_rowan = { workspace = true }

crates/biome_module_graph/src/format_module_graph.rs

+1-31
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::js_module_info::{Exports, Imports};
2-
use crate::{JsExport, JsImport, JsModuleInfo, JsOwnExport, JsReexport, JsdocComment};
2+
use crate::{JsExport, JsImport, JsModuleInfo, JsOwnExport, JsReexport};
33
use biome_formatter::prelude::*;
44
use biome_formatter::{format_args, write};
55
use biome_js_type_info::FormatTypeContext;
@@ -315,36 +315,6 @@ impl Format<FormatTypeContext> for JsOwnExport {
315315
}
316316
}
317317

318-
impl Format<FormatTypeContext> for JsdocComment {
319-
fn fmt(
320-
&self,
321-
f: &mut biome_formatter::formatter::Formatter<FormatTypeContext>,
322-
) -> FormatResult<()> {
323-
let comment = self.deref();
324-
325-
let comment = format_with(|f| {
326-
let mut joiner = f.join_with(hard_line_break());
327-
comment.lines().for_each(|line| {
328-
joiner.entry(&format_args![dynamic_text(
329-
line.trim(),
330-
TextSize::default()
331-
),]);
332-
});
333-
joiner.finish()
334-
});
335-
336-
write!(
337-
f,
338-
[&format_args![
339-
text("JsDoc"),
340-
text("("),
341-
block_indent(&comment),
342-
text(")")
343-
]]
344-
)
345-
}
346-
}
347-
348318
impl Format<FormatTypeContext> for JsImport {
349319
fn fmt(
350320
&self,

crates/biome_module_graph/src/js_module_info.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ use biome_js_type_info::{
1212
GLOBAL_RESOLVER, GLOBAL_UNKNOWN_ID, ImportSymbol, ResolvedPath, ResolvedTypeId, Type, TypeData,
1313
TypeId, TypeReference, TypeReferenceQualifier, TypeResolver, TypeResolverLevel,
1414
};
15+
use biome_jsdoc_comment::JsdocComment;
1516
use biome_rowan::{AstNode, Text, TextRange, TokenText};
1617

17-
use crate::{ModuleGraph, jsdoc_comment::JsdocComment};
18+
use crate::ModuleGraph;
1819

1920
use binding::{BindingId, JsBindingData};
2021
use scope::{JsScope, JsScopeData};

crates/biome_module_graph/src/js_module_info/binding.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ use std::sync::Arc;
33
use biome_js_semantic::ScopeId;
44
use biome_js_syntax::{AnyJsDeclaration, JsImport, JsSyntaxNode, JsVariableKind, TextRange};
55
use biome_js_type_info::{TypeId, TypeReference};
6+
use biome_jsdoc_comment::JsdocComment;
67
use biome_rowan::{AstNode, Text, TextSize};
78

8-
use crate::jsdoc_comment::JsdocComment;
9-
109
use super::{JsModuleInfoInner, scope::JsScope};
1110

1211
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]

crates/biome_module_graph/src/js_module_info/collector.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ use biome_js_type_info::{
1414
TypeId, TypeImportQualifier, TypeReference, TypeReferenceQualifier, TypeResolver,
1515
TypeResolverLevel,
1616
};
17+
use biome_jsdoc_comment::JsdocComment;
1718
use biome_rowan::{AstNode, Text, TextSize, TokenText};
1819
use rust_lapper::{Interval, Lapper};
1920
use rustc_hash::FxHashMap;
2021

21-
use crate::{
22-
js_module_info::binding::{JsBindingReference, JsBindingReferenceKind, JsDeclarationKind},
23-
jsdoc_comment::JsdocComment,
22+
use crate::js_module_info::binding::{
23+
JsBindingReference, JsBindingReferenceKind, JsDeclarationKind,
2424
};
2525

2626
use super::{

crates/biome_module_graph/src/js_module_info/visitor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ use biome_js_syntax::{
66
JsExportNamedSpecifierList, JsIdentifierBinding, JsVariableDeclaratorList, unescape_js_string,
77
};
88
use biome_js_type_info::{ImportSymbol, TypeData, TypeResolver};
9+
use biome_jsdoc_comment::JsdocComment;
910
use biome_rowan::{AstNode, TokenText, WalkEvent};
1011
use camino::{Utf8Path, Utf8PathBuf};
1112
use oxc_resolver::{ResolveError, ResolverGeneric};
1213

1314
use crate::{
14-
JsExport, JsImport, JsModuleInfo, JsOwnExport, JsReexport, jsdoc_comment::JsdocComment,
15-
resolver_cache::ResolverCache,
15+
JsExport, JsImport, JsModuleInfo, JsOwnExport, JsReexport, resolver_cache::ResolverCache,
1616
};
1717

1818
use super::{ResolvedPath, collector::JsModuleInfoCollector};

crates/biome_module_graph/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
mod format_module_graph;
44
mod js_module_info;
5-
mod jsdoc_comment;
65
mod module_graph;
76
mod resolver_cache;
87

@@ -11,5 +10,4 @@ pub use biome_js_type_info::{ImportSymbol, ResolvedPath};
1110
pub use js_module_info::{
1211
AdHocScopeResolver, JsExport, JsImport, JsModuleInfo, JsOwnExport, JsReexport,
1312
};
14-
pub use jsdoc_comment::JsdocComment;
1513
pub use module_graph::{ModuleGraph, SUPPORTED_EXTENSIONS};

crates/biome_module_graph/tests/spec_test.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ use crate::snap::ModuleGraphSnapshot;
66
use biome_deserialize::json::deserialize_from_json_str;
77
use biome_fs::{BiomePath, FileSystem, MemoryFileSystem, OsFileSystem};
88
use biome_js_type_info::{Type, TypeResolver};
9+
use biome_jsdoc_comment::JsdocComment;
910
use biome_json_parser::JsonParserOptions;
1011
use biome_json_value::JsonString;
12+
use biome_module_graph::JsExport;
1113
use biome_module_graph::{
1214
AdHocScopeResolver, ImportSymbol, JsImport, JsReexport, ModuleGraph, ResolvedPath,
1315
};
14-
use biome_module_graph::{JsExport, JsdocComment};
1516
use biome_package::{Dependencies, PackageJson, Version};
1617
use biome_project_layout::ProjectLayout;
1718
use biome_rowan::Text;

0 commit comments

Comments
 (0)