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,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Definitions for Markdown to Document CLI
|
|
3
|
+
*/
|
|
4
|
+
export interface ConversionOptions {
|
|
5
|
+
inputPath: string;
|
|
6
|
+
outputPath?: string;
|
|
7
|
+
format: 'epub' | 'pdf' | 'both';
|
|
8
|
+
coverTheme?: string;
|
|
9
|
+
typographyPreset?: TypographyPresetId;
|
|
10
|
+
enableFontSubsetting?: boolean;
|
|
11
|
+
tocDepth?: number;
|
|
12
|
+
includeToc?: boolean;
|
|
13
|
+
paperSize?: 'a4' | 'letter';
|
|
14
|
+
pdfEngine?: 'pdflatex' | 'xelatex' | 'weasyprint';
|
|
15
|
+
validateContent?: boolean;
|
|
16
|
+
autoFix?: boolean;
|
|
17
|
+
generateCover?: boolean;
|
|
18
|
+
includeCopyright?: boolean;
|
|
19
|
+
cssPath?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ConversionResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
epubPath?: string;
|
|
24
|
+
pdfPath?: string;
|
|
25
|
+
errors: string[];
|
|
26
|
+
warnings: string[];
|
|
27
|
+
validationReport?: ValidationReport;
|
|
28
|
+
}
|
|
29
|
+
export interface DocumentMetadata {
|
|
30
|
+
title: string;
|
|
31
|
+
subtitle?: string;
|
|
32
|
+
author?: string;
|
|
33
|
+
language?: string;
|
|
34
|
+
date?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
isbn?: string;
|
|
37
|
+
publisher?: string;
|
|
38
|
+
chapterCount?: number;
|
|
39
|
+
wordCount?: number;
|
|
40
|
+
imageCount?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ValidationReport {
|
|
43
|
+
totalIssues: number;
|
|
44
|
+
fixedIssues: number;
|
|
45
|
+
warnings: number;
|
|
46
|
+
errors: number;
|
|
47
|
+
details: ValidationIssue[];
|
|
48
|
+
}
|
|
49
|
+
export interface ValidationIssue {
|
|
50
|
+
type: 'error' | 'warning' | 'info';
|
|
51
|
+
category: 'frontmatter' | 'heading' | 'link' | 'image' | 'table' | 'syntax' | 'accessibility';
|
|
52
|
+
message: string;
|
|
53
|
+
line?: number;
|
|
54
|
+
fixed?: boolean;
|
|
55
|
+
suggestion?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface ResolvedImage {
|
|
58
|
+
originalSyntax: string;
|
|
59
|
+
standardSyntax: string;
|
|
60
|
+
absolutePath: string;
|
|
61
|
+
found: boolean;
|
|
62
|
+
alt?: string;
|
|
63
|
+
width?: number;
|
|
64
|
+
height?: number;
|
|
65
|
+
}
|
|
66
|
+
export type TypographyPresetId = 'novel' | 'presentation' | 'review' | 'ebook';
|
|
67
|
+
export interface TypographyPreset {
|
|
68
|
+
id: TypographyPresetId;
|
|
69
|
+
name: string;
|
|
70
|
+
description: string;
|
|
71
|
+
fontSize: number;
|
|
72
|
+
lineHeight: number;
|
|
73
|
+
fontFamily: string;
|
|
74
|
+
textAlign: 'left' | 'justify' | 'center';
|
|
75
|
+
paragraphSpacing: number;
|
|
76
|
+
features: string[];
|
|
77
|
+
}
|
|
78
|
+
export interface PandocInfo {
|
|
79
|
+
available: boolean;
|
|
80
|
+
version?: string;
|
|
81
|
+
majorVersion?: number;
|
|
82
|
+
path?: string;
|
|
83
|
+
error?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface PreprocessResult {
|
|
86
|
+
content: string;
|
|
87
|
+
metadata: DocumentMetadata;
|
|
88
|
+
resolvedImages: ResolvedImage[];
|
|
89
|
+
warnings: string[];
|
|
90
|
+
}
|
|
91
|
+
export interface CoverTheme {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
category: 'basic' | 'extended';
|
|
95
|
+
description: string;
|
|
96
|
+
colors: {
|
|
97
|
+
primary: string;
|
|
98
|
+
secondary: string;
|
|
99
|
+
accent: string;
|
|
100
|
+
background: string;
|
|
101
|
+
text: string;
|
|
102
|
+
};
|
|
103
|
+
style: 'minimal' | 'gradient' | 'dark' | 'modern';
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export interface ValidationResult {
|
|
5
|
+
isValid: boolean;
|
|
6
|
+
errors: ValidationError[];
|
|
7
|
+
warnings: ValidationWarning[];
|
|
8
|
+
fixed?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ValidationError {
|
|
11
|
+
type: 'frontmatter' | 'heading' | 'link' | 'image' | 'table' | 'syntax' | 'accessibility';
|
|
12
|
+
message: string;
|
|
13
|
+
line?: number;
|
|
14
|
+
column?: number;
|
|
15
|
+
context?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ValidationWarning {
|
|
18
|
+
type: 'frontmatter' | 'heading' | 'link' | 'image' | 'table' | 'syntax' | 'accessibility';
|
|
19
|
+
message: string;
|
|
20
|
+
line?: number;
|
|
21
|
+
suggestion?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ValidatorConfig {
|
|
24
|
+
autoFix: boolean;
|
|
25
|
+
strictMode: boolean;
|
|
26
|
+
allowedImageFormats: string[];
|
|
27
|
+
maxImageSize: number;
|
|
28
|
+
requireAltText: boolean;
|
|
29
|
+
checkExternalLinks: boolean;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/types/validators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/types/validators.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common Utilities
|
|
3
|
+
*/
|
|
4
|
+
export declare function escapeRegex(string: string): string;
|
|
5
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
6
|
+
export declare function formatFileSize(bytes: number): string;
|
|
7
|
+
export declare function formatDuration(seconds: number): string;
|
|
8
|
+
export declare function truncateString(str: string, maxLength: number): string;
|
|
9
|
+
export declare function generateId(): string;
|
|
10
|
+
export declare class Logger {
|
|
11
|
+
private static enabled;
|
|
12
|
+
static setEnabled(enabled: boolean): void;
|
|
13
|
+
static info(message: string, ...args: any[]): void;
|
|
14
|
+
static warn(message: string, ...args: any[]): void;
|
|
15
|
+
static error(message: string, ...args: any[]): void;
|
|
16
|
+
static debug(message: string, ...args: any[]): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function getTempDir(): string;
|
|
19
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYtD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAC,OAAO,CAAQ;IAE9B,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMlD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMlD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMnD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAKtD;AAED,wBAAgB,UAAU,IAAI,MAAM,CAMnC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common Utilities
|
|
3
|
+
*/
|
|
4
|
+
export function escapeRegex(string) {
|
|
5
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
6
|
+
}
|
|
7
|
+
export function sleep(ms) {
|
|
8
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
9
|
+
}
|
|
10
|
+
export function formatFileSize(bytes) {
|
|
11
|
+
if (bytes === 0)
|
|
12
|
+
return '0 B';
|
|
13
|
+
const k = 1024;
|
|
14
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
15
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
16
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
17
|
+
}
|
|
18
|
+
export function formatDuration(seconds) {
|
|
19
|
+
const hours = Math.floor(seconds / 3600);
|
|
20
|
+
const minutes = Math.floor((seconds % 3600) / 60);
|
|
21
|
+
const secs = Math.floor(seconds % 60);
|
|
22
|
+
if (hours > 0) {
|
|
23
|
+
return `${hours}h ${minutes}m ${secs}s`;
|
|
24
|
+
}
|
|
25
|
+
else if (minutes > 0) {
|
|
26
|
+
return `${minutes}m ${secs}s`;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return `${secs}s`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function truncateString(str, maxLength) {
|
|
33
|
+
if (str.length <= maxLength)
|
|
34
|
+
return str;
|
|
35
|
+
return `${str.slice(0, maxLength - 3)}...`;
|
|
36
|
+
}
|
|
37
|
+
export function generateId() {
|
|
38
|
+
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
39
|
+
}
|
|
40
|
+
export class Logger {
|
|
41
|
+
static enabled = true;
|
|
42
|
+
static setEnabled(enabled) {
|
|
43
|
+
this.enabled = enabled;
|
|
44
|
+
}
|
|
45
|
+
static info(message, ...args) {
|
|
46
|
+
if (this.enabled) {
|
|
47
|
+
console.log(`[INFO] ${message}`, ...args);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static warn(message, ...args) {
|
|
51
|
+
if (this.enabled) {
|
|
52
|
+
console.warn(`[WARN] ${message}`, ...args);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static error(message, ...args) {
|
|
56
|
+
if (this.enabled) {
|
|
57
|
+
console.error(`[ERROR] ${message}`, ...args);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
static debug(message, ...args) {
|
|
61
|
+
if (this.enabled && process.env.DEBUG === 'true') {
|
|
62
|
+
console.debug(`[DEBUG] ${message}`, ...args);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function getTempDir() {
|
|
67
|
+
const tempDir = (process.env.TMPDIR || '/tmp') + '/markdown-to-document';
|
|
68
|
+
if (!import('fs').then(fs => fs.existsSync(tempDir))) {
|
|
69
|
+
import('fs').then(fs => fs.mkdirSync(tempDir, { recursive: true }));
|
|
70
|
+
}
|
|
71
|
+
return tempDir;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants and Configuration
|
|
3
|
+
*/
|
|
4
|
+
import type { TypographyPreset, CoverTheme } from '../types/index.js';
|
|
5
|
+
export declare const WORDS_PER_MINUTE = 200;
|
|
6
|
+
export declare const COVER_THEMES: Record<string, CoverTheme>;
|
|
7
|
+
export declare const TYPOGRAPHY_PRESETS: Record<string, TypographyPreset>;
|
|
8
|
+
export declare const CALLOUT_TYPES: string[];
|
|
9
|
+
export declare const ATTACHMENT_FOLDERS: string[];
|
|
10
|
+
export declare const DEFAULT_CONFIG: {
|
|
11
|
+
format: "epub";
|
|
12
|
+
typographyPreset: "ebook";
|
|
13
|
+
coverTheme: string;
|
|
14
|
+
tocDepth: number;
|
|
15
|
+
includeToc: boolean;
|
|
16
|
+
enableFontSubsetting: boolean;
|
|
17
|
+
validateContent: boolean;
|
|
18
|
+
autoFix: boolean;
|
|
19
|
+
generateCover: boolean;
|
|
20
|
+
includeCopyright: boolean;
|
|
21
|
+
paperSize: "a4";
|
|
22
|
+
pdfEngine: "weasyprint";
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAqFnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA6C/D,CAAC;AAEF,eAAO,MAAM,aAAa,UAGzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAA+C,CAAC;AAE/E,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAa1B,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants and Configuration
|
|
3
|
+
*/
|
|
4
|
+
export const WORDS_PER_MINUTE = 200;
|
|
5
|
+
export const COVER_THEMES = {
|
|
6
|
+
apple: {
|
|
7
|
+
id: 'apple',
|
|
8
|
+
name: 'Apple Style',
|
|
9
|
+
category: 'basic',
|
|
10
|
+
description: 'Minimalist design inspired by Apple',
|
|
11
|
+
colors: {
|
|
12
|
+
primary: '#ffffff',
|
|
13
|
+
secondary: '#f5f5f7',
|
|
14
|
+
accent: '#0071e3',
|
|
15
|
+
background: '#000000',
|
|
16
|
+
text: '#ffffff'
|
|
17
|
+
},
|
|
18
|
+
style: 'minimal'
|
|
19
|
+
},
|
|
20
|
+
modern_gradient: {
|
|
21
|
+
id: 'modern_gradient',
|
|
22
|
+
name: 'Modern Gradient',
|
|
23
|
+
category: 'basic',
|
|
24
|
+
description: 'Contemporary gradient design',
|
|
25
|
+
colors: {
|
|
26
|
+
primary: '#667eea',
|
|
27
|
+
secondary: '#764ba2',
|
|
28
|
+
accent: '#f093fb',
|
|
29
|
+
background: '#1a1a2e',
|
|
30
|
+
text: '#ffffff'
|
|
31
|
+
},
|
|
32
|
+
style: 'gradient'
|
|
33
|
+
},
|
|
34
|
+
dark_tech: {
|
|
35
|
+
id: 'dark_tech',
|
|
36
|
+
name: 'Dark Tech',
|
|
37
|
+
category: 'basic',
|
|
38
|
+
description: 'Dark technology style',
|
|
39
|
+
colors: {
|
|
40
|
+
primary: '#0a0a0a',
|
|
41
|
+
secondary: '#1a1a1a',
|
|
42
|
+
accent: '#00ff88',
|
|
43
|
+
background: '#000000',
|
|
44
|
+
text: '#ffffff'
|
|
45
|
+
},
|
|
46
|
+
style: 'dark'
|
|
47
|
+
},
|
|
48
|
+
nature: {
|
|
49
|
+
id: 'nature',
|
|
50
|
+
name: 'Nature',
|
|
51
|
+
category: 'basic',
|
|
52
|
+
description: 'Nature-friendly design',
|
|
53
|
+
colors: {
|
|
54
|
+
primary: '#2d5016',
|
|
55
|
+
secondary: '#4a7c23',
|
|
56
|
+
accent: '#8bc34a',
|
|
57
|
+
background: '#1b2e0d',
|
|
58
|
+
text: '#ffffff'
|
|
59
|
+
},
|
|
60
|
+
style: 'modern'
|
|
61
|
+
},
|
|
62
|
+
classic_book: {
|
|
63
|
+
id: 'classic_book',
|
|
64
|
+
name: 'Classic Book',
|
|
65
|
+
category: 'basic',
|
|
66
|
+
description: 'Classic book style',
|
|
67
|
+
colors: {
|
|
68
|
+
primary: '#8b4513',
|
|
69
|
+
secondary: '#d2691e',
|
|
70
|
+
accent: '#f4a460',
|
|
71
|
+
background: '#2f1810',
|
|
72
|
+
text: '#f5deb3'
|
|
73
|
+
},
|
|
74
|
+
style: 'minimal'
|
|
75
|
+
},
|
|
76
|
+
minimalist: {
|
|
77
|
+
id: 'minimalist',
|
|
78
|
+
name: 'Minimalist',
|
|
79
|
+
category: 'basic',
|
|
80
|
+
description: 'Extremely simple design',
|
|
81
|
+
colors: {
|
|
82
|
+
primary: '#ffffff',
|
|
83
|
+
secondary: '#f8f8f8',
|
|
84
|
+
accent: '#333333',
|
|
85
|
+
background: '#ffffff',
|
|
86
|
+
text: '#000000'
|
|
87
|
+
},
|
|
88
|
+
style: 'minimal'
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
export const TYPOGRAPHY_PRESETS = {
|
|
92
|
+
novel: {
|
|
93
|
+
id: 'novel',
|
|
94
|
+
name: '소설',
|
|
95
|
+
description: '장편 소설, 에세이용 - 16pt, 들여쓰기, 양쪽 정렬',
|
|
96
|
+
fontSize: 16,
|
|
97
|
+
lineHeight: 1.8,
|
|
98
|
+
fontFamily: 'Noto Serif CJK KR, serif',
|
|
99
|
+
textAlign: 'justify',
|
|
100
|
+
paragraphSpacing: 0,
|
|
101
|
+
features: ['indentation', 'widow-orphan-control', 'hyphenation']
|
|
102
|
+
},
|
|
103
|
+
presentation: {
|
|
104
|
+
id: 'presentation',
|
|
105
|
+
name: '발표',
|
|
106
|
+
description: '프레젠테이션, 강의용 - 18pt, 큰 글씨, 넓은 여백',
|
|
107
|
+
fontSize: 18,
|
|
108
|
+
lineHeight: 1.6,
|
|
109
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
110
|
+
textAlign: 'left',
|
|
111
|
+
paragraphSpacing: 12,
|
|
112
|
+
features: ['large-headings', 'clear-structure', 'readable']
|
|
113
|
+
},
|
|
114
|
+
review: {
|
|
115
|
+
id: 'review',
|
|
116
|
+
name: '리뷰',
|
|
117
|
+
description: '검토용 문서 - 11pt, 촘촘한 레이아웃',
|
|
118
|
+
fontSize: 11,
|
|
119
|
+
lineHeight: 1.4,
|
|
120
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
121
|
+
textAlign: 'left',
|
|
122
|
+
paragraphSpacing: 6,
|
|
123
|
+
features: ['compact', 'information-dense', 'printable']
|
|
124
|
+
},
|
|
125
|
+
ebook: {
|
|
126
|
+
id: 'ebook',
|
|
127
|
+
name: '전자책',
|
|
128
|
+
description: '일반 전자책용 - 14pt, 균형잡힌 레이아웃',
|
|
129
|
+
fontSize: 14,
|
|
130
|
+
lineHeight: 1.6,
|
|
131
|
+
fontFamily: 'Noto Sans CJK KR, sans-serif',
|
|
132
|
+
textAlign: 'justify',
|
|
133
|
+
paragraphSpacing: 8,
|
|
134
|
+
features: ['balanced', 'readable', 'responsive']
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
export const CALLOUT_TYPES = [
|
|
138
|
+
'note', 'abstract', 'summary', 'tip', 'info', 'todo', 'success', 'question',
|
|
139
|
+
'warning', 'failure', 'danger', 'bug', 'example', 'quote'
|
|
140
|
+
];
|
|
141
|
+
export const ATTACHMENT_FOLDERS = ['attachments', 'images', 'assets', 'media'];
|
|
142
|
+
export const DEFAULT_CONFIG = {
|
|
143
|
+
format: 'epub',
|
|
144
|
+
typographyPreset: 'ebook',
|
|
145
|
+
coverTheme: 'apple',
|
|
146
|
+
tocDepth: 2,
|
|
147
|
+
includeToc: true,
|
|
148
|
+
enableFontSubsetting: false,
|
|
149
|
+
validateContent: true,
|
|
150
|
+
autoFix: true,
|
|
151
|
+
generateCover: true,
|
|
152
|
+
includeCopyright: false,
|
|
153
|
+
paperSize: 'a4',
|
|
154
|
+
pdfEngine: 'weasyprint'
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Utilities
|
|
3
|
+
*/
|
|
4
|
+
export declare function sanitizeFilename(filename: string): string;
|
|
5
|
+
export declare function ensureDirectory(dirPath: string): void;
|
|
6
|
+
export declare function findImageInVault(imageName: string, basePath: string, searchDirs?: string[]): Promise<string | null>;
|
|
7
|
+
export declare function getFileExtension(filePath: string): string;
|
|
8
|
+
export declare function getFileStats(filePath: string): {
|
|
9
|
+
size: number;
|
|
10
|
+
exists: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function readFileSync(filePath: string): string;
|
|
13
|
+
export declare function writeFileSync(filePath: string, content: string): void;
|
|
14
|
+
export declare function readFileAsync(filePath: string): Promise<string>;
|
|
15
|
+
export declare function writeFileAsync(filePath: string, content: string): Promise<void>;
|
|
16
|
+
export declare function getTempDir(): string;
|
|
17
|
+
//# sourceMappingURL=fileUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAsB,gBAAgB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAOhF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGrE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,wBAAgB,UAAU,IAAI,MAAM,CAInC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Utilities
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { glob } from 'glob';
|
|
7
|
+
export function sanitizeFilename(filename) {
|
|
8
|
+
return filename
|
|
9
|
+
.replace(/[<>:"/\\|?*]/g, '_')
|
|
10
|
+
.replace(/\s+/g, '_')
|
|
11
|
+
.replace(/^\.+/, '')
|
|
12
|
+
.slice(0, 200);
|
|
13
|
+
}
|
|
14
|
+
export function ensureDirectory(dirPath) {
|
|
15
|
+
if (!fs.existsSync(dirPath)) {
|
|
16
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function findImageInVault(imageName, basePath, searchDirs = []) {
|
|
20
|
+
const possiblePaths = [
|
|
21
|
+
path.join(basePath, imageName),
|
|
22
|
+
path.join(basePath, 'images', imageName),
|
|
23
|
+
path.join(basePath, 'attachments', imageName),
|
|
24
|
+
...searchDirs.map(dir => path.join(dir, imageName))
|
|
25
|
+
];
|
|
26
|
+
for (const possiblePath of possiblePaths) {
|
|
27
|
+
if (fs.existsSync(possiblePath)) {
|
|
28
|
+
return path.resolve(possiblePath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Try glob search
|
|
32
|
+
const pattern = `**/${path.basename(imageName)}`;
|
|
33
|
+
const matches = await glob(pattern, { cwd: basePath, absolute: true });
|
|
34
|
+
if (matches.length > 0) {
|
|
35
|
+
return matches[0];
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
export function getFileExtension(filePath) {
|
|
40
|
+
return path.extname(filePath).toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
export function getFileStats(filePath) {
|
|
43
|
+
try {
|
|
44
|
+
const stats = fs.statSync(filePath);
|
|
45
|
+
return { size: stats.size, exists: true };
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { size: 0, exists: false };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function readFileSync(filePath) {
|
|
52
|
+
return fs.readFileSync(filePath, 'utf-8');
|
|
53
|
+
}
|
|
54
|
+
export function writeFileSync(filePath, content) {
|
|
55
|
+
ensureDirectory(path.dirname(filePath));
|
|
56
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
57
|
+
}
|
|
58
|
+
export async function readFileAsync(filePath) {
|
|
59
|
+
return fs.promises.readFile(filePath, 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
export async function writeFileAsync(filePath, content) {
|
|
62
|
+
ensureDirectory(path.dirname(filePath));
|
|
63
|
+
await fs.promises.writeFile(filePath, content, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
export function getTempDir() {
|
|
66
|
+
const tempDir = path.join(process.env.TMPDIR || '/tmp', 'markdown-to-document');
|
|
67
|
+
ensureDirectory(tempDir);
|
|
68
|
+
return tempDir;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=fileUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Utilities
|
|
3
|
+
*/
|
|
4
|
+
import type { DocumentMetadata } from '../types/index.js';
|
|
5
|
+
export declare function extractFrontmatter(content: string): {
|
|
6
|
+
metadata: Partial<DocumentMetadata>;
|
|
7
|
+
content: string;
|
|
8
|
+
hasYamlFrontmatter: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function extractTitleFromContent(content: string): string;
|
|
11
|
+
export declare function splitTitle(title: string): {
|
|
12
|
+
title: string;
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function convertObsidianLinks(content: string): string;
|
|
16
|
+
export declare function convertObsidianImageSyntax(content: string): {
|
|
17
|
+
content: string;
|
|
18
|
+
images: string[];
|
|
19
|
+
};
|
|
20
|
+
export declare function convertHighlights(content: string): string;
|
|
21
|
+
export declare function removeMediaEmbeds(content: string): string;
|
|
22
|
+
export declare function countWords(content: string): number;
|
|
23
|
+
export declare function countChapters(content: string): number;
|
|
24
|
+
export declare function countImages(content: string): number;
|
|
25
|
+
export declare function escapePipeCharacters(content: string): string;
|
|
26
|
+
export declare function extractStandardImagePaths(content: string): string[];
|
|
27
|
+
//# sourceMappingURL=markdownUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownUtils.d.ts","sourceRoot":"","sources":["../../src/utils/markdownUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,OAAO,CAAC;CAC/B,CA4DA;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAkB9E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB,CAaA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBlD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwB5D;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnE"}
|