diff options
author | Leo Kettmeir <crowlkats@toaxl.com> | 2023-12-30 01:04:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-30 00:04:50 +0000 |
commit | 4de9ddcf210e68ef81fcb00261a2c928b1650740 (patch) | |
tree | 76b1abcdab9d80865fba80e939d6affd81acf1fe /cli | |
parent | 4740929950b7043da51a0b717c9e6e1116791f02 (diff) |
chore: update deno_doc to 0.85.0 (#21678)
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 2 | ||||
-rw-r--r-- | cli/tools/doc.rs | 83 |
2 files changed, 77 insertions, 8 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 30e1fcbcc..47b13a74e 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -60,7 +60,7 @@ deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "dep_gra deno_cache_dir = "=0.6.1" deno_config = "=0.6.5" deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } -deno_doc = { version = "=0.75.1", features = ["html"] } +deno_doc = { version = "=0.85.0", features = ["html"] } deno_emit = "=0.32.0" deno_graph = "=0.62.2" deno_lint = { version = "=0.52.2", features = ["docs"] } diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index be3f029ec..0eb83c372 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -153,8 +153,26 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { } }; - if let Some(html_options) = doc_flags.html { - generate_docs_directory(&doc_nodes_by_url, html_options) + if let Some(html_options) = &doc_flags.html { + let deno_ns = if doc_flags.source_files != DocSourceFileFlag::Builtin { + let deno_ns = generate_doc_nodes_for_builtin_types( + doc_flags.clone(), + cli_options, + capturing_parser, + &analyzer, + ) + .await?; + let (_, deno_ns) = deno_ns.first().unwrap(); + + let deno_ns_symbols = + deno_doc::html::compute_namespaced_symbols(deno_ns, &[]); + + Some(deno_ns_symbols) + } else { + None + }; + + generate_docs_directory(&doc_nodes_by_url, html_options, deno_ns) .boxed_local() .await } else { @@ -178,19 +196,70 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { } } +struct DocResolver {} + +impl deno_doc::html::HrefResolver for DocResolver { + fn resolve_global_symbol(&self, symbol: &[String], _context: &str) -> String { + format!( + "https://deno.land/api@{}?s={}", + env!("CARGO_PKG_VERSION"), + symbol.join(".") + ) + } + + fn resolve_import_href( + &self, + symbol: &[String], + src: &str, + ) -> Option<String> { + let mut url = ModuleSpecifier::parse(src).ok()?; + + if url.domain() == Some("deno.land") { + url.set_query(Some(&format!("s={}", symbol.join(".")))); + return Some(url.to_string()); + } + + None + } + + fn resolve_usage( + &self, + _current_specifier: &ModuleSpecifier, + current_file: &str, + ) -> String { + current_file.to_string() + } + + fn resolve_source(&self, location: &deno_doc::Location) -> String { + location.filename.clone() + } +} + async fn generate_docs_directory( doc_nodes_by_url: &IndexMap<ModuleSpecifier, Vec<doc::DocNode>>, - html_options: DocHtmlFlag, + html_options: &DocHtmlFlag, + deno_ns: Option<std::collections::HashSet<Vec<String>>>, ) -> Result<(), AnyError> { let cwd = std::env::current_dir().context("Failed to get CWD")?; let output_dir_resolved = cwd.join(&html_options.output); let options = deno_doc::html::GenerateOptions { - package_name: Some(html_options.name), + package_name: Some(html_options.name.to_owned()), main_entrypoint: None, - global_symbols: Default::default(), - global_symbol_href_resolver: Rc::new(|_, _| String::new()), - url_resolver: Rc::new(deno_doc::html::default_url_resolver), + global_symbols: deno_doc::html::NamespacedGlobalSymbols::new( + deno_ns + .map(|deno_ns| { + deno_ns + .into_iter() + .map(|symbol| (symbol, "deno".to_string())) + .collect() + }) + .unwrap_or_default(), + ), + rewrite_map: None, + hide_module_doc_title: false, + href_resolver: Rc::new(DocResolver {}), + sidebar_flatten_namespaces: false, }; let files = deno_doc::html::generate(options, doc_nodes_by_url) |