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.
Files changed (70) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/dist/adapters/adapter-loader.d.ts +4 -4
  3. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  4. package/dist/adapters/adapter-loader.js +8 -7
  5. package/dist/adapters/adapter-loader.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +12 -1
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/utils/docs-preview/config-generator.d.ts +46 -0
  10. package/dist/utils/docs-preview/config-generator.d.ts.map +1 -0
  11. package/dist/utils/docs-preview/config-generator.js +377 -0
  12. package/dist/utils/docs-preview/config-generator.js.map +1 -0
  13. package/dist/utils/docs-preview/docusaurus-setup.d.ts +38 -0
  14. package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
  15. package/dist/utils/docs-preview/docusaurus-setup.js +177 -0
  16. package/dist/utils/docs-preview/docusaurus-setup.js.map +1 -0
  17. package/dist/utils/docs-preview/index.d.ts +11 -0
  18. package/dist/utils/docs-preview/index.d.ts.map +1 -0
  19. package/dist/utils/docs-preview/index.js +17 -0
  20. package/dist/utils/docs-preview/index.js.map +1 -0
  21. package/dist/utils/docs-preview/package-installer.d.ts +42 -0
  22. package/dist/utils/docs-preview/package-installer.d.ts.map +1 -0
  23. package/dist/utils/docs-preview/package-installer.js +182 -0
  24. package/dist/utils/docs-preview/package-installer.js.map +1 -0
  25. package/dist/utils/docs-preview/server-manager.d.ts +30 -0
  26. package/dist/utils/docs-preview/server-manager.d.ts.map +1 -0
  27. package/dist/utils/docs-preview/server-manager.js +207 -0
  28. package/dist/utils/docs-preview/server-manager.js.map +1 -0
  29. package/dist/utils/docs-preview/sidebar-builder.d.ts +31 -0
  30. package/dist/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
  31. package/dist/utils/docs-preview/sidebar-builder.js +202 -0
  32. package/dist/utils/docs-preview/sidebar-builder.js.map +1 -0
  33. package/dist/utils/docs-preview/types.d.ts +60 -0
  34. package/dist/utils/docs-preview/types.d.ts.map +1 -0
  35. package/dist/utils/docs-preview/types.js +5 -0
  36. package/dist/utils/docs-preview/types.js.map +1 -0
  37. package/dist/utils/docs-preview.bak/config-generator.d.ts +46 -0
  38. package/dist/utils/docs-preview.bak/config-generator.d.ts.map +1 -0
  39. package/dist/utils/docs-preview.bak/config-generator.js +377 -0
  40. package/dist/utils/docs-preview.bak/config-generator.js.map +1 -0
  41. package/dist/utils/docs-preview.bak/package-installer.d.ts +42 -0
  42. package/dist/utils/docs-preview.bak/package-installer.d.ts.map +1 -0
  43. package/dist/utils/docs-preview.bak/package-installer.js +182 -0
  44. package/dist/utils/docs-preview.bak/package-installer.js.map +1 -0
  45. package/dist/utils/docs-preview.bak/server-manager.d.ts +30 -0
  46. package/dist/utils/docs-preview.bak/server-manager.d.ts.map +1 -0
  47. package/dist/utils/docs-preview.bak/server-manager.js +207 -0
  48. package/dist/utils/docs-preview.bak/server-manager.js.map +1 -0
  49. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +31 -0
  50. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +1 -0
  51. package/dist/utils/docs-preview.bak/sidebar-builder.js +202 -0
  52. package/dist/utils/docs-preview.bak/sidebar-builder.js.map +1 -0
  53. package/dist/utils/docs-preview.bak/types.d.ts +60 -0
  54. package/dist/utils/docs-preview.bak/types.d.ts.map +1 -0
  55. package/dist/utils/docs-preview.bak/types.js +5 -0
  56. package/dist/utils/docs-preview.bak/types.js.map +1 -0
  57. package/package.json +1 -1
  58. package/src/templates/.gitattributes.template +35 -0
  59. package/dist/cli/commands/plugin.js +0 -322
  60. package/dist/cli/commands/plugin.js.map +0 -1
  61. package/dist/core/plugin-detector.d.ts +0 -97
  62. package/dist/core/plugin-detector.d.ts.map +0 -1
  63. package/dist/core/plugin-detector.js +0 -374
  64. package/dist/core/plugin-detector.js.map +0 -1
  65. package/dist/core/plugin-manager.d.ts +0 -144
  66. package/dist/core/plugin-manager.d.ts.map +0 -1
  67. package/dist/core/plugin-manager.js +0 -393
  68. package/dist/core/plugin-manager.js.map +0 -1
  69. package/dist/utils/plugin-detection.js +0 -229
  70. package/dist/utils/plugin-detection.js.map +0 -1
@@ -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/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/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/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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Server manager for Docusaurus dev server
3
+ * Handles port finding, server start/stop, browser opening
4
+ */
5
+ import { spawn } from 'child_process';
6
+ import * as net from 'net';
7
+ import { execFileNoThrow } from '../execFileNoThrow.js';
8
+ /**
9
+ * Find an available port in the given range
10
+ */
11
+ export async function findAvailablePort(startPort = 3000, endPort = 3010) {
12
+ for (let port = startPort; port <= endPort; port++) {
13
+ if (await isPortAvailable(port)) {
14
+ return port;
15
+ }
16
+ }
17
+ throw new Error(`No available ports found in range ${startPort}-${endPort}`);
18
+ }
19
+ /**
20
+ * Check if a port is available
21
+ */
22
+ function isPortAvailable(port) {
23
+ return new Promise((resolve) => {
24
+ const server = net.createServer();
25
+ server.once('error', () => {
26
+ resolve(false);
27
+ });
28
+ server.once('listening', () => {
29
+ server.close();
30
+ resolve(true);
31
+ });
32
+ server.listen(port);
33
+ });
34
+ }
35
+ /**
36
+ * Start Docusaurus dev server
37
+ */
38
+ export async function startDevServer(targetDir, options) {
39
+ const { port, openBrowser, host = 'localhost' } = options;
40
+ // Check if port is available
41
+ if (!await isPortAvailable(port)) {
42
+ throw new Error(`Port ${port} is already in use`);
43
+ }
44
+ // Start Docusaurus dev server
45
+ const process = spawn('npm', ['run', 'start', '--', '--port', port.toString(), '--host', host], {
46
+ cwd: targetDir,
47
+ stdio: ['ignore', 'pipe', 'pipe'],
48
+ shell: true
49
+ });
50
+ const url = `http://${host}:${port}`;
51
+ // Wait for server to be ready
52
+ await waitForServer(url, 30000); // 30 second timeout
53
+ // Open browser if requested
54
+ if (openBrowser) {
55
+ await openBrowserUrl(url);
56
+ }
57
+ return {
58
+ pid: process.pid,
59
+ port,
60
+ url,
61
+ stop: async () => {
62
+ await stopServer(process);
63
+ }
64
+ };
65
+ }
66
+ /**
67
+ * Wait for server to be ready
68
+ */
69
+ function waitForServer(url, timeout) {
70
+ return new Promise((resolve, reject) => {
71
+ const startTime = Date.now();
72
+ const check = async () => {
73
+ try {
74
+ const http = await import('http');
75
+ const urlObj = new URL(url);
76
+ const req = http.get({
77
+ hostname: urlObj.hostname,
78
+ port: urlObj.port,
79
+ path: urlObj.pathname,
80
+ timeout: 2000
81
+ }, (res) => {
82
+ if (res.statusCode === 200 || res.statusCode === 304) {
83
+ resolve();
84
+ }
85
+ else {
86
+ scheduleNextCheck();
87
+ }
88
+ });
89
+ req.on('error', () => {
90
+ scheduleNextCheck();
91
+ });
92
+ req.on('timeout', () => {
93
+ req.destroy();
94
+ scheduleNextCheck();
95
+ });
96
+ }
97
+ catch {
98
+ scheduleNextCheck();
99
+ }
100
+ };
101
+ const scheduleNextCheck = () => {
102
+ if (Date.now() - startTime > timeout) {
103
+ reject(new Error(`Server failed to start within ${timeout}ms`));
104
+ }
105
+ else {
106
+ setTimeout(check, 1000);
107
+ }
108
+ };
109
+ check();
110
+ });
111
+ }
112
+ /**
113
+ * Stop server process
114
+ */
115
+ function stopServer(process) {
116
+ return new Promise((resolve) => {
117
+ if (!process.pid) {
118
+ resolve();
119
+ return;
120
+ }
121
+ process.once('exit', () => {
122
+ resolve();
123
+ });
124
+ // Try graceful shutdown first
125
+ process.kill('SIGTERM');
126
+ // Force kill after 5 seconds if still running
127
+ setTimeout(() => {
128
+ if (process.pid) {
129
+ process.kill('SIGKILL');
130
+ }
131
+ }, 5000);
132
+ });
133
+ }
134
+ /**
135
+ * Open URL in default browser
136
+ */
137
+ export async function openBrowserUrl(url) {
138
+ const { default: open } = await import('open');
139
+ await open(url);
140
+ }
141
+ /**
142
+ * Kill all Docusaurus processes (SAFE - uses execFileNoThrow)
143
+ */
144
+ export async function killAllDocusaurusProcesses() {
145
+ const platform = process.platform;
146
+ try {
147
+ if (platform === 'win32') {
148
+ // Windows: Use tasklist and taskkill
149
+ const listResult = await execFileNoThrow('tasklist', ['/FI', 'IMAGENAME eq node.exe', '/FO', 'CSV']);
150
+ if (listResult.status !== 0) {
151
+ return 0;
152
+ }
153
+ const processes = listResult.stdout
154
+ .split('\n')
155
+ .filter(line => line.includes('docusaurus'))
156
+ .map(line => {
157
+ const match = line.match(/"([^"]+)","\d+"/);
158
+ return match ? match[1] : null;
159
+ })
160
+ .filter(Boolean);
161
+ for (const pid of processes) {
162
+ await execFileNoThrow('taskkill', ['/F', '/PID', pid]);
163
+ }
164
+ return processes.length;
165
+ }
166
+ else {
167
+ // Unix-like (macOS, Linux): Use ps and kill
168
+ const psResult = await execFileNoThrow('ps', ['aux']);
169
+ if (psResult.status !== 0) {
170
+ return 0;
171
+ }
172
+ const processes = psResult.stdout
173
+ .split('\n')
174
+ .filter(line => line.includes('docusaurus') && !line.includes('grep'))
175
+ .map(line => {
176
+ const parts = line.trim().split(/\s+/);
177
+ return parts[1]; // PID is second column
178
+ });
179
+ for (const pid of processes) {
180
+ try {
181
+ await execFileNoThrow('kill', [pid]);
182
+ }
183
+ catch {
184
+ // Ignore errors (process may have already exited)
185
+ }
186
+ }
187
+ return processes.length;
188
+ }
189
+ }
190
+ catch (error) {
191
+ // No processes found or error occurred
192
+ return 0;
193
+ }
194
+ }
195
+ /**
196
+ * Check if Docusaurus server is running
197
+ */
198
+ export async function isDocusaurusRunning(port) {
199
+ return !(await isPortAvailable(port));
200
+ }
201
+ /**
202
+ * Get server URL
203
+ */
204
+ export function getServerUrl(port, host = 'localhost') {
205
+ return `http://${host}:${port}`;
206
+ }
207
+ //# sourceMappingURL=server-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/server-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Sidebar builder for Docusaurus
3
+ * Automatically generates sidebar.js from .specweave/docs/ folder structure
4
+ */
5
+ import { Sidebar } from './types.js';
6
+ export interface SidebarBuilderOptions {
7
+ docsPath: string;
8
+ excludeFolders?: string[];
9
+ maxDepth?: number;
10
+ }
11
+ /**
12
+ * Build sidebar from folder structure
13
+ */
14
+ export declare function buildSidebar(options: SidebarBuilderOptions): Promise<Sidebar>;
15
+ /**
16
+ * Generate sidebars.js content as string
17
+ */
18
+ export declare function generateSidebarsJS(sidebar: Sidebar): string;
19
+ /**
20
+ * Write sidebar to file
21
+ */
22
+ export declare function writeSidebar(filePath: string, sidebar: Sidebar): Promise<void>;
23
+ /**
24
+ * Count total documents in sidebar
25
+ */
26
+ export declare function countDocuments(sidebar: Sidebar): number;
27
+ /**
28
+ * Count total categories in sidebar
29
+ */
30
+ export declare function countCategories(sidebar: Sidebar): number;
31
+ //# sourceMappingURL=sidebar-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview/sidebar-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA0BlD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBnF;AAwHD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAevD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBxD"}