@bendyline/squisq-formats 1.3.0 → 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 (161) hide show
  1. package/dist/container/index.d.ts +7 -5
  2. package/dist/container/index.js +39 -70
  3. package/dist/container/index.js.map +1 -1
  4. package/dist/docx/index.d.ts +128 -15
  5. package/dist/docx/index.js +17 -22
  6. package/dist/docx/index.js.map +1 -1
  7. package/dist/epub/index.d.ts +66 -11
  8. package/dist/epub/index.js +10 -18
  9. package/dist/epub/index.js.map +1 -1
  10. package/dist/html/index.d.ts +278 -15
  11. package/dist/html/index.js +26 -165
  12. package/dist/html/index.js.map +1 -1
  13. package/dist/index.d.ts +9 -38
  14. package/dist/index.js +62 -37
  15. package/dist/index.js.map +1 -1
  16. package/dist/ooxml/index.d.ts +353 -14
  17. package/dist/ooxml/index.js +116 -22
  18. package/dist/ooxml/index.js.map +1 -1
  19. package/dist/pdf/index.d.ts +143 -17
  20. package/dist/pdf/index.js +16 -25
  21. package/dist/pdf/index.js.map +1 -1
  22. package/dist/pptx/index.d.ts +83 -8
  23. package/dist/pptx/index.js +14 -34
  24. package/dist/pptx/index.js.map +1 -1
  25. package/dist/xlsx/index.d.ts +12 -9
  26. package/dist/xlsx/index.js +12 -44
  27. package/dist/xlsx/index.js.map +1 -1
  28. package/package.json +2 -2
  29. package/dist/__tests__/container.test.d.ts +0 -8
  30. package/dist/__tests__/container.test.d.ts.map +0 -1
  31. package/dist/__tests__/container.test.js +0 -147
  32. package/dist/__tests__/container.test.js.map +0 -1
  33. package/dist/__tests__/docxExport.test.d.ts +0 -8
  34. package/dist/__tests__/docxExport.test.d.ts.map +0 -1
  35. package/dist/__tests__/docxExport.test.js +0 -383
  36. package/dist/__tests__/docxExport.test.js.map +0 -1
  37. package/dist/__tests__/docxImport.test.d.ts +0 -8
  38. package/dist/__tests__/docxImport.test.d.ts.map +0 -1
  39. package/dist/__tests__/docxImport.test.js +0 -309
  40. package/dist/__tests__/docxImport.test.js.map +0 -1
  41. package/dist/__tests__/epub.test.d.ts +0 -8
  42. package/dist/__tests__/epub.test.d.ts.map +0 -1
  43. package/dist/__tests__/epub.test.js +0 -472
  44. package/dist/__tests__/epub.test.js.map +0 -1
  45. package/dist/__tests__/html.test.d.ts +0 -8
  46. package/dist/__tests__/html.test.d.ts.map +0 -1
  47. package/dist/__tests__/html.test.js +0 -317
  48. package/dist/__tests__/html.test.js.map +0 -1
  49. package/dist/__tests__/ooxml.test.d.ts +0 -5
  50. package/dist/__tests__/ooxml.test.d.ts.map +0 -1
  51. package/dist/__tests__/ooxml.test.js +0 -152
  52. package/dist/__tests__/ooxml.test.js.map +0 -1
  53. package/dist/__tests__/pdfExport.test.d.ts +0 -8
  54. package/dist/__tests__/pdfExport.test.d.ts.map +0 -1
  55. package/dist/__tests__/pdfExport.test.js +0 -275
  56. package/dist/__tests__/pdfExport.test.js.map +0 -1
  57. package/dist/__tests__/pdfImport.test.d.ts +0 -11
  58. package/dist/__tests__/pdfImport.test.d.ts.map +0 -1
  59. package/dist/__tests__/pdfImport.test.js +0 -254
  60. package/dist/__tests__/pdfImport.test.js.map +0 -1
  61. package/dist/__tests__/plainHtml.test.d.ts +0 -5
  62. package/dist/__tests__/plainHtml.test.d.ts.map +0 -1
  63. package/dist/__tests__/plainHtml.test.js +0 -327
  64. package/dist/__tests__/plainHtml.test.js.map +0 -1
  65. package/dist/__tests__/plainHtmlBundle.test.d.ts +0 -11
  66. package/dist/__tests__/plainHtmlBundle.test.d.ts.map +0 -1
  67. package/dist/__tests__/plainHtmlBundle.test.js +0 -210
  68. package/dist/__tests__/plainHtmlBundle.test.js.map +0 -1
  69. package/dist/__tests__/roundTrip.test.d.ts +0 -7
  70. package/dist/__tests__/roundTrip.test.d.ts.map +0 -1
  71. package/dist/__tests__/roundTrip.test.js +0 -173
  72. package/dist/__tests__/roundTrip.test.js.map +0 -1
  73. package/dist/container/index.d.ts.map +0 -1
  74. package/dist/docx/export.d.ts +0 -69
  75. package/dist/docx/export.d.ts.map +0 -1
  76. package/dist/docx/export.js +0 -985
  77. package/dist/docx/export.js.map +0 -1
  78. package/dist/docx/import.d.ts +0 -65
  79. package/dist/docx/import.d.ts.map +0 -1
  80. package/dist/docx/import.js +0 -779
  81. package/dist/docx/import.js.map +0 -1
  82. package/dist/docx/index.d.ts.map +0 -1
  83. package/dist/docx/styles.d.ts +0 -68
  84. package/dist/docx/styles.d.ts.map +0 -1
  85. package/dist/docx/styles.js +0 -125
  86. package/dist/docx/styles.js.map +0 -1
  87. package/dist/epub/export.d.ts +0 -72
  88. package/dist/epub/export.d.ts.map +0 -1
  89. package/dist/epub/export.js +0 -698
  90. package/dist/epub/export.js.map +0 -1
  91. package/dist/epub/index.d.ts.map +0 -1
  92. package/dist/html/docsHtmlBundle.d.ts +0 -53
  93. package/dist/html/docsHtmlBundle.d.ts.map +0 -1
  94. package/dist/html/docsHtmlBundle.js +0 -299
  95. package/dist/html/docsHtmlBundle.js.map +0 -1
  96. package/dist/html/htmlTemplate.d.ts +0 -70
  97. package/dist/html/htmlTemplate.d.ts.map +0 -1
  98. package/dist/html/htmlTemplate.js +0 -282
  99. package/dist/html/htmlTemplate.js.map +0 -1
  100. package/dist/html/imageUtils.d.ts +0 -29
  101. package/dist/html/imageUtils.d.ts.map +0 -1
  102. package/dist/html/imageUtils.js +0 -63
  103. package/dist/html/imageUtils.js.map +0 -1
  104. package/dist/html/index.d.ts.map +0 -1
  105. package/dist/html/plainHtml.d.ts +0 -79
  106. package/dist/html/plainHtml.d.ts.map +0 -1
  107. package/dist/html/plainHtml.js +0 -614
  108. package/dist/html/plainHtml.js.map +0 -1
  109. package/dist/html/plainHtmlBundle.d.ts +0 -93
  110. package/dist/html/plainHtmlBundle.d.ts.map +0 -1
  111. package/dist/html/plainHtmlBundle.js +0 -357
  112. package/dist/html/plainHtmlBundle.js.map +0 -1
  113. package/dist/index.d.ts.map +0 -1
  114. package/dist/ooxml/index.d.ts.map +0 -1
  115. package/dist/ooxml/namespaces.d.ts +0 -77
  116. package/dist/ooxml/namespaces.d.ts.map +0 -1
  117. package/dist/ooxml/namespaces.js +0 -104
  118. package/dist/ooxml/namespaces.js.map +0 -1
  119. package/dist/ooxml/reader.d.ts +0 -52
  120. package/dist/ooxml/reader.d.ts.map +0 -1
  121. package/dist/ooxml/reader.js +0 -190
  122. package/dist/ooxml/reader.js.map +0 -1
  123. package/dist/ooxml/types.d.ts +0 -82
  124. package/dist/ooxml/types.d.ts.map +0 -1
  125. package/dist/ooxml/types.js +0 -9
  126. package/dist/ooxml/types.js.map +0 -1
  127. package/dist/ooxml/writer.d.ts +0 -71
  128. package/dist/ooxml/writer.d.ts.map +0 -1
  129. package/dist/ooxml/writer.js +0 -200
  130. package/dist/ooxml/writer.js.map +0 -1
  131. package/dist/ooxml/xmlUtils.d.ts +0 -76
  132. package/dist/ooxml/xmlUtils.d.ts.map +0 -1
  133. package/dist/ooxml/xmlUtils.js +0 -108
  134. package/dist/ooxml/xmlUtils.js.map +0 -1
  135. package/dist/pdf/export.d.ts +0 -56
  136. package/dist/pdf/export.d.ts.map +0 -1
  137. package/dist/pdf/export.js +0 -768
  138. package/dist/pdf/export.js.map +0 -1
  139. package/dist/pdf/import.d.ts +0 -94
  140. package/dist/pdf/import.d.ts.map +0 -1
  141. package/dist/pdf/import.js +0 -796
  142. package/dist/pdf/import.js.map +0 -1
  143. package/dist/pdf/index.d.ts.map +0 -1
  144. package/dist/pdf/styles.d.ts +0 -142
  145. package/dist/pdf/styles.d.ts.map +0 -1
  146. package/dist/pdf/styles.js +0 -145
  147. package/dist/pdf/styles.js.map +0 -1
  148. package/dist/pptx/export.d.ts +0 -75
  149. package/dist/pptx/export.d.ts.map +0 -1
  150. package/dist/pptx/export.js +0 -724
  151. package/dist/pptx/export.js.map +0 -1
  152. package/dist/pptx/index.d.ts.map +0 -1
  153. package/dist/pptx/styles.d.ts +0 -54
  154. package/dist/pptx/styles.d.ts.map +0 -1
  155. package/dist/pptx/styles.js +0 -73
  156. package/dist/pptx/styles.js.map +0 -1
  157. package/dist/pptx/templates.d.ts +0 -24
  158. package/dist/pptx/templates.d.ts.map +0 -1
  159. package/dist/pptx/templates.js +0 -158
  160. package/dist/pptx/templates.js.map +0 -1
  161. package/dist/xlsx/index.d.ts.map +0 -1
@@ -1,317 +0,0 @@
1
- /**
2
- * Tests for HTML export: docToHtml, docToHtmlZip, image utilities.
3
- *
4
- * Verifies that generated HTML contains the expected structure,
5
- * embedded script, and image handling. ZIP exports are also validated.
6
- */
7
- import { describe, it, expect } from 'vitest';
8
- import JSZip from 'jszip';
9
- import { docToHtml, docToHtmlZip, collectImagePaths } from '../html/index';
10
- import { inferMimeType, arrayBufferToBase64DataUrl, extractFilename } from '../html/imageUtils';
11
- // ============================================
12
- // Helpers
13
- // ============================================
14
- const MOCK_PLAYER_SCRIPT = 'var SquisqPlayer={mount:function(){}};';
15
- /** Helper to read a Blob as Uint8Array (works in jsdom where blob.arrayBuffer() may not exist) */
16
- async function blobToUint8Array(blob) {
17
- return new Promise((resolve, reject) => {
18
- const reader = new FileReader();
19
- reader.onload = () => resolve(new Uint8Array(reader.result));
20
- reader.onerror = () => reject(reader.error);
21
- reader.readAsArrayBuffer(blob);
22
- });
23
- }
24
- function makeDoc(overrides = {}) {
25
- return {
26
- articleId: 'test-doc',
27
- duration: 10,
28
- blocks: [],
29
- audio: {
30
- segments: [{ src: 'intro.mp3', name: 'intro', duration: 10, startTime: 0 }],
31
- },
32
- ...overrides,
33
- };
34
- }
35
- function makeImageBlock(imageSrc) {
36
- const layer = {
37
- id: 'img-1',
38
- type: 'image',
39
- position: { x: 0, y: 0, width: '100%', height: '100%' },
40
- content: { src: imageSrc, alt: 'test image' },
41
- };
42
- return {
43
- id: 'block-1',
44
- startTime: 0,
45
- duration: 5,
46
- audioSegment: 0,
47
- layers: [layer],
48
- };
49
- }
50
- function makeImageBuffer() {
51
- // Minimal 1x1 PNG
52
- const bytes = new Uint8Array([
53
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
54
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53,
55
- 0xde, 0x00, 0x00, 0x00, 0x0c, 0x49, 0x44, 0x41, 0x54, 0x08, 0xd7, 0x63, 0xf8, 0xcf, 0xc0, 0x00,
56
- 0x00, 0x00, 0x02, 0x00, 0x01, 0xe2, 0x21, 0xbc, 0x33, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
57
- 0x44, 0xae, 0x42, 0x60, 0x82,
58
- ]);
59
- return bytes.buffer;
60
- }
61
- // ============================================
62
- // Image Utilities
63
- // ============================================
64
- describe('inferMimeType', () => {
65
- it('returns correct MIME types for common extensions', () => {
66
- expect(inferMimeType('photo.jpg')).toBe('image/jpeg');
67
- expect(inferMimeType('photo.jpeg')).toBe('image/jpeg');
68
- expect(inferMimeType('logo.png')).toBe('image/png');
69
- expect(inferMimeType('anim.gif')).toBe('image/gif');
70
- expect(inferMimeType('hero.webp')).toBe('image/webp');
71
- expect(inferMimeType('icon.svg')).toBe('image/svg+xml');
72
- expect(inferMimeType('track.mp3')).toBe('audio/mpeg');
73
- });
74
- it('returns octet-stream for unknown extensions', () => {
75
- expect(inferMimeType('data.xyz')).toBe('application/octet-stream');
76
- expect(inferMimeType('noext')).toBe('application/octet-stream');
77
- });
78
- });
79
- describe('arrayBufferToBase64DataUrl', () => {
80
- it('produces a valid data URI', () => {
81
- const buffer = new TextEncoder().encode('hello').buffer;
82
- const result = arrayBufferToBase64DataUrl(buffer, 'text/plain');
83
- expect(result).toMatch(/^data:text\/plain;base64,/);
84
- expect(result).toBe('data:text/plain;base64,aGVsbG8=');
85
- });
86
- });
87
- describe('extractFilename', () => {
88
- it('extracts filename from path', () => {
89
- expect(extractFilename('images/hero.jpg')).toBe('hero.jpg');
90
- expect(extractFilename('hero.jpg')).toBe('hero.jpg');
91
- expect(extractFilename('a/b/c/deep.png')).toBe('deep.png');
92
- });
93
- it('strips query and hash', () => {
94
- expect(extractFilename('photo.jpg?v=2')).toBe('photo.jpg');
95
- expect(extractFilename('photo.jpg#anchor')).toBe('photo.jpg');
96
- });
97
- });
98
- // ============================================
99
- // Image Path Collection
100
- // ============================================
101
- describe('collectImagePaths', () => {
102
- it('collects image layer src from blocks', () => {
103
- const doc = makeDoc({ blocks: [makeImageBlock('hero.jpg')] });
104
- const paths = collectImagePaths(doc);
105
- expect(paths.has('hero.jpg')).toBe(true);
106
- });
107
- it('ignores absolute URLs', () => {
108
- const doc = makeDoc({ blocks: [makeImageBlock('https://example.com/photo.jpg')] });
109
- const paths = collectImagePaths(doc);
110
- expect(paths.size).toBe(0);
111
- });
112
- it('ignores data URIs', () => {
113
- const doc = makeDoc({ blocks: [makeImageBlock('data:image/png;base64,abc')] });
114
- const paths = collectImagePaths(doc);
115
- expect(paths.size).toBe(0);
116
- });
117
- it('collects startBlock heroSrc', () => {
118
- const doc = makeDoc({ startBlock: { heroSrc: 'cover.jpg', title: 'Test' } });
119
- const paths = collectImagePaths(doc);
120
- expect(paths.has('cover.jpg')).toBe(true);
121
- });
122
- it('collects markdown image refs from block contents', () => {
123
- const doc = makeDoc({
124
- blocks: [
125
- {
126
- id: 'b1',
127
- startTime: 0,
128
- duration: 5,
129
- audioSegment: 0,
130
- contents: [
131
- {
132
- type: 'paragraph',
133
- children: [{ type: 'image', url: 'body.jpg', alt: '' }],
134
- },
135
- ],
136
- },
137
- ],
138
- });
139
- const paths = collectImagePaths(doc);
140
- expect(paths.has('body.jpg')).toBe(true);
141
- });
142
- it('collects raw HTML <img> refs from block contents (WYSIWYG resize case)', () => {
143
- // When the WYSIWYG editor serializes a resized image, it emits a raw
144
- // `<img src width>` tag because markdown shorthand has no width syntax.
145
- // The parser produces an htmlBlock node with htmlChildren rather than
146
- // an image node — earlier this was invisible to the export pipeline.
147
- const doc = makeDoc({
148
- blocks: [
149
- {
150
- id: 'b1',
151
- startTime: 0,
152
- duration: 5,
153
- audioSegment: 0,
154
- contents: [
155
- {
156
- type: 'htmlBlock',
157
- rawHtml: '<img alt="resized" src="resized.jpg" width="194">',
158
- htmlChildren: [
159
- {
160
- type: 'htmlElement',
161
- tagName: 'img',
162
- attributes: { src: 'resized.jpg', alt: 'resized', width: '194' },
163
- children: [],
164
- selfClosing: true,
165
- },
166
- ],
167
- },
168
- ],
169
- },
170
- ],
171
- });
172
- const paths = collectImagePaths(doc);
173
- expect(paths.has('resized.jpg')).toBe(true);
174
- });
175
- });
176
- // ============================================
177
- // Single HTML Export
178
- // ============================================
179
- describe('docToHtml', () => {
180
- it('produces a complete HTML document', () => {
181
- const doc = makeDoc();
182
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT });
183
- expect(html).toContain('<!DOCTYPE html>');
184
- expect(html).toContain('<html');
185
- expect(html).toContain('</html>');
186
- expect(html).toContain('<meta charset="UTF-8">');
187
- expect(html).toContain('<div id="squisq-root">');
188
- });
189
- it('embeds the player script inline', () => {
190
- const doc = makeDoc();
191
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT });
192
- expect(html).toContain(MOCK_PLAYER_SCRIPT);
193
- });
194
- it('embeds the doc JSON', () => {
195
- const doc = makeDoc();
196
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT });
197
- expect(html).toContain('test-doc');
198
- });
199
- it('calls SquisqPlayer.mount', () => {
200
- const doc = makeDoc();
201
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT });
202
- expect(html).toContain('SquisqPlayer.mount');
203
- });
204
- it('sets the page title', () => {
205
- const doc = makeDoc();
206
- const html = docToHtml(doc, {
207
- playerScript: MOCK_PLAYER_SCRIPT,
208
- title: 'My Amazing Doc',
209
- });
210
- expect(html).toContain('<title>My Amazing Doc</title>');
211
- });
212
- it('uses slideshow mode by default', () => {
213
- const doc = makeDoc();
214
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT });
215
- expect(html).toContain('"slideshow"');
216
- });
217
- it('supports static mode', () => {
218
- const doc = makeDoc();
219
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT, mode: 'static' });
220
- expect(html).toContain('"static"');
221
- });
222
- it('inlines images as base64 data URIs', () => {
223
- const doc = makeDoc({ blocks: [makeImageBlock('hero.png')] });
224
- const images = new Map([['hero.png', makeImageBuffer()]]);
225
- const html = docToHtml(doc, { playerScript: MOCK_PLAYER_SCRIPT, images });
226
- expect(html).toContain('data:image/png;base64,');
227
- });
228
- it('escapes script-breaking content in title', () => {
229
- const doc = makeDoc();
230
- const html = docToHtml(doc, {
231
- playerScript: MOCK_PLAYER_SCRIPT,
232
- title: '<script>alert("xss")</script>',
233
- });
234
- // Title should be escaped
235
- expect(html).not.toContain('<script>alert');
236
- expect(html).toContain('&lt;script&gt;');
237
- });
238
- });
239
- // ============================================
240
- // ZIP Archive Export
241
- // ============================================
242
- describe('docToHtmlZip', () => {
243
- it('produces a valid ZIP blob', async () => {
244
- const doc = makeDoc();
245
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT });
246
- expect(blob).toBeInstanceOf(Blob);
247
- expect(blob.size).toBeGreaterThan(0);
248
- });
249
- it('contains index.html and squisq-player.js', async () => {
250
- const doc = makeDoc();
251
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT });
252
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
253
- expect(zip.file('index.html')).not.toBeNull();
254
- expect(zip.file('squisq-player.js')).not.toBeNull();
255
- });
256
- it('references player script via src attribute', async () => {
257
- const doc = makeDoc();
258
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT });
259
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
260
- const html = await zip.file('index.html').async('text');
261
- expect(html).toContain('src="squisq-player.js"');
262
- // Should NOT contain the inline script
263
- expect(html).not.toContain(MOCK_PLAYER_SCRIPT);
264
- });
265
- it('preserves the original image path inside the zip', async () => {
266
- // Direct `<img src="folder/file.png">` references in the rendered HTML
267
- // resolve only if the zip mirrors the doc's path layout — flattening
268
- // to `images/<basename>` would 404 in the static renderer (which does
269
- // not rewrite paths through imagePathMap).
270
- const doc = makeDoc({ blocks: [makeImageBlock('mikehome_files/hero.png')] });
271
- const images = new Map([['mikehome_files/hero.png', makeImageBuffer()]]);
272
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT, images });
273
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
274
- expect(zip.file('mikehome_files/hero.png')).not.toBeNull();
275
- expect(zip.file('images/hero.png')).toBeNull();
276
- });
277
- it('strips leading slashes and rejects parent-traversal paths', async () => {
278
- const doc = makeDoc();
279
- const buffer = makeImageBuffer();
280
- const images = new Map([
281
- ['/leading/slash.png', buffer],
282
- ['../escape.png', buffer],
283
- ['nested/../sneaky.png', buffer],
284
- ['ok/path.png', buffer],
285
- ]);
286
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT, images });
287
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
288
- expect(zip.file('leading/slash.png')).not.toBeNull();
289
- expect(zip.file('ok/path.png')).not.toBeNull();
290
- expect(zip.file('../escape.png')).toBeNull();
291
- expect(zip.file('nested/../sneaky.png')).toBeNull();
292
- });
293
- it('includes audio in audio/ folder when provided', async () => {
294
- const audioData = new Uint8Array([0x49, 0x44, 0x33, 0x00]).buffer;
295
- const doc = makeDoc();
296
- const audio = new Map([['intro.mp3', audioData]]);
297
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT, audio });
298
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
299
- expect(zip.file('audio/intro.mp3')).not.toBeNull();
300
- });
301
- it('HTML references doc JSON inline', async () => {
302
- const doc = makeDoc();
303
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT });
304
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
305
- const html = await zip.file('index.html').async('text');
306
- expect(html).toContain('test-doc');
307
- expect(html).toContain('SquisqPlayer.mount');
308
- });
309
- it('player.js contains the provided script', async () => {
310
- const doc = makeDoc();
311
- const blob = await docToHtmlZip(doc, { playerScript: MOCK_PLAYER_SCRIPT });
312
- const zip = await JSZip.loadAsync(await blobToUint8Array(blob));
313
- const js = await zip.file('squisq-player.js').async('text');
314
- expect(js).toBe(MOCK_PLAYER_SCRIPT);
315
- });
316
- });
317
- //# sourceMappingURL=html.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"html.test.js","sourceRoot":"","sources":["../../src/__tests__/html.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for the shared OOXML layer: xmlUtils, writer, reader round-trips.
3
- */
4
- export {};
5
- //# sourceMappingURL=ooxml.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ooxml.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ooxml.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,152 +0,0 @@
1
- /**
2
- * Tests for the shared OOXML layer: xmlUtils, writer, reader round-trips.
3
- */
4
- import { describe, it, expect } from 'vitest';
5
- import { escapeXml, xmlElement, selfClosingElement, textElement, attrString, xmlDeclaration, } from '../ooxml/xmlUtils';
6
- import { createPackage } from '../ooxml/writer';
7
- import { openPackage, getPartXml, getCoreProperties, getPartRelationships } from '../ooxml/reader';
8
- import { REL_OFFICE_DOCUMENT } from '../ooxml/namespaces';
9
- // ============================================
10
- // XML Utilities
11
- // ============================================
12
- describe('escapeXml', () => {
13
- it('escapes all five XML entities', () => {
14
- expect(escapeXml('a & b < c > d " e \' f')).toBe('a &amp; b &lt; c &gt; d &quot; e &apos; f');
15
- });
16
- it('returns empty string unchanged', () => {
17
- expect(escapeXml('')).toBe('');
18
- });
19
- it('returns plain text unchanged', () => {
20
- expect(escapeXml('hello world')).toBe('hello world');
21
- });
22
- });
23
- describe('attrString', () => {
24
- it('builds attribute string from object', () => {
25
- const result = attrString({ 'w:val': 'Heading1' });
26
- expect(result).toBe(' w:val="Heading1"');
27
- });
28
- it('omits undefined values', () => {
29
- const result = attrString({ 'w:val': 'test', 'w:other': undefined });
30
- expect(result).toBe(' w:val="test"');
31
- });
32
- it('returns empty string for empty attrs', () => {
33
- expect(attrString({})).toBe('');
34
- expect(attrString(undefined)).toBe('');
35
- });
36
- });
37
- describe('selfClosingElement', () => {
38
- it('builds self-closing tag', () => {
39
- expect(selfClosingElement('w:b')).toBe('<w:b/>');
40
- });
41
- it('includes attributes', () => {
42
- expect(selfClosingElement('w:pStyle', { 'w:val': 'Heading1' })).toBe('<w:pStyle w:val="Heading1"/>');
43
- });
44
- });
45
- describe('xmlElement', () => {
46
- it('builds element with children', () => {
47
- expect(xmlElement('w:p', {}, 'content')).toBe('<w:p>content</w:p>');
48
- });
49
- it('self-closes when no children', () => {
50
- expect(xmlElement('w:p', {})).toBe('<w:p/>');
51
- });
52
- it('concatenates multiple children', () => {
53
- expect(xmlElement('w:p', {}, 'a', 'b')).toBe('<w:p>ab</w:p>');
54
- });
55
- });
56
- describe('textElement', () => {
57
- it('escapes text content', () => {
58
- expect(textElement('w:t', {}, 'a & b')).toBe('<w:t>a &amp; b</w:t>');
59
- });
60
- it('self-closes when no text', () => {
61
- expect(textElement('w:t', {})).toBe('<w:t/>');
62
- });
63
- });
64
- describe('xmlDeclaration', () => {
65
- it('returns standard XML declaration', () => {
66
- expect(xmlDeclaration()).toBe('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
67
- });
68
- });
69
- // ============================================
70
- // Package Writer + Reader Round-Trip
71
- // ============================================
72
- describe('createPackage / openPackage round-trip', () => {
73
- it('creates a valid ZIP with content types and parts', async () => {
74
- const pkg = createPackage();
75
- pkg.addPart('word/document.xml', '<w:document><w:body/></w:document>', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml');
76
- pkg.addRelationship('', {
77
- id: 'rId1',
78
- type: REL_OFFICE_DOCUMENT,
79
- target: 'word/document.xml',
80
- });
81
- const arrayBuffer = await pkg.toArrayBuffer();
82
- expect(arrayBuffer).toBeInstanceOf(ArrayBuffer);
83
- expect(arrayBuffer.byteLength).toBeGreaterThan(0);
84
- // Read it back
85
- const opened = await openPackage(arrayBuffer);
86
- expect(opened.zip).toBeDefined();
87
- expect(opened.contentTypes.overrides.has('word/document.xml')).toBe(true);
88
- expect(opened.rootRelationships.length).toBeGreaterThanOrEqual(1);
89
- expect(opened.rootRelationships[0].type).toBe(REL_OFFICE_DOCUMENT);
90
- });
91
- it('round-trips XML part content', async () => {
92
- const pkg = createPackage();
93
- const testXml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><root><child attr="value">text</child></root>';
94
- pkg.addPart('test/data.xml', testXml, 'application/xml');
95
- const buffer = await pkg.toArrayBuffer();
96
- const opened = await openPackage(buffer);
97
- const doc = await getPartXml(opened, 'test/data.xml');
98
- expect(doc).not.toBeNull();
99
- const child = doc.getElementsByTagName('child')[0];
100
- expect(child.getAttribute('attr')).toBe('value');
101
- expect(child.textContent).toBe('text');
102
- });
103
- it('round-trips core properties', async () => {
104
- const pkg = createPackage();
105
- pkg.addPart('word/document.xml', '<doc/>', 'application/xml');
106
- pkg.setCoreProperties({
107
- title: 'Test Title',
108
- creator: 'Test Author',
109
- description: 'Test description with <special> & chars',
110
- });
111
- const buffer = await pkg.toArrayBuffer();
112
- const opened = await openPackage(buffer);
113
- const props = await getCoreProperties(opened);
114
- expect(props.title).toBe('Test Title');
115
- expect(props.creator).toBe('Test Author');
116
- expect(props.description).toBe('Test description with <special> & chars');
117
- });
118
- it('round-trips part relationships', async () => {
119
- const pkg = createPackage();
120
- pkg.addPart('word/document.xml', '<doc/>', 'application/xml');
121
- pkg.addRelationship('word/document.xml', {
122
- id: 'rId1',
123
- type: 'http://example.com/styles',
124
- target: 'styles.xml',
125
- });
126
- pkg.addRelationship('word/document.xml', {
127
- id: 'rId2',
128
- type: 'http://example.com/hyperlink',
129
- target: 'https://example.com',
130
- targetMode: 'External',
131
- });
132
- const buffer = await pkg.toArrayBuffer();
133
- const opened = await openPackage(buffer);
134
- const rels = await getPartRelationships(opened, 'word/document.xml');
135
- expect(rels.length).toBe(2);
136
- expect(rels[0].id).toBe('rId1');
137
- expect(rels[0].target).toBe('styles.xml');
138
- expect(rels[1].id).toBe('rId2');
139
- expect(rels[1].target).toBe('https://example.com');
140
- expect(rels[1].targetMode).toBe('External');
141
- });
142
- it('handles binary parts', async () => {
143
- const pkg = createPackage();
144
- const testData = new Uint8Array([0x89, 0x50, 0x4e, 0x47]); // PNG magic bytes
145
- pkg.addBinaryPart('word/media/image1.png', testData, 'image/png');
146
- const buffer = await pkg.toArrayBuffer();
147
- const opened = await openPackage(buffer);
148
- // Binary part should appear in content types via extension default
149
- expect(opened.contentTypes.defaults.has('png')).toBe(true);
150
- });
151
- });
152
- //# sourceMappingURL=ooxml.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ooxml.test.js","sourceRoot":"","sources":["../../src/__tests__/ooxml.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +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
- export {};
8
- //# sourceMappingURL=pdfExport.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfExport.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pdfExport.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}