docgen-utils 1.0.12 → 1.0.14

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 (80) hide show
  1. package/dist/bundle.js +3221 -1225
  2. package/dist/bundle.min.js +100 -98
  3. package/dist/cli.js +26687 -1208
  4. package/dist/packages/cli/commands/export-docs.d.ts +10 -1
  5. package/dist/packages/cli/commands/export-docs.d.ts.map +1 -1
  6. package/dist/packages/cli/commands/export-docs.js +352 -5
  7. package/dist/packages/cli/commands/export-docs.js.map +1 -1
  8. package/dist/packages/cli/commands/export-slides.d.ts +1 -1
  9. package/dist/packages/cli/commands/export-slides.d.ts.map +1 -1
  10. package/dist/packages/cli/commands/export-slides.js +89 -8
  11. package/dist/packages/cli/commands/export-slides.js.map +1 -1
  12. package/dist/packages/cli/commands/import-docx.d.ts +1 -1
  13. package/dist/packages/cli/commands/import-docx.d.ts.map +1 -1
  14. package/dist/packages/cli/commands/import-docx.js +3 -3
  15. package/dist/packages/cli/commands/import-docx.js.map +1 -1
  16. package/dist/packages/cli/commands/import-pptx.d.ts +1 -1
  17. package/dist/packages/cli/commands/import-pptx.d.ts.map +1 -1
  18. package/dist/packages/cli/commands/import-pptx.js +2 -2
  19. package/dist/packages/cli/commands/import-pptx.js.map +1 -1
  20. package/dist/packages/cli/index.js +14 -8
  21. package/dist/packages/cli/index.js.map +1 -1
  22. package/dist/packages/docs/common.d.ts +10 -0
  23. package/dist/packages/docs/common.d.ts.map +1 -1
  24. package/dist/packages/docs/common.js.map +1 -1
  25. package/dist/packages/docs/convert.d.ts.map +1 -1
  26. package/dist/packages/docs/convert.js +246 -218
  27. package/dist/packages/docs/convert.js.map +1 -1
  28. package/dist/packages/docs/create-document.d.ts.map +1 -1
  29. package/dist/packages/docs/create-document.js +43 -3
  30. package/dist/packages/docs/create-document.js.map +1 -1
  31. package/dist/packages/docs/export.d.ts +9 -8
  32. package/dist/packages/docs/export.d.ts.map +1 -1
  33. package/dist/packages/docs/export.js +23 -36
  34. package/dist/packages/docs/export.js.map +1 -1
  35. package/dist/packages/docs/parse-colors.d.ts +37 -0
  36. package/dist/packages/docs/parse-colors.d.ts.map +1 -0
  37. package/dist/packages/docs/parse-colors.js +507 -0
  38. package/dist/packages/docs/parse-colors.js.map +1 -0
  39. package/dist/packages/docs/parse-css.d.ts +98 -0
  40. package/dist/packages/docs/parse-css.d.ts.map +1 -0
  41. package/dist/packages/docs/parse-css.js +1592 -0
  42. package/dist/packages/docs/parse-css.js.map +1 -0
  43. package/dist/packages/docs/parse-helpers.d.ts +45 -0
  44. package/dist/packages/docs/parse-helpers.d.ts.map +1 -0
  45. package/dist/packages/docs/parse-helpers.js +220 -0
  46. package/dist/packages/docs/parse-helpers.js.map +1 -0
  47. package/dist/packages/docs/parse-inline.d.ts +41 -0
  48. package/dist/packages/docs/parse-inline.d.ts.map +1 -0
  49. package/dist/packages/docs/parse-inline.js +473 -0
  50. package/dist/packages/docs/parse-inline.js.map +1 -0
  51. package/dist/packages/docs/parse-layout.d.ts +57 -0
  52. package/dist/packages/docs/parse-layout.d.ts.map +1 -0
  53. package/dist/packages/docs/parse-layout.js +295 -0
  54. package/dist/packages/docs/parse-layout.js.map +1 -0
  55. package/dist/packages/docs/parse-special.d.ts +51 -0
  56. package/dist/packages/docs/parse-special.d.ts.map +1 -0
  57. package/dist/packages/docs/parse-special.js +251 -0
  58. package/dist/packages/docs/parse-special.js.map +1 -0
  59. package/dist/packages/docs/parse-units.d.ts +68 -0
  60. package/dist/packages/docs/parse-units.d.ts.map +1 -0
  61. package/dist/packages/docs/parse-units.js +275 -0
  62. package/dist/packages/docs/parse-units.js.map +1 -0
  63. package/dist/packages/docs/parse.d.ts.map +1 -1
  64. package/dist/packages/docs/parse.js +957 -2800
  65. package/dist/packages/docs/parse.js.map +1 -1
  66. package/dist/packages/slides/common.d.ts +7 -0
  67. package/dist/packages/slides/common.d.ts.map +1 -1
  68. package/dist/packages/slides/convert.d.ts.map +1 -1
  69. package/dist/packages/slides/convert.js +92 -7
  70. package/dist/packages/slides/convert.js.map +1 -1
  71. package/dist/packages/slides/createPresentation.d.ts.map +1 -1
  72. package/dist/packages/slides/createPresentation.js +20 -0
  73. package/dist/packages/slides/createPresentation.js.map +1 -1
  74. package/dist/packages/slides/parse.d.ts.map +1 -1
  75. package/dist/packages/slides/parse.js +723 -40
  76. package/dist/packages/slides/parse.js.map +1 -1
  77. package/dist/packages/slides/transform.d.ts.map +1 -1
  78. package/dist/packages/slides/transform.js +57 -7
  79. package/dist/packages/slides/transform.js.map +1 -1
  80. package/package.json +3 -2
@@ -1,5 +1,14 @@
1
1
  /**
2
2
  * Export docs command - converts HTML to DOCX
3
+ *
4
+ * Handles images in a general way:
5
+ * - External <img> tags: fetched via HTTP and embedded
6
+ * - SVG charts: rendered to PNG using Playwright's browser canvas
7
+ * - Data URLs: passed through directly
3
8
  */
4
- export declare function exportDocs(filePath: string, outDir: string): Promise<void>;
9
+ export interface ExportDocsOptions {
10
+ name?: string;
11
+ pageless?: boolean;
12
+ }
13
+ export declare function exportDocs(filePath: string, outDir: string, options?: ExportDocsOptions): Promise<void>;
5
14
  //# sourceMappingURL=export-docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-docs.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF"}
1
+ {"version":3,"file":"export-docs.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmZH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCjH"}
@@ -1,10 +1,345 @@
1
1
  /**
2
2
  * Export docs command - converts HTML to DOCX
3
+ *
4
+ * Handles images in a general way:
5
+ * - External <img> tags: fetched via HTTP and embedded
6
+ * - SVG charts: rendered to PNG using Playwright's browser canvas
7
+ * - Data URLs: passed through directly
3
8
  */
4
9
  import * as fs from "node:fs";
5
10
  import * as path from "node:path";
11
+ import { chromium } from "playwright";
6
12
  import { createDocxBuffer } from "../../docs/create-document";
7
- export async function exportDocs(filePath, outDir) {
13
+ import { parseHtmlContent } from "../../docs/parse";
14
+ /**
15
+ * Recursively find all image elements from parsed elements.
16
+ * Searches top-level elements and also nested structures like blockquotes and two-column layouts.
17
+ */
18
+ function findAllImageElements(elements) {
19
+ const images = [];
20
+ for (const el of elements) {
21
+ if (el.type === "image") {
22
+ images.push(el);
23
+ }
24
+ // Recursively search blockquote/callout content
25
+ if (el.type === "blockquote" && el.content) {
26
+ images.push(...findAllImageElements(el.content));
27
+ }
28
+ // Recursively search two-column-layout content
29
+ if (el.type === "two-column-layout") {
30
+ images.push(...findAllImageElements(el.sidebar.content));
31
+ images.push(...findAllImageElements(el.main.content));
32
+ }
33
+ }
34
+ return images;
35
+ }
36
+ /**
37
+ * Fetch external images from parsed elements and convert to image data.
38
+ * Uses Node.js native fetch API to download images.
39
+ * Returns a Map of image src URL to ChartImageData.
40
+ */
41
+ async function fetchExternalImages(elements) {
42
+ const imageMap = new Map();
43
+ // Find all image elements (including nested ones)
44
+ const imageElements = findAllImageElements(elements);
45
+ // Filter to only external HTTP/HTTPS images (skip data URLs)
46
+ const externalImages = imageElements.filter((el) => el.src.startsWith("http://") || el.src.startsWith("https://"));
47
+ if (externalImages.length === 0) {
48
+ return imageMap;
49
+ }
50
+ console.log(`Fetching ${externalImages.length} external image(s)...`);
51
+ // Maximum content width in DOCX (6.5 inches at 96 DPI = 624 pixels, but we use 468 for some margin)
52
+ const maxWidth = 468;
53
+ for (const imgEl of externalImages) {
54
+ try {
55
+ const src = imgEl.src;
56
+ // Fetch the image
57
+ const response = await fetch(src, {
58
+ headers: {
59
+ // Some servers require a User-Agent
60
+ "User-Agent": "Mozilla/5.0 (compatible; DocxExporter/1.0)",
61
+ },
62
+ });
63
+ if (!response.ok) {
64
+ console.warn(`Failed to fetch image: ${src} (${response.status})`);
65
+ continue;
66
+ }
67
+ const arrayBuffer = await response.arrayBuffer();
68
+ const data = Buffer.from(arrayBuffer);
69
+ // Determine image dimensions
70
+ // For now, use a reasonable default size that fits the document
71
+ // The actual image will be scaled by the DOCX renderer
72
+ let width = imgEl.width || 468;
73
+ let height = imgEl.height || 300;
74
+ // Try to get actual dimensions from the image data
75
+ const dimensions = getImageDimensions(data);
76
+ if (dimensions) {
77
+ width = dimensions.width;
78
+ height = dimensions.height;
79
+ }
80
+ // Scale to fit within document width
81
+ if (width > maxWidth) {
82
+ const scale = maxWidth / width;
83
+ height = Math.round(height * scale);
84
+ width = maxWidth;
85
+ }
86
+ imageMap.set(src, { data, width, height });
87
+ }
88
+ catch (err) {
89
+ console.warn(`Error fetching image ${imgEl.src}:`, err);
90
+ continue;
91
+ }
92
+ }
93
+ return imageMap;
94
+ }
95
+ /**
96
+ * Extract image dimensions from binary data.
97
+ * Supports PNG, JPEG, GIF, and WebP formats.
98
+ */
99
+ function getImageDimensions(data) {
100
+ // PNG: Check for PNG signature and read IHDR chunk
101
+ if (data[0] === 0x89 && data[1] === 0x50 && data[2] === 0x4E && data[3] === 0x47) {
102
+ // PNG signature found, IHDR chunk starts at byte 8
103
+ // Width is at bytes 16-19, Height at bytes 20-23 (big-endian)
104
+ const width = data.readUInt32BE(16);
105
+ const height = data.readUInt32BE(20);
106
+ return { width, height };
107
+ }
108
+ // JPEG: Look for SOF0 marker (0xFF 0xC0) or SOF2 (0xFF 0xC2)
109
+ if (data[0] === 0xFF && data[1] === 0xD8) {
110
+ let offset = 2;
111
+ while (offset < data.length - 8) {
112
+ if (data[offset] !== 0xFF) {
113
+ offset++;
114
+ continue;
115
+ }
116
+ const marker = data[offset + 1];
117
+ // SOF0, SOF1, SOF2 markers contain dimensions
118
+ if (marker >= 0xC0 && marker <= 0xC2) {
119
+ const height = data.readUInt16BE(offset + 5);
120
+ const width = data.readUInt16BE(offset + 7);
121
+ return { width, height };
122
+ }
123
+ // Skip to next marker
124
+ const length = data.readUInt16BE(offset + 2);
125
+ offset += 2 + length;
126
+ }
127
+ }
128
+ // GIF: Check for GIF87a or GIF89a signature
129
+ if (data[0] === 0x47 && data[1] === 0x49 && data[2] === 0x46) {
130
+ const width = data.readUInt16LE(6);
131
+ const height = data.readUInt16LE(8);
132
+ return { width, height };
133
+ }
134
+ // WebP: Check for RIFF....WEBP signature
135
+ if (data[0] === 0x52 && data[1] === 0x49 && data[2] === 0x46 && data[3] === 0x46 &&
136
+ data[8] === 0x57 && data[9] === 0x45 && data[10] === 0x42 && data[11] === 0x50) {
137
+ // VP8 format (lossy)
138
+ if (data[12] === 0x56 && data[13] === 0x50 && data[14] === 0x38 && data[15] === 0x20) {
139
+ const width = data.readUInt16LE(26) & 0x3FFF;
140
+ const height = data.readUInt16LE(28) & 0x3FFF;
141
+ return { width, height };
142
+ }
143
+ // VP8L format (lossless)
144
+ if (data[12] === 0x56 && data[13] === 0x50 && data[14] === 0x38 && data[15] === 0x4C) {
145
+ const bits = data.readUInt32LE(21);
146
+ const width = (bits & 0x3FFF) + 1;
147
+ const height = ((bits >> 14) & 0x3FFF) + 1;
148
+ return { width, height };
149
+ }
150
+ }
151
+ return null;
152
+ }
153
+ /**
154
+ * Render SVG chart elements to PNG images using Playwright browser canvas.
155
+ * This allows Node.js CLI to render SVGs the same way the browser export does.
156
+ */
157
+ async function renderSvgChartsWithPlaywright(elements) {
158
+ const chartImages = new Map();
159
+ // Find all svg-chart elements
160
+ const svgCharts = elements.filter((el) => el.type === "svg-chart");
161
+ if (svgCharts.length === 0) {
162
+ return chartImages;
163
+ }
164
+ // Launch browser
165
+ const launchOptions = { headless: true };
166
+ const proxyServer = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
167
+ if (proxyServer) {
168
+ launchOptions.proxy = { server: proxyServer };
169
+ }
170
+ const browser = await chromium.launch(launchOptions);
171
+ try {
172
+ const context = await browser.newContext({
173
+ bypassCSP: true,
174
+ viewport: { width: 1280, height: 800 },
175
+ });
176
+ const page = await context.newPage();
177
+ // Process each SVG chart
178
+ let svgIndex = 0;
179
+ for (const chart of svgCharts) {
180
+ try {
181
+ const imageData = await renderSvgInBrowser(page, chart.svgContent, chart.width, chart.height, chart.backgroundColor);
182
+ if (imageData) {
183
+ chartImages.set(`svg-chart-${svgIndex}`, imageData);
184
+ }
185
+ }
186
+ catch (err) {
187
+ console.warn(`Failed to render SVG chart ${svgIndex}:`, err);
188
+ }
189
+ svgIndex++;
190
+ }
191
+ await page.close();
192
+ await context.close();
193
+ }
194
+ finally {
195
+ await browser.close();
196
+ }
197
+ return chartImages;
198
+ }
199
+ /**
200
+ * Render a single SVG to PNG in the browser using Canvas.
201
+ */
202
+ async function renderSvgInBrowser(page, svgContent, width, height, backgroundColor) {
203
+ // Create HTML page with the SVG rendering logic
204
+ const renderPage = `<!DOCTYPE html>
205
+ <html>
206
+ <head>
207
+ <style>
208
+ body { margin: 0; padding: 0; }
209
+ #svg-container { display: inline-block; }
210
+ </style>
211
+ </head>
212
+ <body>
213
+ <div id="svg-container"></div>
214
+ <canvas id="canvas"></canvas>
215
+ <script>
216
+ window.renderSvgToPng = async function(svgContent, width, height, backgroundColor) {
217
+ // Parse SVG to get dimensions if not provided
218
+ const parser = new DOMParser();
219
+ const svgDoc = parser.parseFromString(svgContent, "image/svg+xml");
220
+ const svgElement = svgDoc.querySelector("svg");
221
+
222
+ if (!svgElement) {
223
+ return null;
224
+ }
225
+
226
+ // Get dimensions from SVG
227
+ let svgWidth = width;
228
+ let svgHeight = height;
229
+
230
+ if (!svgWidth || !svgHeight) {
231
+ const viewBox = svgElement.getAttribute("viewBox");
232
+ if (viewBox) {
233
+ const parts = viewBox.split(/\\s+/).map(Number);
234
+ if (parts.length >= 4) {
235
+ svgWidth = svgWidth || parts[2];
236
+ svgHeight = svgHeight || parts[3];
237
+ }
238
+ }
239
+ if (!svgWidth) {
240
+ const widthAttr = svgElement.getAttribute("width");
241
+ if (widthAttr && !widthAttr.includes("%")) {
242
+ svgWidth = parseFloat(widthAttr);
243
+ }
244
+ }
245
+ if (!svgHeight) {
246
+ const heightAttr = svgElement.getAttribute("height");
247
+ if (heightAttr && !heightAttr.includes("%")) {
248
+ svgHeight = parseFloat(heightAttr);
249
+ }
250
+ }
251
+ }
252
+
253
+ // Default dimensions if still not found
254
+ svgWidth = svgWidth || 624;
255
+ svgHeight = svgHeight || 468;
256
+
257
+ // Ensure SVG has explicit dimensions
258
+ svgElement.setAttribute("width", String(svgWidth));
259
+ svgElement.setAttribute("height", String(svgHeight));
260
+
261
+ // Ensure SVG has proper XML namespace
262
+ if (!svgElement.getAttribute("xmlns")) {
263
+ svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg");
264
+ }
265
+
266
+ // Serialize the modified SVG
267
+ const serializer = new XMLSerializer();
268
+ const svgString = serializer.serializeToString(svgElement);
269
+
270
+ // Create a blob URL for the SVG
271
+ const svgBlob = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
272
+ const svgUrl = URL.createObjectURL(svgBlob);
273
+
274
+ try {
275
+ // Create an image from the SVG
276
+ const img = new Image();
277
+ await new Promise((resolve, reject) => {
278
+ img.onload = resolve;
279
+ img.onerror = reject;
280
+ img.src = svgUrl;
281
+ });
282
+
283
+ // Create canvas
284
+ const scale = window.devicePixelRatio || 1;
285
+ const canvas = document.getElementById("canvas");
286
+ canvas.width = svgWidth * scale;
287
+ canvas.height = svgHeight * scale;
288
+
289
+ const ctx = canvas.getContext("2d");
290
+ if (!ctx) return null;
291
+
292
+ // Fill with background color
293
+ ctx.fillStyle = backgroundColor ? "#" + backgroundColor : "white";
294
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
295
+
296
+ // Scale for device pixel ratio
297
+ ctx.scale(scale, scale);
298
+
299
+ // Draw the SVG
300
+ ctx.drawImage(img, 0, 0, svgWidth, svgHeight);
301
+
302
+ // Convert to PNG data URL
303
+ const dataUrl = canvas.toDataURL("image/png");
304
+
305
+ // Scale dimensions to fit within DOCX content width
306
+ const maxWidth = 624;
307
+ const aspectRatio = svgHeight / svgWidth;
308
+ const finalWidth = Math.min(svgWidth, maxWidth);
309
+ const finalHeight = finalWidth * aspectRatio;
310
+
311
+ return {
312
+ dataUrl,
313
+ width: Math.round(finalWidth),
314
+ height: Math.round(finalHeight),
315
+ };
316
+ } finally {
317
+ URL.revokeObjectURL(svgUrl);
318
+ }
319
+ };
320
+ </script>
321
+ </body>
322
+ </html>`;
323
+ await page.setContent(renderPage, { waitUntil: "domcontentloaded" });
324
+ // Call the rendering function in the browser
325
+ const result = await page.evaluate(async ({ svgContent, width, height, backgroundColor }) => {
326
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
327
+ return window.renderSvgToPng(svgContent, width, height, backgroundColor);
328
+ }, { svgContent, width, height, backgroundColor });
329
+ if (!result || !result.dataUrl) {
330
+ return null;
331
+ }
332
+ // Convert data URL to Buffer
333
+ const base64Data = result.dataUrl.replace(/^data:image\/png;base64,/, "");
334
+ const data = Buffer.from(base64Data, "base64");
335
+ return {
336
+ data,
337
+ width: result.width,
338
+ height: result.height,
339
+ };
340
+ }
341
+ export async function exportDocs(filePath, outDir, options = {}) {
342
+ const { name: outputName, pageless } = options;
8
343
  const absolutePath = path.resolve(filePath);
9
344
  if (!fs.existsSync(absolutePath)) {
10
345
  throw new Error(`File not found: ${absolutePath}`);
@@ -12,10 +347,22 @@ export async function exportDocs(filePath, outDir) {
12
347
  console.log(`Exporting to DOCX: ${filePath}`);
13
348
  // Read the HTML file
14
349
  const html = fs.readFileSync(absolutePath, "utf-8");
15
- // Get filename for title
16
- const baseName = path.basename(filePath, ".html");
17
- // Create DOCX buffer
18
- const buffer = await createDocxBuffer(html, { title: baseName });
350
+ // Get filename for title - use provided name or derive from input file
351
+ const baseName = outputName || path.basename(filePath, ".html");
352
+ // Parse HTML to get elements
353
+ const elements = parseHtmlContent(html);
354
+ // Fetch external images (for <img> tags with HTTP URLs)
355
+ const imageMap = await fetchExternalImages(elements);
356
+ // Render SVG charts to PNG using Playwright browser canvas
357
+ const chartImages = await renderSvgChartsWithPlaywright(elements);
358
+ // Create DOCX buffer with pre-parsed elements, external images, and rendered charts
359
+ const buffer = await createDocxBuffer(html, {
360
+ title: baseName,
361
+ elements,
362
+ imageMap: imageMap.size > 0 ? imageMap : undefined,
363
+ chartImages: chartImages.size > 0 ? chartImages : undefined,
364
+ pageless,
365
+ });
19
366
  // Write output
20
367
  const outputPath = path.join(outDir, `${baseName}.docx`);
21
368
  fs.writeFileSync(outputPath, buffer);
@@ -1 +1 @@
1
- {"version":3,"file":"export-docs.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAE9C,qBAAqB;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElD,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"export-docs.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-docs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Export slides command - converts HTML slides to PPTX using Playwright
3
3
  */
4
- export declare function exportSlides(filePaths: string[], outDir: string): Promise<void>;
4
+ export declare function exportSlides(filePaths: string[], outDir: string, outputName?: string): Promise<void>;
5
5
  //# sourceMappingURL=export-slides.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-slides.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGrF"}
1
+ {"version":3,"file":"export-slides.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwFH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuH1G"}
@@ -7,7 +7,73 @@ import { fileURLToPath } from "node:url";
7
7
  import { chromium } from "playwright";
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
- export async function exportSlides(filePaths, outDir) {
10
+ /**
11
+ * Create a fetch function that respects HTTP_PROXY/HTTPS_PROXY environment variables.
12
+ * Uses undici's ProxyAgent for proxy support.
13
+ */
14
+ async function fetchWithProxy(url) {
15
+ const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY ||
16
+ process.env.https_proxy || process.env.http_proxy;
17
+ if (proxyUrl) {
18
+ // Use undici directly for proxy support
19
+ const undici = await import('undici');
20
+ const agent = new undici.ProxyAgent(proxyUrl);
21
+ const response = await undici.fetch(url, {
22
+ dispatcher: agent,
23
+ headers: {
24
+ 'User-Agent': 'Mozilla/5.0 (compatible; DocGen/1.0)',
25
+ },
26
+ });
27
+ return response;
28
+ }
29
+ return fetch(url, {
30
+ headers: {
31
+ 'User-Agent': 'Mozilla/5.0 (compatible; DocGen/1.0)',
32
+ },
33
+ });
34
+ }
35
+ /**
36
+ * Pre-fetch external images and convert them to data URIs.
37
+ * This bypasses CORS restrictions by fetching images in Node.js
38
+ * before passing HTML to the browser context.
39
+ */
40
+ async function embedExternalImages(html) {
41
+ // Find all external image URLs in src attributes
42
+ const imgRegex = /<img\s+([^>]*?)src="(https?:\/\/[^"]+)"([^>]*)>/gi;
43
+ const matches = [...html.matchAll(imgRegex)];
44
+ if (matches.length === 0) {
45
+ return html;
46
+ }
47
+ // Collect unique URLs
48
+ const urls = new Set();
49
+ for (const match of matches) {
50
+ urls.add(match[2]);
51
+ }
52
+ // Fetch all images in parallel
53
+ const urlToDataUri = new Map();
54
+ await Promise.all(Array.from(urls).map(async (url) => {
55
+ try {
56
+ const response = await fetchWithProxy(url);
57
+ if (response.ok) {
58
+ const buffer = await response.arrayBuffer();
59
+ const contentType = response.headers.get('content-type') || 'image/jpeg';
60
+ const base64 = Buffer.from(buffer).toString('base64');
61
+ const dataUri = `data:${contentType};base64,${base64}`;
62
+ urlToDataUri.set(url, dataUri);
63
+ }
64
+ }
65
+ catch {
66
+ // Failed to fetch - image will be skipped during conversion
67
+ console.warn(`Failed to fetch image: ${url}`);
68
+ }
69
+ }));
70
+ // Replace URLs with data URIs
71
+ for (const [url, dataUri] of urlToDataUri) {
72
+ html = html.split(url).join(dataUri);
73
+ }
74
+ return html;
75
+ }
76
+ export async function exportSlides(filePaths, outDir, outputName) {
11
77
  if (filePaths.length === 0) {
12
78
  throw new Error("No input files provided");
13
79
  }
@@ -22,21 +88,36 @@ export async function exportSlides(filePaths, outDir) {
22
88
  }
23
89
  console.log(`Exporting ${absolutePaths.length} slide(s) to PPTX`);
24
90
  // Read the bundle.js which contains all the PPTX generation code
25
- const bundlePath = path.resolve(__dirname, "bundle.js");
91
+ let bundlePath = path.resolve(__dirname, "bundle.min.js");
92
+ if (!fs.existsSync(bundlePath)) {
93
+ bundlePath = path.resolve(__dirname, "..", "..", "..", "dist/bundle.min.js");
94
+ }
26
95
  if (!fs.existsSync(bundlePath)) {
27
96
  throw new Error(`Bundle not found: ${bundlePath}. Run 'npm run build' first.`);
28
97
  }
29
98
  const bundleCode = fs.readFileSync(bundlePath, "utf-8");
30
99
  // Launch browser
31
- const browser = await chromium.launch({ headless: true });
100
+ const launchOptions = { headless: true };
101
+ const proxyServer = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
102
+ if (proxyServer) {
103
+ launchOptions.proxy = { server: proxyServer };
104
+ }
105
+ const browser = await chromium.launch(launchOptions);
32
106
  try {
33
107
  const context = await browser.newContext({
34
108
  bypassCSP: true,
35
109
  viewport: { width: 960, height: 540 },
110
+ ignoreHTTPSErrors: true,
36
111
  });
37
112
  const page = await context.newPage();
38
- // Read all HTML files
39
- const htmlContents = absolutePaths.map(p => fs.readFileSync(p, "utf-8"));
113
+ // Read all HTML files and embed external images as data URIs
114
+ // This bypasses CORS restrictions by fetching images in Node.js
115
+ const htmlContents = [];
116
+ for (const p of absolutePaths) {
117
+ let html = fs.readFileSync(p, "utf-8");
118
+ html = await embedExternalImages(html);
119
+ htmlContents.push(html);
120
+ }
40
121
  // Create a minimal HTML page with the bundle injected
41
122
  const pageHtml = `<!DOCTYPE html>
42
123
  <html>
@@ -70,10 +151,10 @@ export async function exportSlides(filePaths, outDir) {
70
151
  }, { htmlContents });
71
152
  await page.close();
72
153
  await context.close();
73
- // Determine output filename
154
+ // Determine output filename - use provided name, or derive from input file(s)
74
155
  const firstBaseName = path.basename(absolutePaths[0], ".html");
75
- const outputName = absolutePaths.length === 1 ? firstBaseName : "presentation";
76
- const outputPath = path.join(outDir, `${outputName}.pptx`);
156
+ const finalName = outputName || (absolutePaths.length === 1 ? firstBaseName : "presentation");
157
+ const outputPath = path.join(outDir, `${finalName}.pptx`);
77
158
  // Convert base64 to buffer and write to file
78
159
  const buffer = Buffer.from(pptxBuffer, "base64");
79
160
  fs.writeFileSync(outputPath, buffer);
@@ -1 +1 @@
1
- {"version":3,"file":"export-slides.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-slides.js","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Import DOCX command - converts a DOCX file to HTML
3
3
  */
4
- export declare function importDocx(filePath: string, outDir: string): Promise<void>;
4
+ export declare function importDocx(filePath: string, outDir: string, outputName?: string): Promise<void>;
5
5
  //# sourceMappingURL=import-docx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-docx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhF"}
1
+ {"version":3,"file":"import-docx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrG"}
@@ -4,7 +4,7 @@
4
4
  import * as fs from "node:fs";
5
5
  import * as path from "node:path";
6
6
  import importDocxFn from "../../docs/import-docx";
7
- export async function importDocx(filePath, outDir) {
7
+ export async function importDocx(filePath, outDir, outputName) {
8
8
  const absolutePath = path.resolve(filePath);
9
9
  if (!fs.existsSync(absolutePath)) {
10
10
  throw new Error(`File not found: ${absolutePath}`);
@@ -18,8 +18,8 @@ export async function importDocx(filePath, outDir) {
18
18
  if (!html) {
19
19
  throw new Error("DOCX file produced no HTML content");
20
20
  }
21
- // Write output
22
- const baseName = path.basename(filePath, ".docx");
21
+ // Write output - use provided name or derive from input file
22
+ const baseName = outputName || path.basename(filePath, ".docx");
23
23
  const outputPath = path.join(outDir, `${baseName}.html`);
24
24
  fs.writeFileSync(outputPath, html);
25
25
  console.log(`Output: ${outputPath}`);
@@ -1 +1 @@
1
- {"version":3,"file":"import-docx.js","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CACzC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAC9C,CAAC;IAEF,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,eAAe;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"import-docx.js","sourceRoot":"","sources":["../../../../packages/cli/commands/import-docx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,UAAmB;IACpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CACzC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAC9C,CAAC;IAEF,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Import PPTX command - converts a PPTX file to HTML (one file per slide)
3
3
  */
4
- export declare function importPptx(filePath: string, outDir: string): Promise<void>;
4
+ export declare function importPptx(filePath: string, outDir: string, outputName?: string): Promise<void>;
5
5
  //# sourceMappingURL=import-pptx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-pptx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-pptx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhF"}
1
+ {"version":3,"file":"import-pptx.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/import-pptx.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDrG"}