A port of Frontman's SitemapTree in TypeScript.
MIT License
Penjing is a data structure to represent pages from a static site. It lets you retrieve any resource from the tree with constant time complexity.
npm install penjing
# or
yarn add penjing
import { SitemapTree, Resource } from 'penjing'
const tree = SitemapTree.create()
tree.add(Resource.createFromPath('path/to/first.md'))
tree.add(Resource.createFromPath('path/to/second.md'))
tree.children[0].children[0].children[0].resource.source // "path/to/first.md"
tree.fromUrl('path/to/second').children[0].resource.source // "path/to/second.md"
SitemapTree
Create a tree of resources.
SitemapTree.resource
Resource | null
The attached resource.
SitemapTree.parent
SitemapTree | null
The parent of the sitemap tree.
SitemapTree.children
SitemapTree[]
The children of the sitemap tree.
SitemapTree.url
string | null
The URL of the sitemap tree.
SitemapTree.urlPart
string | null
The URL part of the sitemap tree.
SitemapTree.siblings
SitemapTree[]
The siblings of the sitemap tree, including itself.
SitemapTree.allUrls
Record<string, SitemapTree>
All URLs in the sitemap tree.
SitemapTree.add(resource)
(resource: Resource): void
Add a resource to the sitemap tree.
SitemapTree.fromUrl(url)
(url: string): SitemapTree
Retrieve a sub-tree in a sitemap tree from a URL.
SitemapTree.fromResource(resource)
(resource: Resource): SitemapTree
Retrieve a sub-tree in a sitemap tree from a resource.
Resource
Create a resource from a file path.