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.bak/config-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package installer for Docusaurus dependencies
|
|
3
|
+
* Handles npm install with progress tracking
|
|
4
|
+
*/
|
|
5
|
+
import { InstallOptions, NodeVersion } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Check Node.js version
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkNodeVersion(): Promise<NodeVersion>;
|
|
10
|
+
/**
|
|
11
|
+
* Check if npm is installed
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkNpmInstalled(): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Install npm packages
|
|
16
|
+
*/
|
|
17
|
+
export declare function installPackages(options: InstallOptions): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Install Docusaurus packages
|
|
20
|
+
*/
|
|
21
|
+
export declare function installDocusaurus(targetDir: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Check if Docusaurus is installed
|
|
24
|
+
*/
|
|
25
|
+
export declare function isDocusaurusInstalled(targetDir: string): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Clean npm cache
|
|
28
|
+
*/
|
|
29
|
+
export declare function cleanNpmCache(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Get installed npm package version
|
|
32
|
+
*/
|
|
33
|
+
export declare function getPackageVersion(targetDir: string, packageName: string): Promise<string | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Estimate install size (rough estimate)
|
|
36
|
+
*/
|
|
37
|
+
export declare function estimateInstallSize(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Estimate install time (rough estimate)
|
|
40
|
+
*/
|
|
41
|
+
export declare function estimateInstallTime(): string;
|
|
42
|
+
//# sourceMappingURL=package-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-installer.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview.bak/package-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAqB7D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD5E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB/E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAatG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package installer for Docusaurus dependencies
|
|
3
|
+
* Handles npm install with progress tracking
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as fs from 'fs-extra';
|
|
7
|
+
import { spawn } from 'child_process';
|
|
8
|
+
import { execFileNoThrow } from '../execFileNoThrow.js';
|
|
9
|
+
/**
|
|
10
|
+
* Check Node.js version
|
|
11
|
+
*/
|
|
12
|
+
export async function checkNodeVersion() {
|
|
13
|
+
try {
|
|
14
|
+
const result = await execFileNoThrow('node', ['--version']);
|
|
15
|
+
if (result.status !== 0) {
|
|
16
|
+
throw new Error('Node.js not found');
|
|
17
|
+
}
|
|
18
|
+
const versionString = result.stdout.trim().replace('v', '');
|
|
19
|
+
const [major, minor, patch] = versionString.split('.').map(Number);
|
|
20
|
+
return {
|
|
21
|
+
version: versionString,
|
|
22
|
+
major,
|
|
23
|
+
minor,
|
|
24
|
+
patch,
|
|
25
|
+
compatible: major >= 18
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
throw new Error('Node.js not found. Please install Node.js 18+ from https://nodejs.org/');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if npm is installed
|
|
34
|
+
*/
|
|
35
|
+
export async function checkNpmInstalled() {
|
|
36
|
+
try {
|
|
37
|
+
const result = await execFileNoThrow('npm', ['--version']);
|
|
38
|
+
return result.status === 0;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Install npm packages
|
|
46
|
+
*/
|
|
47
|
+
export async function installPackages(options) {
|
|
48
|
+
const { targetDir, packages, dev = false } = options;
|
|
49
|
+
// Ensure target directory exists
|
|
50
|
+
await fs.ensureDir(targetDir);
|
|
51
|
+
// Build npm install command
|
|
52
|
+
const args = ['install'];
|
|
53
|
+
if (dev) {
|
|
54
|
+
args.push('--save-dev');
|
|
55
|
+
}
|
|
56
|
+
args.push(...packages);
|
|
57
|
+
// Spawn npm install process
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const npmProcess = spawn('npm', args, {
|
|
60
|
+
cwd: targetDir,
|
|
61
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
62
|
+
shell: true
|
|
63
|
+
});
|
|
64
|
+
let stdout = '';
|
|
65
|
+
let stderr = '';
|
|
66
|
+
npmProcess.stdout.on('data', (data) => {
|
|
67
|
+
stdout += data.toString();
|
|
68
|
+
// Show progress to console
|
|
69
|
+
process.stdout.write('.');
|
|
70
|
+
});
|
|
71
|
+
npmProcess.stderr.on('data', (data) => {
|
|
72
|
+
stderr += data.toString();
|
|
73
|
+
});
|
|
74
|
+
npmProcess.on('close', (code) => {
|
|
75
|
+
if (code === 0) {
|
|
76
|
+
console.log(' ✅');
|
|
77
|
+
resolve();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(' ❌');
|
|
81
|
+
reject(new Error(`npm install failed with code ${code}\n${stderr}`));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
npmProcess.on('error', (error) => {
|
|
85
|
+
reject(new Error(`Failed to start npm install: ${error.message}`));
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Install Docusaurus packages
|
|
91
|
+
*/
|
|
92
|
+
export async function installDocusaurus(targetDir) {
|
|
93
|
+
const packages = [
|
|
94
|
+
'@docusaurus/core@^3.0.0',
|
|
95
|
+
'@docusaurus/preset-classic@^3.0.0',
|
|
96
|
+
'@docusaurus/theme-mermaid@^3.0.0',
|
|
97
|
+
'@mdx-js/react@^3.0.0',
|
|
98
|
+
'clsx@^2.0.0',
|
|
99
|
+
'prism-react-renderer@^2.1.0',
|
|
100
|
+
'react@^18.0.0',
|
|
101
|
+
'react-dom@^18.0.0'
|
|
102
|
+
];
|
|
103
|
+
const devPackages = [
|
|
104
|
+
'@docusaurus/module-type-aliases@^3.0.0',
|
|
105
|
+
'@docusaurus/types@^3.0.0'
|
|
106
|
+
];
|
|
107
|
+
console.log(' Installing Docusaurus packages...');
|
|
108
|
+
await installPackages({
|
|
109
|
+
targetDir,
|
|
110
|
+
packages,
|
|
111
|
+
dev: false
|
|
112
|
+
});
|
|
113
|
+
console.log(' Installing dev dependencies...');
|
|
114
|
+
await installPackages({
|
|
115
|
+
targetDir,
|
|
116
|
+
packages: devPackages,
|
|
117
|
+
dev: true
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if Docusaurus is installed
|
|
122
|
+
*/
|
|
123
|
+
export async function isDocusaurusInstalled(targetDir) {
|
|
124
|
+
try {
|
|
125
|
+
const packageJsonPath = path.join(targetDir, 'package.json');
|
|
126
|
+
const nodeModulesPath = path.join(targetDir, 'node_modules');
|
|
127
|
+
// Check if package.json exists
|
|
128
|
+
if (!await fs.pathExists(packageJsonPath)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// Check if node_modules exists
|
|
132
|
+
if (!await fs.pathExists(nodeModulesPath)) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
// Check if @docusaurus/core is installed
|
|
136
|
+
const docusaurusCorePath = path.join(nodeModulesPath, '@docusaurus', 'core');
|
|
137
|
+
if (!await fs.pathExists(docusaurusCorePath)) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Clean npm cache
|
|
148
|
+
*/
|
|
149
|
+
export async function cleanNpmCache() {
|
|
150
|
+
await execFileNoThrow('npm', ['cache', 'clean', '--force']);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get installed npm package version
|
|
154
|
+
*/
|
|
155
|
+
export async function getPackageVersion(targetDir, packageName) {
|
|
156
|
+
try {
|
|
157
|
+
const packageJsonPath = path.join(targetDir, 'node_modules', packageName, 'package.json');
|
|
158
|
+
if (!await fs.pathExists(packageJsonPath)) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const packageJson = await fs.readJSON(packageJsonPath);
|
|
162
|
+
return packageJson.version || null;
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Estimate install size (rough estimate)
|
|
170
|
+
*/
|
|
171
|
+
export function estimateInstallSize() {
|
|
172
|
+
// Docusaurus + React + dependencies ≈ 150-200 MB
|
|
173
|
+
return '~150 MB';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Estimate install time (rough estimate)
|
|
177
|
+
*/
|
|
178
|
+
export function estimateInstallTime() {
|
|
179
|
+
// Typically 20-40 seconds depending on network and CPU
|
|
180
|
+
return '~30 seconds';
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=package-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-installer.js","sourceRoot":"","sources":["../../../src/utils/docs-preview.bak/package-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server manager for Docusaurus dev server
|
|
3
|
+
* Handles port finding, server start/stop, browser opening
|
|
4
|
+
*/
|
|
5
|
+
import { ServerOptions, ServerProcess } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Find an available port in the given range
|
|
8
|
+
*/
|
|
9
|
+
export declare function findAvailablePort(startPort?: number, endPort?: number): Promise<number>;
|
|
10
|
+
/**
|
|
11
|
+
* Start Docusaurus dev server
|
|
12
|
+
*/
|
|
13
|
+
export declare function startDevServer(targetDir: string, options: ServerOptions): Promise<ServerProcess>;
|
|
14
|
+
/**
|
|
15
|
+
* Open URL in default browser
|
|
16
|
+
*/
|
|
17
|
+
export declare function openBrowserUrl(url: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Kill all Docusaurus processes (SAFE - uses execFileNoThrow)
|
|
20
|
+
*/
|
|
21
|
+
export declare function killAllDocusaurusProcesses(): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Check if Docusaurus server is running
|
|
24
|
+
*/
|
|
25
|
+
export declare function isDocusaurusRunning(port: number): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Get server URL
|
|
28
|
+
*/
|
|
29
|
+
export declare function getServerUrl(port: number, host?: string): string;
|
|
30
|
+
//# sourceMappingURL=server-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview.bak/server-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1D;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,GAAE,MAAa,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzG;AAsBD;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,aAAa,CAAC,CAiCxB;AA8ED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/D;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAwDlE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAoB,GAAG,MAAM,CAE7E"}
|