md-preview-pdf 1.0.4

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 (90) hide show
  1. package/.editorconfig +37 -0
  2. package/CHANGELOG.md +405 -0
  3. package/CODE_OF_CONDUCT.md +128 -0
  4. package/CONTRIBUTING.md +170 -0
  5. package/LICENSE +21 -0
  6. package/README.md +391 -0
  7. package/SECURITY.md +100 -0
  8. package/dist/cli.d.ts +7 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +275 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/converter.d.ts +58 -0
  13. package/dist/converter.d.ts.map +1 -0
  14. package/dist/converter.js +301 -0
  15. package/dist/converter.js.map +1 -0
  16. package/dist/index.d.ts +13 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +53 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/parser/index.d.ts +40 -0
  21. package/dist/parser/index.d.ts.map +1 -0
  22. package/dist/parser/index.js +100 -0
  23. package/dist/parser/index.js.map +1 -0
  24. package/dist/parser/markdown-parser.d.ts +12 -0
  25. package/dist/parser/markdown-parser.d.ts.map +1 -0
  26. package/dist/parser/markdown-parser.js +260 -0
  27. package/dist/parser/markdown-parser.js.map +1 -0
  28. package/dist/renderers/html-renderer.d.ts +19 -0
  29. package/dist/renderers/html-renderer.d.ts.map +1 -0
  30. package/dist/renderers/html-renderer.js +451 -0
  31. package/dist/renderers/html-renderer.js.map +1 -0
  32. package/dist/renderers/index.d.ts +8 -0
  33. package/dist/renderers/index.d.ts.map +1 -0
  34. package/dist/renderers/index.js +21 -0
  35. package/dist/renderers/index.js.map +1 -0
  36. package/dist/renderers/mermaid-renderer.d.ts +31 -0
  37. package/dist/renderers/mermaid-renderer.d.ts.map +1 -0
  38. package/dist/renderers/mermaid-renderer.js +221 -0
  39. package/dist/renderers/mermaid-renderer.js.map +1 -0
  40. package/dist/renderers/pdf-renderer.d.ts +40 -0
  41. package/dist/renderers/pdf-renderer.d.ts.map +1 -0
  42. package/dist/renderers/pdf-renderer.js +253 -0
  43. package/dist/renderers/pdf-renderer.js.map +1 -0
  44. package/dist/themes/github-dark.d.ts +7 -0
  45. package/dist/themes/github-dark.d.ts.map +1 -0
  46. package/dist/themes/github-dark.js +400 -0
  47. package/dist/themes/github-dark.js.map +1 -0
  48. package/dist/themes/github.d.ts +7 -0
  49. package/dist/themes/github.d.ts.map +1 -0
  50. package/dist/themes/github.js +362 -0
  51. package/dist/themes/github.js.map +1 -0
  52. package/dist/themes/highlight.d.ts +21 -0
  53. package/dist/themes/highlight.d.ts.map +1 -0
  54. package/dist/themes/highlight.js +384 -0
  55. package/dist/themes/highlight.js.map +1 -0
  56. package/dist/themes/index.d.ts +41 -0
  57. package/dist/themes/index.d.ts.map +1 -0
  58. package/dist/themes/index.js +83 -0
  59. package/dist/themes/index.js.map +1 -0
  60. package/dist/themes/vscode-dark.d.ts +7 -0
  61. package/dist/themes/vscode-dark.d.ts.map +1 -0
  62. package/dist/themes/vscode-dark.js +312 -0
  63. package/dist/themes/vscode-dark.js.map +1 -0
  64. package/dist/themes/vscode-light.d.ts +7 -0
  65. package/dist/themes/vscode-light.d.ts.map +1 -0
  66. package/dist/themes/vscode-light.js +259 -0
  67. package/dist/themes/vscode-light.js.map +1 -0
  68. package/dist/types/index.d.ts +170 -0
  69. package/dist/types/index.d.ts.map +1 -0
  70. package/dist/types/index.js +34 -0
  71. package/dist/types/index.js.map +1 -0
  72. package/dist/utils/error-handler.d.ts +39 -0
  73. package/dist/utils/error-handler.d.ts.map +1 -0
  74. package/dist/utils/error-handler.js +136 -0
  75. package/dist/utils/error-handler.js.map +1 -0
  76. package/dist/utils/file-utils.d.ts +78 -0
  77. package/dist/utils/file-utils.d.ts.map +1 -0
  78. package/dist/utils/file-utils.js +234 -0
  79. package/dist/utils/file-utils.js.map +1 -0
  80. package/dist/utils/index.d.ts +4 -0
  81. package/dist/utils/index.d.ts.map +1 -0
  82. package/dist/utils/index.js +30 -0
  83. package/dist/utils/index.js.map +1 -0
  84. package/dist/utils/logger.d.ts +10 -0
  85. package/dist/utils/logger.d.ts.map +1 -0
  86. package/dist/utils/logger.js +61 -0
  87. package/dist/utils/logger.js.map +1 -0
  88. package/eslint.config.js +70 -0
  89. package/index.d.ts +43 -0
  90. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGjF,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,eAAe,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * MD Preview PDF
4
+ * Main entry point for the library
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.formatFileSize = exports.fileExists = exports.writeFile = exports.readFile = exports.getLogLevel = exports.setLogLevel = exports.logger = exports.vscodeDarkTheme = exports.vscodeLightTheme = exports.githubDarkTheme = exports.githubTheme = exports.getHighlightThemeCSS = exports.themeExists = exports.getAvailableThemes = exports.getThemeCSS = exports.closeBrowser = exports.processMermaidInHtml = exports.renderMermaidToSvg = exports.renderPDF = exports.generateStandaloneHtml = exports.generateHtml = exports.createMarkdownParser = exports.parseFrontMatter = exports.parseMarkdown = exports.ErrorCode = exports.ConversionError = exports.convertString = exports.convert = exports.createConverter = exports.Converter = void 0;
8
+ // Export main converter
9
+ var converter_1 = require("./converter");
10
+ Object.defineProperty(exports, "Converter", { enumerable: true, get: function () { return converter_1.Converter; } });
11
+ Object.defineProperty(exports, "createConverter", { enumerable: true, get: function () { return converter_1.createConverter; } });
12
+ Object.defineProperty(exports, "convert", { enumerable: true, get: function () { return converter_1.convert; } });
13
+ Object.defineProperty(exports, "convertString", { enumerable: true, get: function () { return converter_1.convertString; } });
14
+ // Export types
15
+ var types_1 = require("./types");
16
+ Object.defineProperty(exports, "ConversionError", { enumerable: true, get: function () { return types_1.ConversionError; } });
17
+ Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return types_1.ErrorCode; } });
18
+ // Export parser utilities
19
+ var parser_1 = require("./parser");
20
+ Object.defineProperty(exports, "parseMarkdown", { enumerable: true, get: function () { return parser_1.parseMarkdown; } });
21
+ Object.defineProperty(exports, "parseFrontMatter", { enumerable: true, get: function () { return parser_1.parseFrontMatter; } });
22
+ Object.defineProperty(exports, "createMarkdownParser", { enumerable: true, get: function () { return parser_1.createMarkdownParser; } });
23
+ // Export renderers
24
+ var renderers_1 = require("./renderers");
25
+ Object.defineProperty(exports, "generateHtml", { enumerable: true, get: function () { return renderers_1.generateHtml; } });
26
+ Object.defineProperty(exports, "generateStandaloneHtml", { enumerable: true, get: function () { return renderers_1.generateStandaloneHtml; } });
27
+ Object.defineProperty(exports, "renderPDF", { enumerable: true, get: function () { return renderers_1.renderPDF; } });
28
+ Object.defineProperty(exports, "renderMermaidToSvg", { enumerable: true, get: function () { return renderers_1.renderMermaidToSvg; } });
29
+ Object.defineProperty(exports, "processMermaidInHtml", { enumerable: true, get: function () { return renderers_1.processMermaidInHtml; } });
30
+ Object.defineProperty(exports, "closeBrowser", { enumerable: true, get: function () { return renderers_1.closeBrowser; } });
31
+ // Export themes
32
+ var themes_1 = require("./themes");
33
+ Object.defineProperty(exports, "getThemeCSS", { enumerable: true, get: function () { return themes_1.getThemeCSS; } });
34
+ Object.defineProperty(exports, "getAvailableThemes", { enumerable: true, get: function () { return themes_1.getAvailableThemes; } });
35
+ Object.defineProperty(exports, "themeExists", { enumerable: true, get: function () { return themes_1.themeExists; } });
36
+ Object.defineProperty(exports, "getHighlightThemeCSS", { enumerable: true, get: function () { return themes_1.getHighlightThemeCSS; } });
37
+ Object.defineProperty(exports, "githubTheme", { enumerable: true, get: function () { return themes_1.githubTheme; } });
38
+ Object.defineProperty(exports, "githubDarkTheme", { enumerable: true, get: function () { return themes_1.githubDarkTheme; } });
39
+ Object.defineProperty(exports, "vscodeLightTheme", { enumerable: true, get: function () { return themes_1.vscodeLightTheme; } });
40
+ Object.defineProperty(exports, "vscodeDarkTheme", { enumerable: true, get: function () { return themes_1.vscodeDarkTheme; } });
41
+ // Export utilities
42
+ var utils_1 = require("./utils");
43
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return utils_1.logger; } });
44
+ Object.defineProperty(exports, "setLogLevel", { enumerable: true, get: function () { return utils_1.setLogLevel; } });
45
+ Object.defineProperty(exports, "getLogLevel", { enumerable: true, get: function () { return utils_1.getLogLevel; } });
46
+ Object.defineProperty(exports, "readFile", { enumerable: true, get: function () { return utils_1.readFile; } });
47
+ Object.defineProperty(exports, "writeFile", { enumerable: true, get: function () { return utils_1.writeFile; } });
48
+ Object.defineProperty(exports, "fileExists", { enumerable: true, get: function () { return utils_1.fileExists; } });
49
+ Object.defineProperty(exports, "formatFileSize", { enumerable: true, get: function () { return utils_1.formatFileSize; } });
50
+ // Default export
51
+ const converter_2 = require("./converter");
52
+ exports.default = converter_2.Converter;
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wBAAwB;AACxB,yCAAiF;AAAxE,sGAAA,SAAS,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,oGAAA,OAAO,OAAA;AAAE,0GAAA,aAAa,OAAA;AAE3D,eAAe;AACf,iCAUiB;AAFf,wGAAA,eAAe,OAAA;AACf,kGAAA,SAAS,OAAA;AAGX,0BAA0B;AAC1B,mCAAiF;AAAxE,uGAAA,aAAa,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAE9D,mBAAmB;AACnB,yCAOqB;AANnB,yGAAA,YAAY,OAAA;AACZ,mHAAA,sBAAsB,OAAA;AACtB,sGAAA,SAAS,OAAA;AACT,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,yGAAA,YAAY,OAAA;AAGd,gBAAgB;AAChB,mCASkB;AARhB,qGAAA,WAAW,OAAA;AACX,4GAAA,kBAAkB,OAAA;AAClB,qGAAA,WAAW,OAAA;AACX,8GAAA,oBAAoB,OAAA;AACpB,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AACf,0GAAA,gBAAgB,OAAA;AAChB,yGAAA,eAAe,OAAA;AAGjB,mBAAmB;AACnB,iCAQiB;AAPf,+FAAA,MAAM,OAAA;AACN,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,uGAAA,cAAc,OAAA;AAGhB,iBAAiB;AACjB,2CAAwC;AACxC,kBAAe,qBAAS,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Parser Module
3
+ * Exports parser functionality and front matter handling
4
+ */
5
+ import { createMarkdownParser } from './markdown-parser';
6
+ import { ParsedMarkdown, FrontMatter, ConverterOptions } from '../types';
7
+ export { createMarkdownParser };
8
+ /**
9
+ * Parse front matter from markdown content
10
+ */
11
+ export declare function parseFrontMatter(content: string): {
12
+ data: FrontMatter;
13
+ content: string;
14
+ };
15
+ /**
16
+ * Parse markdown content and return structured result
17
+ */
18
+ export declare function parseMarkdown(markdownContent: string, options?: ConverterOptions): ParsedMarkdown;
19
+ /**
20
+ * Generate table of contents placeholder
21
+ */
22
+ export declare function getTocPlaceholder(): string;
23
+ /**
24
+ * Check if content has table of contents placeholder
25
+ */
26
+ export declare function hasTocPlaceholder(content: string): boolean;
27
+ /**
28
+ * Replace TOC placeholder with actual TOC
29
+ */
30
+ export declare function replaceTocPlaceholder(html: string, toc: string): string;
31
+ declare const _default: {
32
+ createMarkdownParser: typeof createMarkdownParser;
33
+ parseFrontMatter: typeof parseFrontMatter;
34
+ parseMarkdown: typeof parseMarkdown;
35
+ getTocPlaceholder: typeof getTocPlaceholder;
36
+ hasTocPlaceholder: typeof hasTocPlaceholder;
37
+ replaceTocPlaceholder: typeof replaceTocPlaceholder;
38
+ };
39
+ export default _default;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * Parser Module
4
+ * Exports parser functionality and front matter handling
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createMarkdownParser = void 0;
11
+ exports.parseFrontMatter = parseFrontMatter;
12
+ exports.parseMarkdown = parseMarkdown;
13
+ exports.getTocPlaceholder = getTocPlaceholder;
14
+ exports.hasTocPlaceholder = hasTocPlaceholder;
15
+ exports.replaceTocPlaceholder = replaceTocPlaceholder;
16
+ const gray_matter_1 = __importDefault(require("gray-matter"));
17
+ const markdown_parser_1 = require("./markdown-parser");
18
+ Object.defineProperty(exports, "createMarkdownParser", { enumerable: true, get: function () { return markdown_parser_1.createMarkdownParser; } });
19
+ const utils_1 = require("../utils");
20
+ /**
21
+ * Parse front matter from markdown content
22
+ */
23
+ function parseFrontMatter(content) {
24
+ try {
25
+ const parsed = (0, gray_matter_1.default)(content);
26
+ return {
27
+ data: parsed.data,
28
+ content: parsed.content,
29
+ };
30
+ }
31
+ catch (error) {
32
+ utils_1.logger.warn(`Failed to parse front matter: ${error}`);
33
+ return {
34
+ data: {},
35
+ content,
36
+ };
37
+ }
38
+ }
39
+ /**
40
+ * Parse markdown content and return structured result
41
+ */
42
+ function parseMarkdown(markdownContent, options = {}) {
43
+ // Extract front matter
44
+ const { data: frontMatter, content } = parseFrontMatter(markdownContent);
45
+ // Merge options from front matter
46
+ const themeName = frontMatter.theme || options.theme?.name || 'github';
47
+ const validThemeNames = ['github', 'github-dark', 'vscode-light', 'vscode-dark', 'custom'];
48
+ const finalThemeName = validThemeNames.includes(themeName) ? themeName : 'github';
49
+ const mergedOptions = {
50
+ ...options,
51
+ theme: {
52
+ ...options.theme,
53
+ name: finalThemeName,
54
+ },
55
+ pdf: {
56
+ ...options.pdf,
57
+ ...frontMatter.pdf,
58
+ },
59
+ };
60
+ // Create parser with merged options
61
+ const parser = (0, markdown_parser_1.createMarkdownParser)(mergedOptions);
62
+ // Parse markdown to HTML
63
+ const html = parser.render(content);
64
+ utils_1.logger.debug('Markdown parsed successfully');
65
+ return {
66
+ frontMatter,
67
+ content,
68
+ html,
69
+ };
70
+ }
71
+ /**
72
+ * Generate table of contents placeholder
73
+ */
74
+ function getTocPlaceholder() {
75
+ return '${toc}';
76
+ }
77
+ /**
78
+ * Check if content has table of contents placeholder
79
+ */
80
+ function hasTocPlaceholder(content) {
81
+ return content.includes('${toc}') || content.includes('[[toc]]') || content.includes('[TOC]');
82
+ }
83
+ /**
84
+ * Replace TOC placeholder with actual TOC
85
+ */
86
+ function replaceTocPlaceholder(html, toc) {
87
+ return html
88
+ .replace(/\$\{toc\}/g, toc)
89
+ .replace(/\[\[toc\]\]/gi, toc)
90
+ .replace(/\[TOC\]/g, toc);
91
+ }
92
+ exports.default = {
93
+ createMarkdownParser: markdown_parser_1.createMarkdownParser,
94
+ parseFrontMatter,
95
+ parseMarkdown,
96
+ getTocPlaceholder,
97
+ hasTocPlaceholder,
98
+ replaceTocPlaceholder,
99
+ };
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Markdown Parser
3
+ * Configures markdown-it with all necessary plugins for full markdown support
4
+ */
5
+ import MarkdownIt from 'markdown-it';
6
+ import { ConverterOptions } from '../types';
7
+ /**
8
+ * Create and configure the markdown parser
9
+ */
10
+ export declare function createMarkdownParser(options?: ConverterOptions): MarkdownIt;
11
+ export default createMarkdownParser;
12
+ //# sourceMappingURL=markdown-parser.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /**
3
+ * Markdown Parser
4
+ * Configures markdown-it with all necessary plugins for full markdown support
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createMarkdownParser = createMarkdownParser;
11
+ const markdown_it_1 = __importDefault(require("markdown-it"));
12
+ const highlight_js_1 = __importDefault(require("highlight.js"));
13
+ const markdown_it_anchor_1 = __importDefault(require("markdown-it-anchor"));
14
+ const markdown_it_footnote_1 = __importDefault(require("markdown-it-footnote"));
15
+ const markdown_it_container_1 = __importDefault(require("markdown-it-container"));
16
+ const katex_1 = __importDefault(require("katex"));
17
+ const markdown_it_emoji_1 = __importDefault(require("markdown-it-emoji"));
18
+ const markdown_it_task_lists_1 = __importDefault(require("markdown-it-task-lists"));
19
+ const markdown_it_toc_done_right_1 = __importDefault(require("markdown-it-toc-done-right"));
20
+ const markdown_it_attrs_1 = __importDefault(require("markdown-it-attrs"));
21
+ const utils_1 = require("../utils");
22
+ /**
23
+ * Custom plugin to render math equations with KaTeX
24
+ */
25
+ function mathPlugin(md) {
26
+ // Inline math: $...$
27
+ const inlineMathRule = (state, silent) => {
28
+ if (state.src[state.pos] !== '$')
29
+ return false;
30
+ if (state.src[state.pos + 1] === '$')
31
+ return false; // Skip block math
32
+ const start = state.pos + 1;
33
+ let end = start;
34
+ while (end < state.posMax && state.src[end] !== '$') {
35
+ if (state.src[end] === '\\')
36
+ end++; // Skip escaped characters
37
+ end++;
38
+ }
39
+ if (end >= state.posMax || state.src[end] !== '$')
40
+ return false;
41
+ if (!silent) {
42
+ const content = state.src.slice(start, end);
43
+ const token = state.push('math_inline', 'math', 0);
44
+ token.content = content;
45
+ token.markup = '$';
46
+ }
47
+ state.pos = end + 1;
48
+ return true;
49
+ };
50
+ // Block math: $$...$$
51
+ const blockMathRule = (state, startLine, endLine, silent) => {
52
+ const startPos = state.bMarks[startLine] + state.tShift[startLine];
53
+ const maxPos = state.eMarks[startLine];
54
+ if (startPos + 2 > maxPos)
55
+ return false;
56
+ if (state.src.slice(startPos, startPos + 2) !== '$$')
57
+ return false;
58
+ let nextLine = startLine;
59
+ let endPos = -1;
60
+ // Find closing $$
61
+ while (nextLine < endLine) {
62
+ nextLine++;
63
+ if (nextLine >= endLine)
64
+ break;
65
+ const lineStart = state.bMarks[nextLine] + state.tShift[nextLine];
66
+ const lineEnd = state.eMarks[nextLine];
67
+ const lineText = state.src.slice(lineStart, lineEnd).trim();
68
+ if (lineText === '$$') {
69
+ endPos = lineStart;
70
+ break;
71
+ }
72
+ }
73
+ if (endPos === -1)
74
+ return false;
75
+ if (!silent) {
76
+ const content = state.src.slice(startPos + 2, endPos).trim();
77
+ const token = state.push('math_block', 'math', 0);
78
+ token.content = content;
79
+ token.markup = '$$';
80
+ token.block = true;
81
+ token.map = [startLine, nextLine + 1];
82
+ }
83
+ state.line = nextLine + 1;
84
+ return true;
85
+ };
86
+ md.inline.ruler.before('escape', 'math_inline', inlineMathRule);
87
+ md.block.ruler.before('fence', 'math_block', blockMathRule, {
88
+ alt: ['paragraph', 'reference', 'blockquote', 'list'],
89
+ });
90
+ // Render math tokens
91
+ md.renderer.rules.math_inline = ((tokens, idx, _options) => {
92
+ try {
93
+ return katex_1.default.renderToString(tokens[idx].content, {
94
+ throwOnError: false,
95
+ displayMode: false,
96
+ });
97
+ }
98
+ catch (error) {
99
+ utils_1.logger.warn(`KaTeX inline error: ${error}`);
100
+ return `<code class="math-error">${tokens[idx].content}</code>`;
101
+ }
102
+ });
103
+ md.renderer.rules.math_block = ((tokens, idx, _options) => {
104
+ try {
105
+ return `<div class="math-block">${katex_1.default.renderToString(tokens[idx].content, {
106
+ throwOnError: false,
107
+ displayMode: true,
108
+ })}</div>`;
109
+ }
110
+ catch (error) {
111
+ utils_1.logger.warn(`KaTeX block error: ${error}`);
112
+ return `<pre class="math-error"><code>${tokens[idx].content}</code></pre>`;
113
+ }
114
+ });
115
+ }
116
+ /**
117
+ * Custom plugin to handle Mermaid code blocks
118
+ * Converts ```mermaid blocks to special div elements for later processing
119
+ */
120
+ function mermaidPlugin(md) {
121
+ const defaultFence = md.renderer.rules.fence || ((tokens, idx, _options) => {
122
+ const token = tokens[idx];
123
+ return `<pre><code class="language-${token.info}">${token.content}</code></pre>`;
124
+ });
125
+ md.renderer.rules.fence = ((tokens, idx, _options, _env, _self) => {
126
+ const token = tokens[idx];
127
+ const info = token.info?.trim().toLowerCase() || '';
128
+ if (info === 'mermaid') {
129
+ const content = token.content.trim();
130
+ // Encode content to avoid HTML issues
131
+ const encodedContent = Buffer.from(content).toString('base64');
132
+ return `<div class="mermaid" data-mermaid="${encodedContent}">${content}</div>\n`;
133
+ }
134
+ return defaultFence(tokens, idx, _options, _env, _self);
135
+ });
136
+ }
137
+ /**
138
+ * Configure syntax highlighting
139
+ */
140
+ function configureHighlighting(md) {
141
+ md.options.highlight = (str, lang) => {
142
+ if (lang && highlight_js_1.default.getLanguage(lang)) {
143
+ try {
144
+ const result = highlight_js_1.default.highlight(str, {
145
+ language: lang,
146
+ ignoreIllegals: true,
147
+ });
148
+ return `<pre class="hljs"><code class="language-${lang}">${result.value}</code></pre>`;
149
+ }
150
+ catch (error) {
151
+ utils_1.logger.debug(`Highlight.js error for language ${lang}: ${error}`);
152
+ }
153
+ }
154
+ // Auto-detect language
155
+ try {
156
+ const result = highlight_js_1.default.highlightAuto(str);
157
+ return `<pre class="hljs"><code>${result.value}</code></pre>`;
158
+ }
159
+ catch {
160
+ // Fall back to plain code block
161
+ return `<pre class="hljs"><code>${md.utils.escapeHtml(str)}</code></pre>`;
162
+ }
163
+ };
164
+ }
165
+ /**
166
+ * Create custom container types (warning, info, tip, danger, etc.)
167
+ */
168
+ function addContainers(md) {
169
+ const containerTypes = ['warning', 'info', 'tip', 'danger', 'note', 'important', 'caution'];
170
+ containerTypes.forEach((type) => {
171
+ md.use(markdown_it_container_1.default, type, {
172
+ validate: (params) => params.trim().split(' ')[0] === type,
173
+ render: ((tokens, idx, _options) => {
174
+ if (tokens[idx].nesting === 1) {
175
+ const info = tokens[idx].info?.trim() || '';
176
+ const title = info.slice(type.length).trim() || type.charAt(0).toUpperCase() + type.slice(1);
177
+ return `<div class="custom-container ${type}">\n<p class="custom-container-title">${title}</p>\n`;
178
+ }
179
+ return '</div>\n';
180
+ }),
181
+ });
182
+ });
183
+ // Details/summary container
184
+ md.use(markdown_it_container_1.default, 'details', {
185
+ validate: (params) => params.trim().startsWith('details'),
186
+ render: ((tokens, idx, _options) => {
187
+ if (tokens[idx].nesting === 1) {
188
+ const info = tokens[idx].info?.trim() || '';
189
+ const summary = info.slice(7).trim() || 'Details';
190
+ return `<details>\n<summary>${summary}</summary>\n`;
191
+ }
192
+ return '</details>\n';
193
+ }),
194
+ });
195
+ }
196
+ /**
197
+ * Create and configure the markdown parser
198
+ */
199
+ function createMarkdownParser(options = {}) {
200
+ const md = new markdown_it_1.default({
201
+ html: true,
202
+ xhtmlOut: true,
203
+ breaks: true,
204
+ linkify: true,
205
+ typographer: true,
206
+ });
207
+ // Syntax highlighting
208
+ if (options.highlight !== false) {
209
+ configureHighlighting(md);
210
+ }
211
+ // Anchor plugin for headers
212
+ md.use(markdown_it_anchor_1.default, {
213
+ level: [1, 2, 3, 4, 5, 6],
214
+ permalink: markdown_it_anchor_1.default.permalink.headerLink({
215
+ safariReaderFix: true,
216
+ }),
217
+ slugify: (s) => s
218
+ .toLowerCase()
219
+ .trim()
220
+ .replace(/[\s]+/g, '-')
221
+ .replace(/[^\w-]+/g, '')
222
+ .replace(/-{2,}/g, '-'),
223
+ });
224
+ // Table of contents
225
+ if (options.toc) {
226
+ md.use(markdown_it_toc_done_right_1.default, {
227
+ level: [1, 2, 3, 4].slice(0, options.tocDepth || 3),
228
+ listType: 'ul',
229
+ containerClass: 'table-of-contents',
230
+ });
231
+ }
232
+ // Emoji support - use the full version
233
+ if (options.emoji !== false) {
234
+ md.use(markdown_it_emoji_1.default.full || markdown_it_emoji_1.default);
235
+ }
236
+ // Footnotes
237
+ md.use(markdown_it_footnote_1.default);
238
+ // Task lists (checkboxes)
239
+ md.use(markdown_it_task_lists_1.default, {
240
+ enabled: true,
241
+ label: true,
242
+ labelAfter: true,
243
+ });
244
+ // Custom attributes
245
+ md.use(markdown_it_attrs_1.default, {
246
+ allowedAttributes: ['id', 'class', 'style', 'width', 'height'],
247
+ });
248
+ // Math support (KaTeX)
249
+ if (options.math !== false) {
250
+ mathPlugin(md);
251
+ }
252
+ // Mermaid support
253
+ mermaidPlugin(md);
254
+ // Custom containers
255
+ addContainers(md);
256
+ utils_1.logger.debug('Markdown parser configured with plugins');
257
+ return md;
258
+ }
259
+ exports.default = createMarkdownParser;
260
+ //# sourceMappingURL=markdown-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * HTML Renderer
3
+ * Generates complete HTML documents from parsed markdown
4
+ */
5
+ import { ParsedMarkdown, ConverterOptions } from '../types';
6
+ /**
7
+ * Generate complete HTML document
8
+ */
9
+ export declare function generateHtml(parsed: ParsedMarkdown, options?: ConverterOptions): Promise<string>;
10
+ /**
11
+ * Generate HTML with inline styles only (no external CSS links)
12
+ */
13
+ export declare function generateStandaloneHtml(parsed: ParsedMarkdown, options?: ConverterOptions): Promise<string>;
14
+ declare const _default: {
15
+ generateHtml: typeof generateHtml;
16
+ generateStandaloneHtml: typeof generateStandaloneHtml;
17
+ };
18
+ export default _default;
19
+ //# sourceMappingURL=html-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/html-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAC;AAwW1E;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAEjB;;;;;AAED,wBAGE"}