aboutsummaryrefslogtreecommitdiff
path: root/scripts/apidocs/generate.ts
blob: 81021c5fbd34d291e07340c57a1c9c00116d0519 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import type { Project } from 'ts-morph';
import { writeDiffIndex } from './output/diff-index';
import { writePages } from './output/page';
import { writePageIndex } from './output/page-index';
import { writeSearchIndex } from './output/search-index';
import { writeSourceBaseUrl } from './output/source-base-url';
import type { RawApiDocsPage } from './processing/class';
import {
  processModuleClasses,
  processProjectClasses,
  processProjectInterfaces,
  processProjectUtilities,
} from './processing/class';
import { getProject } from './project';

export async function generate(): Promise<void> {
  console.log('Reading project');
  const project = getProject();
  console.log('Processing components');
  const apiDocsPages = processComponents(project);
  console.log('Writing files');
  await writeFiles(apiDocsPages);
}

export function processComponents(project: Project): RawApiDocsPage[] {
  return [
    ...processProjectClasses(project),
    ...processProjectInterfaces(project),
    processProjectUtilities(project),
    ...processModuleClasses(project),
  ];
}

async function writeFiles(apiDocsPages: RawApiDocsPage[]): Promise<void> {
  console.log('- diff index');
  writeDiffIndex(apiDocsPages);
  console.log('- page index');
  await writePageIndex(apiDocsPages);
  console.log('- pages');
  await writePages(apiDocsPages);
  console.log('- search index');
  writeSearchIndex(apiDocsPages);
  console.log('- source base url');
  await writeSourceBaseUrl();
}