summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/Cargo.toml2
-rw-r--r--cli/args/flags.rs11
-rw-r--r--cli/tools/doc.rs33
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)