diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 2 | ||||
-rw-r--r-- | cli/args/flags.rs | 11 | ||||
-rw-r--r-- | cli/tools/doc.rs | 33 |
3 files changed, 28 insertions, 18 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 4f25e6843..ecad2c173 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -66,7 +66,7 @@ deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposa deno_cache_dir = { workspace = true } deno_config = "=0.16.1" deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } -deno_doc = { version = "=0.125.0", features = ["html"] } +deno_doc = { version = "=0.128.0", features = ["html"] } deno_emit = "=0.40.0" deno_graph = { version = "=0.73.1", features = ["tokio_executor"] } deno_lint = { version = "=0.58.3", features = ["docs"] } diff --git a/cli/args/flags.rs b/cli/args/flags.rs index 71398d355..fd64a6940 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -127,7 +127,7 @@ impl Default for DocSourceFileFlag { #[derive(Clone, Debug, Eq, PartialEq)] pub struct DocHtmlFlag { - pub name: String, + pub name: Option<String>, pub output: String, } @@ -1695,7 +1695,6 @@ Show documentation for runtime built-ins: .long("name") .help("The name that will be displayed in the docs") .action(ArgAction::Set) - .required_if_eq("html", "true") .require_equals(true) ) .arg( @@ -3690,7 +3689,7 @@ fn doc_parse(flags: &mut Flags, matches: &mut ArgMatches) { let json = matches.get_flag("json"); let filter = matches.remove_one::<String>("filter"); let html = if matches.get_flag("html") { - let name = matches.remove_one::<String>("name").unwrap(); + let name = matches.remove_one::<String>("name"); let output = matches .remove_one::<String>("output") .unwrap_or(String::from("./docs/")); @@ -8353,7 +8352,7 @@ mod tests { ); let r = flags_from_vec(svec!["deno", "doc", "--html", "path/to/module.ts"]); - assert!(r.is_err()); + assert!(r.is_ok()); let r = flags_from_vec(svec![ "deno", @@ -8370,7 +8369,7 @@ mod tests { json: false, lint: false, html: Some(DocHtmlFlag { - name: "My library".to_string(), + name: Some("My library".to_string()), output: String::from("./docs/"), }), source_files: DocSourceFileFlag::Paths(svec!["path/to/module.ts"]), @@ -8396,7 +8395,7 @@ mod tests { private: false, json: false, html: Some(DocHtmlFlag { - name: "My library".to_string(), + name: Some("My library".to_string()), output: String::from("./foo"), }), lint: true, diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index 1ff5623cc..b311cef29 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -18,6 +18,7 @@ use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::AnyError; use deno_doc as doc; +use deno_doc::html::UrlResolveKind; use deno_graph::source::NullFileSystem; use deno_graph::GraphKind; use deno_graph::ModuleAnalyzer; @@ -35,7 +36,7 @@ async fn generate_doc_nodes_for_builtin_types( analyzer: &dyn ModuleAnalyzer, ) -> Result<IndexMap<ModuleSpecifier, Vec<doc::DocNode>>, AnyError> { let source_file_specifier = - ModuleSpecifier::parse("internal://lib.deno.d.ts").unwrap(); + ModuleSpecifier::parse("file:///lib.deno.d.ts").unwrap(); let content = get_types_declaration_file_text(); let loader = deno_graph::source::MemoryLoader::new( vec![( @@ -160,11 +161,18 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { .await?; let (_, deno_ns) = deno_ns.into_iter().next().unwrap(); + let short_path = Rc::new(ShortPath::new( + ModuleSpecifier::parse("file:///lib.deno.d.ts").unwrap(), + None, + None, + None, + )); + deno_doc::html::compute_namespaced_symbols( deno_ns .into_iter() .map(|node| deno_doc::html::DocNodeWithContext { - origin: Rc::new(ShortPath::from("deno".to_string())), + origin: short_path.clone(), ns_qualifiers: Rc::new(vec![]), kind_with_drilldown: deno_doc::html::DocNodeKindWithDrilldown::Other(node.kind), @@ -205,6 +213,14 @@ struct DocResolver { } impl deno_doc::html::HrefResolver for DocResolver { + fn resolve_path( + &self, + current: UrlResolveKind, + target: UrlResolveKind, + ) -> String { + deno_doc::html::href_path_resolve(current, target) + } + fn resolve_global_symbol(&self, symbol: &[String]) -> Option<String> { if self.deno_ns.contains(symbol) { Some(format!( @@ -232,12 +248,8 @@ impl deno_doc::html::HrefResolver for DocResolver { None } - fn resolve_usage( - &self, - _current_specifier: &ModuleSpecifier, - current_file: Option<&ShortPath>, - ) -> Option<String> { - current_file.map(|f| f.as_str().to_string()) + fn resolve_usage(&self, current_resolve: UrlResolveKind) -> Option<String> { + current_resolve.get_file().map(|file| file.path.to_string()) } fn resolve_source(&self, location: &deno_doc::Location) -> Option<String> { @@ -254,13 +266,12 @@ fn generate_docs_directory( let output_dir_resolved = cwd.join(&html_options.output); let options = deno_doc::html::GenerateOptions { - package_name: Some(html_options.name.to_owned()), + package_name: html_options.name.clone(), main_entrypoint: None, rewrite_map: None, - hide_module_doc_title: false, href_resolver: Rc::new(DocResolver { deno_ns }), - sidebar_flatten_namespaces: false, usage_composer: None, + composable_output: false, }; let files = deno_doc::html::generate(options, doc_nodes_by_url) |