md-tech-pdf 0.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.
- package/LICENSE +176 -0
- package/README.ja.md +330 -0
- package/README.md +315 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +96 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/config-resolver.d.ts +19 -0
- package/dist/config/config-resolver.d.ts.map +1 -0
- package/dist/config/config-resolver.js +41 -0
- package/dist/config/config-resolver.js.map +1 -0
- package/dist/config/document-options.d.ts +52 -0
- package/dist/config/document-options.d.ts.map +1 -0
- package/dist/config/document-options.js +8 -0
- package/dist/config/document-options.js.map +1 -0
- package/dist/config/error.d.ts +12 -0
- package/dist/config/error.d.ts.map +1 -0
- package/dist/config/error.js +12 -0
- package/dist/config/error.js.map +1 -0
- package/dist/config/frontmatter-parser.d.ts +16 -0
- package/dist/config/frontmatter-parser.d.ts.map +1 -0
- package/dist/config/frontmatter-parser.js +271 -0
- package/dist/config/frontmatter-parser.js.map +1 -0
- package/dist/core/converter.d.ts +34 -0
- package/dist/core/converter.d.ts.map +1 -0
- package/dist/core/converter.js +109 -0
- package/dist/core/converter.js.map +1 -0
- package/dist/html/default-style.d.ts +6 -0
- package/dist/html/default-style.d.ts.map +1 -0
- package/dist/html/default-style.js +237 -0
- package/dist/html/default-style.js.map +1 -0
- package/dist/html/google-fonts.d.ts +20 -0
- package/dist/html/google-fonts.d.ts.map +1 -0
- package/dist/html/google-fonts.js +50 -0
- package/dist/html/google-fonts.js.map +1 -0
- package/dist/html/html-builder.d.ts +20 -0
- package/dist/html/html-builder.d.ts.map +1 -0
- package/dist/html/html-builder.js +88 -0
- package/dist/html/html-builder.js.map +1 -0
- package/dist/html/html-renderer.d.ts +25 -0
- package/dist/html/html-renderer.d.ts.map +1 -0
- package/dist/html/html-renderer.js +148 -0
- package/dist/html/html-renderer.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/attributes-parser.d.ts +13 -0
- package/dist/parser/attributes-parser.d.ts.map +1 -0
- package/dist/parser/attributes-parser.js +110 -0
- package/dist/parser/attributes-parser.js.map +1 -0
- package/dist/parser/error.d.ts +15 -0
- package/dist/parser/error.d.ts.map +1 -0
- package/dist/parser/error.js +15 -0
- package/dist/parser/error.js.map +1 -0
- package/dist/parser/markdown-parser.d.ts +17 -0
- package/dist/parser/markdown-parser.d.ts.map +1 -0
- package/dist/parser/markdown-parser.js +86 -0
- package/dist/parser/markdown-parser.js.map +1 -0
- package/dist/pdf/default-options.d.ts +6 -0
- package/dist/pdf/default-options.d.ts.map +1 -0
- package/dist/pdf/default-options.js +12 -0
- package/dist/pdf/default-options.js.map +1 -0
- package/dist/pdf/error.d.ts +9 -0
- package/dist/pdf/error.d.ts.map +1 -0
- package/dist/pdf/error.js +10 -0
- package/dist/pdf/error.js.map +1 -0
- package/dist/pdf/pdf-generator.d.ts +16 -0
- package/dist/pdf/pdf-generator.d.ts.map +1 -0
- package/dist/pdf/pdf-generator.js +95 -0
- package/dist/pdf/pdf-generator.js.map +1 -0
- package/dist/pdf/types.d.ts +16 -0
- package/dist/pdf/types.d.ts.map +1 -0
- package/dist/pdf/types.js +2 -0
- package/dist/pdf/types.js.map +1 -0
- package/dist/renderer/diagram-renderer.d.ts +11 -0
- package/dist/renderer/diagram-renderer.d.ts.map +1 -0
- package/dist/renderer/diagram-renderer.js +2 -0
- package/dist/renderer/diagram-renderer.js.map +1 -0
- package/dist/renderer/error.d.ts +10 -0
- package/dist/renderer/error.d.ts.map +1 -0
- package/dist/renderer/error.js +10 -0
- package/dist/renderer/error.js.map +1 -0
- package/dist/renderer/mermaid-executor.d.ts +16 -0
- package/dist/renderer/mermaid-executor.d.ts.map +1 -0
- package/dist/renderer/mermaid-executor.js +99 -0
- package/dist/renderer/mermaid-executor.js.map +1 -0
- package/dist/renderer/mermaid-renderer.d.ts +25 -0
- package/dist/renderer/mermaid-renderer.d.ts.map +1 -0
- package/dist/renderer/mermaid-renderer.js +35 -0
- package/dist/renderer/mermaid-renderer.js.map +1 -0
- package/dist/renderer/plantuml-executor.d.ts +11 -0
- package/dist/renderer/plantuml-executor.d.ts.map +1 -0
- package/dist/renderer/plantuml-executor.js +100 -0
- package/dist/renderer/plantuml-executor.js.map +1 -0
- package/dist/renderer/plantuml-renderer.d.ts +26 -0
- package/dist/renderer/plantuml-renderer.d.ts.map +1 -0
- package/dist/renderer/plantuml-renderer.js +95 -0
- package/dist/renderer/plantuml-renderer.js.map +1 -0
- package/dist/types/diagram.d.ts +34 -0
- package/dist/types/diagram.d.ts.map +1 -0
- package/dist/types/diagram.js +2 -0
- package/dist/types/diagram.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import yaml from 'yaml';
|
|
2
|
+
import { FrontMatterError } from './error.js';
|
|
3
|
+
import { ALLOWED_GOOGLE_FONT_WEIGHTS } from '../html/google-fonts.js';
|
|
4
|
+
const VALID_DIMENSION_REGEX = /^(\d+(?:\.\d+)?)(px|mm|cm|in|%)$/;
|
|
5
|
+
const VALID_FITS = ['contain', 'fill'];
|
|
6
|
+
const VALID_ALIGNS = ['left', 'center', 'right'];
|
|
7
|
+
function validateDimension(path, val) {
|
|
8
|
+
if (typeof val !== 'string') {
|
|
9
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${path} = ${JSON.stringify(val)}. Expected string with dimension unit.`, { path });
|
|
10
|
+
}
|
|
11
|
+
const trimmed = val.trim();
|
|
12
|
+
if (trimmed === 'auto') {
|
|
13
|
+
return trimmed;
|
|
14
|
+
}
|
|
15
|
+
const match = trimmed.match(VALID_DIMENSION_REGEX);
|
|
16
|
+
if (!match) {
|
|
17
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${path} = ${JSON.stringify(val)}. Expected valid dimension (e.g. 100px, 150mm, 50%).`, { path });
|
|
18
|
+
}
|
|
19
|
+
const num = parseFloat(match[1]);
|
|
20
|
+
if (num <= 0) {
|
|
21
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${path} = ${JSON.stringify(val)}. Value must be greater than 0.`, { path });
|
|
22
|
+
}
|
|
23
|
+
return trimmed;
|
|
24
|
+
}
|
|
25
|
+
function validateFit(path, val) {
|
|
26
|
+
if (typeof val !== 'string' || !VALID_FITS.includes(val.trim())) {
|
|
27
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${path} = ${JSON.stringify(val)}. Expected "contain" or "fill".`, { path });
|
|
28
|
+
}
|
|
29
|
+
return val.trim();
|
|
30
|
+
}
|
|
31
|
+
function validateAlign(path, val) {
|
|
32
|
+
if (typeof val !== 'string' || !VALID_ALIGNS.includes(val.trim())) {
|
|
33
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${path} = ${JSON.stringify(val)}. Expected "left", "center", or "right".`, { path });
|
|
34
|
+
}
|
|
35
|
+
return val.trim();
|
|
36
|
+
}
|
|
37
|
+
function validatePdfOptions(rawPdf) {
|
|
38
|
+
if (typeof rawPdf !== 'object' || rawPdf === null || Array.isArray(rawPdf)) {
|
|
39
|
+
throw new FrontMatterError(`Invalid Front Matter setting: pdf = ${JSON.stringify(rawPdf)}. Expected object.`, { path: 'pdf' });
|
|
40
|
+
}
|
|
41
|
+
const record = rawPdf;
|
|
42
|
+
const result = {};
|
|
43
|
+
if (record.format !== undefined) {
|
|
44
|
+
if (record.format !== 'A4') {
|
|
45
|
+
throw new FrontMatterError(`Invalid Front Matter setting: pdf.format = ${JSON.stringify(record.format)}. Only "A4" is currently supported.`, { path: 'pdf.format' });
|
|
46
|
+
}
|
|
47
|
+
result.format = 'A4';
|
|
48
|
+
}
|
|
49
|
+
if (record.landscape !== undefined) {
|
|
50
|
+
if (typeof record.landscape !== 'boolean') {
|
|
51
|
+
throw new FrontMatterError(`Invalid Front Matter setting: pdf.landscape = ${JSON.stringify(record.landscape)}. Expected boolean.`, { path: 'pdf.landscape' });
|
|
52
|
+
}
|
|
53
|
+
result.landscape = record.landscape;
|
|
54
|
+
}
|
|
55
|
+
if (record.margin !== undefined) {
|
|
56
|
+
if (typeof record.margin !== 'object' ||
|
|
57
|
+
record.margin === null ||
|
|
58
|
+
Array.isArray(record.margin)) {
|
|
59
|
+
throw new FrontMatterError(`Invalid Front Matter setting: pdf.margin = ${JSON.stringify(record.margin)}. Expected object.`, { path: 'pdf.margin' });
|
|
60
|
+
}
|
|
61
|
+
const marginRec = record.margin;
|
|
62
|
+
const marginRes = {};
|
|
63
|
+
for (const side of ['top', 'right', 'bottom', 'left']) {
|
|
64
|
+
if (marginRec[side] !== undefined) {
|
|
65
|
+
marginRes[side] = validateDimension(`pdf.margin.${side}`, marginRec[side]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
result.margin = marginRes;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
function validateDiagramOptions(rawDiagram) {
|
|
73
|
+
if (typeof rawDiagram !== 'object' || rawDiagram === null || Array.isArray(rawDiagram)) {
|
|
74
|
+
throw new FrontMatterError(`Invalid Front Matter setting: diagram = ${JSON.stringify(rawDiagram)}. Expected object.`, { path: 'diagram' });
|
|
75
|
+
}
|
|
76
|
+
const record = rawDiagram;
|
|
77
|
+
const result = {};
|
|
78
|
+
if (record.width !== undefined) {
|
|
79
|
+
result.width = validateDimension('diagram.width', record.width);
|
|
80
|
+
}
|
|
81
|
+
if (record.height !== undefined) {
|
|
82
|
+
result.height = validateDimension('diagram.height', record.height);
|
|
83
|
+
}
|
|
84
|
+
if (record.fit !== undefined) {
|
|
85
|
+
result.fit = validateFit('diagram.fit', record.fit);
|
|
86
|
+
}
|
|
87
|
+
if (record.align !== undefined) {
|
|
88
|
+
result.align = validateAlign('diagram.align', record.align);
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
function validateMermaidOptions(rawMermaid) {
|
|
93
|
+
if (typeof rawMermaid !== 'object' || rawMermaid === null || Array.isArray(rawMermaid)) {
|
|
94
|
+
throw new FrontMatterError(`Invalid Front Matter setting: mermaid = ${JSON.stringify(rawMermaid)}. Expected object.`, { path: 'mermaid' });
|
|
95
|
+
}
|
|
96
|
+
const record = rawMermaid;
|
|
97
|
+
const result = {};
|
|
98
|
+
if (record.theme !== undefined) {
|
|
99
|
+
if (typeof record.theme !== 'string' || record.theme.trim() === '') {
|
|
100
|
+
throw new FrontMatterError(`Invalid Front Matter setting: mermaid.theme = ${JSON.stringify(record.theme)}. Expected non-empty string.`, { path: 'mermaid.theme' });
|
|
101
|
+
}
|
|
102
|
+
result.theme = record.theme.trim();
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
function validatePlantUmlOptions(rawPlantUml) {
|
|
107
|
+
if (typeof rawPlantUml !== 'object' || rawPlantUml === null || Array.isArray(rawPlantUml)) {
|
|
108
|
+
throw new FrontMatterError(`Invalid Front Matter setting: plantuml = ${JSON.stringify(rawPlantUml)}. Expected object.`, { path: 'plantuml' });
|
|
109
|
+
}
|
|
110
|
+
const record = rawPlantUml;
|
|
111
|
+
const result = {};
|
|
112
|
+
if (record.javaPath !== undefined) {
|
|
113
|
+
if (typeof record.javaPath !== 'string' || record.javaPath.trim() === '') {
|
|
114
|
+
throw new FrontMatterError(`Invalid Front Matter setting: plantuml.javaPath = ${JSON.stringify(record.javaPath)}. Expected non-empty string.`, { path: 'plantuml.javaPath' });
|
|
115
|
+
}
|
|
116
|
+
result.javaPath = record.javaPath.trim();
|
|
117
|
+
}
|
|
118
|
+
if (record.jarPath !== undefined) {
|
|
119
|
+
if (typeof record.jarPath !== 'string' || record.jarPath.trim() === '') {
|
|
120
|
+
throw new FrontMatterError(`Invalid Front Matter setting: plantuml.jarPath = ${JSON.stringify(record.jarPath)}. Expected non-empty string.`, { path: 'plantuml.jarPath' });
|
|
121
|
+
}
|
|
122
|
+
result.jarPath = record.jarPath.trim();
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
function validateStyleOptions(rawStyle) {
|
|
127
|
+
if (typeof rawStyle !== 'object' || rawStyle === null || Array.isArray(rawStyle)) {
|
|
128
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style = ${JSON.stringify(rawStyle)}. Expected object.`, { path: 'style' });
|
|
129
|
+
}
|
|
130
|
+
const record = rawStyle;
|
|
131
|
+
const result = {};
|
|
132
|
+
if (record.font !== undefined) {
|
|
133
|
+
if (typeof record.font !== 'object' || record.font === null || Array.isArray(record.font)) {
|
|
134
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style.font = ${JSON.stringify(record.font)}. Expected object.`, { path: 'style.font' });
|
|
135
|
+
}
|
|
136
|
+
const fontRecord = record.font;
|
|
137
|
+
const fontResult = {};
|
|
138
|
+
if (fontRecord.family !== undefined) {
|
|
139
|
+
if (typeof fontRecord.family !== 'string' || fontRecord.family.trim() === '') {
|
|
140
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style.font.family = ${JSON.stringify(fontRecord.family)}. Expected non-empty string.`, { path: 'style.font.family' });
|
|
141
|
+
}
|
|
142
|
+
fontResult.family = fontRecord.family.trim();
|
|
143
|
+
}
|
|
144
|
+
if (fontRecord.codeFamily !== undefined) {
|
|
145
|
+
if (typeof fontRecord.codeFamily !== 'string' || fontRecord.codeFamily.trim() === '') {
|
|
146
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style.font.codeFamily = ${JSON.stringify(fontRecord.codeFamily)}. Expected non-empty string.`, { path: 'style.font.codeFamily' });
|
|
147
|
+
}
|
|
148
|
+
fontResult.codeFamily = fontRecord.codeFamily.trim();
|
|
149
|
+
}
|
|
150
|
+
if (fontRecord.google !== undefined) {
|
|
151
|
+
if (typeof fontRecord.google !== 'object' ||
|
|
152
|
+
fontRecord.google === null ||
|
|
153
|
+
Array.isArray(fontRecord.google)) {
|
|
154
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style.font.google = ${JSON.stringify(fontRecord.google)}. Expected object.`, { path: 'style.font.google' });
|
|
155
|
+
}
|
|
156
|
+
const googleRecord = fontRecord.google;
|
|
157
|
+
if (googleRecord.families !== undefined) {
|
|
158
|
+
if (!Array.isArray(googleRecord.families)) {
|
|
159
|
+
throw new FrontMatterError(`Invalid Front Matter setting: style.font.google.families = ${JSON.stringify(googleRecord.families)}. Expected array of font family definitions.`, { path: 'style.font.google.families' });
|
|
160
|
+
}
|
|
161
|
+
const familiesResult = [];
|
|
162
|
+
for (let i = 0; i < googleRecord.families.length; i++) {
|
|
163
|
+
const item = googleRecord.families[i];
|
|
164
|
+
const itemPath = `style.font.google.families[${i}]`;
|
|
165
|
+
if (typeof item !== 'object' || item === null || Array.isArray(item)) {
|
|
166
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${itemPath} = ${JSON.stringify(item)}. Expected object.`, { path: itemPath });
|
|
167
|
+
}
|
|
168
|
+
const itemRecord = item;
|
|
169
|
+
if (typeof itemRecord.name !== 'string' || itemRecord.name.trim() === '') {
|
|
170
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${itemPath}.name = ${JSON.stringify(itemRecord.name)}. Font family name must not be empty.`, { path: `${itemPath}.name` });
|
|
171
|
+
}
|
|
172
|
+
const fontName = itemRecord.name.trim();
|
|
173
|
+
let weights;
|
|
174
|
+
if (itemRecord.weights !== undefined) {
|
|
175
|
+
if (!Array.isArray(itemRecord.weights)) {
|
|
176
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${itemPath}.weights = ${JSON.stringify(itemRecord.weights)}. Expected array of numbers for font family "${fontName}".`, { path: `${itemPath}.weights` });
|
|
177
|
+
}
|
|
178
|
+
weights = [];
|
|
179
|
+
for (let j = 0; j < itemRecord.weights.length; j++) {
|
|
180
|
+
const w = itemRecord.weights[j];
|
|
181
|
+
const weightPath = `${itemPath}.weights[${j}]`;
|
|
182
|
+
if (typeof w !== 'number' ||
|
|
183
|
+
!Number.isInteger(w) ||
|
|
184
|
+
!ALLOWED_GOOGLE_FONT_WEIGHTS.includes(w)) {
|
|
185
|
+
throw new FrontMatterError(`Invalid Front Matter setting: ${weightPath}. Invalid weight ${JSON.stringify(w)} for font "${fontName}". Expected one of: ${ALLOWED_GOOGLE_FONT_WEIGHTS.join(', ')}.`, { path: weightPath });
|
|
186
|
+
}
|
|
187
|
+
weights.push(w);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
familiesResult.push({
|
|
191
|
+
name: fontName,
|
|
192
|
+
weights,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
fontResult.google = {
|
|
196
|
+
families: familiesResult,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
result.font = fontResult;
|
|
201
|
+
}
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
const FRONT_MATTER_REGEX = /^---[ \t]*(?:\r?\n([\s\S]*?))?\r?\n---[ \t]*(?:\r?\n|$)/;
|
|
205
|
+
/**
|
|
206
|
+
* Extracts and validates YAML Front Matter from Markdown source text.
|
|
207
|
+
* Strips the Front Matter block from the returned content.
|
|
208
|
+
*
|
|
209
|
+
* @param source Raw Markdown document text
|
|
210
|
+
* @returns Parsed content and validated DocumentOptions
|
|
211
|
+
* @throws {FrontMatterError} On YAML syntax errors or invalid configuration values
|
|
212
|
+
*/
|
|
213
|
+
export function parseFrontMatter(source) {
|
|
214
|
+
// Front matter must start at line 1 with "---"
|
|
215
|
+
const match = source.match(FRONT_MATTER_REGEX);
|
|
216
|
+
if (!match) {
|
|
217
|
+
return {
|
|
218
|
+
content: source,
|
|
219
|
+
options: {},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const rawYaml = match[1] ?? '';
|
|
223
|
+
const content = source.slice(match[0].length);
|
|
224
|
+
if (rawYaml.trim() === '') {
|
|
225
|
+
return {
|
|
226
|
+
content,
|
|
227
|
+
options: {},
|
|
228
|
+
rawFrontMatter: rawYaml,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
let parsedYaml;
|
|
232
|
+
try {
|
|
233
|
+
parsedYaml = yaml.parse(rawYaml);
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
throw new FrontMatterError(`Failed to parse YAML Front Matter: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
237
|
+
}
|
|
238
|
+
if (parsedYaml === null || parsedYaml === undefined) {
|
|
239
|
+
return {
|
|
240
|
+
content,
|
|
241
|
+
options: {},
|
|
242
|
+
rawFrontMatter: rawYaml,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
if (typeof parsedYaml !== 'object' || Array.isArray(parsedYaml)) {
|
|
246
|
+
throw new FrontMatterError(`Invalid Front Matter structure: expected a YAML mapping/object, got ${typeof parsedYaml}.`);
|
|
247
|
+
}
|
|
248
|
+
const rawRecord = parsedYaml;
|
|
249
|
+
const options = {};
|
|
250
|
+
if (rawRecord.pdf !== undefined) {
|
|
251
|
+
options.pdf = validatePdfOptions(rawRecord.pdf);
|
|
252
|
+
}
|
|
253
|
+
if (rawRecord.diagram !== undefined) {
|
|
254
|
+
options.diagram = validateDiagramOptions(rawRecord.diagram);
|
|
255
|
+
}
|
|
256
|
+
if (rawRecord.mermaid !== undefined) {
|
|
257
|
+
options.mermaid = validateMermaidOptions(rawRecord.mermaid);
|
|
258
|
+
}
|
|
259
|
+
if (rawRecord.plantuml !== undefined) {
|
|
260
|
+
options.plantuml = validatePlantUmlOptions(rawRecord.plantuml);
|
|
261
|
+
}
|
|
262
|
+
if (rawRecord.style !== undefined) {
|
|
263
|
+
options.style = validateStyleOptions(rawRecord.style);
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
content,
|
|
267
|
+
options,
|
|
268
|
+
rawFrontMatter: rawYaml,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=frontmatter-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter-parser.js","sourceRoot":"","sources":["../../src/config/frontmatter-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type ConvertProgressStep = 'mermaid' | 'plantuml' | 'html' | 'pdf';
|
|
2
|
+
export interface ConvertProgressEvent {
|
|
3
|
+
step: ConvertProgressStep;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ConvertOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Destination path for the generated PDF.
|
|
9
|
+
* Defaults to replacing the Markdown file extension with .pdf in the same directory.
|
|
10
|
+
*/
|
|
11
|
+
output?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional callback to receive step-by-step progress events.
|
|
14
|
+
*/
|
|
15
|
+
onProgress?: (event: ConvertProgressEvent) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ConvertResult {
|
|
18
|
+
outputPath: string;
|
|
19
|
+
bytes: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolves the destination PDF output path.
|
|
23
|
+
* If output is unspecified, changes the input file extension to .pdf in the same directory.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveOutputPath(inputPath: string, explicitOutput?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* High-level core API to convert a technical Markdown document to a vector PDF.
|
|
28
|
+
*
|
|
29
|
+
* @param inputPath Path to the input Markdown file.
|
|
30
|
+
* @param options Conversion options such as output path and progress callbacks.
|
|
31
|
+
* @returns Details of the generated PDF (output path and file size).
|
|
32
|
+
*/
|
|
33
|
+
export declare function convertMarkdownToPdf(inputPath: string, options?: ConvertOptions): Promise<ConvertResult>;
|
|
34
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/core/converter.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAUpF;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CA+FxB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { resolvePdfOptions } from '../config/config-resolver.js';
|
|
4
|
+
import { parseFrontMatter } from '../config/frontmatter-parser.js';
|
|
5
|
+
import { HtmlRenderer } from '../html/html-renderer.js';
|
|
6
|
+
import { extractDiagramBlocks } from '../parser/markdown-parser.js';
|
|
7
|
+
import { PdfGenerator } from '../pdf/pdf-generator.js';
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the destination PDF output path.
|
|
10
|
+
* If output is unspecified, changes the input file extension to .pdf in the same directory.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveOutputPath(inputPath, explicitOutput) {
|
|
13
|
+
if (explicitOutput) {
|
|
14
|
+
return path.isAbsolute(explicitOutput)
|
|
15
|
+
? explicitOutput
|
|
16
|
+
: path.resolve(process.cwd(), explicitOutput);
|
|
17
|
+
}
|
|
18
|
+
const dir = path.dirname(inputPath);
|
|
19
|
+
const baseName = path.basename(inputPath, path.extname(inputPath));
|
|
20
|
+
return path.resolve(process.cwd(), path.join(dir, `${baseName}.pdf`));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* High-level core API to convert a technical Markdown document to a vector PDF.
|
|
24
|
+
*
|
|
25
|
+
* @param inputPath Path to the input Markdown file.
|
|
26
|
+
* @param options Conversion options such as output path and progress callbacks.
|
|
27
|
+
* @returns Details of the generated PDF (output path and file size).
|
|
28
|
+
*/
|
|
29
|
+
export async function convertMarkdownToPdf(inputPath, options = {}) {
|
|
30
|
+
const resolvedInputPath = path.isAbsolute(inputPath)
|
|
31
|
+
? inputPath
|
|
32
|
+
: path.resolve(process.cwd(), inputPath);
|
|
33
|
+
// 1. Verify input file existence
|
|
34
|
+
let stats;
|
|
35
|
+
try {
|
|
36
|
+
stats = await fs.stat(resolvedInputPath);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
throw new Error(`Markdown file not found: ${inputPath}`, { cause: err });
|
|
40
|
+
}
|
|
41
|
+
if (!stats.isFile()) {
|
|
42
|
+
throw new Error(`Target path is not a file: ${inputPath}`);
|
|
43
|
+
}
|
|
44
|
+
// 2. Read Markdown content
|
|
45
|
+
let markdownContent;
|
|
46
|
+
try {
|
|
47
|
+
markdownContent = await fs.readFile(resolvedInputPath, 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new Error(`Failed to read Markdown file: ${inputPath}`, { cause: err });
|
|
51
|
+
}
|
|
52
|
+
// 3. Parse Front Matter and detect diagram types present in content
|
|
53
|
+
const { options: docOptions } = parseFrontMatter(markdownContent);
|
|
54
|
+
const baseName = path.basename(resolvedInputPath, path.extname(resolvedInputPath));
|
|
55
|
+
const outputPath = resolveOutputPath(resolvedInputPath, options.output);
|
|
56
|
+
const diagrams = extractDiagramBlocks(markdownContent);
|
|
57
|
+
const hasMermaid = diagrams.some((d) => d.type === 'mermaid');
|
|
58
|
+
const hasPlantUml = diagrams.some((d) => d.type === 'plantuml');
|
|
59
|
+
// 4. Report diagram progress if diagrams exist
|
|
60
|
+
if (hasMermaid) {
|
|
61
|
+
options.onProgress?.({
|
|
62
|
+
step: 'mermaid',
|
|
63
|
+
message: 'Rendering Mermaid diagrams...',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (hasPlantUml) {
|
|
67
|
+
options.onProgress?.({
|
|
68
|
+
step: 'plantuml',
|
|
69
|
+
message: 'Rendering PlantUML diagrams...',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// 5. Render to complete HTML document
|
|
73
|
+
options.onProgress?.({
|
|
74
|
+
step: 'html',
|
|
75
|
+
message: 'Generating HTML...',
|
|
76
|
+
});
|
|
77
|
+
const htmlRenderer = new HtmlRenderer();
|
|
78
|
+
let html;
|
|
79
|
+
try {
|
|
80
|
+
html = await htmlRenderer.render(markdownContent, { title: baseName });
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
throw new Error(`Failed to render HTML document: ${err instanceof Error ? err.message : String(err)}`, {
|
|
84
|
+
cause: err,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// 6. Generate vector PDF via Playwright
|
|
88
|
+
options.onProgress?.({
|
|
89
|
+
step: 'pdf',
|
|
90
|
+
message: 'Generating PDF...',
|
|
91
|
+
});
|
|
92
|
+
const pdfGenerator = new PdfGenerator();
|
|
93
|
+
const pdfOptions = resolvePdfOptions(docOptions.pdf);
|
|
94
|
+
try {
|
|
95
|
+
await pdfGenerator.generate(html, outputPath, pdfOptions);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
throw new Error(`Failed to generate PDF file to "${outputPath}": ${err instanceof Error ? err.message : String(err)}`, {
|
|
99
|
+
cause: err,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// 7. Verify generated PDF stats
|
|
103
|
+
const pdfStats = await fs.stat(outputPath);
|
|
104
|
+
return {
|
|
105
|
+
outputPath,
|
|
106
|
+
bytes: pdfStats.size,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/core/converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default CSS stylesheet for md-tech-pdf HTML output.
|
|
3
|
+
* Designed for clean technical documentation readability and print/PDF layout.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_DOCUMENT_STYLE = "\n:root {\n --color-bg: #ffffff;\n --color-text: #24292f;\n --color-text-muted: #57606a;\n --color-border: #d0d7de;\n --color-code-bg: #f6f8fa;\n --color-blockquote-border: #d0d7de;\n --font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Hiragino Sans\", \"Hiragino Kaku Gothic ProN\", \"Yu Gothic\", Meiryo, \"Noto Sans JP\", sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace;\n}\n\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-size: 16px;\n line-height: 1.6;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background-color: var(--color-bg);\n color: var(--color-text);\n font-family: var(--font-sans);\n font-size: 1rem;\n word-wrap: break-word;\n}\n\n/* Headings */\nh1, h2, h3, h4, h5, h6 {\n margin-top: 1.8rem;\n margin-bottom: 0.8rem;\n font-weight: 600;\n line-height: 1.3;\n color: var(--color-text);\n page-break-after: avoid;\n break-after: avoid;\n}\n\n/* Prevent heading orphans by keeping them with the subsequent content element */\nh1 + *, h2 + *, h3 + *, h4 + *, h5 + *, h6 + * {\n page-break-before: avoid;\n break-before: avoid;\n}\n\nh1 {\n font-size: 2rem;\n padding-bottom: 0.4rem;\n border-bottom: 1px solid var(--color-border);\n}\n\nh2 {\n font-size: 1.5rem;\n padding-bottom: 0.3rem;\n border-bottom: 1px solid var(--color-border);\n}\n\nh3 { font-size: 1.25rem; }\nh4 { font-size: 1.1rem; }\nh5 { font-size: 1rem; }\nh6 { font-size: 0.9rem; color: var(--color-text-muted); }\n\n/* Paragraph & Lists */\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nul, ol {\n margin-top: 0;\n margin-bottom: 1rem;\n padding-left: 2rem;\n}\n\nli {\n margin-bottom: 0.3rem;\n}\n\nli > p {\n margin-bottom: 0.5rem;\n}\n\n/* Blockquote */\nblockquote {\n margin: 1rem 0;\n padding: 0.5rem 1rem;\n color: var(--color-text-muted);\n border-left: 0.25rem solid var(--color-blockquote-border);\n background-color: var(--color-code-bg);\n}\n\nblockquote > :first-child { margin-top: 0; }\nblockquote > :last-child { margin-bottom: 0; }\n\n/* Tables */\ntable {\n border-collapse: collapse;\n width: 100%;\n margin-top: 1rem;\n margin-bottom: 1.5rem;\n display: table;\n table-layout: auto;\n}\n\ntable th, table td {\n padding: 0.5rem 0.6rem;\n border: 1px solid var(--color-border);\n text-align: left;\n overflow-wrap: anywhere;\n word-break: normal;\n}\n\ntable th {\n background-color: var(--color-code-bg);\n font-weight: 600;\n word-break: keep-all;\n overflow-wrap: normal;\n}\n\ntable tr:nth-child(2n) {\n background-color: #fafbfc;\n}\n\n/* Code and Preformatted text */\ncode {\n font-family: var(--font-mono);\n font-size: 85%;\n padding: 0.2em 0.4em;\n margin: 0;\n background-color: var(--color-code-bg);\n border-radius: 4px;\n}\n\npre {\n margin-top: 1rem;\n margin-bottom: 1.5rem;\n padding: 1rem;\n font-family: var(--font-mono);\n font-size: 85%;\n line-height: 1.45;\n background-color: var(--color-code-bg);\n border: 1px solid var(--color-border);\n border-radius: 6px;\n page-break-inside: avoid;\n break-inside: avoid;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n word-break: normal;\n}\n\npre code {\n padding: 0;\n background-color: transparent;\n border-radius: 0;\n font-size: 100%;\n white-space: inherit;\n overflow-wrap: inherit;\n}\n\n/* Links */\na {\n color: #0969da;\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\nhr {\n height: 0.25em;\n padding: 0;\n margin: 2rem 0;\n background-color: var(--color-border);\n border: 0;\n}\n\n/* Diagram Container & Alignment */\n.md-tech-diagram {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n display: block;\n page-break-inside: avoid;\n break-inside: avoid;\n}\n\n.md-tech-diagram-align-center {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n\n.md-tech-diagram-align-left {\n margin-left: 0;\n margin-right: auto;\n text-align: left;\n}\n\n.md-tech-diagram-align-right {\n margin-left: auto;\n margin-right: 0;\n text-align: right;\n}\n\n.md-tech-diagram-content {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* Diagram Fit modes */\n.md-tech-diagram-fit-contain .md-tech-diagram-content svg {\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n\n.md-tech-diagram-fit-fill .md-tech-diagram-content svg {\n width: 100%;\n height: 100%;\n object-fit: fill;\n}\n";
|
|
6
|
+
//# sourceMappingURL=default-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-style.d.ts","sourceRoot":"","sources":["../../src/html/default-style.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,sBAAsB,u/IAuOlC,CAAC"}
|