md-preview-pdf 1.0.5 → 1.1.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +151 -26
  3. package/dist/converter.d.ts +8 -0
  4. package/dist/converter.d.ts.map +1 -1
  5. package/dist/converter.js +46 -4
  6. package/dist/converter.js.map +1 -1
  7. package/dist/parser/index.d.ts.map +1 -1
  8. package/dist/parser/index.js +81 -1
  9. package/dist/parser/index.js.map +1 -1
  10. package/dist/parser/markdown-parser.d.ts.map +1 -1
  11. package/dist/parser/markdown-parser.js +5 -3
  12. package/dist/parser/markdown-parser.js.map +1 -1
  13. package/dist/renderers/base-styles.d.ts +16 -0
  14. package/dist/renderers/base-styles.d.ts.map +1 -0
  15. package/dist/renderers/base-styles.js +322 -0
  16. package/dist/renderers/base-styles.js.map +1 -0
  17. package/dist/renderers/html-renderer.d.ts.map +1 -1
  18. package/dist/renderers/html-renderer.js +36 -319
  19. package/dist/renderers/html-renderer.js.map +1 -1
  20. package/dist/renderers/katex-styles.d.ts +10 -0
  21. package/dist/renderers/katex-styles.d.ts.map +1 -0
  22. package/dist/renderers/katex-styles.js +54 -0
  23. package/dist/renderers/katex-styles.js.map +1 -0
  24. package/dist/renderers/mermaid-renderer.d.ts.map +1 -1
  25. package/dist/renderers/mermaid-renderer.js +15 -7
  26. package/dist/renderers/mermaid-renderer.js.map +1 -1
  27. package/dist/renderers/pdf-renderer.d.ts.map +1 -1
  28. package/dist/renderers/pdf-renderer.js +110 -4
  29. package/dist/renderers/pdf-renderer.js.map +1 -1
  30. package/dist/themes/colors/github-colors.d.ts +5 -0
  31. package/dist/themes/colors/github-colors.d.ts.map +1 -0
  32. package/dist/themes/colors/github-colors.js +114 -0
  33. package/dist/themes/colors/github-colors.js.map +1 -0
  34. package/dist/themes/colors/github-dark-colors.d.ts +5 -0
  35. package/dist/themes/colors/github-dark-colors.d.ts.map +1 -0
  36. package/dist/themes/colors/github-dark-colors.js +114 -0
  37. package/dist/themes/colors/github-dark-colors.js.map +1 -0
  38. package/dist/themes/colors/vscode-dark-colors.d.ts +6 -0
  39. package/dist/themes/colors/vscode-dark-colors.d.ts.map +1 -0
  40. package/dist/themes/colors/vscode-dark-colors.js +95 -0
  41. package/dist/themes/colors/vscode-dark-colors.js.map +1 -0
  42. package/dist/themes/colors/vscode-light-colors.d.ts +6 -0
  43. package/dist/themes/colors/vscode-light-colors.d.ts.map +1 -0
  44. package/dist/themes/colors/vscode-light-colors.js +96 -0
  45. package/dist/themes/colors/vscode-light-colors.js.map +1 -0
  46. package/dist/themes/github-dark.d.ts +1 -2
  47. package/dist/themes/github-dark.d.ts.map +1 -1
  48. package/dist/themes/github-dark.js +914 -199
  49. package/dist/themes/github-dark.js.map +1 -1
  50. package/dist/themes/github.d.ts +1 -2
  51. package/dist/themes/github.d.ts.map +1 -1
  52. package/dist/themes/github.js +969 -226
  53. package/dist/themes/github.js.map +1 -1
  54. package/dist/themes/vscode-dark.d.ts +1 -1
  55. package/dist/themes/vscode-dark.d.ts.map +1 -1
  56. package/dist/themes/vscode-dark.js +75 -50
  57. package/dist/themes/vscode-dark.js.map +1 -1
  58. package/dist/themes/vscode-light.d.ts +1 -1
  59. package/dist/themes/vscode-light.d.ts.map +1 -1
  60. package/dist/themes/vscode-light.js +55 -31
  61. package/dist/themes/vscode-light.js.map +1 -1
  62. package/dist/types/index.d.ts +2 -0
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/index.js.map +1 -1
  65. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,117 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.0] - 2026-01-11
9
+
10
+ ### Added
11
+ - **Full-width Gantt chart rendering**: Gantt charts now span the entire page width
12
+ - Configured ganttConfig in Mermaid initialization with `useWidth` parameter
13
+ - Optimized padding and margins for better Gantt diagram display
14
+ - Enhanced CSS for `.mermaid-container.gantt` to prevent width constraints
15
+
16
+ - **Official Mermaid theme rendering**: Use official Mermaid themes and validate user selection
17
+ - Removed custom CSS and theme overrides for Mermaid
18
+ - Dark-mode themes (`github-dark`, `vscode-dark`) use Mermaid's `dark` theme
19
+ - Light/default themes (`github`, `github-light`, `vscode-light`) use Mermaid's `default` theme
20
+ - Validate Mermaid theme names; allowed themes: `default`, `forest`, `dark`, `neutral`, `base`
21
+ - Invalid themes now log a warning and fallback to `default`
22
+
23
+ - **Modular CSS rendering architecture**: Improved code organization
24
+ - Extracted base document CSS into separate `base-styles.ts` module
25
+ - Extracted KaTeX styles into separate `katex-styles.ts` module
26
+ - Reduced `html-renderer.ts` complexity for better maintainability
27
+ - Each CSS module independently testable and reusable
28
+
29
+ - **Render YAML front matter as an HTML table**: Render YAML front matter as an HTML table in generated PDFs for clearer metadata presentation ([963b163](https://github.com/anuragkr29/md-preview-pdf/commit/963b163)).
30
+
31
+ - **Enhanced security measures**:
32
+ - Added SRI (Subresource Integrity) hashes to all CDN resources for tamper detection
33
+ - Implemented HTML escaping for document title field to prevent XSS
34
+ - Changed Mermaid security level from `'loose'` to `'antiscript'` for safer diagram rendering
35
+ - Added validation for custom CSS paths to prevent path traversal attacks
36
+ - Added executable path validation for Chrome/Chromium detection
37
+
38
+ ### Improved
39
+ - **Code organization**: CSS generation logic separated into focused modules
40
+ - Better separation of concerns
41
+ - Easier to locate and modify specific CSS rules
42
+ - Improved code reusability
43
+
44
+ ### Fixed
45
+ - Rendering issues for the `github-dark` theme in generated PDFs; removed unused variables and minor cleanups ([e88e723](https://github.com/anuragkr29/md-preview-pdf/commit/e88e723)).
46
+
47
+ ### CI / Tests
48
+ - Added Node 24.x to the GitHub Actions Node matrix (see `.github/workflows/ci.yml`) ([3390c1b](https://github.com/anuragkr29/md-preview-pdf/commit/3390c1b)).
49
+ - Increased Jest timeout to 120s for PDF generation tests to reduce flaky failures (tests/margin-verification.test.ts) ([3390c1b](https://github.com/anuragkr29/md-preview-pdf/commit/3390c1b)).
50
+
51
+ ### Chore
52
+ - Regenerated sample PDFs and updated documentation/changelog metadata ([eebc2d0](https://github.com/anuragkr29/md-preview-pdf/commit/eebc2d0)).
53
+
54
+ ## [1.0.6] - 2026-01-05
55
+
56
+ ### 🔧 Fixed
57
+
58
+ #### System Chrome Fallback for Older OS Versions
59
+ - **Issue**: Bundled Chromium failed on macOS 10.x (Catalina and older) with error: `dyld: cannot load 'Google Chrome for Testing' (load command 0x80000034 is unknown)`
60
+ - **Root Cause**: Chrome for Testing binaries require macOS 11+ / Windows 10 1809+. Older systems are incompatible.
61
+ - **Solution**: Implemented automatic fallback to system-installed Chrome when bundled Chromium fails
62
+ - Automatically detects Chrome installation at common paths
63
+ - Supports environment variable `PUPPETEER_EXECUTABLE_PATH` for custom Chrome location
64
+ - Falls back gracefully with clear error messages if no Chrome found
65
+ - Works on macOS, Windows, and Linux
66
+
67
+ #### Compatibility Improvements
68
+ - Added `findSystemChrome()` function that checks:
69
+ - Environment variable `PUPPETEER_EXECUTABLE_PATH`
70
+ - Common Chrome installation paths (macOS, Windows, Linux)
71
+ - System PATH using `which` (Unix) or `where` (Windows) commands
72
+ - Enhanced browser launch with try-catch fallback mechanism
73
+ - Improved error messages with actionable troubleshooting steps
74
+
75
+ ### 📚 Documentation
76
+
77
+ #### System Requirements (README.md)
78
+ - **macOS**: Minimum macOS 11 (Big Sur). For macOS 10.x, install Google Chrome manually.
79
+ - **Windows**: Minimum Windows 10 (version 1809). Older versions need manual Chrome installation.
80
+ - **Linux**: Ubuntu 18.04+, Debian 10+, Fedora 32+, and most modern distributions.
81
+ - Added memory requirements: 512MB minimum, 1GB+ recommended.
82
+
83
+ #### Troubleshooting Guide (README.md)
84
+ New comprehensive troubleshooting section covering:
85
+ - "dyld: cannot load" error on macOS (Chrome installation solution)
86
+ - "Failed to launch browser" on Windows (Chrome path configuration)
87
+ - Missing dependencies on Linux (package installation commands)
88
+ - Out of memory errors (Node.js memory limits)
89
+ - Slow performance tips (feature toggles)
90
+ - How to get help (issue reporting guidelines)
91
+
92
+ #### Why This Happens
93
+ - **Chromium Compatibility**: Puppeteer downloads Chrome for Testing which has minimum OS requirements
94
+ - **macOS 10.x limitation**: Apple's dyld (dynamic linker) in macOS 10.x doesn't support load command 0x80000034 used by modern Chrome builds
95
+ - **Windows limitation**: Modern Chrome requires Windows 10 1809+ for certain APIs
96
+ - **Solution**: System-installed Chrome has broader OS compatibility and is updated independently
97
+
98
+ ### ✅ Testing
99
+ - ✅ Verified on macOS 11+: Bundled Chromium works
100
+ - ✅ Verified fallback on older systems: System Chrome detected and used
101
+ - ✅ Tested environment variable override
102
+ - ✅ Tested error handling when no Chrome available
103
+
104
+ ### 🎯 Supported Systems
105
+
106
+ | OS | Minimum Version | Notes |
107
+ |----|----------------|-------|
108
+ | macOS | 11 (Big Sur) | Older versions: install Chrome manually |
109
+ | Windows | 10 (1809) | Older versions: install Chrome manually |
110
+ | Linux | Ubuntu 18.04+, Debian 10+ | Most modern distributions supported |
111
+
112
+ ### 🔗 Related Links
113
+ - [Puppeteer System Requirements](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md)
114
+ - [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing/)
115
+ - [Google Chrome Download](https://www.google.com/chrome/)
116
+
117
+ ---
118
+
8
119
  ## [1.0.5] - 2026-01-05
9
120
 
10
121
  ### 🎉 First Official Release with read me updated
package/README.md CHANGED
@@ -22,6 +22,11 @@ A state-of-the-art Markdown to PDF converter that preserves the exact visual app
22
22
  - **Emoji Support**: Convert `:emoji:` shortcodes to unicode
23
23
  - **High-Fidelity Output**: Uses Puppeteer for pixel-perfect PDF generation
24
24
 
25
+ ### What's new in v1.1.0
26
+ - Render YAML front matter as an HTML table in generated PDFs for clearer metadata presentation
27
+ - Comprehensive security hardening (SRI for CDNs, improved escaping, stricter Mermaid security level)
28
+ - Refactored CSS rendering into dedicated modules for improved maintainability
29
+
25
30
  ## 📦 Installation
26
31
 
27
32
  ### From Source (Development)
@@ -70,8 +75,21 @@ md-preview-pdf document.md --page-numbers
70
75
 
71
76
  # Generate table of contents
72
77
  md-preview-pdf document.md --toc
78
+
79
+ # TOC with custom depth
80
+ md-preview-pdf document.md --toc --toc-depth 2
73
81
  ```
74
82
 
83
+ > **Note**: Table of contents generation requires a `${toc}` marker in your markdown file where you want the TOC to appear. Example:
84
+ > ```markdown
85
+ > # My Document
86
+ >
87
+ > ${toc}
88
+ >
89
+ > ## Section 1
90
+ > Content here...
91
+ > ```
92
+
75
93
  ### Programmatic Usage
76
94
 
77
95
  ```typescript
@@ -112,7 +130,7 @@ await converter.cleanup();
112
130
  | `--no-math` | Disable KaTeX math rendering | `true` |
113
131
  | `--no-emoji` | Disable emoji conversion | `true` |
114
132
  | `--no-highlight` | Disable syntax highlighting | `true` |
115
- | `--mermaid-theme <theme>` | Mermaid theme (default, forest, dark, neutral) | `default` |
133
+ | `--mermaid-theme <theme>` | Mermaid theme (default, forest, dark, neutral, base) | `default` |
116
134
  | `--header <template>` | Custom header HTML template | - |
117
135
  | `--footer <template>` | Custom footer HTML template | - |
118
136
  | `--page-numbers` | Add page numbers to footer | `false` |
@@ -138,7 +156,13 @@ md-preview-pdf themes
138
156
 
139
157
  ### Customizing Theme Styling
140
158
 
141
- Each theme is defined as a CSS string in the `src/themes/` directory. To customize a theme:
159
+ Each theme is defined as a CSS string in the `src/themes/` directory. Color palettes are split out into `src/themes/colors/` as separate modules (for example: `github-colors.ts`, `github-dark-colors.ts`, `vscode-light-colors.ts`, `vscode-dark-colors.ts`). To customize a theme you can either edit the theme file itself or adjust the palette module it imports.
160
+
161
+ Tips:
162
+ - Edit `src/themes/colors/*-colors.ts` to change shared color variables used across themes.
163
+ - Or override CSS variables in your own custom stylesheet and pass it via `--css <path>`.
164
+
165
+ To customize a theme:
142
166
 
143
167
  1. **GitHub Light Theme** (`src/themes/github.ts`)
144
168
  - Background color: `#ffffff` (white)
@@ -194,11 +218,37 @@ Supported diagram types:
194
218
  - Class diagrams
195
219
  - State diagrams
196
220
  - Entity Relationship diagrams
197
- - Gantt charts
221
+ - Gantt charts (full-width rendering)
198
222
  - Pie charts
199
223
  - Git graphs
200
224
  - User Journey diagrams
201
225
 
226
+ ### Mermaid Themes and Configuration
227
+
228
+ The converter automatically selects the appropriate Mermaid theme based on your document theme:
229
+
230
+ | Document Theme | Mermaid Theme |
231
+ |---|---|
232
+ | `github` | `default` |
233
+ | `github-dark` | `dark` |
234
+ | `vscode-light` | `default` |
235
+ | `vscode-dark` | `dark` |
236
+
237
+ You can also explicitly set the Mermaid theme via CLI:
238
+
239
+ ```bash
240
+ # Use forest theme
241
+ md-preview-pdf document.md --mermaid-theme forest
242
+
243
+ # Use neutral theme
244
+ md-preview-pdf document.md --mermaid-theme neutral
245
+ ```
246
+
247
+ **Available Mermaid themes**: `default`, `forest`, `dark`, `neutral`, `base`
248
+
249
+ > **Note**: Invalid theme names will trigger a warning and fallback to the `default` theme automatically.
250
+
251
+
202
252
  ## ➗ Math Equations
203
253
 
204
254
  Inline math with single dollar signs:
@@ -224,15 +274,16 @@ Use YAML front matter to configure document-specific options:
224
274
  title: "My Document"
225
275
  author: "John Doe"
226
276
  date: "2024-01-01"
227
- pdf:
277
+ pdfs:
228
278
  format: Letter
229
279
  margin:
230
280
  top: "25mm"
231
281
  bottom: "25mm"
232
- theme: github-dark
233
282
  ---
234
283
  ```
235
284
 
285
+ In v1.1.0 the YAML front matter is also rendered as an HTML table in the generated PDF, providing a clear metadata summary at the top of the document.
286
+
236
287
  ## 📁 Custom Containers
237
288
 
238
289
  ```markdown
@@ -276,27 +327,6 @@ npm run dev -- input.md
276
327
  npm run lint
277
328
  ```
278
329
 
279
- ## 📂 Project Structure
280
-
281
- ```
282
- md-preview-pdf/
283
- ├── src/
284
- │ ├── index.ts # Main entry point
285
- │ ├── cli.ts # CLI interface
286
- │ ├── converter.ts # Main converter class
287
- │ ├── parser/ # Markdown parsing
288
- │ ├── renderers/ # HTML/PDF/Mermaid rendering
289
- │ ├── themes/ # CSS themes
290
- │ ├── utils/ # Utilities
291
- │ └── types/ # TypeScript types
292
- ├── tests/
293
- │ ├── samples/ # Test markdown files
294
- │ └── *.test.ts # Test files
295
- ├── package.json
296
- ├── tsconfig.json
297
- └── README.md
298
- ```
299
-
300
330
  ## 🔧 API Reference
301
331
 
302
332
  ### Converter Class
@@ -348,6 +378,101 @@ interface ConverterOptions {
348
378
  debug?: boolean; // Debug mode
349
379
  }
350
380
  ```
381
+ ## 💻 System Requirements
382
+
383
+ ### Minimum Requirements
384
+ - **Node.js**: >= 18.0.0
385
+ - **npm**: >= 8.0.0
386
+ - **Memory**: 512MB minimum (1GB+ recommended for large documents)
387
+
388
+ ### Operating System Compatibility
389
+
390
+ #### macOS
391
+ - **Minimum**: macOS 11 (Big Sur) or later
392
+ - **Why**: Bundled Chromium requires macOS 11+
393
+ - **Older Macs**: For macOS 10.x, install Google Chrome manually and the tool will automatically use it
394
+
395
+ #### Windows
396
+ - **Minimum**: Windows 10 (version 1809) or later
397
+ - **Why**: Bundled Chromium requires Windows 10 1809+
398
+ - **Older Windows**: Install Google Chrome manually for compatibility
399
+
400
+ #### Linux
401
+ - **Most distributions supported** (Ubuntu 18.04+, Debian 10+, Fedora 32+, etc.)
402
+ - Required system packages may vary by distribution
403
+ - See [Puppeteer system requirements](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md) for details
404
+
405
+ ### Browser Requirements
406
+
407
+ This tool uses Puppeteer which automatically downloads Chromium. However, if the bundled Chromium is incompatible with your system:
408
+
409
+ 1. **Install Google Chrome** (recommended): The tool will automatically detect and use it
410
+ 2. **Set custom Chrome path**:
411
+ ```bash
412
+ export PUPPETEER_EXECUTABLE_PATH="/path/to/chrome"
413
+ ```
414
+
415
+ ## 🔧 Troubleshooting
416
+
417
+ ### "dyld: cannot load 'Google Chrome for Testing'" (macOS)
418
+
419
+ **Problem**: This error occurs on macOS 10.x (Catalina and older) because the bundled Chromium requires macOS 11+.
420
+
421
+ **Solution**:
422
+ 1. Install [Google Chrome](https://www.google.com/chrome/) from the official website
423
+ 2. The tool will automatically detect and use your system Chrome installation
424
+ 3. Alternatively, set the Chrome path manually:
425
+ ```bash
426
+ export PUPPETEER_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
427
+ md-preview-pdf document.md
428
+ ```
429
+
430
+ ### "Failed to launch the browser process" (Windows)
431
+
432
+ **Problem**: Bundled Chromium incompatible with older Windows versions.
433
+
434
+ **Solution**:
435
+ 1. Install [Google Chrome](https://www.google.com/chrome/)
436
+ 2. Or set Chrome path:
437
+ ```bash
438
+ set PUPPETEER_EXECUTABLE_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
439
+ md-preview-pdf document.md
440
+ ```
441
+
442
+ ### Out of Memory Errors
443
+
444
+ **Problem**: Large documents exhaust available memory.
445
+
446
+ **Solution**:
447
+ 1. Increase Node.js memory limit:
448
+ ```bash
449
+ export NODE_OPTIONS="--max-old-space-size=4096"
450
+ md-preview-pdf large-document.md
451
+ ```
452
+ 2. Split large documents into smaller files
453
+ 3. Disable resource-intensive features:
454
+ ```bash
455
+ md-preview-pdf document.md --no-highlight --no-math
456
+ ```
457
+
458
+ ### Slow Performance
459
+
460
+ **Tips**:
461
+ - First conversion is slower (Chromium downloads)
462
+ - Use `--no-mermaid` if you don't have diagrams
463
+ - Disable unused features (`--no-math`, `--no-emoji`, `--no-highlight`)
464
+ - Consider SSD for faster file I/O
465
+
466
+ ### Getting Help
467
+
468
+ 1. Check [Puppeteer troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md)
469
+ 2. Search [existing issues](https://github.com/anuragkr29/md-preview-pdf/issues)
470
+ 3. Create a [new issue](https://github.com/anuragkr29/md-preview-pdf/issues/new) with:
471
+ - Operating system and version
472
+ - Node.js version (`node --version`)
473
+ - Full error message
474
+ - Command that failed
475
+
351
476
 
352
477
  ## 🧪 Testing
353
478
 
@@ -9,6 +9,14 @@ import { ConverterOptions, ConversionResult, ParsedMarkdown } from './types';
9
9
  export declare class Converter {
10
10
  private options;
11
11
  constructor(options?: ConverterOptions);
12
+ /**
13
+ * Map document theme to Mermaid predefined theme
14
+ */
15
+ private getMermaidThemeForDocumentTheme;
16
+ /**
17
+ * Validate Mermaid theme is one of the predefined themes
18
+ */
19
+ private isValidMermaidTheme;
12
20
  /**
13
21
  * Convert markdown string to PDF buffer
14
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAsEjB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,GAAE,gBAAqB;IAc1C;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBzE;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAoF5B;;OAEG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkB9B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAI/C;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIpD;;OAEG;IACH,UAAU,IAAI,gBAAgB;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAsEjB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,GAAE,gBAAqB;IAiC1C;;MAEE;IACF,OAAO,CAAC,+BAA+B;IAevC;;MAEE;IACF,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBzE;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAoF5B;;OAEG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkB9B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAI/C;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIpD;;OAEG;IACH,UAAU,IAAI,gBAAgB;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,eAAe,SAAS,CAAC"}
package/dist/converter.js CHANGED
@@ -53,10 +53,10 @@ const defaultOptions = {
53
53
  pdf: {
54
54
  format: 'A4',
55
55
  margin: {
56
- top: '10mm',
57
- right: '10mm',
58
- bottom: '10mm',
59
- left: '10mm',
56
+ top: '5mm',
57
+ right: '5mm',
58
+ bottom: '5mm',
59
+ left: '5mm',
60
60
  },
61
61
  printBackground: true,
62
62
  },
@@ -116,6 +116,48 @@ class Converter {
116
116
  highlightTheme: (0, themes_1.getMatchingHighlightTheme)(themeName),
117
117
  };
118
118
  }
119
+ // Set Mermaid theme based on document theme if not already set
120
+ if (this.options.mermaid?.theme === 'default' || !this.options.mermaid?.theme) {
121
+ const themeName = this.options.theme?.name || 'github';
122
+ const mermaidTheme = this.getMermaidThemeForDocumentTheme(themeName);
123
+ this.options.mermaid = {
124
+ ...this.options.mermaid,
125
+ theme: mermaidTheme,
126
+ };
127
+ }
128
+ else if (this.options.mermaid?.theme && !this.isValidMermaidTheme(this.options.mermaid.theme)) {
129
+ // Validate that user-provided theme is one of the predefined themes
130
+ utils_1.logger.warn(`Invalid Mermaid theme: "${this.options.mermaid.theme}". Using default. ` +
131
+ `Valid themes are: default, forest, dark, neutral, base`);
132
+ this.options.mermaid = {
133
+ ...this.options.mermaid,
134
+ theme: 'default',
135
+ };
136
+ }
137
+ }
138
+ /**
139
+ * Map document theme to Mermaid predefined theme
140
+ */
141
+ getMermaidThemeForDocumentTheme(documentTheme) {
142
+ switch (documentTheme) {
143
+ case 'github':
144
+ return 'default';
145
+ case 'github-dark':
146
+ return 'dark';
147
+ case 'vscode-light':
148
+ return 'default';
149
+ case 'vscode-dark':
150
+ return 'dark';
151
+ default:
152
+ return 'default';
153
+ }
154
+ }
155
+ /**
156
+ * Validate Mermaid theme is one of the predefined themes
157
+ */
158
+ isValidMermaidTheme(theme) {
159
+ const validThemes = ['default', 'forest', 'dark', 'neutral', 'base'];
160
+ return validThemes.includes(theme);
119
161
  }
120
162
  /**
121
163
  * Convert markdown string to PDF buffer
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGzE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAcxF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAkChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvE;;;;;;;;;AAED,wBAOE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGzE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAcxF;AAyFD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAyChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvE;;;;;;;;;AAED,wBAOE"}
@@ -36,6 +36,80 @@ function parseFrontMatter(content) {
36
36
  };
37
37
  }
38
38
  }
39
+ /**
40
+ * Convert front matter object to nested HTML table with colspan/rowspan
41
+ */
42
+ function frontMatterToTable(obj) {
43
+ // Calculate column span for each key
44
+ function getColumnCount(value) {
45
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
46
+ const entries = Object.entries(value);
47
+ return entries.reduce((sum, [_, v]) => sum + getColumnCount(v), 0);
48
+ }
49
+ return 1;
50
+ }
51
+ // Calculate max depth
52
+ function getDepth(value) {
53
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
54
+ const entries = Object.entries(value);
55
+ return 1 + Math.max(...entries.map(([_, v]) => getDepth(v)));
56
+ }
57
+ return 1;
58
+ }
59
+ const maxDepth = Math.max(...Object.values(obj).map(v => getDepth(v)));
60
+ const entries = Object.entries(obj);
61
+ // Total rows = maxDepth (for headers at each level) + 1 (for deepest values)
62
+ const totalRows = maxDepth + 1;
63
+ // Build HTML table with minimal margins
64
+ let html = '<table class="frontmatter-table" style="margin: 0 0 12px 0; border-collapse: collapse; width: 100%;">\n';
65
+ // Track which cells have been filled by rowspan
66
+ const occupiedCells = new Set();
67
+ // Build each row
68
+ for (let row = 0; row < totalRows; row++) {
69
+ html += ' <tr>\n';
70
+ function renderRow(entries, currentDepth, colOffset) {
71
+ let col = colOffset;
72
+ entries.forEach(([key, value]) => {
73
+ const cellKey = `${row},${col}`;
74
+ const isLeaf = typeof value !== 'object' || value === null || Array.isArray(value);
75
+ const colspan = getColumnCount(value);
76
+ // Check if this position is already occupied by a rowspan from above
77
+ if (occupiedCells.has(cellKey) && isLeaf) {
78
+ col += colspan;
79
+ return;
80
+ }
81
+ if (row === currentDepth) {
82
+ // This row shows headers for this depth
83
+ html += ` <th colspan="${colspan}">${key}</th>\n`;
84
+ col += colspan;
85
+ }
86
+ else if (row === currentDepth + 1 && isLeaf) {
87
+ // This row shows values for simple values at this depth
88
+ const displayValue = value === null ? '' : String(value);
89
+ const rowspan = totalRows - row;
90
+ // Mark cells as occupied by this rowspan
91
+ for (let r = row; r < row + rowspan; r++) {
92
+ occupiedCells.add(`${r},${col}`);
93
+ }
94
+ html += ` <td rowspan="${rowspan}">${displayValue}</td>\n`;
95
+ col += 1;
96
+ }
97
+ else if (row > currentDepth && !isLeaf) {
98
+ // Recurse into nested object
99
+ renderRow(Object.entries(value), currentDepth + 1, col);
100
+ col += colspan;
101
+ }
102
+ else {
103
+ col += colspan;
104
+ }
105
+ });
106
+ }
107
+ renderRow(entries, 0, 0);
108
+ html += ' </tr>\n';
109
+ }
110
+ html += '</table>\n';
111
+ return html;
112
+ }
39
113
  /**
40
114
  * Parse markdown content and return structured result
41
115
  */
@@ -59,8 +133,14 @@ function parseMarkdown(markdownContent, options = {}) {
59
133
  };
60
134
  // Create parser with merged options
61
135
  const parser = (0, markdown_parser_1.createMarkdownParser)(mergedOptions);
136
+ // If there's front matter, convert it to HTML table and prepend
137
+ let contentToRender = content;
138
+ if (Object.keys(frontMatter).length > 0 && markdownContent.startsWith('---')) {
139
+ const frontMatterTable = '<div class="frontmatter-wrapper">' + frontMatterToTable(frontMatter) + '</div>\n';
140
+ contentToRender = frontMatterTable + content;
141
+ }
62
142
  // Parse markdown to HTML
63
- const html = parser.render(content);
143
+ const html = parser.render(contentToRender);
64
144
  utils_1.logger.debug('Markdown parsed successfully');
65
145
  return {
66
146
  frontMatter,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAYH,4CAcC;AAKD,sCAqCC;AAKD,8CAEC;AAKD,8CAEC;AAKD,sDAKC;AA1FD,8DAAiC;AACjC,uDAAyD;AAIhD,qGAJA,sCAAoB,OAIA;AAF7B,oCAAkC;AAIlC;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,qBAAM,EAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAmB;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAM,CAAC,IAAI,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO;YACL,IAAI,EAAE,EAAE;YACR,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,eAAuB,EACvB,UAA4B,EAAE;IAE9B,uBAAuB;IACvB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAEzE,kCAAkC;IAClC,MAAM,SAAS,GAAI,WAAW,CAAC,KAA4B,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC;IAC/F,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3F,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,SAAkF,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5J,MAAM,aAAa,GAAG;QACpB,GAAG,OAAO;QACV,KAAK,EAAE;YACL,GAAG,OAAO,CAAC,KAAK;YAChB,IAAI,EAAE,cAAc;SACrB;QACD,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,WAAW,CAAC,GAAG;SACnB;KACF,CAAC;IAEF,oCAAoC;IACpC,MAAM,MAAM,GAAG,IAAA,sCAAoB,EAAC,aAAa,CAAC,CAAC;IAEnD,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpC,cAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE7C,OAAO;QACL,WAAW;QACX,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChG,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,OAAO,IAAI;SACR,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,kBAAe;IACb,oBAAoB,EAApB,sCAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;CACtB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,UAAqB,MAAM,aAAa,CAAC;AAahD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgM5C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAwE/E;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,UAAqB,MAAM,aAAa,CAAC;AAahD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiM5C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAwE/E;AAED,eAAe,oBAAoB,CAAC"}
@@ -29,6 +29,8 @@ function mathPlugin(md) {
29
29
  return false;
30
30
  if (state.src[state.pos + 1] === '$')
31
31
  return false; // Skip block math
32
+ if (state.src[state.pos + 1] === '{')
33
+ return false; // Skip ${...} template literals
32
34
  const start = state.pos + 1;
33
35
  let end = start;
34
36
  while (end < state.posMax && state.src[end] !== '$') {
@@ -211,9 +213,7 @@ function createMarkdownParser(options = {}) {
211
213
  // Anchor plugin for headers
212
214
  md.use(markdown_it_anchor_1.default, {
213
215
  level: [1, 2, 3, 4, 5, 6],
214
- permalink: markdown_it_anchor_1.default.permalink.headerLink({
215
- safariReaderFix: true,
216
- }),
216
+ permalink: false,
217
217
  slugify: (s) => s
218
218
  .toLowerCase()
219
219
  .trim()
@@ -244,6 +244,8 @@ function createMarkdownParser(options = {}) {
244
244
  // Custom attributes
245
245
  md.use(markdown_it_attrs_1.default, {
246
246
  allowedAttributes: ['id', 'class', 'style', 'width', 'height'],
247
+ leftDelimiter: '{:',
248
+ rightDelimiter: '}',
247
249
  });
248
250
  // Math support (KaTeX)
249
251
  if (options.math !== false) {