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.
- package/.editorconfig +37 -0
- package/CHANGELOG.md +405 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +170 -0
- package/LICENSE +21 -0
- package/README.md +391 -0
- package/SECURITY.md +100 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +275 -0
- package/dist/cli.js.map +1 -0
- package/dist/converter.d.ts +58 -0
- package/dist/converter.d.ts.map +1 -0
- package/dist/converter.js +301 -0
- package/dist/converter.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/index.d.ts +40 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +100 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/markdown-parser.d.ts +12 -0
- package/dist/parser/markdown-parser.d.ts.map +1 -0
- package/dist/parser/markdown-parser.js +260 -0
- package/dist/parser/markdown-parser.js.map +1 -0
- package/dist/renderers/html-renderer.d.ts +19 -0
- package/dist/renderers/html-renderer.d.ts.map +1 -0
- package/dist/renderers/html-renderer.js +451 -0
- package/dist/renderers/html-renderer.js.map +1 -0
- package/dist/renderers/index.d.ts +8 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +21 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/mermaid-renderer.d.ts +31 -0
- package/dist/renderers/mermaid-renderer.d.ts.map +1 -0
- package/dist/renderers/mermaid-renderer.js +221 -0
- package/dist/renderers/mermaid-renderer.js.map +1 -0
- package/dist/renderers/pdf-renderer.d.ts +40 -0
- package/dist/renderers/pdf-renderer.d.ts.map +1 -0
- package/dist/renderers/pdf-renderer.js +253 -0
- package/dist/renderers/pdf-renderer.js.map +1 -0
- package/dist/themes/github-dark.d.ts +7 -0
- package/dist/themes/github-dark.d.ts.map +1 -0
- package/dist/themes/github-dark.js +400 -0
- package/dist/themes/github-dark.js.map +1 -0
- package/dist/themes/github.d.ts +7 -0
- package/dist/themes/github.d.ts.map +1 -0
- package/dist/themes/github.js +362 -0
- package/dist/themes/github.js.map +1 -0
- package/dist/themes/highlight.d.ts +21 -0
- package/dist/themes/highlight.d.ts.map +1 -0
- package/dist/themes/highlight.js +384 -0
- package/dist/themes/highlight.js.map +1 -0
- package/dist/themes/index.d.ts +41 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +83 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/vscode-dark.d.ts +7 -0
- package/dist/themes/vscode-dark.d.ts.map +1 -0
- package/dist/themes/vscode-dark.js +312 -0
- package/dist/themes/vscode-dark.js.map +1 -0
- package/dist/themes/vscode-light.d.ts +7 -0
- package/dist/themes/vscode-light.d.ts.map +1 -0
- package/dist/themes/vscode-light.js +259 -0
- package/dist/themes/vscode-light.js.map +1 -0
- package/dist/types/index.d.ts +170 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +34 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/error-handler.d.ts +39 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +136 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/file-utils.d.ts +78 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +234 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +30 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +61 -0
- package/dist/utils/logger.js.map +1 -0
- package/eslint.config.js +70 -0
- package/index.d.ts +43 -0
- 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"}
|