udf-cli 0.3.1 → 0.4.1

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 (56) 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 -125
  4. package/dist/chunk-6564CQ7U.js +1 -0
  5. package/dist/chunk-UMC6EI4C.js +1 -0
  6. package/dist/mobile-4VK2JOUT.js +1 -0
  7. package/dist/module-resolve-XD725NCC.js +1 -0
  8. package/dist/pin-prompt-FSXBDU36.js +1 -0
  9. package/dist/sign-AELEVJHO.js +1 -0
  10. package/dist/src/index.d.ts +117 -6
  11. package/dist/src/index.js +1 -6
  12. package/package.json +19 -3
  13. package/dist/bin/udf-cli.js.map +0 -1
  14. package/dist/src/converters/html-to-udf.d.ts +0 -1
  15. package/dist/src/converters/html-to-udf.js +0 -7
  16. package/dist/src/converters/html-to-udf.js.map +0 -1
  17. package/dist/src/converters/markdown-to-udf.d.ts +0 -1
  18. package/dist/src/converters/markdown-to-udf.js +0 -7
  19. package/dist/src/converters/markdown-to-udf.js.map +0 -1
  20. package/dist/src/converters/udf-to-html.d.ts +0 -1
  21. package/dist/src/converters/udf-to-html.js +0 -7
  22. package/dist/src/converters/udf-to-html.js.map +0 -1
  23. package/dist/src/converters/udf-to-markdown.d.ts +0 -1
  24. package/dist/src/converters/udf-to-markdown.js +0 -7
  25. package/dist/src/converters/udf-to-markdown.js.map +0 -1
  26. package/dist/src/html/markdown-parser.d.ts +0 -2
  27. package/dist/src/html/markdown-parser.js +0 -172
  28. package/dist/src/html/markdown-parser.js.map +0 -1
  29. package/dist/src/html/markdown-serializer.d.ts +0 -2
  30. package/dist/src/html/markdown-serializer.js +0 -156
  31. package/dist/src/html/markdown-serializer.js.map +0 -1
  32. package/dist/src/html/parser.d.ts +0 -2
  33. package/dist/src/html/parser.js +0 -576
  34. package/dist/src/html/parser.js.map +0 -1
  35. package/dist/src/html/serializer.d.ts +0 -6
  36. package/dist/src/html/serializer.js +0 -285
  37. package/dist/src/html/serializer.js.map +0 -1
  38. package/dist/src/index.js.map +0 -1
  39. package/dist/src/model/document.d.ts +0 -107
  40. package/dist/src/model/document.js +0 -88
  41. package/dist/src/model/document.js.map +0 -1
  42. package/dist/src/udf/cdata-builder.d.ts +0 -14
  43. package/dist/src/udf/cdata-builder.js +0 -71
  44. package/dist/src/udf/cdata-builder.js.map +0 -1
  45. package/dist/src/udf/parser.d.ts +0 -2
  46. package/dist/src/udf/parser.js +0 -325
  47. package/dist/src/udf/parser.js.map +0 -1
  48. package/dist/src/udf/serializer.d.ts +0 -5
  49. package/dist/src/udf/serializer.js +0 -267
  50. package/dist/src/udf/serializer.js.map +0 -1
  51. package/dist/src/utils/color.d.ts +0 -9
  52. package/dist/src/utils/color.js +0 -87
  53. package/dist/src/utils/color.js.map +0 -1
  54. package/dist/src/utils/style.d.ts +0 -23
  55. package/dist/src/utils/style.js +0 -80
  56. 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.1",
3
+ "version": "0.4.1",
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;