udf-cli 0.3.0 → 0.4.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 (54) hide show
  1. package/README.md +130 -7
  2. package/dist/bin/udf-cli.d.ts +0 -1
  3. package/dist/bin/udf-cli.js +1 -121
  4. package/dist/chunk-6564CQ7U.js +1 -0
  5. package/dist/module-resolve-XD725NCC.js +1 -0
  6. package/dist/pin-prompt-FSXBDU36.js +1 -0
  7. package/dist/sign-BNEXYCMC.js +1 -0
  8. package/dist/src/index.d.ts +117 -6
  9. package/dist/src/index.js +1 -6
  10. package/package.json +19 -3
  11. package/dist/bin/udf-cli.js.map +0 -1
  12. package/dist/src/converters/html-to-udf.d.ts +0 -1
  13. package/dist/src/converters/html-to-udf.js +0 -7
  14. package/dist/src/converters/html-to-udf.js.map +0 -1
  15. package/dist/src/converters/markdown-to-udf.d.ts +0 -1
  16. package/dist/src/converters/markdown-to-udf.js +0 -7
  17. package/dist/src/converters/markdown-to-udf.js.map +0 -1
  18. package/dist/src/converters/udf-to-html.d.ts +0 -1
  19. package/dist/src/converters/udf-to-html.js +0 -7
  20. package/dist/src/converters/udf-to-html.js.map +0 -1
  21. package/dist/src/converters/udf-to-markdown.d.ts +0 -1
  22. package/dist/src/converters/udf-to-markdown.js +0 -7
  23. package/dist/src/converters/udf-to-markdown.js.map +0 -1
  24. package/dist/src/html/markdown-parser.d.ts +0 -2
  25. package/dist/src/html/markdown-parser.js +0 -172
  26. package/dist/src/html/markdown-parser.js.map +0 -1
  27. package/dist/src/html/markdown-serializer.d.ts +0 -2
  28. package/dist/src/html/markdown-serializer.js +0 -156
  29. package/dist/src/html/markdown-serializer.js.map +0 -1
  30. package/dist/src/html/parser.d.ts +0 -2
  31. package/dist/src/html/parser.js +0 -576
  32. package/dist/src/html/parser.js.map +0 -1
  33. package/dist/src/html/serializer.d.ts +0 -6
  34. package/dist/src/html/serializer.js +0 -285
  35. package/dist/src/html/serializer.js.map +0 -1
  36. package/dist/src/index.js.map +0 -1
  37. package/dist/src/model/document.d.ts +0 -107
  38. package/dist/src/model/document.js +0 -88
  39. package/dist/src/model/document.js.map +0 -1
  40. package/dist/src/udf/cdata-builder.d.ts +0 -14
  41. package/dist/src/udf/cdata-builder.js +0 -71
  42. package/dist/src/udf/cdata-builder.js.map +0 -1
  43. package/dist/src/udf/parser.d.ts +0 -2
  44. package/dist/src/udf/parser.js +0 -325
  45. package/dist/src/udf/parser.js.map +0 -1
  46. package/dist/src/udf/serializer.d.ts +0 -5
  47. package/dist/src/udf/serializer.js +0 -267
  48. package/dist/src/udf/serializer.js.map +0 -1
  49. package/dist/src/utils/color.d.ts +0 -9
  50. package/dist/src/utils/color.js +0 -87
  51. package/dist/src/utils/color.js.map +0 -1
  52. package/dist/src/utils/style.d.ts +0 -23
  53. package/dist/src/utils/style.js +0 -80
  54. package/dist/src/utils/style.js.map +0 -1
@@ -1,6 +1,117 @@
1
- export { htmlToUdf } from './converters/html-to-udf.js';
2
- export { udfToHtml } from './converters/udf-to-html.js';
3
- export { udfToMarkdown } from './converters/udf-to-markdown.js';
4
- export { markdownToUdf } from './converters/markdown-to-udf.js';
5
- export type { Document, PageFormat, Paragraph, Table, TableRow, TableCell, TextRun, ImageRun, TextStyle, InlineElement, BlockElement, ListProperties, BorderStyle, } from './model/document.js';
6
- export { Alignment, DEFAULT_TEXT_STYLE, DEFAULT_PAGE_FORMAT, DEFAULT_BORDER, createParagraph, createTextRun, createTable, createTableRow, createTableCell, } from './model/document.js';
1
+ declare function htmlToUdf(html: string): Promise<Buffer>;
2
+
3
+ declare function udfToHtml(udf: Buffer): Promise<string>;
4
+
5
+ declare function udfToMarkdown(udf: Buffer): Promise<string>;
6
+
7
+ declare function markdownToUdf(md: string): Promise<Buffer>;
8
+
9
+ declare enum Alignment {
10
+ Left = 0,
11
+ Center = 1,
12
+ Right = 2,
13
+ Justify = 3
14
+ }
15
+ interface TextStyle {
16
+ fontFamily: string;
17
+ fontSize: number;
18
+ bold: boolean;
19
+ italic: boolean;
20
+ underline: boolean;
21
+ color: number;
22
+ backgroundColor: number;
23
+ }
24
+ interface TextRun {
25
+ type: 'text';
26
+ text: string;
27
+ style: TextStyle;
28
+ }
29
+ interface ImageRun {
30
+ type: 'image';
31
+ data: string;
32
+ width: number;
33
+ height: number;
34
+ }
35
+ interface TabRun {
36
+ type: 'tab';
37
+ style: TextStyle;
38
+ }
39
+ interface PageBreak {
40
+ type: 'pageBreak';
41
+ }
42
+ type InlineElement = TextRun | ImageRun | TabRun;
43
+ interface ListProperties {
44
+ type: 'numbered' | 'bulleted';
45
+ numberType?: string;
46
+ bulletType?: string;
47
+ level: number;
48
+ listId?: number;
49
+ }
50
+ interface Paragraph {
51
+ type: 'paragraph';
52
+ alignment: Alignment;
53
+ leftIndent: number;
54
+ rightIndent: number;
55
+ firstLineIndent: number;
56
+ lineSpacing: number;
57
+ spaceBefore: number;
58
+ spaceAfter: number;
59
+ runs: InlineElement[];
60
+ list?: ListProperties;
61
+ tabStops?: number[];
62
+ }
63
+ interface BorderStyle {
64
+ name: string;
65
+ style: string;
66
+ }
67
+ interface TableCell {
68
+ colspan: number;
69
+ rowspan: number;
70
+ verticalAlign: 'top' | 'middle' | 'bottom';
71
+ fillColor: number;
72
+ border: BorderStyle;
73
+ borderWidth: number;
74
+ borderColor: number;
75
+ borderSpec: number;
76
+ content: BlockElement[];
77
+ }
78
+ interface TableRow {
79
+ name: string;
80
+ rowType: string;
81
+ height: number;
82
+ border: BorderStyle;
83
+ cells: TableCell[];
84
+ }
85
+ interface Table {
86
+ type: 'table';
87
+ name: string;
88
+ columns: number;
89
+ columnWidths: number[];
90
+ border: BorderStyle;
91
+ rows: TableRow[];
92
+ }
93
+ type BlockElement = Paragraph | Table | PageBreak;
94
+ interface PageFormat {
95
+ mediaSizeName: number;
96
+ leftMargin: number;
97
+ rightMargin: number;
98
+ topMargin: number;
99
+ bottomMargin: number;
100
+ paperOrientation: number;
101
+ headerFOffset: number;
102
+ footerFOffset: number;
103
+ }
104
+ interface Document {
105
+ pages: PageFormat;
106
+ body: BlockElement[];
107
+ }
108
+ declare const DEFAULT_TEXT_STYLE: TextStyle;
109
+ declare const DEFAULT_PAGE_FORMAT: PageFormat;
110
+ declare const DEFAULT_BORDER: BorderStyle;
111
+ declare function createParagraph(overrides?: Partial<Omit<Paragraph, 'type'>>): Paragraph;
112
+ declare function createTextRun(text: string, style?: Partial<TextStyle>): TextRun;
113
+ declare function createTable(rows: TableRow[], columnWidths: number[], overrides?: Partial<Omit<Table, 'type' | 'rows'>>): Table;
114
+ declare function createTableCell(content: BlockElement[], overrides?: Partial<TableCell>): TableCell;
115
+ declare function createTableRow(cells: TableCell[], overrides?: Partial<TableRow>): TableRow;
116
+
117
+ export { Alignment, type BlockElement, type BorderStyle, DEFAULT_BORDER, DEFAULT_PAGE_FORMAT, DEFAULT_TEXT_STYLE, type Document, type ImageRun, type InlineElement, type ListProperties, type PageFormat, type Paragraph, type Table, type TableCell, type TableRow, type TextRun, type TextStyle, createParagraph, createTable, createTableCell, createTableRow, createTextRun, htmlToUdf, markdownToUdf, udfToHtml, udfToMarkdown };
package/dist/src/index.js CHANGED
@@ -1,6 +1 @@
1
- export { htmlToUdf } from './converters/html-to-udf.js';
2
- export { udfToHtml } from './converters/udf-to-html.js';
3
- export { udfToMarkdown } from './converters/udf-to-markdown.js';
4
- export { markdownToUdf } from './converters/markdown-to-udf.js';
5
- export { Alignment, DEFAULT_TEXT_STYLE, DEFAULT_PAGE_FORMAT, DEFAULT_BORDER, createParagraph, createTextRun, createTable, createTableRow, createTableCell, } from './model/document.js';
6
- //# sourceMappingURL=index.js.map
1
+ import{Alignment,DEFAULT_BORDER,DEFAULT_PAGE_FORMAT,DEFAULT_TEXT_STYLE,createParagraph,createTable,createTableCell,createTableRow,createTextRun,htmlToUdf,markdownToUdf,udfToHtml,udfToMarkdown}from'../chunk-6564CQ7U.js';export{Alignment,DEFAULT_BORDER,DEFAULT_PAGE_FORMAT,DEFAULT_TEXT_STYLE,createParagraph,createTable,createTableCell,createTableRow,createTextRun,htmlToUdf,markdownToUdf,udfToHtml,udfToMarkdown};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udf-cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Convert between HTML/Markdown and UYAP UDF file format",
5
5
  "type": "module",
6
6
  "bin": {
@@ -29,19 +29,35 @@
29
29
  },
30
30
  "license": "MIT",
31
31
  "scripts": {
32
- "build": "tsc",
32
+ "build:bundle": "tsup",
33
+ "build:obfuscate": "javascript-obfuscator dist --output dist --target node --rename-globals false --identifier-names-generator mangled --string-array false --control-flow-flattening false --transform-object-keys false --unicode-escape-sequence false --compact true",
34
+ "build:finalize": "node scripts/finalize-bundle.mjs",
35
+ "build": "npm run build:bundle && npm run build:obfuscate && npm run build:finalize",
36
+ "typecheck": "tsc --noEmit",
33
37
  "prepublishOnly": "npm run build",
34
38
  "test": "vitest run",
35
39
  "test:watch": "vitest"
36
40
  },
37
41
  "dependencies": {
42
+ "@peculiar/asn1-cms": "^2.7.0",
43
+ "@peculiar/asn1-ess": "^2.7.0",
44
+ "@peculiar/asn1-schema": "^2.7.0",
45
+ "@peculiar/asn1-x509": "^2.7.0",
46
+ "asn1js": "^3.0.10",
38
47
  "commander": "^14.0.3",
39
48
  "htmlparser2": "^10.1.0",
40
- "jszip": "^3.10.1"
49
+ "jszip": "^3.10.1",
50
+ "open": "^10.2.0",
51
+ "zod": "^3.25.76"
41
52
  },
42
53
  "devDependencies": {
43
54
  "@types/node": "^25.5.0",
55
+ "javascript-obfuscator": "^4.2.2",
56
+ "tsup": "^8.5.1",
44
57
  "typescript": "^5.9.3",
45
58
  "vitest": "^4.1.0"
59
+ },
60
+ "optionalDependencies": {
61
+ "koffi": "^3.0.2"
46
62
  }
47
63
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"udf-cli.js","sourceRoot":"","sources":["../../bin/udf-cli.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function htmlToUdf(html: string): Promise<Buffer>;
@@ -1,7 +0,0 @@
1
- import { parseHtml } from '../html/parser.js';
2
- import { serializeUdf } from '../udf/serializer.js';
3
- export async function htmlToUdf(html) {
4
- const doc = parseHtml(html);
5
- return serializeUdf(doc);
6
- }
7
- //# sourceMappingURL=html-to-udf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"html-to-udf.js","sourceRoot":"","sources":["../../../src/converters/html-to-udf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +0,0 @@
1
- export declare function markdownToUdf(md: string): Promise<Buffer>;
@@ -1,7 +0,0 @@
1
- import { parseMarkdown } from '../html/markdown-parser.js';
2
- import { serializeUdf } from '../udf/serializer.js';
3
- export async function markdownToUdf(md) {
4
- const doc = parseMarkdown(md);
5
- return serializeUdf(doc);
6
- }
7
- //# sourceMappingURL=markdown-to-udf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-to-udf.js","sourceRoot":"","sources":["../../../src/converters/markdown-to-udf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU;IAC5C,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +0,0 @@
1
- export declare function udfToHtml(udf: Buffer): Promise<string>;
@@ -1,7 +0,0 @@
1
- import { parseUdf } from '../udf/parser.js';
2
- import { serializeHtml } from '../html/serializer.js';
3
- export async function udfToHtml(udf) {
4
- const doc = await parseUdf(udf);
5
- return serializeHtml(doc);
6
- }
7
- //# sourceMappingURL=udf-to-html.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"udf-to-html.js","sourceRoot":"","sources":["../../../src/converters/udf-to-html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +0,0 @@
1
- export declare function udfToMarkdown(udf: Buffer): Promise<string>;
@@ -1,7 +0,0 @@
1
- import { parseUdf } from '../udf/parser.js';
2
- import { serializeMarkdown } from '../html/markdown-serializer.js';
3
- export async function udfToMarkdown(udf) {
4
- const doc = await parseUdf(udf);
5
- return serializeMarkdown(doc);
6
- }
7
- //# sourceMappingURL=udf-to-markdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"udf-to-markdown.js","sourceRoot":"","sources":["../../../src/converters/udf-to-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Document } from '../model/document.js';
2
- export declare function parseMarkdown(md: string): Document;
@@ -1,172 +0,0 @@
1
- import { Alignment, DEFAULT_TEXT_STYLE, createParagraph, createTextRun, createTable, createTableRow, createTableCell, } from '../model/document.js';
2
- import { DEFAULT_PAGE_FORMAT } from '../model/document.js';
3
- export function parseMarkdown(md) {
4
- const lines = md.split('\n');
5
- const state = { body: [], pos: 0, lines };
6
- while (state.pos < state.lines.length) {
7
- const line = state.lines[state.pos];
8
- // Blank line
9
- if (line.trim() === '') {
10
- state.pos++;
11
- continue;
12
- }
13
- // Table (starts with |)
14
- if (line.trimStart().startsWith('|')) {
15
- parseTable(state);
16
- continue;
17
- }
18
- // Unordered list
19
- if (/^\s*[-*+]\s/.test(line)) {
20
- parseList(state, 'bulleted');
21
- continue;
22
- }
23
- // Ordered list
24
- if (/^\s*\d+\.\s/.test(line)) {
25
- parseList(state, 'numbered');
26
- continue;
27
- }
28
- // Heading
29
- const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
30
- if (headingMatch) {
31
- const level = headingMatch[1].length;
32
- const sizes = { 1: 24, 2: 20, 3: 16, 4: 14, 5: 12, 6: 10 };
33
- const runs = parseInline(headingMatch[2], { ...DEFAULT_TEXT_STYLE, bold: true, fontSize: sizes[level] || 12 });
34
- state.body.push(createParagraph({ runs, alignment: Alignment.Left }));
35
- state.pos++;
36
- continue;
37
- }
38
- // Regular paragraph
39
- const runs = parseInline(line, { ...DEFAULT_TEXT_STYLE });
40
- state.body.push(createParagraph({ runs }));
41
- state.pos++;
42
- }
43
- return { pages: { ...DEFAULT_PAGE_FORMAT }, body: state.body };
44
- }
45
- function parseInline(text, baseStyle) {
46
- const runs = [];
47
- let remaining = text;
48
- while (remaining.length > 0) {
49
- // Bold + italic: ***text***
50
- const boldItalicMatch = remaining.match(/^\*\*\*(.+?)\*\*\*/);
51
- if (boldItalicMatch) {
52
- runs.push(createTextRun(boldItalicMatch[1], { ...baseStyle, bold: true, italic: true }));
53
- remaining = remaining.slice(boldItalicMatch[0].length);
54
- continue;
55
- }
56
- // Bold: **text**
57
- const boldMatch = remaining.match(/^\*\*(.+?)\*\*/);
58
- if (boldMatch) {
59
- runs.push(createTextRun(boldMatch[1], { ...baseStyle, bold: true }));
60
- remaining = remaining.slice(boldMatch[0].length);
61
- continue;
62
- }
63
- // Italic: *text*
64
- const italicMatch = remaining.match(/^\*(.+?)\*/);
65
- if (italicMatch) {
66
- runs.push(createTextRun(italicMatch[1], { ...baseStyle, italic: true }));
67
- remaining = remaining.slice(italicMatch[0].length);
68
- continue;
69
- }
70
- // Image: ![alt](data:...)
71
- const imgMatch = remaining.match(/^!\[([^\]]*)\]\(data:image\/[^;]+;base64,([^)]+)\)/);
72
- if (imgMatch) {
73
- runs.push({ type: 'image', data: imgMatch[2], width: 200, height: 150 });
74
- remaining = remaining.slice(imgMatch[0].length);
75
- continue;
76
- }
77
- // Plain text until next special char
78
- const plainMatch = remaining.match(/^[^*!\[\\]+/);
79
- if (plainMatch) {
80
- runs.push(createTextRun(plainMatch[0], baseStyle));
81
- remaining = remaining.slice(plainMatch[0].length);
82
- continue;
83
- }
84
- // Escaped char or single special char
85
- if (remaining.startsWith('\\') && remaining.length > 1) {
86
- runs.push(createTextRun(remaining[1], baseStyle));
87
- remaining = remaining.slice(2);
88
- continue;
89
- }
90
- // Consume single char
91
- runs.push(createTextRun(remaining[0], baseStyle));
92
- remaining = remaining.slice(1);
93
- }
94
- // Merge adjacent runs with same style
95
- return mergeRuns(runs);
96
- }
97
- function mergeRuns(runs) {
98
- if (runs.length <= 1)
99
- return runs;
100
- const merged = [runs[0]];
101
- for (let i = 1; i < runs.length; i++) {
102
- const prev = merged[merged.length - 1];
103
- const curr = runs[i];
104
- if (prev.type === 'text' && curr.type === 'text' && stylesEqual(prev.style, curr.style)) {
105
- merged[merged.length - 1] = createTextRun(prev.text + curr.text, prev.style);
106
- }
107
- else {
108
- merged.push(curr);
109
- }
110
- }
111
- return merged;
112
- }
113
- function stylesEqual(a, b) {
114
- return a.fontFamily === b.fontFamily && a.fontSize === b.fontSize &&
115
- a.bold === b.bold && a.italic === b.italic && a.underline === b.underline &&
116
- a.color === b.color && a.backgroundColor === b.backgroundColor;
117
- }
118
- function parseList(state, type) {
119
- const pattern = type === 'numbered' ? /^(\s*)\d+\.\s(.+)$/ : /^(\s*)[-*+]\s(.+)$/;
120
- let listId = 1;
121
- while (state.pos < state.lines.length) {
122
- const line = state.lines[state.pos];
123
- const match = line.match(pattern);
124
- if (!match)
125
- break;
126
- const indent = match[1].length;
127
- const level = Math.floor(indent / 2);
128
- const content = match[2];
129
- const runs = parseInline(content, { ...DEFAULT_TEXT_STYLE });
130
- const list = {
131
- type,
132
- level,
133
- listId,
134
- ...(type === 'numbered' ? { numberType: 'NUMBER_TYPE_NUMBER_DOT' } : { bulletType: 'BULLET_TYPE_ELLIPSE' }),
135
- };
136
- state.body.push(createParagraph({ runs, list }));
137
- state.pos++;
138
- }
139
- }
140
- function parseTable(state) {
141
- const rows = [];
142
- while (state.pos < state.lines.length) {
143
- const line = state.lines[state.pos].trim();
144
- if (!line.startsWith('|'))
145
- break;
146
- // Parse cells: split by | and trim
147
- const cells = line.split('|').slice(1, -1).map(c => c.trim());
148
- // Skip separator row (| --- | :---: | etc.)
149
- if (cells.every(c => /^:?-{2,}:?$/.test(c))) {
150
- state.pos++;
151
- continue;
152
- }
153
- rows.push(cells);
154
- state.pos++;
155
- }
156
- if (rows.length === 0)
157
- return;
158
- const columnCount = Math.max(...rows.map(r => r.length));
159
- const columnWidths = Array(columnCount).fill(Math.round(300 / columnCount));
160
- const tableRows = rows.map((cells, rowIdx) => {
161
- const tableCells = [];
162
- for (let i = 0; i < columnCount; i++) {
163
- const cellText = cells[i] || '';
164
- const runs = parseInline(cellText, { ...DEFAULT_TEXT_STYLE });
165
- const para = createParagraph({ runs });
166
- tableCells.push(createTableCell([para]));
167
- }
168
- return createTableRow(tableCells, { name: `row${rowIdx + 1}` });
169
- });
170
- state.body.push(createTable(tableRows, columnWidths));
171
- }
172
- //# sourceMappingURL=markdown-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../src/html/markdown-parser.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { Document } from '../model/document.js';
2
- export declare function serializeMarkdown(doc: Document): string;
@@ -1,156 +0,0 @@
1
- import { Alignment } from '../model/document.js';
2
- function escapeMarkdown(text) {
3
- return text
4
- .replace(/\\/g, '\\\\')
5
- .replace(/\|/g, '\\|')
6
- .replace(/\[/g, '\\[')
7
- .replace(/\]/g, '\\]');
8
- }
9
- function serializeRun(run) {
10
- if (run.type === 'tab') {
11
- return '\t';
12
- }
13
- if (run.type === 'image') {
14
- const img = run;
15
- return `![image](data:image/png;base64,${img.data})`;
16
- }
17
- const tr = run;
18
- let text = escapeMarkdown(tr.text);
19
- if (text.trim() === '' || text === '\u200B')
20
- return text === '\u200B' ? '' : text;
21
- if (tr.style.bold && tr.style.italic) {
22
- text = `***${text}***`;
23
- }
24
- else if (tr.style.bold) {
25
- text = `**${text}**`;
26
- }
27
- else if (tr.style.italic) {
28
- text = `*${text}*`;
29
- }
30
- return text;
31
- }
32
- function serializeParagraphContent(para) {
33
- return para.runs.map(serializeRun).join('');
34
- }
35
- function serializeParagraph(para) {
36
- const content = serializeParagraphContent(para);
37
- if (!content.trim())
38
- return '';
39
- return content;
40
- }
41
- function serializeTableRow(cells) {
42
- return '| ' + cells.join(' | ') + ' |';
43
- }
44
- function serializeTable(table) {
45
- const lines = [];
46
- for (let i = 0; i < table.rows.length; i++) {
47
- const row = table.rows[i];
48
- const cells = row.cells.map(cell => {
49
- const parts = [];
50
- for (const block of cell.content) {
51
- if (block.type === 'paragraph') {
52
- const text = serializeParagraph(block);
53
- if (text)
54
- parts.push(text);
55
- }
56
- else if (block.type === 'table') {
57
- // Nested table: flatten to text
58
- parts.push(flattenTable(block));
59
- }
60
- }
61
- return parts.join(' ') || ' ';
62
- });
63
- lines.push(serializeTableRow(cells));
64
- // Add separator after first row (header)
65
- if (i === 0) {
66
- const sep = row.cells.map(cell => {
67
- // Check alignment of first paragraph in cell
68
- const firstPara = cell.content.find(b => b.type === 'paragraph');
69
- const align = firstPara?.alignment ?? Alignment.Left;
70
- switch (align) {
71
- case Alignment.Center: return ':---:';
72
- case Alignment.Right: return '---:';
73
- default: return '---';
74
- }
75
- });
76
- lines.push('| ' + sep.join(' | ') + ' |');
77
- }
78
- }
79
- return lines.join('\n');
80
- }
81
- function flattenTable(table) {
82
- // Flatten nested table to inline text
83
- const parts = [];
84
- for (const row of table.rows) {
85
- const cells = row.cells.map(cell => {
86
- return cell.content
87
- .filter(b => b.type === 'paragraph')
88
- .map(b => serializeParagraph(b))
89
- .filter(Boolean)
90
- .join(' ');
91
- });
92
- parts.push(cells.join(' / '));
93
- }
94
- return parts.join('; ');
95
- }
96
- export function serializeMarkdown(doc) {
97
- const lines = [];
98
- const body = doc.body;
99
- let i = 0;
100
- while (i < body.length) {
101
- const block = body[i];
102
- if (block.type === 'pageBreak') {
103
- lines.push('');
104
- lines.push('---');
105
- lines.push('');
106
- i++;
107
- continue;
108
- }
109
- if (block.type === 'table') {
110
- lines.push('');
111
- lines.push(serializeTable(block));
112
- lines.push('');
113
- i++;
114
- continue;
115
- }
116
- // Paragraph
117
- const para = block;
118
- // List items
119
- if (para.list) {
120
- const listLines = [];
121
- let j = i;
122
- let itemNum = 1;
123
- while (j < body.length && body[j].type === 'paragraph' && body[j].list) {
124
- const lp = body[j];
125
- const content = serializeParagraphContent(lp);
126
- const indent = ' '.repeat(lp.list.level);
127
- if (lp.list.type === 'numbered') {
128
- listLines.push(`${indent}${itemNum}. ${content}`);
129
- itemNum++;
130
- }
131
- else {
132
- listLines.push(`${indent}- ${content}`);
133
- }
134
- j++;
135
- }
136
- lines.push('');
137
- lines.push(...listLines);
138
- lines.push('');
139
- i = j;
140
- continue;
141
- }
142
- const content = serializeParagraph(para);
143
- // Empty paragraph → blank line
144
- if (!content.trim()) {
145
- lines.push('');
146
- i++;
147
- continue;
148
- }
149
- lines.push(content);
150
- i++;
151
- }
152
- // Clean up: collapse multiple blank lines to max 2
153
- const result = lines.join('\n').replace(/\n{3,}/g, '\n\n').trim();
154
- return result + '\n';
155
- }
156
- //# sourceMappingURL=markdown-serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-serializer.js","sourceRoot":"","sources":["../../../src/html/markdown-serializer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { type Document } from '../model/document.js';
2
- export declare function parseHtml(html: string): Document;