Skip to content

JSDoc 404s when re-re-exported namespace export * as is produces is.isAny links #1175

@tani

Description

@tani

Summary
When re-re-exporting a namespace that itself re-exports many items with renamed exports, JSR's generated docs produce double-qualified names like is.isAny. Those links 404 on jsr.io and break symbol resolution.

Context

  • Library: @core/unknownutil
  • Version: 4.4.0-pre.0
  • Docs page showing the issue: https://jsr.io/@core/unknownutil@4.4.0-pre.0/doc
  • Pattern:
    • is/is.ts enumerates many re-exports such as:
      export { isAny as Any } from "./any.ts";
    • is/mod.ts re-re-exports the namespace:
      export * as is from "./is.ts";
    • mod.ts re-re-re-exports the namespace:
      export { is } from "mod.ts";
  • On jsr.io docs, symbols appear as is.isAny (and similar), and clicking them yields 404 Not Found. The symbol browser and JSDoc linking seem inconsistent with the actual export graph and/or symbol names.

Minimal Reproduction

  1. is.ts
    export { isAny as Any } from "./any.ts";
    export { isString as String } from "./string.ts";
    // ... many similar lines
    ```
    
    
  2. mod.ts
    export * as is from "./is.ts";
    

Observed Behavior

  • The docs render symbols under a nested path like is.isAny.
  • Links for those nested symbol names point to pages that do not exist, resulting in 404 Not Found.
  • JSDoc for those symbols is either missing or linked incorrectly due to the double qualification.

Expected Behavior

  • Re-re-exported namespace members should resolve to stable, correct doc URLs.
  • Links for symbols should not 404, and symbol names should reflect the actual exported names (e.g., is.Any rather than is.isAny if the public name is Any).
  • The doc generator should correctly handle:
    • export { X as Y } … combined with
    • export * as ns from "…"

Notes and Hypothesis

  • The doc generator may be deriving link targets from internal/original names (e.g., isAny) instead of public aliases (e.g., Any) when nested under a re-exported namespace.
  • Alternatively, the namespace nesting logic might be duplicating the namespace qualifier (is.isAny) instead of presenting the aliased member name (is.Any).
  • Either way, the computed slug or path for the symbol likely does not match the router's expected URL, causing 404s.

What Would Help

  • Clarify which name (original vs. alias) JSR intends to display and link for re-re-exported members.
  • Ensure consistent symbol canonicalization so that:
    • Displayed names match the actual exported surface (including aliases).
    • URL slugs/anchors match those displayed names.
    • Re-re-exported namespaces don't introduce duplicated qualifiers.

Environment

  • Package: @core/unknownutil
  • Version: 4.4.0-pre.0
  • Affected docs: the jsr.io generated documentation pages for the package

Request

  • Please confirm whether this is a known issue in the doc/link generation pipeline.
  • If helpful, I can provide a minimal standalone repo replicating the re-re-export pattern and its resulting broken links.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Needs Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions