markdown-to-document-cli 1.0.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 +21 -0
- package/README.md +281 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +335 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +165 -0
- package/dist/index.js.map +1 -0
- package/dist/services/ContentValidator.d.ts +50 -0
- package/dist/services/ContentValidator.d.ts.map +1 -0
- package/dist/services/ContentValidator.js +385 -0
- package/dist/services/ContentValidator.js.map +1 -0
- package/dist/services/MarkdownPreprocessor.d.ts +29 -0
- package/dist/services/MarkdownPreprocessor.d.ts.map +1 -0
- package/dist/services/MarkdownPreprocessor.js +168 -0
- package/dist/services/MarkdownPreprocessor.js.map +1 -0
- package/dist/services/PandocService.d.ts +82 -0
- package/dist/services/PandocService.d.ts.map +1 -0
- package/dist/services/PandocService.js +285 -0
- package/dist/services/PandocService.js.map +1 -0
- package/dist/types/index.d.ts +105 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/validators.d.ts +31 -0
- package/dist/types/validators.d.ts.map +1 -0
- package/dist/types/validators.js +5 -0
- package/dist/types/validators.js.map +1 -0
- package/dist/utils/common.d.ts +19 -0
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +73 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/constants.d.ts +24 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +156 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/fileUtils.d.ts +17 -0
- package/dist/utils/fileUtils.d.ts.map +1 -0
- package/dist/utils/fileUtils.js +70 -0
- package/dist/utils/fileUtils.js.map +1 -0
- package/dist/utils/markdownUtils.d.ts +27 -0
- package/dist/utils/markdownUtils.d.ts.map +1 -0
- package/dist/utils/markdownUtils.js +171 -0
- package/dist/utils/markdownUtils.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Utilities
|
|
3
|
+
*/
|
|
4
|
+
export function extractFrontmatter(content) {
|
|
5
|
+
const frontmatterRegex = /^---\s*\n([\s\S]*?)\n---\s*\n/;
|
|
6
|
+
const match = content.match(frontmatterRegex);
|
|
7
|
+
if (!match) {
|
|
8
|
+
return { metadata: {}, content, hasYamlFrontmatter: false };
|
|
9
|
+
}
|
|
10
|
+
const yamlContent = match[1];
|
|
11
|
+
const remainingContent = content.slice(match[0].length);
|
|
12
|
+
const metadata = {};
|
|
13
|
+
// Parse simple YAML key-value pairs
|
|
14
|
+
const lines = yamlContent.split('\n');
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
18
|
+
continue;
|
|
19
|
+
const colonIndex = trimmed.indexOf(':');
|
|
20
|
+
if (colonIndex > 0) {
|
|
21
|
+
const key = trimmed.slice(0, colonIndex).trim();
|
|
22
|
+
let value = trimmed.slice(colonIndex + 1).trim();
|
|
23
|
+
// Remove quotes if present
|
|
24
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
25
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
26
|
+
value = value.slice(1, -1);
|
|
27
|
+
}
|
|
28
|
+
switch (key) {
|
|
29
|
+
case 'title':
|
|
30
|
+
metadata.title = value;
|
|
31
|
+
break;
|
|
32
|
+
case 'subtitle':
|
|
33
|
+
metadata.subtitle = value;
|
|
34
|
+
break;
|
|
35
|
+
case 'author':
|
|
36
|
+
metadata.author = value;
|
|
37
|
+
break;
|
|
38
|
+
case 'language':
|
|
39
|
+
metadata.language = value;
|
|
40
|
+
break;
|
|
41
|
+
case 'date':
|
|
42
|
+
metadata.date = value;
|
|
43
|
+
break;
|
|
44
|
+
case 'description':
|
|
45
|
+
metadata.description = value;
|
|
46
|
+
break;
|
|
47
|
+
case 'isbn':
|
|
48
|
+
metadata.isbn = value;
|
|
49
|
+
break;
|
|
50
|
+
case 'publisher':
|
|
51
|
+
metadata.publisher = value;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { metadata, content: remainingContent, hasYamlFrontmatter: true };
|
|
57
|
+
}
|
|
58
|
+
export function extractTitleFromContent(content) {
|
|
59
|
+
const h1Regex = /^#\s+(.+)$/m;
|
|
60
|
+
const match = content.match(h1Regex);
|
|
61
|
+
return match ? match[1].trim() : '';
|
|
62
|
+
}
|
|
63
|
+
export function splitTitle(title) {
|
|
64
|
+
const pipeIndex = title.indexOf('|');
|
|
65
|
+
const colonIndex = title.indexOf(':');
|
|
66
|
+
let splitIndex = -1;
|
|
67
|
+
if (pipeIndex > 0)
|
|
68
|
+
splitIndex = pipeIndex;
|
|
69
|
+
if (colonIndex > 0 && (splitIndex === -1 || colonIndex < splitIndex)) {
|
|
70
|
+
splitIndex = colonIndex;
|
|
71
|
+
}
|
|
72
|
+
if (splitIndex > 0) {
|
|
73
|
+
return {
|
|
74
|
+
title: title.slice(0, splitIndex).trim(),
|
|
75
|
+
subtitle: title.slice(splitIndex + 1).trim()
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return { title: title.trim() };
|
|
79
|
+
}
|
|
80
|
+
export function convertObsidianLinks(content) {
|
|
81
|
+
// Convert [[link]] to [link](link.md)
|
|
82
|
+
return content.replace(/\[\[([^\]]+)\]\]/g, (match, link) => {
|
|
83
|
+
const parts = link.split('|');
|
|
84
|
+
const text = parts[1] || parts[0];
|
|
85
|
+
const target = parts[0];
|
|
86
|
+
// Handle external links [[link|text]] -> [text](link)
|
|
87
|
+
if (target.startsWith('http')) {
|
|
88
|
+
return `[${text}](${target})`;
|
|
89
|
+
}
|
|
90
|
+
// Handle internal links [[link]] -> [link](link.md)
|
|
91
|
+
return `[${text}](${target}.md)`;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export function convertObsidianImageSyntax(content) {
|
|
95
|
+
const images = [];
|
|
96
|
+
const newContent = content.replace(/!\[\[([^\]]+)\]\]/g, (match, imageSpec) => {
|
|
97
|
+
const parts = imageSpec.split('|');
|
|
98
|
+
const imagePath = parts[0];
|
|
99
|
+
const altText = parts[1] || '';
|
|
100
|
+
images.push(imagePath);
|
|
101
|
+
return ``;
|
|
102
|
+
});
|
|
103
|
+
return { content: newContent, images };
|
|
104
|
+
}
|
|
105
|
+
export function convertHighlights(content) {
|
|
106
|
+
// Convert ==highlight== to <mark>highlight</mark>
|
|
107
|
+
return content.replace(/==([^=]+)==/g, '<mark>$1</mark>');
|
|
108
|
+
}
|
|
109
|
+
export function removeMediaEmbeds(content) {
|
|
110
|
+
// Remove audio/video embeds
|
|
111
|
+
return content
|
|
112
|
+
.replace(/\!\[\[.*?\.(mp3|wav|ogg|m4a|mp4|webm|mov|avi)\]\]/gi, '')
|
|
113
|
+
.replace(/\{\{audio:.*?\}\}/gi, '')
|
|
114
|
+
.replace(/\{\{video:.*?\}\}/gi, '');
|
|
115
|
+
}
|
|
116
|
+
export function countWords(content) {
|
|
117
|
+
const text = content
|
|
118
|
+
.replace(/```[\s\S]*?```/g, '') // Remove code blocks
|
|
119
|
+
.replace(/`[^`]+`/g, '') // Remove inline code
|
|
120
|
+
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // Remove markdown links
|
|
121
|
+
.replace(/[^\w\s\uAC00-\uD7AF\u3131-\u3163]/g, ' ') // Keep Korean, letters, numbers
|
|
122
|
+
.replace(/\s+/g, ' ')
|
|
123
|
+
.trim();
|
|
124
|
+
if (!text)
|
|
125
|
+
return 0;
|
|
126
|
+
// Count words (space-separated for English, character-based for Korean)
|
|
127
|
+
const koreanChars = (text.match(/[\uAC00-\uD7AF]/g) || []).length;
|
|
128
|
+
const englishWords = text.replace(/[\uAC00-\uD7AF]/g, '').trim().split(/\s+/).filter(w => w).length;
|
|
129
|
+
return koreanChars + englishWords;
|
|
130
|
+
}
|
|
131
|
+
export function countChapters(content) {
|
|
132
|
+
const h1Matches = content.match(/^#\s+.+$/gm);
|
|
133
|
+
return h1Matches ? h1Matches.length : 0;
|
|
134
|
+
}
|
|
135
|
+
export function countImages(content) {
|
|
136
|
+
const imageMatches = content.match(/!\[.*?\]\(.*?\)/g);
|
|
137
|
+
return imageMatches ? imageMatches.length : 0;
|
|
138
|
+
}
|
|
139
|
+
export function escapePipeCharacters(content) {
|
|
140
|
+
// Escape pipe characters that are not part of tables
|
|
141
|
+
const lines = content.split('\n');
|
|
142
|
+
const escapedLines = [];
|
|
143
|
+
let inTable = false;
|
|
144
|
+
for (const line of lines) {
|
|
145
|
+
const trimmed = line.trim();
|
|
146
|
+
// Detect table start/end
|
|
147
|
+
if (trimmed.startsWith('|') && trimmed.endsWith('|')) {
|
|
148
|
+
inTable = true;
|
|
149
|
+
}
|
|
150
|
+
else if (inTable && !trimmed.startsWith('|')) {
|
|
151
|
+
inTable = false;
|
|
152
|
+
}
|
|
153
|
+
if (inTable) {
|
|
154
|
+
escapedLines.push(line);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
escapedLines.push(line.replace(/\|/g, '\\|'));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return escapedLines.join('\n');
|
|
161
|
+
}
|
|
162
|
+
export function extractStandardImagePaths(content) {
|
|
163
|
+
const imageRegex = /!\[([^\]]*)\]\(([^)]+)\)/g;
|
|
164
|
+
const paths = [];
|
|
165
|
+
let match;
|
|
166
|
+
while ((match = imageRegex.exec(content)) !== null) {
|
|
167
|
+
paths.push(match[2]);
|
|
168
|
+
}
|
|
169
|
+
return paths;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=markdownUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownUtils.js","sourceRoot":"","sources":["../../src/utils/markdownUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "markdown-to-document-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Professional-grade EPUB/PDF conversion tool for Markdown files. 8 validation modules, auto-fix, typography presets, font subsetting (99% size reduction), ISBN validation, copyright page generation.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"m2d": "dist/cli.js",
|
|
8
|
+
"markdown-to-document": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"start": "node dist/cli.js",
|
|
15
|
+
"test": "node --test",
|
|
16
|
+
"lint": "eslint src --ext .ts",
|
|
17
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
18
|
+
"prepublishOnly": "npm run build"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"markdown",
|
|
22
|
+
"epub",
|
|
23
|
+
"pdf",
|
|
24
|
+
"ebook",
|
|
25
|
+
"pandoc",
|
|
26
|
+
"converter",
|
|
27
|
+
"publishing",
|
|
28
|
+
"document",
|
|
29
|
+
"typography",
|
|
30
|
+
"cli",
|
|
31
|
+
"npx"
|
|
32
|
+
],
|
|
33
|
+
"author": "잘생김프로쌤 <bluelion79@gmail.com>",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/bluelion79/markdown-to-document-cli"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://github.com/bluelion79/markdown-to-document-cli#readme",
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/bluelion79/markdown-to-document-cli/issues"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"chalk": "^5.3.0",
|
|
48
|
+
"commander": "^12.0.0",
|
|
49
|
+
"fontkit": "^2.0.4",
|
|
50
|
+
"glob": "^10.3.10",
|
|
51
|
+
"inquirer": "^9.2.12",
|
|
52
|
+
"ora": "^8.0.1",
|
|
53
|
+
"yaml": "^2.3.4"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/glob": "^8.1.0",
|
|
57
|
+
"@types/inquirer": "^9.0.7",
|
|
58
|
+
"@types/node": "^20.19.27",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
|
60
|
+
"@typescript-eslint/parser": "^6.15.0",
|
|
61
|
+
"eslint": "^8.56.0",
|
|
62
|
+
"prettier": "^3.1.1",
|
|
63
|
+
"typescript": "^5.3.3"
|
|
64
|
+
},
|
|
65
|
+
"files": [
|
|
66
|
+
"dist",
|
|
67
|
+
"README.md",
|
|
68
|
+
"LICENSE"
|
|
69
|
+
]
|
|
70
|
+
}
|