@bendyline/squisq-formats 1.2.3 → 1.3.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 (166) hide show
  1. package/dist/chunk-33YRFXZZ.js +1187 -0
  2. package/dist/chunk-33YRFXZZ.js.map +1 -0
  3. package/dist/{chunk-EUQQYBZZ.js → chunk-ERZ627GR.js} +4 -4
  4. package/dist/chunk-ERZ627GR.js.map +1 -0
  5. package/dist/{chunk-MEZF76JA.js → chunk-UDS45KUJ.js} +68 -25
  6. package/dist/chunk-UDS45KUJ.js.map +1 -0
  7. package/dist/{chunk-NGWHV77G.js → chunk-VN2KEOYB.js} +7 -6
  8. package/dist/chunk-VN2KEOYB.js.map +1 -0
  9. package/dist/container/index.d.ts +7 -5
  10. package/dist/container/index.js +39 -70
  11. package/dist/container/index.js.map +1 -1
  12. package/dist/docx/index.d.ts +128 -15
  13. package/dist/docx/index.js +17 -22
  14. package/dist/docx/index.js.map +1 -1
  15. package/dist/epub/index.d.ts +66 -11
  16. package/dist/epub/index.js +10 -18
  17. package/dist/epub/index.js.map +1 -1
  18. package/dist/html/index.d.ts +278 -9
  19. package/dist/html/index.js +26 -137
  20. package/dist/html/index.js.map +1 -1
  21. package/dist/index.d.ts +9 -38
  22. package/dist/index.js +62 -37
  23. package/dist/index.js.map +1 -1
  24. package/dist/ooxml/index.d.ts +353 -14
  25. package/dist/ooxml/index.js +116 -22
  26. package/dist/ooxml/index.js.map +1 -1
  27. package/dist/pdf/index.d.ts +143 -17
  28. package/dist/pdf/index.js +16 -25
  29. package/dist/pdf/index.js.map +1 -1
  30. package/dist/pptx/index.d.ts +83 -8
  31. package/dist/pptx/index.js +14 -34
  32. package/dist/pptx/index.js.map +1 -1
  33. package/dist/xlsx/index.d.ts +12 -9
  34. package/dist/xlsx/index.js +12 -44
  35. package/dist/xlsx/index.js.map +1 -1
  36. package/package.json +3 -2
  37. package/src/__tests__/html.test.ts +82 -4
  38. package/src/__tests__/pdfExport.test.ts +1 -1
  39. package/src/__tests__/plainHtml.test.ts +372 -0
  40. package/src/__tests__/plainHtmlBundle.test.ts +235 -0
  41. package/src/docx/export.ts +163 -22
  42. package/src/epub/export.ts +3 -3
  43. package/src/html/docsHtmlBundle.ts +369 -0
  44. package/src/html/htmlTemplate.ts +40 -0
  45. package/src/html/index.ts +32 -3
  46. package/src/html/plainHtml.ts +736 -0
  47. package/src/html/plainHtmlBundle.ts +419 -0
  48. package/src/pptx/export.ts +10 -9
  49. package/dist/__tests__/container.test.d.ts +0 -8
  50. package/dist/__tests__/container.test.d.ts.map +0 -1
  51. package/dist/__tests__/container.test.js +0 -147
  52. package/dist/__tests__/container.test.js.map +0 -1
  53. package/dist/__tests__/docxExport.test.d.ts +0 -8
  54. package/dist/__tests__/docxExport.test.d.ts.map +0 -1
  55. package/dist/__tests__/docxExport.test.js +0 -383
  56. package/dist/__tests__/docxExport.test.js.map +0 -1
  57. package/dist/__tests__/docxImport.test.d.ts +0 -8
  58. package/dist/__tests__/docxImport.test.d.ts.map +0 -1
  59. package/dist/__tests__/docxImport.test.js +0 -309
  60. package/dist/__tests__/docxImport.test.js.map +0 -1
  61. package/dist/__tests__/epub.test.d.ts +0 -8
  62. package/dist/__tests__/epub.test.d.ts.map +0 -1
  63. package/dist/__tests__/epub.test.js +0 -472
  64. package/dist/__tests__/epub.test.js.map +0 -1
  65. package/dist/__tests__/html.test.d.ts +0 -8
  66. package/dist/__tests__/html.test.d.ts.map +0 -1
  67. package/dist/__tests__/html.test.js +0 -243
  68. package/dist/__tests__/html.test.js.map +0 -1
  69. package/dist/__tests__/ooxml.test.d.ts +0 -5
  70. package/dist/__tests__/ooxml.test.d.ts.map +0 -1
  71. package/dist/__tests__/ooxml.test.js +0 -152
  72. package/dist/__tests__/ooxml.test.js.map +0 -1
  73. package/dist/__tests__/pdfExport.test.d.ts +0 -8
  74. package/dist/__tests__/pdfExport.test.d.ts.map +0 -1
  75. package/dist/__tests__/pdfExport.test.js +0 -275
  76. package/dist/__tests__/pdfExport.test.js.map +0 -1
  77. package/dist/__tests__/pdfImport.test.d.ts +0 -11
  78. package/dist/__tests__/pdfImport.test.d.ts.map +0 -1
  79. package/dist/__tests__/pdfImport.test.js +0 -254
  80. package/dist/__tests__/pdfImport.test.js.map +0 -1
  81. package/dist/__tests__/roundTrip.test.d.ts +0 -7
  82. package/dist/__tests__/roundTrip.test.d.ts.map +0 -1
  83. package/dist/__tests__/roundTrip.test.js +0 -173
  84. package/dist/__tests__/roundTrip.test.js.map +0 -1
  85. package/dist/chunk-EUQQYBZZ.js.map +0 -1
  86. package/dist/chunk-MEZF76JA.js.map +0 -1
  87. package/dist/chunk-NGWHV77G.js.map +0 -1
  88. package/dist/chunk-UM5V2XZG.js +0 -242
  89. package/dist/chunk-UM5V2XZG.js.map +0 -1
  90. package/dist/container/index.d.ts.map +0 -1
  91. package/dist/docx/export.d.ts +0 -69
  92. package/dist/docx/export.d.ts.map +0 -1
  93. package/dist/docx/export.js +0 -854
  94. package/dist/docx/export.js.map +0 -1
  95. package/dist/docx/import.d.ts +0 -65
  96. package/dist/docx/import.d.ts.map +0 -1
  97. package/dist/docx/import.js +0 -779
  98. package/dist/docx/import.js.map +0 -1
  99. package/dist/docx/index.d.ts.map +0 -1
  100. package/dist/docx/styles.d.ts +0 -68
  101. package/dist/docx/styles.d.ts.map +0 -1
  102. package/dist/docx/styles.js +0 -125
  103. package/dist/docx/styles.js.map +0 -1
  104. package/dist/epub/export.d.ts +0 -72
  105. package/dist/epub/export.d.ts.map +0 -1
  106. package/dist/epub/export.js +0 -698
  107. package/dist/epub/export.js.map +0 -1
  108. package/dist/epub/index.d.ts.map +0 -1
  109. package/dist/html/htmlTemplate.d.ts +0 -70
  110. package/dist/html/htmlTemplate.d.ts.map +0 -1
  111. package/dist/html/htmlTemplate.js +0 -239
  112. package/dist/html/htmlTemplate.js.map +0 -1
  113. package/dist/html/imageUtils.d.ts +0 -29
  114. package/dist/html/imageUtils.d.ts.map +0 -1
  115. package/dist/html/imageUtils.js +0 -63
  116. package/dist/html/imageUtils.js.map +0 -1
  117. package/dist/html/index.d.ts.map +0 -1
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/ooxml/index.d.ts.map +0 -1
  120. package/dist/ooxml/namespaces.d.ts +0 -77
  121. package/dist/ooxml/namespaces.d.ts.map +0 -1
  122. package/dist/ooxml/namespaces.js +0 -104
  123. package/dist/ooxml/namespaces.js.map +0 -1
  124. package/dist/ooxml/reader.d.ts +0 -52
  125. package/dist/ooxml/reader.d.ts.map +0 -1
  126. package/dist/ooxml/reader.js +0 -190
  127. package/dist/ooxml/reader.js.map +0 -1
  128. package/dist/ooxml/types.d.ts +0 -82
  129. package/dist/ooxml/types.d.ts.map +0 -1
  130. package/dist/ooxml/types.js +0 -9
  131. package/dist/ooxml/types.js.map +0 -1
  132. package/dist/ooxml/writer.d.ts +0 -71
  133. package/dist/ooxml/writer.d.ts.map +0 -1
  134. package/dist/ooxml/writer.js +0 -200
  135. package/dist/ooxml/writer.js.map +0 -1
  136. package/dist/ooxml/xmlUtils.d.ts +0 -76
  137. package/dist/ooxml/xmlUtils.d.ts.map +0 -1
  138. package/dist/ooxml/xmlUtils.js +0 -108
  139. package/dist/ooxml/xmlUtils.js.map +0 -1
  140. package/dist/pdf/export.d.ts +0 -56
  141. package/dist/pdf/export.d.ts.map +0 -1
  142. package/dist/pdf/export.js +0 -768
  143. package/dist/pdf/export.js.map +0 -1
  144. package/dist/pdf/import.d.ts +0 -94
  145. package/dist/pdf/import.d.ts.map +0 -1
  146. package/dist/pdf/import.js +0 -796
  147. package/dist/pdf/import.js.map +0 -1
  148. package/dist/pdf/index.d.ts.map +0 -1
  149. package/dist/pdf/styles.d.ts +0 -142
  150. package/dist/pdf/styles.d.ts.map +0 -1
  151. package/dist/pdf/styles.js +0 -145
  152. package/dist/pdf/styles.js.map +0 -1
  153. package/dist/pptx/export.d.ts +0 -75
  154. package/dist/pptx/export.d.ts.map +0 -1
  155. package/dist/pptx/export.js +0 -722
  156. package/dist/pptx/export.js.map +0 -1
  157. package/dist/pptx/index.d.ts.map +0 -1
  158. package/dist/pptx/styles.d.ts +0 -54
  159. package/dist/pptx/styles.d.ts.map +0 -1
  160. package/dist/pptx/styles.js +0 -73
  161. package/dist/pptx/styles.js.map +0 -1
  162. package/dist/pptx/templates.d.ts +0 -24
  163. package/dist/pptx/templates.d.ts.map +0 -1
  164. package/dist/pptx/templates.js +0 -158
  165. package/dist/pptx/templates.js.map +0 -1
  166. package/dist/xlsx/index.d.ts.map +0 -1
@@ -1,275 +0,0 @@
1
- /**
2
- * Tests for PDF export: markdownDocToPdf, docToPdf.
3
- *
4
- * Exports various MarkdownDocuments to PDF, then re-opens the
5
- * resulting ArrayBuffers with pdf-lib to verify structure/metadata.
6
- */
7
- import { describe, it, expect } from 'vitest';
8
- import { PDFDocument } from 'pdf-lib';
9
- import { markdownDocToPdf, docToPdf } from '../pdf/export';
10
- // ============================================
11
- // Helpers
12
- // ============================================
13
- async function exportAndLoad(doc, options) {
14
- const buffer = await markdownDocToPdf(doc, options);
15
- expect(buffer).toBeInstanceOf(ArrayBuffer);
16
- expect(buffer.byteLength).toBeGreaterThan(0);
17
- return PDFDocument.load(buffer);
18
- }
19
- function text(value) {
20
- return { type: 'text', value };
21
- }
22
- // ============================================
23
- // Basic Structure
24
- // ============================================
25
- describe('markdownDocToPdf', () => {
26
- it('produces a valid PDF for an empty document', async () => {
27
- const doc = { type: 'document', children: [] };
28
- const pdf = await exportAndLoad(doc);
29
- expect(pdf.getPageCount()).toBeGreaterThanOrEqual(1);
30
- });
31
- it('sets title and author metadata', async () => {
32
- const doc = { type: 'document', children: [] };
33
- const pdf = await exportAndLoad(doc, { title: 'Test Title', author: 'Test Author' });
34
- expect(pdf.getTitle()).toBe('Test Title');
35
- expect(pdf.getAuthor()).toBe('Test Author');
36
- });
37
- it('renders a single paragraph', async () => {
38
- const doc = {
39
- type: 'document',
40
- children: [
41
- {
42
- type: 'paragraph',
43
- children: [text('Hello, World!')],
44
- },
45
- ],
46
- };
47
- const pdf = await exportAndLoad(doc);
48
- expect(pdf.getPageCount()).toBe(1);
49
- });
50
- it('renders headings at various depths', async () => {
51
- const children = [1, 2, 3, 4, 5, 6].map((d) => ({
52
- type: 'heading',
53
- depth: d,
54
- children: [text(`Heading Level ${d}`)],
55
- }));
56
- const doc = { type: 'document', children };
57
- const pdf = await exportAndLoad(doc);
58
- expect(pdf.getPageCount()).toBeGreaterThanOrEqual(1);
59
- });
60
- it('renders inline formatting (bold, italic, code)', async () => {
61
- const doc = {
62
- type: 'document',
63
- children: [
64
- {
65
- type: 'paragraph',
66
- children: [
67
- text('Normal '),
68
- { type: 'strong', children: [text('bold')] },
69
- text(' '),
70
- { type: 'emphasis', children: [text('italic')] },
71
- text(' '),
72
- { type: 'inlineCode', value: 'code' },
73
- ],
74
- },
75
- ],
76
- };
77
- // Should not throw
78
- const pdf = await exportAndLoad(doc);
79
- expect(pdf.getPageCount()).toBe(1);
80
- });
81
- it('renders a link', async () => {
82
- const doc = {
83
- type: 'document',
84
- children: [
85
- {
86
- type: 'paragraph',
87
- children: [
88
- text('See '),
89
- {
90
- type: 'link',
91
- url: 'https://example.com',
92
- children: [text('Example')],
93
- },
94
- ],
95
- },
96
- ],
97
- };
98
- const pdf = await exportAndLoad(doc);
99
- expect(pdf.getPageCount()).toBe(1);
100
- });
101
- it('renders unordered and ordered lists', async () => {
102
- const unordered = {
103
- type: 'list',
104
- ordered: false,
105
- children: [
106
- {
107
- type: 'listItem',
108
- children: [{ type: 'paragraph', children: [text('Apple')] }],
109
- },
110
- {
111
- type: 'listItem',
112
- children: [{ type: 'paragraph', children: [text('Banana')] }],
113
- },
114
- ],
115
- };
116
- const ordered = {
117
- type: 'list',
118
- ordered: true,
119
- children: [
120
- {
121
- type: 'listItem',
122
- children: [{ type: 'paragraph', children: [text('First')] }],
123
- },
124
- {
125
- type: 'listItem',
126
- children: [{ type: 'paragraph', children: [text('Second')] }],
127
- },
128
- ],
129
- };
130
- const doc = { type: 'document', children: [unordered, ordered] };
131
- const pdf = await exportAndLoad(doc);
132
- expect(pdf.getPageCount()).toBeGreaterThanOrEqual(1);
133
- });
134
- it('renders a code block', async () => {
135
- const doc = {
136
- type: 'document',
137
- children: [
138
- {
139
- type: 'code',
140
- value: 'function hello() {\n return "world";\n}',
141
- },
142
- ],
143
- };
144
- const pdf = await exportAndLoad(doc);
145
- expect(pdf.getPageCount()).toBe(1);
146
- });
147
- it('renders a blockquote', async () => {
148
- const doc = {
149
- type: 'document',
150
- children: [
151
- {
152
- type: 'blockquote',
153
- children: [{ type: 'paragraph', children: [text('Quoted text')] }],
154
- },
155
- ],
156
- };
157
- const pdf = await exportAndLoad(doc);
158
- expect(pdf.getPageCount()).toBe(1);
159
- });
160
- it('renders a table', async () => {
161
- const row = (cells, isHeader) => ({
162
- type: 'tableRow',
163
- children: cells.map((c) => ({
164
- type: 'tableCell',
165
- isHeader,
166
- children: [text(c)],
167
- })),
168
- });
169
- const doc = {
170
- type: 'document',
171
- children: [
172
- {
173
- type: 'table',
174
- children: [
175
- row(['Name', 'Age', 'City'], true),
176
- row(['Alice', '30', 'NYC'], false),
177
- row(['Bob', '25', 'LA'], false),
178
- ],
179
- },
180
- ],
181
- };
182
- const pdf = await exportAndLoad(doc);
183
- expect(pdf.getPageCount()).toBeGreaterThanOrEqual(1);
184
- });
185
- it('renders a thematic break', async () => {
186
- const doc = {
187
- type: 'document',
188
- children: [
189
- { type: 'paragraph', children: [text('Before')] },
190
- { type: 'thematicBreak' },
191
- { type: 'paragraph', children: [text('After')] },
192
- ],
193
- };
194
- const pdf = await exportAndLoad(doc);
195
- expect(pdf.getPageCount()).toBe(1);
196
- });
197
- it('uses A4 page size when specified', async () => {
198
- const doc = {
199
- type: 'document',
200
- children: [{ type: 'paragraph', children: [text('A4 page')] }],
201
- };
202
- const pdf = await exportAndLoad(doc, { pageSize: 'a4' });
203
- const page = pdf.getPage(0);
204
- const { width, height } = page.getSize();
205
- // A4 is approximately 595 × 842
206
- expect(width).toBeCloseTo(595.28, 0);
207
- expect(height).toBeCloseTo(841.89, 0);
208
- });
209
- it('paginates long documents', async () => {
210
- const children = [];
211
- // Each paragraph is a few lines — 100 paragraphs should overflow a page
212
- for (let i = 0; i < 100; i++) {
213
- children.push({
214
- type: 'paragraph',
215
- children: [text(`Paragraph number ${i + 1}. This is some body text to fill the page.`)],
216
- });
217
- }
218
- const doc = { type: 'document', children };
219
- const pdf = await exportAndLoad(doc);
220
- expect(pdf.getPageCount()).toBeGreaterThan(1);
221
- });
222
- it('handles nested lists', async () => {
223
- const inner = {
224
- type: 'list',
225
- ordered: false,
226
- children: [
227
- {
228
- type: 'listItem',
229
- children: [{ type: 'paragraph', children: [text('Nested item')] }],
230
- },
231
- ],
232
- };
233
- const outer = {
234
- type: 'list',
235
- ordered: false,
236
- children: [
237
- {
238
- type: 'listItem',
239
- children: [
240
- { type: 'paragraph', children: [text('Outer item')] },
241
- inner,
242
- ],
243
- },
244
- ],
245
- };
246
- const doc = { type: 'document', children: [outer] };
247
- const pdf = await exportAndLoad(doc);
248
- expect(pdf.getPageCount()).toBeGreaterThanOrEqual(1);
249
- });
250
- });
251
- // ============================================
252
- // docToPdf convenience wrapper
253
- // ============================================
254
- describe('docToPdf', () => {
255
- it('converts a Doc object to PDF', async () => {
256
- const doc = {
257
- articleId: 'test-article',
258
- duration: 3,
259
- audio: { segments: [] },
260
- blocks: [
261
- {
262
- id: 'block-1',
263
- startTime: 0,
264
- duration: 3,
265
- audioSegment: 0,
266
- template: 'titleBlock',
267
- },
268
- ],
269
- };
270
- const buffer = await docToPdf(doc);
271
- expect(buffer).toBeInstanceOf(ArrayBuffer);
272
- expect(buffer.byteLength).toBeGreaterThan(0);
273
- });
274
- });
275
- //# sourceMappingURL=pdfExport.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfExport.test.js","sourceRoot":"","sources":["../../src/__tests__/pdfExport.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Tests for PDF import: pdfToMarkdownDoc, pdfToDoc.
3
- *
4
- * Builds PDFs with pdf-lib (adding known text), then imports them
5
- * via pdfToMarkdownDoc and inspects the resulting MarkdownDocument.
6
- *
7
- * NOTE: pdfjs-dist text extraction quality depends on the environment.
8
- * Standard fonts embedded by pdf-lib should produce readable text items.
9
- */
10
- export {};
11
- //# sourceMappingURL=pdfImport.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfImport.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pdfImport.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,254 +0,0 @@
1
- /**
2
- * Tests for PDF import: pdfToMarkdownDoc, pdfToDoc.
3
- *
4
- * Builds PDFs with pdf-lib (adding known text), then imports them
5
- * via pdfToMarkdownDoc and inspects the resulting MarkdownDocument.
6
- *
7
- * NOTE: pdfjs-dist text extraction quality depends on the environment.
8
- * Standard fonts embedded by pdf-lib should produce readable text items.
9
- */
10
- import { describe, it, expect } from 'vitest';
11
- import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
12
- import { pdfToMarkdownDoc, pdfToDoc } from '../pdf/import';
13
- // ============================================
14
- // Helpers
15
- // ============================================
16
- /**
17
- * Create a simple PDF buffer with text drawn at specified sizes/positions.
18
- */
19
- async function buildSimplePdf(lines) {
20
- const doc = await PDFDocument.create();
21
- const page = doc.addPage([612, 792]); // Letter
22
- const regular = await doc.embedFont(StandardFonts.Helvetica);
23
- const bold = await doc.embedFont(StandardFonts.HelveticaBold);
24
- const italic = await doc.embedFont(StandardFonts.HelveticaOblique);
25
- const mono = await doc.embedFont(StandardFonts.Courier);
26
- for (const line of lines) {
27
- let font = regular;
28
- const fName = line.fontName?.toLowerCase() ?? '';
29
- if (fName.includes('bold'))
30
- font = bold;
31
- else if (fName.includes('italic') || fName.includes('oblique'))
32
- font = italic;
33
- else if (fName.includes('courier') || fName.includes('mono'))
34
- font = mono;
35
- page.drawText(line.text, {
36
- x: line.x,
37
- y: line.y,
38
- size: line.fontSize,
39
- font,
40
- color: rgb(0, 0, 0),
41
- });
42
- }
43
- return doc.save();
44
- }
45
- function flatText(node) {
46
- const parts = [];
47
- function walk(n) {
48
- if (n.type === 'text' && n.value)
49
- parts.push(n.value);
50
- if (n.value && n.type === 'code')
51
- parts.push(n.value);
52
- if (n.value && n.type === 'inlineCode')
53
- parts.push(n.value);
54
- if (n.children)
55
- for (const c of n.children)
56
- walk(c);
57
- }
58
- walk(node);
59
- return parts.join('');
60
- }
61
- // ============================================
62
- // Basic Import
63
- // ============================================
64
- describe('pdfToMarkdownDoc', () => {
65
- it('returns an empty document for a blank PDF', async () => {
66
- const doc = await PDFDocument.create();
67
- doc.addPage([612, 792]);
68
- const buffer = await doc.save();
69
- const md = await pdfToMarkdownDoc(buffer);
70
- expect(md.type).toBe('document');
71
- expect(md.children.length).toBe(0);
72
- });
73
- it('imports a single paragraph', async () => {
74
- const buffer = await buildSimplePdf([{ text: 'Hello World', x: 72, y: 700, fontSize: 11 }]);
75
- const md = await pdfToMarkdownDoc(buffer);
76
- expect(md.children.length).toBeGreaterThanOrEqual(1);
77
- // The first block should contain "Hello World"
78
- const allText = md.children.map(flatText).join(' ');
79
- expect(allText).toContain('Hello');
80
- expect(allText).toContain('World');
81
- });
82
- it('detects a heading by font size', async () => {
83
- const buffer = await buildSimplePdf([
84
- { text: 'Big Title', x: 72, y: 700, fontSize: 24 },
85
- { text: 'Body text here.', x: 72, y: 660, fontSize: 11 },
86
- ]);
87
- // Provide explicit bodyFontSize — with only 2 lines auto-detection
88
- // picks the first seen size (24) which masks the heading.
89
- const md = await pdfToMarkdownDoc(buffer, { bodyFontSize: 11 });
90
- // Find heading block
91
- const headings = md.children.filter((c) => c.type === 'heading');
92
- expect(headings.length).toBeGreaterThanOrEqual(1);
93
- if (headings.length > 0) {
94
- const h = headings[0];
95
- expect(h.depth).toBeLessThanOrEqual(2);
96
- expect(flatText(h)).toContain('Title');
97
- }
98
- });
99
- it('renders bold text as plain text (standard font limitation)', async () => {
100
- // pdfjs-dist returns opaque font IDs ("g_d0_f2") for standard PDF fonts,
101
- // not the actual font name. Bold/italic detection only works with
102
- // embedded fonts whose names contain "Bold"/"Italic" — a known heuristic
103
- // limitation. Here we verify the text is still extracted.
104
- const buffer = await buildSimplePdf([
105
- { text: 'Bold text', x: 72, y: 700, fontSize: 11, fontName: 'Helvetica-Bold' },
106
- ]);
107
- const md = await pdfToMarkdownDoc(buffer);
108
- expect(md.children.length).toBeGreaterThanOrEqual(1);
109
- const allText = md.children.map(flatText).join(' ');
110
- expect(allText).toContain('Bold text');
111
- });
112
- it('renders italic text as plain text (standard font limitation)', async () => {
113
- // Same as bold — standard PDF font names are not exposed by pdfjs-dist.
114
- const buffer = await buildSimplePdf([
115
- { text: 'Italic text', x: 72, y: 700, fontSize: 11, fontName: 'Helvetica-Oblique' },
116
- ]);
117
- const md = await pdfToMarkdownDoc(buffer);
118
- expect(md.children.length).toBeGreaterThanOrEqual(1);
119
- const allText = md.children.map(flatText).join(' ');
120
- expect(allText).toContain('Italic text');
121
- });
122
- it('detects monospace text as inline code', async () => {
123
- const buffer = await buildSimplePdf([
124
- { text: 'const x = 1;', x: 72, y: 700, fontSize: 10, fontName: 'Courier' },
125
- ]);
126
- const md = await pdfToMarkdownDoc(buffer);
127
- expect(md.children.length).toBeGreaterThanOrEqual(1);
128
- // Monospace lines should become code blocks or inline code
129
- function hasCode(node) {
130
- if (node.type === 'code' || node.type === 'inlineCode')
131
- return true;
132
- if (node.children)
133
- return node.children.some(hasCode);
134
- return false;
135
- }
136
- expect(md.children.some(hasCode)).toBe(true);
137
- });
138
- it('detects consecutive monospace lines as a code block', async () => {
139
- const buffer = await buildSimplePdf([
140
- { text: 'function hello() {', x: 72, y: 700, fontSize: 10, fontName: 'Courier' },
141
- { text: ' return 42;', x: 72, y: 686, fontSize: 10, fontName: 'Courier' },
142
- { text: '}', x: 72, y: 672, fontSize: 10, fontName: 'Courier' },
143
- ]);
144
- const md = await pdfToMarkdownDoc(buffer);
145
- const codeBlocks = md.children.filter((c) => c.type === 'code');
146
- expect(codeBlocks.length).toBeGreaterThanOrEqual(1);
147
- if (codeBlocks.length > 0) {
148
- const cb = codeBlocks[0];
149
- expect(cb.value).toContain('function');
150
- expect(cb.value).toContain('return');
151
- }
152
- });
153
- it('detects bullet list items', async () => {
154
- const buffer = await buildSimplePdf([
155
- { text: '\u2022 First item', x: 72, y: 700, fontSize: 11 },
156
- { text: '\u2022 Second item', x: 72, y: 684, fontSize: 11 },
157
- ]);
158
- const md = await pdfToMarkdownDoc(buffer);
159
- const lists = md.children.filter((c) => c.type === 'list');
160
- expect(lists.length).toBeGreaterThanOrEqual(1);
161
- });
162
- it('detects ordered list items', async () => {
163
- const buffer = await buildSimplePdf([
164
- { text: '1. First step', x: 72, y: 700, fontSize: 11 },
165
- { text: '2. Second step', x: 72, y: 684, fontSize: 11 },
166
- ]);
167
- const md = await pdfToMarkdownDoc(buffer);
168
- const lists = md.children.filter((c) => c.type === 'list');
169
- expect(lists.length).toBeGreaterThanOrEqual(1);
170
- });
171
- it('detects indented text as blockquote', async () => {
172
- const buffer = await buildSimplePdf([
173
- { text: 'Normal paragraph.', x: 72, y: 720, fontSize: 11 },
174
- { text: 'This is a quote.', x: 110, y: 700, fontSize: 11 },
175
- ]);
176
- const md = await pdfToMarkdownDoc(buffer, { detectBlockquotes: true });
177
- const quotes = md.children.filter((c) => c.type === 'blockquote');
178
- expect(quotes.length).toBeGreaterThanOrEqual(1);
179
- });
180
- it('detects URLs in text as links', async () => {
181
- const buffer = await buildSimplePdf([
182
- { text: 'Visit https://example.com for more.', x: 72, y: 700, fontSize: 11 },
183
- ]);
184
- const md = await pdfToMarkdownDoc(buffer, { detectLinks: true });
185
- function hasLink(node) {
186
- if (node.type === 'link')
187
- return true;
188
- if (node.children)
189
- return node.children.some(hasLink);
190
- return false;
191
- }
192
- expect(md.children.some(hasLink)).toBe(true);
193
- });
194
- it('handles multi-page documents', async () => {
195
- const doc = await PDFDocument.create();
196
- const font = await doc.embedFont(StandardFonts.Helvetica);
197
- for (let p = 0; p < 3; p++) {
198
- const page = doc.addPage([612, 792]);
199
- page.drawText(`Page ${p + 1} content`, {
200
- x: 72,
201
- y: 700,
202
- size: 11,
203
- font,
204
- });
205
- }
206
- const buffer = await doc.save();
207
- const md = await pdfToMarkdownDoc(buffer);
208
- expect(md.children.length).toBeGreaterThanOrEqual(3);
209
- });
210
- it('respects bodyFontSize option', async () => {
211
- // If we say body is 14pt, then a 16pt line should still be heading
212
- // but borderline 13pt would not be
213
- const buffer = await buildSimplePdf([
214
- { text: 'Medium heading', x: 72, y: 700, fontSize: 16 },
215
- { text: 'Body text at 14pt', x: 72, y: 670, fontSize: 14 },
216
- ]);
217
- const md = await pdfToMarkdownDoc(buffer, { bodyFontSize: 14 });
218
- const headings = md.children.filter((c) => c.type === 'heading');
219
- expect(headings.length).toBeGreaterThanOrEqual(1);
220
- });
221
- it('accepts Uint8Array input', async () => {
222
- const buffer = await buildSimplePdf([{ text: 'Uint8Array test', x: 72, y: 700, fontSize: 11 }]);
223
- const uint8 = new Uint8Array(buffer);
224
- const md = await pdfToMarkdownDoc(uint8);
225
- expect(md.children.length).toBeGreaterThanOrEqual(1);
226
- });
227
- it('can disable table detection', async () => {
228
- const buffer = await buildSimplePdf([
229
- { text: 'Col A', x: 72, y: 700, fontSize: 11 },
230
- { text: 'Col B', x: 250, y: 700, fontSize: 11 },
231
- { text: 'Val 1', x: 72, y: 684, fontSize: 11 },
232
- { text: 'Val 2', x: 250, y: 684, fontSize: 11 },
233
- ]);
234
- const md = await pdfToMarkdownDoc(buffer, { detectTables: false });
235
- const tables = md.children.filter((c) => c.type === 'table');
236
- expect(tables.length).toBe(0);
237
- });
238
- });
239
- // ============================================
240
- // pdfToDoc convenience wrapper
241
- // ============================================
242
- describe('pdfToDoc', () => {
243
- it('converts PDF to a Doc object', async () => {
244
- const buffer = await buildSimplePdf([
245
- { text: 'Test Title', x: 72, y: 700, fontSize: 24 },
246
- { text: 'Some body text.', x: 72, y: 660, fontSize: 11 },
247
- ]);
248
- const doc = await pdfToDoc(buffer);
249
- expect(doc).toBeDefined();
250
- expect(doc.blocks).toBeDefined();
251
- expect(doc.blocks.length).toBeGreaterThan(0);
252
- });
253
- });
254
- //# sourceMappingURL=pdfImport.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfImport.test.js","sourceRoot":"","sources":["../../src/__tests__/pdfImport.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Round-trip tests: MarkdownDocument → DOCX → MarkdownDocument.
3
- *
4
- * Verifies that core document structures survive the export → import cycle.
5
- */
6
- export {};
7
- //# sourceMappingURL=roundTrip.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roundTrip.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/roundTrip.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}