@clidey/dory 0.36.0 โ†’ 0.37.0

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=dory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dory.d.ts","sourceRoot":"","sources":["../dory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,499 @@
1
+ #!/usr/bin/env node
2
+ import { execSync } from 'child_process';
3
+ import { existsSync, rmSync, mkdirSync, cpSync, readFileSync, readdirSync } from 'fs';
4
+ import { resolve, dirname } from 'path';
5
+ import { tmpdir } from 'os';
6
+ import { fileURLToPath } from 'url';
7
+ import { createServer } from 'http';
8
+ import sirv from 'sirv';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+ // Get the root directory of the Dory package
12
+ const getDoryRoot = () => {
13
+ // In development: bin/dory.ts -> root is parent
14
+ // In production (local): bin/dist/dory.js -> root is parent of parent
15
+ // In production (installed): node_modules/@clidey/dory/bin/dist/dory.js -> root is parent of parent
16
+ const isDevelopment = __dirname.endsWith('bin');
17
+ const isLocalDist = __dirname.endsWith(resolve('bin', 'dist'));
18
+ if (isDevelopment) {
19
+ return resolve(__dirname, '..');
20
+ }
21
+ else if (isLocalDist) {
22
+ return resolve(__dirname, '..', '..');
23
+ }
24
+ else {
25
+ // Installed package: node_modules/@clidey/dory/bin/dist/dory.js
26
+ return resolve(__dirname, '..', '..');
27
+ }
28
+ };
29
+ // Get the user's current working directory
30
+ const getUserRoot = () => process.cwd();
31
+ // Count files recursively in a directory (for backup verification)
32
+ const countFiles = (dir) => {
33
+ let count = 0;
34
+ for (const item of readdirSync(dir, { withFileTypes: true })) {
35
+ if (item.isDirectory()) {
36
+ count += countFiles(resolve(dir, item.name));
37
+ }
38
+ else {
39
+ count++;
40
+ }
41
+ }
42
+ return count;
43
+ };
44
+ // Detect which package manager is available (prefer pnpm for speed, fallback to npm)
45
+ const getPackageManager = () => {
46
+ try {
47
+ execSync('pnpm --version', { stdio: 'ignore' });
48
+ return { run: 'pnpm run', exec: 'pnpm exec' };
49
+ }
50
+ catch {
51
+ try {
52
+ execSync('npm --version', { stdio: 'ignore' });
53
+ return { run: 'npm run', exec: 'npx' };
54
+ }
55
+ catch {
56
+ console.error('โŒ No package manager found');
57
+ console.error(' Install npm or pnpm to use Dory');
58
+ console.error(' npm: https://nodejs.org/');
59
+ console.error(' pnpm: npm install -g pnpm');
60
+ process.exit(1);
61
+ }
62
+ }
63
+ };
64
+ const validateDoryConfig = (config) => {
65
+ if (!config || typeof config !== 'object') {
66
+ throw new Error('Configuration must be a valid object');
67
+ }
68
+ // Add more validation as needed
69
+ };
70
+ const commands = {
71
+ build: () => {
72
+ console.log('๐ŸŸ Dory is ready to build your docs!');
73
+ const userRoot = getUserRoot();
74
+ const doryRoot = getDoryRoot();
75
+ const doryConfigPath = resolve(userRoot, 'dory.json');
76
+ const tempDocsDir = resolve(doryRoot, 'docs');
77
+ const doryDistDir = resolve(doryRoot, 'dist');
78
+ const userDistDir = resolve(userRoot, 'dist');
79
+ // Step 1: Validate prerequisites before making any changes
80
+ console.log('๐Ÿ” Validating project structure...');
81
+ if (!existsSync(doryConfigPath)) {
82
+ console.error('โŒ dory.json not found in current directory');
83
+ console.error(` Looking for: ${doryConfigPath}`);
84
+ console.error(' Create a dory.json file to configure your documentation site');
85
+ process.exit(1);
86
+ }
87
+ // Read and validate dory.json
88
+ let config;
89
+ try {
90
+ const configContent = readFileSync(doryConfigPath, 'utf8');
91
+ config = JSON.parse(configContent);
92
+ validateDoryConfig(config);
93
+ console.log(`๐Ÿ“‹ Building: ${config.name || 'Documentation'}`);
94
+ }
95
+ catch (error) {
96
+ console.error('โŒ Failed to parse dory.json:');
97
+ if (error instanceof Error) {
98
+ console.error(` ${error.message}`);
99
+ }
100
+ process.exit(1);
101
+ }
102
+ // Detect package manager
103
+ const pm = getPackageManager();
104
+ // Step 2: Backup existing docs directory to a safe temp location
105
+ console.log('๐Ÿงน Preparing workspace...');
106
+ const docsExistedBefore = existsSync(tempDocsDir);
107
+ const safeBackupDir = docsExistedBefore
108
+ ? resolve(tmpdir(), `dory-backup-${Date.now()}`)
109
+ : null;
110
+ if (docsExistedBefore && safeBackupDir) {
111
+ console.log('๐Ÿ’พ Backing up existing docs directory...');
112
+ cpSync(tempDocsDir, safeBackupDir, { recursive: true, force: true });
113
+ // Verify backup integrity by comparing file counts
114
+ const origCount = countFiles(tempDocsDir);
115
+ const backupCount = countFiles(safeBackupDir);
116
+ if (origCount !== backupCount) {
117
+ console.error(`โŒ Backup verification failed (expected ${origCount} files, got ${backupCount})`);
118
+ console.error(` Backup location: ${safeBackupDir}`);
119
+ process.exit(1);
120
+ }
121
+ rmSync(tempDocsDir, { recursive: true, force: true });
122
+ }
123
+ try {
124
+ // Step 3: Copy user files to temp docs directory
125
+ mkdirSync(tempDocsDir, { recursive: true });
126
+ console.log('๐Ÿ“ Gathering project files...');
127
+ // Define files/dirs to exclude
128
+ const excludeItems = new Set([
129
+ 'node_modules',
130
+ 'dist',
131
+ '.git',
132
+ '.github',
133
+ 'docs',
134
+ '.DS_Store',
135
+ '.env',
136
+ '.env.local',
137
+ 'pnpm-lock.yaml',
138
+ 'package-lock.json',
139
+ 'yarn.lock'
140
+ ]);
141
+ const items = readdirSync(userRoot);
142
+ let copiedCount = 0;
143
+ for (const item of items) {
144
+ if (excludeItems.has(item)) {
145
+ continue;
146
+ }
147
+ const srcPath = resolve(userRoot, item);
148
+ const destPath = resolve(tempDocsDir, item);
149
+ try {
150
+ cpSync(srcPath, destPath, { recursive: true, force: true });
151
+ copiedCount++;
152
+ }
153
+ catch (error) {
154
+ console.warn(`โš ๏ธ Could not copy ${item}: ${error instanceof Error ? error.message : 'unknown error'}`);
155
+ }
156
+ }
157
+ console.log(`โœ… Copied ${copiedCount} items`);
158
+ // Verify critical files exist
159
+ const doryJsonPath = resolve(tempDocsDir, 'dory.json');
160
+ if (!existsSync(doryJsonPath)) {
161
+ console.error('โŒ dory.json was not copied to docs directory');
162
+ console.error(` Expected: ${doryJsonPath}`);
163
+ console.error(' This file is required for the build');
164
+ process.exit(1);
165
+ }
166
+ // Step 4: Run the build
167
+ console.log('โšก Building documentation...');
168
+ try {
169
+ execSync(`${pm.run} build:docs`, {
170
+ stdio: 'inherit',
171
+ cwd: doryRoot,
172
+ env: { ...process.env }
173
+ });
174
+ }
175
+ catch (error) {
176
+ console.error('โŒ Build failed');
177
+ console.error(' Check the error messages above for details');
178
+ throw error;
179
+ }
180
+ // Step 5: Verify build output
181
+ console.log('๐Ÿ” Verifying build output...');
182
+ if (!existsSync(doryDistDir)) {
183
+ console.error('โŒ Build completed but dist folder was not created');
184
+ console.error(` Expected: ${doryDistDir}`);
185
+ process.exit(1);
186
+ }
187
+ const indexHtml = resolve(doryDistDir, 'index.html');
188
+ if (!existsSync(indexHtml)) {
189
+ console.error('โŒ Build incomplete: index.html not found');
190
+ console.error(' The build may have failed silently');
191
+ process.exit(1);
192
+ }
193
+ // Check if dist has content
194
+ const distFiles = readdirSync(doryDistDir);
195
+ if (distFiles.length === 0) {
196
+ console.error('โŒ Build completed but dist folder is empty');
197
+ process.exit(1);
198
+ }
199
+ console.log('๐ŸŽ‰ Build completed successfully!');
200
+ // Step 6: Copy dist to user's directory
201
+ console.log('๐Ÿ“ฆ Copying build output...');
202
+ // Only copy if they're different directories
203
+ if (doryDistDir !== userDistDir) {
204
+ if (existsSync(userDistDir)) {
205
+ rmSync(userDistDir, { recursive: true, force: true });
206
+ }
207
+ cpSync(doryDistDir, userDistDir, { recursive: true, force: true });
208
+ }
209
+ console.log('โœจ Documentation ready in dist/');
210
+ // Step 6.5: Build embed files
211
+ console.log('๐Ÿ“ฆ Building embed files...');
212
+ try {
213
+ // Build embed loader
214
+ console.log(' Building embed loader...');
215
+ execSync(`${pm.exec} vite build -c vite.config.embed-loader.ts`, {
216
+ stdio: 'inherit',
217
+ cwd: doryRoot,
218
+ env: { ...process.env }
219
+ });
220
+ // Build embed widget
221
+ console.log(' Building embed widget...');
222
+ execSync(`${pm.exec} vite build -c vite.config.embed-widget.ts`, {
223
+ stdio: 'inherit',
224
+ cwd: doryRoot,
225
+ env: { ...process.env }
226
+ });
227
+ // Copy embed files to user's dist if different
228
+ if (doryDistDir !== userDistDir) {
229
+ const embedFiles = ['embed.js', 'embed-widget.js', 'embed.css'];
230
+ embedFiles.forEach(file => {
231
+ const srcPath = resolve(doryDistDir, file);
232
+ const destPath = resolve(userDistDir, file);
233
+ if (existsSync(srcPath)) {
234
+ cpSync(srcPath, destPath, { force: true });
235
+ }
236
+ });
237
+ // Copy any chunk files (embed-*.js)
238
+ const files = readdirSync(doryDistDir);
239
+ files.forEach(file => {
240
+ if (file.startsWith('embed-') && file.endsWith('.js')) {
241
+ const srcPath = resolve(doryDistDir, file);
242
+ const destPath = resolve(userDistDir, file);
243
+ cpSync(srcPath, destPath, { force: true });
244
+ }
245
+ });
246
+ }
247
+ console.log('โœจ Embed files built successfully!');
248
+ console.log('');
249
+ console.log(' ๐Ÿ“ Add to your site:');
250
+ console.log(' <script src="https://your-docs.com/embed.js"></script>');
251
+ console.log(' <button onclick="DoryDocs.open()">Help</button>');
252
+ console.log('');
253
+ }
254
+ catch (error) {
255
+ console.warn('โš ๏ธ Embed build failed, but main build succeeded');
256
+ console.warn(' Your documentation site is still available at dist/');
257
+ if (error instanceof Error) {
258
+ console.warn(` Error: ${error.message}`);
259
+ }
260
+ }
261
+ }
262
+ finally {
263
+ // Step 7: Always clean up and restore backup
264
+ console.log('๐Ÿงน Cleaning up...');
265
+ if (docsExistedBefore && safeBackupDir && existsSync(safeBackupDir)) {
266
+ console.log('๐Ÿ“ฆ Restoring original docs directory...');
267
+ try {
268
+ if (existsSync(tempDocsDir)) {
269
+ rmSync(tempDocsDir, { recursive: true, force: true });
270
+ }
271
+ cpSync(safeBackupDir, tempDocsDir, { recursive: true, force: true });
272
+ // Verify restoration succeeded before deleting backup
273
+ const restoredCount = countFiles(tempDocsDir);
274
+ const backupCount = countFiles(safeBackupDir);
275
+ if (restoredCount === backupCount) {
276
+ rmSync(safeBackupDir, { recursive: true, force: true });
277
+ }
278
+ else {
279
+ console.warn(`โš ๏ธ Restore verification mismatch โ€” backup preserved at: ${safeBackupDir}`);
280
+ }
281
+ }
282
+ catch (error) {
283
+ console.error('โŒ Failed to restore docs directory!');
284
+ console.error(` Backup is preserved at: ${safeBackupDir}`);
285
+ console.error(' You can manually restore by running:');
286
+ console.error(` cp -r "${safeBackupDir}" "${tempDocsDir}"`);
287
+ if (error instanceof Error) {
288
+ console.error(` Error: ${error.message}`);
289
+ }
290
+ }
291
+ }
292
+ else if (!docsExistedBefore) {
293
+ try {
294
+ if (existsSync(tempDocsDir)) {
295
+ rmSync(tempDocsDir, { recursive: true, force: true });
296
+ }
297
+ }
298
+ catch (error) {
299
+ console.warn('โš ๏ธ Could not remove temporary docs directory');
300
+ }
301
+ }
302
+ // Clean up doryDistDir if it's different from userDistDir
303
+ try {
304
+ if (doryDistDir !== userDistDir && existsSync(doryDistDir)) {
305
+ rmSync(doryDistDir, { recursive: true, force: true });
306
+ }
307
+ }
308
+ catch (error) {
309
+ console.warn('โš ๏ธ Could not clean up dory dist directory');
310
+ }
311
+ console.log('โœ… Done!');
312
+ }
313
+ },
314
+ preview: () => {
315
+ console.log('๐Ÿ‘€ Starting docs preview...');
316
+ const userRoot = getUserRoot();
317
+ const distDir = resolve(userRoot, 'dist');
318
+ let port = parseInt(process.env.PORT || '3000', 10);
319
+ // Validate dist folder exists
320
+ if (!existsSync(distDir)) {
321
+ console.error('โŒ dist folder not found');
322
+ console.error(` Looking for: ${distDir}`);
323
+ console.error(' Run "dory build" first to generate the documentation');
324
+ process.exit(1);
325
+ }
326
+ // Check if dist has content
327
+ const distFiles = readdirSync(distDir);
328
+ if (distFiles.length === 0) {
329
+ console.error('โŒ dist folder is empty');
330
+ console.error(' Run "dory build" to generate documentation');
331
+ process.exit(1);
332
+ }
333
+ const serve = sirv(distDir, {
334
+ dev: false,
335
+ single: true,
336
+ etag: true,
337
+ gzip: true,
338
+ brotli: true,
339
+ });
340
+ const server = createServer((req, res) => {
341
+ serve(req, res);
342
+ });
343
+ const tryPort = (currentPort) => {
344
+ server.listen(currentPort)
345
+ .on('listening', () => {
346
+ console.log(`๐Ÿš€ Documentation live at http://localhost:${currentPort}`);
347
+ console.log(' Press Ctrl+C to stop the server');
348
+ })
349
+ .on('error', (err) => {
350
+ if (err.code === 'EADDRINUSE') {
351
+ console.log(`โš ๏ธ Port ${currentPort} in use, trying ${currentPort + 1}...`);
352
+ tryPort(currentPort + 1);
353
+ }
354
+ else {
355
+ console.error('โŒ Failed to start server:', err.message);
356
+ process.exit(1);
357
+ }
358
+ });
359
+ };
360
+ tryPort(port);
361
+ },
362
+ 'verify:content': async () => {
363
+ const args = process.argv.slice(3);
364
+ let content = '';
365
+ let fileName = '';
366
+ // Parse arguments
367
+ for (let i = 0; i < args.length; i++) {
368
+ if (args[i] === '--content' && i + 1 < args.length) {
369
+ content = args[i + 1];
370
+ break;
371
+ }
372
+ else if (args[i] === '--file' && i + 1 < args.length) {
373
+ const filePath = resolve(getUserRoot(), args[i + 1]);
374
+ if (!existsSync(filePath)) {
375
+ console.error(`โŒ File not found: ${filePath}`);
376
+ process.exit(1);
377
+ }
378
+ content = readFileSync(filePath, 'utf8');
379
+ fileName = filePath;
380
+ break;
381
+ }
382
+ }
383
+ if (!content) {
384
+ console.error('โŒ --content or --file argument is required');
385
+ console.log('Usage:');
386
+ console.log(' dory verify:content --content "<mdx-content>"');
387
+ console.log(' dory verify:content --file <path-to-mdx-file>');
388
+ process.exit(1);
389
+ }
390
+ try {
391
+ const doryRoot = getDoryRoot();
392
+ const processorPath = resolve(doryRoot, 'src', 'mdx', 'processor.ts');
393
+ if (!existsSync(processorPath)) {
394
+ console.error('โŒ MDX processor not found');
395
+ console.error(' This feature requires Dory source files');
396
+ process.exit(1);
397
+ }
398
+ // Use the shared MDX processor that matches the main build exactly
399
+ const { verifyMdxContent } = await import(processorPath);
400
+ const result = await verifyMdxContent(content, fileName);
401
+ if (!result.valid) {
402
+ throw result.error;
403
+ }
404
+ // Silent success - no output means no errors
405
+ }
406
+ catch (error) {
407
+ console.error('โŒ MDX compilation failed:');
408
+ if (error instanceof Error) {
409
+ console.error(` ${error.message}`);
410
+ // Provide more detailed error information if available
411
+ const errorWithPosition = error;
412
+ if (errorWithPosition.line !== undefined && errorWithPosition.column !== undefined) {
413
+ console.error(` at line ${errorWithPosition.line}, column ${errorWithPosition.column}`);
414
+ }
415
+ if (errorWithPosition.source) {
416
+ console.error(' Source:', errorWithPosition.source);
417
+ }
418
+ }
419
+ process.exit(1);
420
+ }
421
+ },
422
+ version: () => {
423
+ const doryRoot = getDoryRoot();
424
+ const packageJsonPath = resolve(doryRoot, 'package.json');
425
+ try {
426
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
427
+ console.log(`๐ŸŸ Dory v${packageJson.version}`);
428
+ }
429
+ catch (error) {
430
+ console.error('โŒ Failed to read version information');
431
+ if (error instanceof Error) {
432
+ console.error(` ${error.message}`);
433
+ }
434
+ process.exit(1);
435
+ }
436
+ },
437
+ help: () => {
438
+ console.log(`
439
+ ๐ŸŸ Dory CLI - Documentation Builder
440
+
441
+ Usage:
442
+ dory <command> [options]
443
+
444
+ Commands:
445
+ build Build your documentation site
446
+ Requirements: dory.json in current directory
447
+ Output: dist/ folder with static site
448
+
449
+ preview Preview built documentation
450
+ Requirements: dist/ folder (run build first)
451
+ Starts local server on port 3000
452
+
453
+ verify:content Verify MDX content compilation
454
+ Options: --content "<mdx>" or --file <path>
455
+ Silent on success, shows errors on failure
456
+
457
+ version Show Dory version
458
+
459
+ help Show this help message
460
+
461
+ Examples:
462
+ dory build
463
+ dory preview
464
+ dory verify:content --content "# Hello World"
465
+ dory verify:content --file docs/intro.mdx
466
+ dory version
467
+
468
+ For more information, visit: https://github.com/clidey/dory
469
+ `);
470
+ }
471
+ };
472
+ // Parse command line arguments
473
+ const command = process.argv[2];
474
+ async function runCommand() {
475
+ if (!command || command === 'help' || command === '--help' || command === '-h') {
476
+ commands.help();
477
+ return;
478
+ }
479
+ if (command in commands) {
480
+ await commands[command]();
481
+ }
482
+ else {
483
+ console.error(`โŒ Unknown command: ${command}`);
484
+ console.log(' Run "dory help" for available commands');
485
+ process.exit(1);
486
+ }
487
+ }
488
+ runCommand().catch((error) => {
489
+ console.error('โŒ Command failed');
490
+ if (error instanceof Error) {
491
+ console.error(` ${error.message}`);
492
+ if (error.stack && process.env.DEBUG) {
493
+ console.error('\nStack trace:');
494
+ console.error(error.stack);
495
+ }
496
+ }
497
+ process.exit(1);
498
+ });
499
+ //# sourceMappingURL=dory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dory.js","sourceRoot":"","sources":["../dory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clidey/dory",
3
3
  "private": false,
4
- "version": "0.36.0",
4
+ "version": "0.37.0",
5
5
  "type": "module",
6
6
  "description": "A CLI tool for building and previewing documentation sites",
7
7
  "keywords": [