From d3e6f638223e254e01f177d5137cfee83f8eb187 Mon Sep 17 00:00:00 2001 From: bcakmakoglu <78412429+bcakmakoglu@users.noreply.github.com> Date: Mon, 13 Jun 2022 00:23:42 +0200 Subject: [PATCH] docs: generate typedocs sidebar dynamically from subdirectories --- docs/src/.vuepress/theme/index.ts | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/docs/src/.vuepress/theme/index.ts b/docs/src/.vuepress/theme/index.ts index bb9c419d..e07def34 100644 --- a/docs/src/.vuepress/theme/index.ts +++ b/docs/src/.vuepress/theme/index.ts @@ -2,31 +2,40 @@ import { resolve } from 'path' import { defaultTheme, SidebarConfigArray, Theme } from 'vuepress' import { path } from '@vuepress/utils' import { useVueFlow } from '@braks/vue-flow' -import { readdirSync } from 'fs' +import { readdirSync, statSync } from 'fs' const { vueFlowVersion } = useVueFlow() +function capitalize(str: string) { + return str.charAt(0).toUpperCase() + str.slice(1); +} + const typedocSidebarEntries = (): SidebarConfigArray => { const filePath = resolve( __dirname, '../../typedocs' ) - const classes = readdirSync(`${filePath}/classes/`).map(entry => `/typedocs/classes/${entry}`) - const enums = readdirSync(`${filePath}/enums/`).map(entry => `/typedocs/enums/${entry}`) - const interfaces = readdirSync(`${filePath}/interfaces/`).map(entry => `/typedocs/interfaces/${entry}`) - const modules = readdirSync(`${filePath}/modules/`).map(entry => `/typedocs/modules/${entry}`) + const docsModules = readdirSync(filePath).filter(name => statSync(`${filePath}/${name}`).isDirectory()) + + const sidebarItems = docsModules.map(module => { + let children = readdirSync(`${filePath}/${module}/`).map(entry => `/typedocs/${module}/${entry}`) + + if (module === 'variables') { + children = children.filter(child => { + return child.includes('default') + }) + } + + return { text: capitalize(module), children } + }) return [ { text: 'TypeDocs', link: '/typedocs/', children: [ - { text: 'Exports', children: ['/typedocs/modules.md'] }, - { text: 'Modules', children: modules }, - { text: 'Classes', children: classes }, - { text: 'Enums', children: enums }, - { text: 'Interfaces', children: interfaces }, + ...sidebarItems, ], } ]