specweave 0.8.3 ā 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +11 -0
- package/dist/adapters/adapter-loader.d.ts +4 -4
- package/dist/adapters/adapter-loader.d.ts.map +1 -1
- package/dist/adapters/adapter-loader.js +8 -7
- package/dist/adapters/adapter-loader.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +12 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/utils/docs-preview/config-generator.d.ts +46 -0
- package/dist/utils/docs-preview/config-generator.d.ts.map +1 -0
- package/dist/utils/docs-preview/config-generator.js +377 -0
- package/dist/utils/docs-preview/config-generator.js.map +1 -0
- package/dist/utils/docs-preview/docusaurus-setup.d.ts +38 -0
- package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
- package/dist/utils/docs-preview/docusaurus-setup.js +177 -0
- package/dist/utils/docs-preview/docusaurus-setup.js.map +1 -0
- package/dist/utils/docs-preview/index.d.ts +11 -0
- package/dist/utils/docs-preview/index.d.ts.map +1 -0
- package/dist/utils/docs-preview/index.js +17 -0
- package/dist/utils/docs-preview/index.js.map +1 -0
- package/dist/utils/docs-preview/package-installer.d.ts +42 -0
- package/dist/utils/docs-preview/package-installer.d.ts.map +1 -0
- package/dist/utils/docs-preview/package-installer.js +182 -0
- package/dist/utils/docs-preview/package-installer.js.map +1 -0
- package/dist/utils/docs-preview/server-manager.d.ts +30 -0
- package/dist/utils/docs-preview/server-manager.d.ts.map +1 -0
- package/dist/utils/docs-preview/server-manager.js +207 -0
- package/dist/utils/docs-preview/server-manager.js.map +1 -0
- package/dist/utils/docs-preview/sidebar-builder.d.ts +31 -0
- package/dist/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
- package/dist/utils/docs-preview/sidebar-builder.js +202 -0
- package/dist/utils/docs-preview/sidebar-builder.js.map +1 -0
- package/dist/utils/docs-preview/types.d.ts +60 -0
- package/dist/utils/docs-preview/types.d.ts.map +1 -0
- package/dist/utils/docs-preview/types.js +5 -0
- package/dist/utils/docs-preview/types.js.map +1 -0
- package/dist/utils/docs-preview.bak/config-generator.d.ts +46 -0
- package/dist/utils/docs-preview.bak/config-generator.d.ts.map +1 -0
- package/dist/utils/docs-preview.bak/config-generator.js +377 -0
- package/dist/utils/docs-preview.bak/config-generator.js.map +1 -0
- package/dist/utils/docs-preview.bak/package-installer.d.ts +42 -0
- package/dist/utils/docs-preview.bak/package-installer.d.ts.map +1 -0
- package/dist/utils/docs-preview.bak/package-installer.js +182 -0
- package/dist/utils/docs-preview.bak/package-installer.js.map +1 -0
- package/dist/utils/docs-preview.bak/server-manager.d.ts +30 -0
- package/dist/utils/docs-preview.bak/server-manager.d.ts.map +1 -0
- package/dist/utils/docs-preview.bak/server-manager.js +207 -0
- package/dist/utils/docs-preview.bak/server-manager.js.map +1 -0
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +31 -0
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +1 -0
- package/dist/utils/docs-preview.bak/sidebar-builder.js +202 -0
- package/dist/utils/docs-preview.bak/sidebar-builder.js.map +1 -0
- package/dist/utils/docs-preview.bak/types.d.ts +60 -0
- package/dist/utils/docs-preview.bak/types.d.ts.map +1 -0
- package/dist/utils/docs-preview.bak/types.js +5 -0
- package/dist/utils/docs-preview.bak/types.js.map +1 -0
- package/package.json +1 -1
- package/src/templates/.gitattributes.template +35 -0
- package/dist/cli/commands/plugin.js +0 -322
- package/dist/cli/commands/plugin.js.map +0 -1
- package/dist/core/plugin-detector.d.ts +0 -97
- package/dist/core/plugin-detector.d.ts.map +0 -1
- package/dist/core/plugin-detector.js +0 -374
- package/dist/core/plugin-detector.js.map +0 -1
- package/dist/core/plugin-manager.d.ts +0 -144
- package/dist/core/plugin-manager.d.ts.map +0 -1
- package/dist/core/plugin-manager.js +0 -393
- package/dist/core/plugin-manager.js.map +0 -1
- package/dist/utils/plugin-detection.js +0 -229
- package/dist/utils/plugin-detection.js.map +0 -1
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docusaurus configuration generator
|
|
3
|
+
* Generates docusaurus.config.js with sensible defaults
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as fs from 'fs-extra';
|
|
7
|
+
/**
|
|
8
|
+
* Generate docusaurus.config.js content
|
|
9
|
+
*/
|
|
10
|
+
export function generateDocusaurusConfig(config) {
|
|
11
|
+
const { title, tagline, url, baseUrl, docsPath, theme = 'default' } = config;
|
|
12
|
+
return `// @ts-check
|
|
13
|
+
// This is a Docusaurus site configuration object.
|
|
14
|
+
// Auto-generated by SpecWeave docs-preview plugin
|
|
15
|
+
// Generated: ${new Date().toISOString()}
|
|
16
|
+
|
|
17
|
+
import {themes as prismThemes} from 'prism-react-renderer';
|
|
18
|
+
|
|
19
|
+
/** @type {import('@docusaurus/types').Config} */
|
|
20
|
+
const config = {
|
|
21
|
+
title: '${title}',
|
|
22
|
+
tagline: '${tagline}',
|
|
23
|
+
favicon: 'img/favicon.ico',
|
|
24
|
+
|
|
25
|
+
// Production URL
|
|
26
|
+
url: '${url}',
|
|
27
|
+
baseUrl: '${baseUrl}',
|
|
28
|
+
|
|
29
|
+
// GitHub Pages deployment config
|
|
30
|
+
organizationName: 'your-org',
|
|
31
|
+
projectName: 'your-repo',
|
|
32
|
+
|
|
33
|
+
onBrokenLinks: 'warn',
|
|
34
|
+
onBrokenMarkdownLinks: 'warn',
|
|
35
|
+
|
|
36
|
+
// Internationalization
|
|
37
|
+
i18n: {
|
|
38
|
+
defaultLocale: 'en',
|
|
39
|
+
locales: ['en'],
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
presets: [
|
|
43
|
+
[
|
|
44
|
+
'classic',
|
|
45
|
+
/** @type {import('@docusaurus/preset-classic').Options} */
|
|
46
|
+
({
|
|
47
|
+
docs: {
|
|
48
|
+
routeBasePath: '/',
|
|
49
|
+
path: '${docsPath}',
|
|
50
|
+
sidebarPath: './sidebars.js',
|
|
51
|
+
editUrl: undefined, // Disable "Edit this page" for internal docs
|
|
52
|
+
},
|
|
53
|
+
blog: false, // Disable blog
|
|
54
|
+
theme: {
|
|
55
|
+
customCss: './src/css/custom.css',
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
],
|
|
59
|
+
],
|
|
60
|
+
|
|
61
|
+
themeConfig:
|
|
62
|
+
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
|
63
|
+
({
|
|
64
|
+
// Social card image (optional)
|
|
65
|
+
image: 'img/docusaurus-social-card.jpg',
|
|
66
|
+
|
|
67
|
+
navbar: {
|
|
68
|
+
title: '${title}',
|
|
69
|
+
logo: {
|
|
70
|
+
alt: '${title} Logo',
|
|
71
|
+
src: 'img/logo.svg',
|
|
72
|
+
},
|
|
73
|
+
items: [
|
|
74
|
+
{
|
|
75
|
+
type: 'docSidebar',
|
|
76
|
+
sidebarId: 'docs',
|
|
77
|
+
position: 'left',
|
|
78
|
+
label: 'Documentation',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
footer: {
|
|
84
|
+
style: 'dark',
|
|
85
|
+
links: [
|
|
86
|
+
{
|
|
87
|
+
title: 'Documentation',
|
|
88
|
+
items: [
|
|
89
|
+
{
|
|
90
|
+
label: 'Strategy',
|
|
91
|
+
to: '/strategy',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Architecture',
|
|
95
|
+
to: '/architecture',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
copyright: \`Copyright Ā© \${new Date().getFullYear()} SpecWeave. Built with Docusaurus.\`,
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
prism: {
|
|
104
|
+
theme: prismThemes.github,
|
|
105
|
+
darkTheme: prismThemes.dracula,
|
|
106
|
+
additionalLanguages: ['bash', 'typescript', 'javascript', 'json', 'yaml'],
|
|
107
|
+
},
|
|
108
|
+
}),
|
|
109
|
+
|
|
110
|
+
// Mermaid diagrams support
|
|
111
|
+
markdown: {
|
|
112
|
+
mermaid: true,
|
|
113
|
+
},
|
|
114
|
+
themes: ['@docusaurus/theme-mermaid'],
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export default config;
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Write docusaurus.config.js to file
|
|
122
|
+
*/
|
|
123
|
+
export async function writeDocusaurusConfig(targetDir, config) {
|
|
124
|
+
const configPath = path.join(targetDir, 'docusaurus.config.js');
|
|
125
|
+
const content = generateDocusaurusConfig(config);
|
|
126
|
+
await fs.ensureDir(targetDir);
|
|
127
|
+
await fs.writeFile(configPath, content, 'utf-8');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Generate package.json for Docusaurus site
|
|
131
|
+
*/
|
|
132
|
+
export function generatePackageJSON(title) {
|
|
133
|
+
return JSON.stringify({
|
|
134
|
+
name: 'specweave-docs',
|
|
135
|
+
version: '1.0.0',
|
|
136
|
+
description: `${title} - Documentation Site`,
|
|
137
|
+
private: true,
|
|
138
|
+
scripts: {
|
|
139
|
+
docusaurus: 'docusaurus',
|
|
140
|
+
start: 'docusaurus start',
|
|
141
|
+
build: 'docusaurus build',
|
|
142
|
+
swizzle: 'docusaurus swizzle',
|
|
143
|
+
deploy: 'docusaurus deploy',
|
|
144
|
+
clear: 'docusaurus clear',
|
|
145
|
+
serve: 'docusaurus serve',
|
|
146
|
+
'write-translations': 'docusaurus write-translations',
|
|
147
|
+
'write-heading-ids': 'docusaurus write-heading-ids'
|
|
148
|
+
},
|
|
149
|
+
dependencies: {
|
|
150
|
+
'@docusaurus/core': '^3.0.0',
|
|
151
|
+
'@docusaurus/preset-classic': '^3.0.0',
|
|
152
|
+
'@docusaurus/theme-mermaid': '^3.0.0',
|
|
153
|
+
'@mdx-js/react': '^3.0.0',
|
|
154
|
+
'clsx': '^2.0.0',
|
|
155
|
+
'prism-react-renderer': '^2.1.0',
|
|
156
|
+
'react': '^18.0.0',
|
|
157
|
+
'react-dom': '^18.0.0'
|
|
158
|
+
},
|
|
159
|
+
devDependencies: {
|
|
160
|
+
'@docusaurus/module-type-aliases': '^3.0.0',
|
|
161
|
+
'@docusaurus/types': '^3.0.0'
|
|
162
|
+
},
|
|
163
|
+
engines: {
|
|
164
|
+
node: '>=18.0'
|
|
165
|
+
}
|
|
166
|
+
}, null, 2);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Write package.json to file
|
|
170
|
+
*/
|
|
171
|
+
export async function writePackageJSON(targetDir, title) {
|
|
172
|
+
const packagePath = path.join(targetDir, 'package.json');
|
|
173
|
+
const content = generatePackageJSON(title);
|
|
174
|
+
await fs.ensureDir(targetDir);
|
|
175
|
+
await fs.writeFile(packagePath, content, 'utf-8');
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Generate custom CSS for theme customization
|
|
179
|
+
*/
|
|
180
|
+
export function generateCustomCSS(theme) {
|
|
181
|
+
const themes = {
|
|
182
|
+
default: `
|
|
183
|
+
:root {
|
|
184
|
+
--ifm-color-primary: #2e8555;
|
|
185
|
+
--ifm-color-primary-dark: #29784c;
|
|
186
|
+
--ifm-color-primary-darker: #277148;
|
|
187
|
+
--ifm-color-primary-darkest: #205d3b;
|
|
188
|
+
--ifm-color-primary-light: #33925d;
|
|
189
|
+
--ifm-color-primary-lighter: #359962;
|
|
190
|
+
--ifm-color-primary-lightest: #3cad6e;
|
|
191
|
+
--ifm-code-font-size: 95%;
|
|
192
|
+
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
[data-theme='dark'] {
|
|
196
|
+
--ifm-color-primary: #25c2a0;
|
|
197
|
+
--ifm-color-primary-dark: #21af90;
|
|
198
|
+
--ifm-color-primary-darker: #1fa588;
|
|
199
|
+
--ifm-color-primary-darkest: #1a8870;
|
|
200
|
+
--ifm-color-primary-light: #29d5b0;
|
|
201
|
+
--ifm-color-primary-lighter: #32d8b4;
|
|
202
|
+
--ifm-color-primary-lightest: #4fddbf;
|
|
203
|
+
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
|
|
204
|
+
}
|
|
205
|
+
`,
|
|
206
|
+
classic: `
|
|
207
|
+
:root {
|
|
208
|
+
--ifm-color-primary: #0066cc;
|
|
209
|
+
--ifm-color-primary-dark: #005cb8;
|
|
210
|
+
--ifm-color-primary-darker: #0056ad;
|
|
211
|
+
--ifm-color-primary-darkest: #00478f;
|
|
212
|
+
--ifm-color-primary-light: #0070e0;
|
|
213
|
+
--ifm-color-primary-lighter: #0076eb;
|
|
214
|
+
--ifm-color-primary-lightest: #1a85ff;
|
|
215
|
+
--ifm-code-font-size: 95%;
|
|
216
|
+
}
|
|
217
|
+
`,
|
|
218
|
+
dark: `
|
|
219
|
+
:root {
|
|
220
|
+
--ifm-color-primary: #1e1e1e;
|
|
221
|
+
--ifm-background-color: #0d1117;
|
|
222
|
+
--ifm-code-font-size: 95%;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
[data-theme='dark'] {
|
|
226
|
+
--ifm-color-primary: #58a6ff;
|
|
227
|
+
--ifm-background-color: #0d1117;
|
|
228
|
+
}
|
|
229
|
+
`
|
|
230
|
+
};
|
|
231
|
+
return `/**
|
|
232
|
+
* Custom CSS for SpecWeave documentation
|
|
233
|
+
* Theme: ${theme}
|
|
234
|
+
* Auto-generated by SpecWeave docs-preview plugin
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
${themes[theme]}
|
|
238
|
+
|
|
239
|
+
/* Custom styles */
|
|
240
|
+
.markdown {
|
|
241
|
+
--ifm-h1-font-size: 2rem;
|
|
242
|
+
--ifm-h2-font-size: 1.5rem;
|
|
243
|
+
--ifm-h3-font-size: 1.25rem;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Code blocks */
|
|
247
|
+
.prism-code {
|
|
248
|
+
font-size: 0.9rem;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Mermaid diagrams */
|
|
252
|
+
.docusaurus-mermaid-container {
|
|
253
|
+
text-align: center;
|
|
254
|
+
margin: 2rem 0;
|
|
255
|
+
}
|
|
256
|
+
`;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Write custom CSS to file
|
|
260
|
+
*/
|
|
261
|
+
export async function writeCustomCSS(targetDir, theme) {
|
|
262
|
+
const cssPath = path.join(targetDir, 'src', 'css', 'custom.css');
|
|
263
|
+
const content = generateCustomCSS(theme);
|
|
264
|
+
await fs.ensureDir(path.dirname(cssPath));
|
|
265
|
+
await fs.writeFile(cssPath, content, 'utf-8');
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Generate index page (landing page)
|
|
269
|
+
*/
|
|
270
|
+
export function generateIndexPage(title, tagline) {
|
|
271
|
+
return `import React from 'react';
|
|
272
|
+
import clsx from 'clsx';
|
|
273
|
+
import Link from '@docusaurus/Link';
|
|
274
|
+
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
275
|
+
import Layout from '@theme/Layout';
|
|
276
|
+
import styles from './index.module.css';
|
|
277
|
+
|
|
278
|
+
function HomepageHeader() {
|
|
279
|
+
const {siteConfig} = useDocusaurusContext();
|
|
280
|
+
return (
|
|
281
|
+
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
|
282
|
+
<div className="container">
|
|
283
|
+
<h1 className="hero__title">{siteConfig.title}</h1>
|
|
284
|
+
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
|
285
|
+
<div className={styles.buttons}>
|
|
286
|
+
<Link
|
|
287
|
+
className="button button--secondary button--lg"
|
|
288
|
+
to="/strategy">
|
|
289
|
+
View Documentation
|
|
290
|
+
</Link>
|
|
291
|
+
</div>
|
|
292
|
+
</div>
|
|
293
|
+
</header>
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export default function Home() {
|
|
298
|
+
const {siteConfig} = useDocusaurusContext();
|
|
299
|
+
return (
|
|
300
|
+
<Layout
|
|
301
|
+
title={\`\${siteConfig.title}\`}
|
|
302
|
+
description="${tagline}">
|
|
303
|
+
<HomepageHeader />
|
|
304
|
+
<main>
|
|
305
|
+
<div className="container" style={{marginTop: '2rem', marginBottom: '2rem'}}>
|
|
306
|
+
<div className="row">
|
|
307
|
+
<div className="col col--12">
|
|
308
|
+
<h2>Welcome to ${title}</h2>
|
|
309
|
+
<p>
|
|
310
|
+
This is your SpecWeave documentation site, automatically generated from your
|
|
311
|
+
<code>.specweave/docs/</code> folder.
|
|
312
|
+
</p>
|
|
313
|
+
<p>
|
|
314
|
+
Use the sidebar to navigate through your documentation:
|
|
315
|
+
</p>
|
|
316
|
+
<ul>
|
|
317
|
+
<li><strong>Strategy</strong>: Business rationale, PRDs, OKRs</li>
|
|
318
|
+
<li><strong>Specs</strong>: Feature specifications and user stories</li>
|
|
319
|
+
<li><strong>Architecture</strong>: Technical design, ADRs, diagrams</li>
|
|
320
|
+
<li><strong>Delivery</strong>: Build & release processes</li>
|
|
321
|
+
<li><strong>Operations</strong>: Runbooks, SLOs, incidents</li>
|
|
322
|
+
<li><strong>Governance</strong>: Policies, security, compliance</li>
|
|
323
|
+
</ul>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
</main>
|
|
328
|
+
</Layout>
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
`;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Write index page to file
|
|
335
|
+
*/
|
|
336
|
+
export async function writeIndexPage(targetDir, title, tagline) {
|
|
337
|
+
const indexPath = path.join(targetDir, 'src', 'pages', 'index.js');
|
|
338
|
+
const content = generateIndexPage(title, tagline);
|
|
339
|
+
await fs.ensureDir(path.dirname(indexPath));
|
|
340
|
+
await fs.writeFile(indexPath, content, 'utf-8');
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Generate index.module.css for landing page styles
|
|
344
|
+
*/
|
|
345
|
+
export function generateIndexModuleCSS() {
|
|
346
|
+
return `.heroBanner {
|
|
347
|
+
padding: 4rem 0;
|
|
348
|
+
text-align: center;
|
|
349
|
+
position: relative;
|
|
350
|
+
overflow: hidden;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
@media screen and (max-width: 996px) {
|
|
354
|
+
.heroBanner {
|
|
355
|
+
padding: 2rem;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.buttons {
|
|
360
|
+
display: flex;
|
|
361
|
+
align-items: center;
|
|
362
|
+
justify-content: center;
|
|
363
|
+
gap: 1rem;
|
|
364
|
+
margin-top: 2rem;
|
|
365
|
+
}
|
|
366
|
+
`;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Write index.module.css to file
|
|
370
|
+
*/
|
|
371
|
+
export async function writeIndexModuleCSS(targetDir) {
|
|
372
|
+
const cssPath = path.join(targetDir, 'src', 'pages', 'index.module.css');
|
|
373
|
+
const content = generateIndexModuleCSS();
|
|
374
|
+
await fs.ensureDir(path.dirname(cssPath));
|
|
375
|
+
await fs.writeFile(cssPath, content, 'utf-8');
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=config-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/config-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main orchestrator for Docusaurus setup
|
|
3
|
+
* Coordinates all setup steps: install, config, sidebar, server launch
|
|
4
|
+
*/
|
|
5
|
+
import { SetupOptions, ServerProcess } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Full Docusaurus setup workflow
|
|
8
|
+
*/
|
|
9
|
+
export declare function setupDocusaurus(options: SetupOptions): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Quick setup with defaults
|
|
12
|
+
*/
|
|
13
|
+
export declare function quickSetup(projectRoot: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Launch preview (setup if needed, then start server)
|
|
16
|
+
*/
|
|
17
|
+
export declare function launchPreview(projectRoot: string, options?: {
|
|
18
|
+
port?: number;
|
|
19
|
+
openBrowser?: boolean;
|
|
20
|
+
force?: boolean;
|
|
21
|
+
}): Promise<ServerProcess>;
|
|
22
|
+
/**
|
|
23
|
+
* Build static site
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildStaticSite(projectRoot: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if setup is needed
|
|
28
|
+
*/
|
|
29
|
+
export declare function isSetupNeeded(projectRoot: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Get docs site path
|
|
32
|
+
*/
|
|
33
|
+
export declare function getDocsSitePath(projectRoot: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get docs path
|
|
36
|
+
*/
|
|
37
|
+
export declare function getDocsPath(projectRoot: string): string;
|
|
38
|
+
//# sourceMappingURL=docusaurus-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docusaurus-setup.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview/docusaurus-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAoB,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3E;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main orchestrator for Docusaurus setup
|
|
3
|
+
* Coordinates all setup steps: install, config, sidebar, server launch
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as fs from 'fs-extra';
|
|
7
|
+
import { checkNodeVersion, installDocusaurus, isDocusaurusInstalled } from './package-installer.js';
|
|
8
|
+
import { buildSidebar, writeSidebar, countDocuments, countCategories } from './sidebar-builder.js';
|
|
9
|
+
import { writeDocusaurusConfig, writePackageJSON, writeCustomCSS, writeIndexPage, writeIndexModuleCSS } from './config-generator.js';
|
|
10
|
+
import { startDevServer, findAvailablePort } from './server-manager.js';
|
|
11
|
+
/**
|
|
12
|
+
* Full Docusaurus setup workflow
|
|
13
|
+
*/
|
|
14
|
+
export async function setupDocusaurus(options) {
|
|
15
|
+
const { projectRoot, targetDir, docsPath, config, force = false } = options;
|
|
16
|
+
console.log('š¦ Setting up Docusaurus documentation preview...\n');
|
|
17
|
+
// Step 1: Check Node.js version
|
|
18
|
+
console.log('1. Checking Node.js version...');
|
|
19
|
+
const nodeVersion = await checkNodeVersion();
|
|
20
|
+
if (!nodeVersion.compatible) {
|
|
21
|
+
throw new Error(`Node.js 18+ required (found: ${nodeVersion.version})\n` +
|
|
22
|
+
'Install Node.js from: https://nodejs.org/');
|
|
23
|
+
}
|
|
24
|
+
console.log(` ā
Node.js ${nodeVersion.version}\n`);
|
|
25
|
+
// Step 2: Check if already installed
|
|
26
|
+
if (!force && await isDocusaurusInstalled(targetDir)) {
|
|
27
|
+
console.log('ā
Docusaurus already installed (use --force to reinstall)\n');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Step 3: Create target directory
|
|
31
|
+
console.log('2. Creating docs-site directory...');
|
|
32
|
+
await fs.ensureDir(targetDir);
|
|
33
|
+
console.log(' ā
Directory created\n');
|
|
34
|
+
// Step 4: Generate package.json
|
|
35
|
+
console.log('3. Generating package.json...');
|
|
36
|
+
await writePackageJSON(targetDir, config.title);
|
|
37
|
+
console.log(' ā
package.json created\n');
|
|
38
|
+
// Step 5: Install Docusaurus packages
|
|
39
|
+
console.log('4. Installing packages (this may take 30-60 seconds)...');
|
|
40
|
+
await installDocusaurus(targetDir);
|
|
41
|
+
console.log(' ā
Installation complete\n');
|
|
42
|
+
// Step 6: Generate docusaurus.config.js
|
|
43
|
+
console.log('5. Generating docusaurus.config.js...');
|
|
44
|
+
await writeDocusaurusConfig(targetDir, config);
|
|
45
|
+
console.log(' ā
Configuration generated\n');
|
|
46
|
+
// Step 7: Scan docs and generate sidebar
|
|
47
|
+
console.log('6. Scanning documentation folders...');
|
|
48
|
+
const sidebar = await buildSidebar({
|
|
49
|
+
docsPath,
|
|
50
|
+
excludeFolders: config.excludeFolders || ['legacy', 'node_modules'],
|
|
51
|
+
maxDepth: 5
|
|
52
|
+
});
|
|
53
|
+
const docCount = countDocuments(sidebar);
|
|
54
|
+
const catCount = countCategories(sidebar);
|
|
55
|
+
console.log(` ā
Found ${docCount} documents in ${catCount} categories\n`);
|
|
56
|
+
// Step 8: Write sidebar
|
|
57
|
+
console.log('7. Generating sidebars.js...');
|
|
58
|
+
const sidebarPath = path.join(targetDir, 'sidebars.js');
|
|
59
|
+
await writeSidebar(sidebarPath, sidebar);
|
|
60
|
+
console.log(' ā
Sidebar generated\n');
|
|
61
|
+
// Step 9: Create landing page
|
|
62
|
+
console.log('8. Creating landing page...');
|
|
63
|
+
await writeIndexPage(targetDir, config.title, config.tagline);
|
|
64
|
+
await writeIndexModuleCSS(targetDir);
|
|
65
|
+
console.log(' ā
Landing page created\n');
|
|
66
|
+
// Step 10: Create custom CSS
|
|
67
|
+
console.log('9. Creating custom theme...');
|
|
68
|
+
await writeCustomCSS(targetDir, config.theme || 'default');
|
|
69
|
+
console.log(' ā
Theme configured\n');
|
|
70
|
+
console.log('ā
Setup complete!\n');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Quick setup with defaults
|
|
74
|
+
*/
|
|
75
|
+
export async function quickSetup(projectRoot) {
|
|
76
|
+
const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
|
|
77
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
78
|
+
// Check if docs exist
|
|
79
|
+
if (!await fs.pathExists(docsPath)) {
|
|
80
|
+
throw new Error('No documentation found.\n' +
|
|
81
|
+
'Create documentation by completing your first increment:\n' +
|
|
82
|
+
' /specweave:increment "your feature"');
|
|
83
|
+
}
|
|
84
|
+
const config = {
|
|
85
|
+
title: 'SpecWeave Documentation',
|
|
86
|
+
tagline: 'Spec-Driven Development Framework',
|
|
87
|
+
url: 'http://localhost',
|
|
88
|
+
baseUrl: '/',
|
|
89
|
+
docsPath: '../docs/internal',
|
|
90
|
+
port: 3000,
|
|
91
|
+
theme: 'default',
|
|
92
|
+
excludeFolders: ['legacy', 'node_modules']
|
|
93
|
+
};
|
|
94
|
+
await setupDocusaurus({
|
|
95
|
+
projectRoot,
|
|
96
|
+
targetDir,
|
|
97
|
+
docsPath,
|
|
98
|
+
config
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Launch preview (setup if needed, then start server)
|
|
103
|
+
*/
|
|
104
|
+
export async function launchPreview(projectRoot, options = {}) {
|
|
105
|
+
const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
|
|
106
|
+
const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
107
|
+
// Setup if not installed or force flag
|
|
108
|
+
if (options.force || !await isDocusaurusInstalled(targetDir)) {
|
|
109
|
+
await quickSetup(projectRoot);
|
|
110
|
+
}
|
|
111
|
+
// Find available port
|
|
112
|
+
const port = options.port || await findAvailablePort(3000, 3010);
|
|
113
|
+
console.log(`Starting server on port ${port}...`);
|
|
114
|
+
// Start dev server
|
|
115
|
+
const server = await startDevServer(targetDir, {
|
|
116
|
+
port,
|
|
117
|
+
openBrowser: options.openBrowser !== false
|
|
118
|
+
});
|
|
119
|
+
console.log(`\nš Documentation available at: ${server.url}`);
|
|
120
|
+
console.log('š Hot reload enabled - edit docs and see changes instantly');
|
|
121
|
+
console.log('š” Press Ctrl+C to stop the server\n');
|
|
122
|
+
return server;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Build static site
|
|
126
|
+
*/
|
|
127
|
+
export async function buildStaticSite(projectRoot) {
|
|
128
|
+
const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
|
|
129
|
+
// Check if installed
|
|
130
|
+
if (!await isDocusaurusInstalled(targetDir)) {
|
|
131
|
+
throw new Error('Docusaurus not installed.\n' +
|
|
132
|
+
'Run: /specweave:docs preview (this will install it)');
|
|
133
|
+
}
|
|
134
|
+
console.log('š¦ Building static documentation site...\n');
|
|
135
|
+
const { spawn } = await import('child_process');
|
|
136
|
+
return new Promise((resolve, reject) => {
|
|
137
|
+
const buildProcess = spawn('npm', ['run', 'build'], {
|
|
138
|
+
cwd: targetDir,
|
|
139
|
+
stdio: 'inherit',
|
|
140
|
+
shell: true
|
|
141
|
+
});
|
|
142
|
+
buildProcess.on('close', (code) => {
|
|
143
|
+
if (code === 0) {
|
|
144
|
+
const buildPath = path.join(targetDir, 'build');
|
|
145
|
+
console.log('\nā
Build complete!');
|
|
146
|
+
console.log(`š Output: ${buildPath}\n`);
|
|
147
|
+
resolve();
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
reject(new Error(`Build failed with code ${code}`));
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
buildProcess.on('error', (error) => {
|
|
154
|
+
reject(new Error(`Failed to start build: ${error.message}`));
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if setup is needed
|
|
160
|
+
*/
|
|
161
|
+
export async function isSetupNeeded(projectRoot) {
|
|
162
|
+
const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
|
|
163
|
+
return !(await isDocusaurusInstalled(targetDir));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get docs site path
|
|
167
|
+
*/
|
|
168
|
+
export function getDocsSitePath(projectRoot) {
|
|
169
|
+
return path.join(projectRoot, '.specweave', 'docs-site');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get docs path
|
|
173
|
+
*/
|
|
174
|
+
export function getDocsPath(projectRoot) {
|
|
175
|
+
return path.join(projectRoot, '.specweave', 'docs', 'internal');
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=docusaurus-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docusaurus-setup.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/docusaurus-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAqB;IACzD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAEnE,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE7C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,OAAO,KAAK;YACxD,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;IAErD,qCAAqC;IACrC,IAAI,CAAC,KAAK,IAAI,MAAM,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,wCAAwC;IACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,yCAAyC;IACzC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;QACjC,QAAQ;QACR,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;QACnE,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,iBAAiB,QAAQ,eAAe,CAAC,CAAC;IAE5E,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE1E,sBAAsB;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,2BAA2B;YAC3B,4DAA4D;YAC5D,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;KAC3C,CAAC;IAEF,MAAM,eAAe,CAAC;QACpB,WAAW;QACX,SAAS;QACT,QAAQ;QACR,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,UAAqE,EAAE;IAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE1E,uCAAuC;IACvC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,sBAAsB;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,KAAK,CAAC,CAAC;IAElD,mBAAmB;IACnB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE;QAC7C,IAAI;QACJ,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,KAAK;KAC3C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAEpE,qBAAqB;IACrB,IAAI,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,6BAA6B;YAC7B,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YAClD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,IAAI,CAAC,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACpE,OAAO,CAAC,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation preview utilities
|
|
3
|
+
* Main exports for Docusaurus setup and management
|
|
4
|
+
*/
|
|
5
|
+
export { setupDocusaurus, quickSetup, launchPreview, buildStaticSite, isSetupNeeded, getDocsSitePath, getDocsPath } from './docusaurus-setup.js';
|
|
6
|
+
export { buildSidebar, writeSidebar, generateSidebarsJS, countDocuments, countCategories } from './sidebar-builder.js';
|
|
7
|
+
export { generateDocusaurusConfig, writeDocusaurusConfig, generatePackageJSON, writePackageJSON, generateCustomCSS, writeCustomCSS, generateIndexPage, writeIndexPage, generateIndexModuleCSS, writeIndexModuleCSS } from './config-generator.js';
|
|
8
|
+
export { checkNodeVersion, checkNpmInstalled, installPackages, installDocusaurus, isDocusaurusInstalled, cleanNpmCache, getPackageVersion, estimateInstallSize, estimateInstallTime } from './package-installer.js';
|
|
9
|
+
export { findAvailablePort, startDevServer, openBrowserUrl, killAllDocusaurusProcesses, isDocusaurusRunning, getServerUrl } from './server-manager.js';
|
|
10
|
+
export * from './types.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAG7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation preview utilities
|
|
3
|
+
* Main exports for Docusaurus setup and management
|
|
4
|
+
*/
|
|
5
|
+
// Main orchestrator
|
|
6
|
+
export { setupDocusaurus, quickSetup, launchPreview, buildStaticSite, isSetupNeeded, getDocsSitePath, getDocsPath } from './docusaurus-setup.js';
|
|
7
|
+
// Sidebar builder
|
|
8
|
+
export { buildSidebar, writeSidebar, generateSidebarsJS, countDocuments, countCategories } from './sidebar-builder.js';
|
|
9
|
+
// Config generator
|
|
10
|
+
export { generateDocusaurusConfig, writeDocusaurusConfig, generatePackageJSON, writePackageJSON, generateCustomCSS, writeCustomCSS, generateIndexPage, writeIndexPage, generateIndexModuleCSS, writeIndexModuleCSS } from './config-generator.js';
|
|
11
|
+
// Package installer
|
|
12
|
+
export { checkNodeVersion, checkNpmInstalled, installPackages, installDocusaurus, isDocusaurusInstalled, cleanNpmCache, getPackageVersion, estimateInstallSize, estimateInstallTime } from './package-installer.js';
|
|
13
|
+
// Server manager
|
|
14
|
+
export { findAvailablePort, startDevServer, openBrowserUrl, killAllDocusaurusProcesses, isDocusaurusRunning, getServerUrl } from './server-manager.js';
|
|
15
|
+
// Types
|
|
16
|
+
export * from './types.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAE/B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,iBAAiB;AACjB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,QAAQ;AACR,cAAc,YAAY,CAAC"}
|