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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/dist/cli.d.ts +10 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +335 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/index.d.ts +32 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +165 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/services/ContentValidator.d.ts +50 -0
  12. package/dist/services/ContentValidator.d.ts.map +1 -0
  13. package/dist/services/ContentValidator.js +385 -0
  14. package/dist/services/ContentValidator.js.map +1 -0
  15. package/dist/services/MarkdownPreprocessor.d.ts +29 -0
  16. package/dist/services/MarkdownPreprocessor.d.ts.map +1 -0
  17. package/dist/services/MarkdownPreprocessor.js +168 -0
  18. package/dist/services/MarkdownPreprocessor.js.map +1 -0
  19. package/dist/services/PandocService.d.ts +82 -0
  20. package/dist/services/PandocService.d.ts.map +1 -0
  21. package/dist/services/PandocService.js +285 -0
  22. package/dist/services/PandocService.js.map +1 -0
  23. package/dist/types/index.d.ts +105 -0
  24. package/dist/types/index.d.ts.map +1 -0
  25. package/dist/types/index.js +5 -0
  26. package/dist/types/index.js.map +1 -0
  27. package/dist/types/validators.d.ts +31 -0
  28. package/dist/types/validators.d.ts.map +1 -0
  29. package/dist/types/validators.js +5 -0
  30. package/dist/types/validators.js.map +1 -0
  31. package/dist/utils/common.d.ts +19 -0
  32. package/dist/utils/common.d.ts.map +1 -0
  33. package/dist/utils/common.js +73 -0
  34. package/dist/utils/common.js.map +1 -0
  35. package/dist/utils/constants.d.ts +24 -0
  36. package/dist/utils/constants.d.ts.map +1 -0
  37. package/dist/utils/constants.js +156 -0
  38. package/dist/utils/constants.js.map +1 -0
  39. package/dist/utils/fileUtils.d.ts +17 -0
  40. package/dist/utils/fileUtils.d.ts.map +1 -0
  41. package/dist/utils/fileUtils.js +70 -0
  42. package/dist/utils/fileUtils.js.map +1 -0
  43. package/dist/utils/markdownUtils.d.ts +27 -0
  44. package/dist/utils/markdownUtils.d.ts.map +1 -0
  45. package/dist/utils/markdownUtils.js +171 -0
  46. package/dist/utils/markdownUtils.js.map +1 -0
  47. 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 `![${altText}](${imagePath})`;
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
+ }