Skip to content

Commit 1b5463d

Browse files
committed
generate sidebar
1 parent 52703ad commit 1b5463d

File tree

4 files changed

+140
-7
lines changed

4 files changed

+140
-7
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ pnpm-debug.log*
1919

2020
# macOS-specific files
2121
.DS_Store
22-
/public/api-reference
23-
packages/js-api-generator/build.js
22+
packages/js-api-generator/build.js
23+
/public/reference/javascript

astro.config.mjs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import path from 'path';
1313
import { fileURLToPath } from 'url';
1414
import lunaria from '@lunariajs/starlight';
1515
import { readFileSync } from 'fs';
16+
import referenceJavascriptSidebar from './src/_generated-javascript-reference-sidebar.js';
1617

1718
const authors = {
1819
nothingismagick: {
@@ -178,6 +179,7 @@ export default defineConfig({
178179
'develop/sidecar',
179180
'develop/state-management',
180181
'develop/updating-dependencies',
182+
'develop/icons',
181183
{
182184
label: 'Debug',
183185
collapsed: true,
@@ -290,9 +292,9 @@ export default defineConfig({
290292
autogenerate: { directory: 'release' },
291293
},
292294
{
293-
label: 'JavaScript',
294-
collapsed: true,
295-
autogenerate: { directory: 'reference/javascript' },
295+
label: 'JavaScript (TypeDoc)',
296+
// generated by js-api-generator
297+
items: referenceJavascriptSidebar,
296298
},
297299
{
298300
label: 'Rust (docs.rs)',

packages/js-api-generator/build.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import { fileURLToPath } from 'node:url';
66
const __filename = fileURLToPath(import.meta.url);
77
const __dirname = dirname(__filename);
88

9-
const BASE_OUTPUT_DIR = resolve(__dirname, '../../public/api-reference');
9+
const BASE_OUTPUT_DIR = resolve(__dirname, '../../public/reference/javascript');
10+
11+
const OUTPUT_DOCS_SRC_DIR = resolve(__dirname, '../../src');
1012

1113
const typeDocConfigBaseOptions: Partial<TypeDocOptions> = {
1214
// TypeDoc options
@@ -154,7 +156,7 @@ async function generateIndexPage() {
154156
const indexTemplatePath = join(__dirname, 'indexTemplate.html');
155157
const indexContent = readFileSync(indexTemplatePath, 'utf-8')
156158
.replace('{{ pluginsGridHtml }}', pluginsGridHtml || '')
157-
.replace('{{ tauriCard }}', cardTemplate('Tauri Core API', './core/index.html'));
159+
.replace('{{ tauriCard }}', cardTemplate('Tauri Core API', '/reference/javascript/core/'));
158160

159161
const assetsDir = join(BASE_OUTPUT_DIR, 'assets');
160162
if (!existsSync(assetsDir)) {
@@ -172,6 +174,25 @@ async function generateIndexPage() {
172174
}
173175
try {
174176
writeFileSync(indexPath, indexContent);
177+
// Starlight topics especific sidebar structure
178+
const sidebar = [
179+
{
180+
label: 'Index',
181+
link: '/reference/javascript/index.html',
182+
},
183+
{
184+
label: 'Tauri Core API',
185+
link: '/reference/javascript/core/index.html',
186+
},
187+
...(pluginsGridHtml && existsSync(join(BASE_OUTPUT_DIR, 'plugins'))
188+
? readdirSync(join(BASE_OUTPUT_DIR, 'plugins')).map((plugin) => ({
189+
label: plugin,
190+
link: `/reference/javascript/plugins/${plugin}/index.html`,
191+
}))
192+
: []),
193+
];
194+
const sidebarFilePath = join(OUTPUT_DOCS_SRC_DIR, '_generated-javascript-reference-sidebar.js');
195+
writeFileSync(sidebarFilePath, 'export default ' + JSON.stringify(sidebar, null, 2) + ';\n');
175196
} catch (error) {
176197
console.error('Failed to write index files:', error);
177198
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
export default [
2+
{
3+
"label": "Index",
4+
"link": "/reference/javascript/index.html"
5+
},
6+
{
7+
"label": "Tauri Core API",
8+
"link": "/reference/javascript/core/index.html"
9+
},
10+
{
11+
"label": "autostart",
12+
"link": "/reference/javascript/plugins/autostart/index.html"
13+
},
14+
{
15+
"label": "barcode-scanner",
16+
"link": "/reference/javascript/plugins/barcode-scanner/index.html"
17+
},
18+
{
19+
"label": "biometric",
20+
"link": "/reference/javascript/plugins/biometric/index.html"
21+
},
22+
{
23+
"label": "cli",
24+
"link": "/reference/javascript/plugins/cli/index.html"
25+
},
26+
{
27+
"label": "clipboard-manager",
28+
"link": "/reference/javascript/plugins/clipboard-manager/index.html"
29+
},
30+
{
31+
"label": "deep-link",
32+
"link": "/reference/javascript/plugins/deep-link/index.html"
33+
},
34+
{
35+
"label": "dialog",
36+
"link": "/reference/javascript/plugins/dialog/index.html"
37+
},
38+
{
39+
"label": "fs",
40+
"link": "/reference/javascript/plugins/fs/index.html"
41+
},
42+
{
43+
"label": "global-shortcut",
44+
"link": "/reference/javascript/plugins/global-shortcut/index.html"
45+
},
46+
{
47+
"label": "http",
48+
"link": "/reference/javascript/plugins/http/index.html"
49+
},
50+
{
51+
"label": "log",
52+
"link": "/reference/javascript/plugins/log/index.html"
53+
},
54+
{
55+
"label": "nfc",
56+
"link": "/reference/javascript/plugins/nfc/index.html"
57+
},
58+
{
59+
"label": "notification",
60+
"link": "/reference/javascript/plugins/notification/index.html"
61+
},
62+
{
63+
"label": "opener",
64+
"link": "/reference/javascript/plugins/opener/index.html"
65+
},
66+
{
67+
"label": "os",
68+
"link": "/reference/javascript/plugins/os/index.html"
69+
},
70+
{
71+
"label": "positioner",
72+
"link": "/reference/javascript/plugins/positioner/index.html"
73+
},
74+
{
75+
"label": "process",
76+
"link": "/reference/javascript/plugins/process/index.html"
77+
},
78+
{
79+
"label": "shell",
80+
"link": "/reference/javascript/plugins/shell/index.html"
81+
},
82+
{
83+
"label": "sql",
84+
"link": "/reference/javascript/plugins/sql/index.html"
85+
},
86+
{
87+
"label": "store",
88+
"link": "/reference/javascript/plugins/store/index.html"
89+
},
90+
{
91+
"label": "stronghold",
92+
"link": "/reference/javascript/plugins/stronghold/index.html"
93+
},
94+
{
95+
"label": "updater",
96+
"link": "/reference/javascript/plugins/updater/index.html"
97+
},
98+
{
99+
"label": "upload",
100+
"link": "/reference/javascript/plugins/upload/index.html"
101+
},
102+
{
103+
"label": "websocket",
104+
"link": "/reference/javascript/plugins/websocket/index.html"
105+
},
106+
{
107+
"label": "window-state",
108+
"link": "/reference/javascript/plugins/window-state/index.html"
109+
}
110+
];

0 commit comments

Comments
 (0)