docgen-utils 1.0.32 → 1.0.34

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.
package/dist/cli.js CHANGED
@@ -74935,6 +74935,70 @@ import * as http from "node:http";
74935
74935
  import * as tls from "node:tls";
74936
74936
  import { URL } from "node:url";
74937
74937
  var userAgent = "Mozilla/5.0 (compatible; Copilot/1.0)";
74938
+ var MAX_REDIRECTS = 5;
74939
+ function fetchViaForwardProxy(proxy, targetUrl, redirectCount = 0) {
74940
+ return new Promise((resolve5, reject) => {
74941
+ const target = new URL(targetUrl);
74942
+ const req = http.request(
74943
+ {
74944
+ host: proxy.hostname,
74945
+ port: Number(proxy.port) || 80,
74946
+ method: "GET",
74947
+ path: targetUrl,
74948
+ // Full URL as path for forward proxy
74949
+ headers: {
74950
+ Host: target.hostname,
74951
+ "User-Agent": userAgent,
74952
+ Connection: "close"
74953
+ }
74954
+ },
74955
+ (res) => {
74956
+ const chunks = [];
74957
+ res.on("data", (chunk) => chunks.push(chunk));
74958
+ res.on("end", () => {
74959
+ const statusCode = res.statusCode ?? 0;
74960
+ if (statusCode >= 301 && statusCode <= 308 && statusCode !== 304 && res.headers.location) {
74961
+ if (redirectCount >= MAX_REDIRECTS) {
74962
+ reject(new Error(`Too many redirects (max ${MAX_REDIRECTS})`));
74963
+ return;
74964
+ }
74965
+ const redirectUrl = new URL(
74966
+ res.headers.location,
74967
+ targetUrl
74968
+ ).toString();
74969
+ resolve5(fetchViaForwardProxy(proxy, redirectUrl, redirectCount + 1));
74970
+ return;
74971
+ }
74972
+ const body = Buffer.concat(chunks);
74973
+ const headers = {};
74974
+ for (const [key2, value] of Object.entries(res.headers)) {
74975
+ if (typeof value === "string") {
74976
+ headers[key2.toLowerCase()] = value;
74977
+ } else if (Array.isArray(value)) {
74978
+ headers[key2.toLowerCase()] = value.join(", ");
74979
+ }
74980
+ }
74981
+ resolve5({
74982
+ ok: statusCode >= 200 && statusCode < 300,
74983
+ status: statusCode,
74984
+ statusText: res.statusMessage ?? "",
74985
+ headers: new Headers(headers),
74986
+ arrayBuffer: () => Promise.resolve(
74987
+ body.buffer.slice(
74988
+ body.byteOffset,
74989
+ body.byteOffset + body.byteLength
74990
+ )
74991
+ ),
74992
+ text: () => Promise.resolve(body.toString("utf-8"))
74993
+ });
74994
+ });
74995
+ res.on("error", reject);
74996
+ }
74997
+ );
74998
+ req.on("error", reject);
74999
+ req.end();
75000
+ });
75001
+ }
74938
75002
  function connectThroughProxy(proxy, targetHost, targetPort) {
74939
75003
  return new Promise((resolve5, reject) => {
74940
75004
  const req = http.request({
@@ -75079,22 +75143,33 @@ function parseHttpResponse(tlsSocket) {
75079
75143
  });
75080
75144
  });
75081
75145
  }
75082
- async function fetchWithProxy(url) {
75083
- const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.https_proxy || process.env.http_proxy;
75084
- if (proxyUrl) {
75085
- const normalizedProxyUrl = proxyUrl.includes("://") ? proxyUrl : `http://${proxyUrl}`;
75086
- const proxy = new URL(normalizedProxyUrl);
75087
- const target = new URL(url);
75088
- const rawSocket = await connectThroughProxy(proxy, target.hostname, 443);
75089
- const tlsSocket = await upgradeTls(rawSocket, target.hostname, false);
75090
- const requestLine = `GET ${target.pathname}${target.search} HTTP/1.1\r
75146
+ async function fetchViaConnectTunnel(proxy, targetUrl) {
75147
+ const target = new URL(targetUrl);
75148
+ const rawSocket = await connectThroughProxy(proxy, target.hostname, 443);
75149
+ const tlsSocket = await upgradeTls(rawSocket, target.hostname, false);
75150
+ const requestLine = `GET ${target.pathname}${target.search} HTTP/1.1\r
75091
75151
  Host: ${target.hostname}\r
75092
75152
  User-Agent: ${userAgent}\r
75093
75153
  Connection: close\r
75094
75154
  \r
75095
75155
  `;
75096
- tlsSocket.write(requestLine);
75097
- return parseHttpResponse(tlsSocket);
75156
+ tlsSocket.write(requestLine);
75157
+ return parseHttpResponse(tlsSocket);
75158
+ }
75159
+ async function fetchWithProxy(url) {
75160
+ const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.https_proxy || process.env.http_proxy;
75161
+ if (proxyUrl) {
75162
+ const normalizedProxyUrl = proxyUrl.includes("://") ? proxyUrl : `http://${proxyUrl}`;
75163
+ const proxy = new URL(normalizedProxyUrl);
75164
+ try {
75165
+ return await fetchViaForwardProxy(proxy, url);
75166
+ } catch (forwardError) {
75167
+ try {
75168
+ return await fetchViaConnectTunnel(proxy, url);
75169
+ } catch {
75170
+ throw forwardError;
75171
+ }
75172
+ }
75098
75173
  }
75099
75174
  return fetch(url, { headers: { "User-Agent": userAgent } });
75100
75175
  }
@@ -81069,7 +81144,7 @@ async function addElementsToSlide(elements, slide, pres) {
81069
81144
  if (el.type === "slideBackgroundImage") {
81070
81145
  const imgSrc = getCachedImageSource(el.src);
81071
81146
  if (!imgSrc) {
81072
- console.warn(`Skipping slide background image (CORS failure): ${el.src}`);
81147
+ console.warn(`Skipping slide background image (fetch failed): ${el.src}`);
81073
81148
  continue;
81074
81149
  }
81075
81150
  const imageOptions = {
@@ -81116,7 +81191,7 @@ async function addElementsToSlide(elements, slide, pres) {
81116
81191
  if (el.type === "image") {
81117
81192
  const imgSrc = getCachedImageSource(el.src);
81118
81193
  if (!imgSrc) {
81119
- console.warn(`Skipping image (CORS failure): ${el.src}`);
81194
+ console.warn(`Skipping image (fetch failed): ${el.src}`);
81120
81195
  continue;
81121
81196
  }
81122
81197
  const imageOptions = {
@@ -81151,7 +81226,7 @@ async function addElementsToSlide(elements, slide, pres) {
81151
81226
  } else if (el.type === "backgroundImage") {
81152
81227
  const imgSrc = getCachedImageSource(el.src);
81153
81228
  if (!imgSrc) {
81154
- console.warn(`Skipping background image (CORS failure): ${el.src}`);
81229
+ console.warn(`Skipping background image (fetch failed): ${el.src}`);
81155
81230
  continue;
81156
81231
  }
81157
81232
  const imageOptions = {
@@ -81513,11 +81588,14 @@ async function exportSlides(filePaths, outDir, outputName, pdf = false) {
81513
81588
  const bundleJs = fs5.readFileSync(bundlePath, "utf-8");
81514
81589
  const imageCache = /* @__PURE__ */ new Map();
81515
81590
  const imageFetchPromises = /* @__PURE__ */ new Map();
81591
+ const failedImages = /* @__PURE__ */ new Set();
81516
81592
  function startImageFetch(url) {
81517
81593
  if (imageFetchPromises.has(url)) return;
81518
81594
  const promise = fetchImageAsDataUrlNode(url).then((dataUrl) => {
81519
81595
  imageCache.set(url, dataUrl);
81520
- }).catch(() => {
81596
+ }).catch((err) => {
81597
+ console.error(` Failed to fetch image: ${url} - ${err.message}`);
81598
+ failedImages.add(url);
81521
81599
  });
81522
81600
  imageFetchPromises.set(url, promise);
81523
81601
  }
@@ -81582,99 +81660,96 @@ async function exportSlides(filePaths, outDir, outputName, pdf = false) {
81582
81660
  }
81583
81661
  return route.continue();
81584
81662
  });
81585
- const MAX_CONCURRENT = 4;
81586
- for (let batchStart = 0; batchStart < absolutePaths.length; batchStart += MAX_CONCURRENT) {
81587
- const batchEnd = Math.min(batchStart + MAX_CONCURRENT, absolutePaths.length);
81588
- const batchPaths = absolutePaths.slice(batchStart, batchEnd);
81589
- const batchPromises = batchPaths.map(async (slidePath, batchIndex) => {
81590
- const index = batchStart + batchIndex;
81591
- const page = await context.newPage();
81592
- page.setDefaultTimeout(6e4);
81593
- await page.goto(`file://${slidePath}`, { waitUntil: "domcontentloaded" });
81594
- await page.addScriptTag({ content: bundleJs });
81595
- await page.waitForFunction("typeof window.docgen !== 'undefined'");
81596
- await page.evaluate(`(async function() {
81597
- if (document.fonts && document.fonts.ready) {
81598
- await Promise.race([
81599
- document.fonts.ready,
81600
- new Promise(r => setTimeout(r, 500))
81601
- ]);
81602
- }
81603
- })()`);
81604
- const slideDataJson = await page.evaluate(`(async function() {
81605
- const docgen = window.docgen;
81606
- const html = document.documentElement.outerHTML;
81607
- const transformedHtml = docgen.transformHtmlForPptx(html);
81663
+ const page = await context.newPage();
81664
+ page.setDefaultTimeout(6e4);
81665
+ for (let index = 0; index < absolutePaths.length; index++) {
81666
+ const slidePath = absolutePaths[index];
81667
+ await page.goto(`file://${slidePath}`, { waitUntil: "domcontentloaded" });
81668
+ await page.addScriptTag({ content: bundleJs });
81669
+ await page.waitForFunction("typeof window.docgen !== 'undefined'");
81670
+ await page.evaluate(`(async function() {
81671
+ if (document.fonts && document.fonts.ready) {
81672
+ await Promise.race([
81673
+ document.fonts.ready,
81674
+ new Promise(r => setTimeout(r, 500))
81675
+ ]);
81676
+ }
81677
+ })()`);
81678
+ const slideDataJson = await page.evaluate(`(async function() {
81679
+ const docgen = window.docgen;
81680
+ const html = document.documentElement.outerHTML;
81681
+ const transformedHtml = docgen.transformHtmlForPptx(html);
81608
81682
 
81609
- const iframe = document.createElement('iframe');
81610
- iframe.style.cssText = 'position:absolute;left:-9999px;width:960px;height:540px;border:none;';
81683
+ const iframe = document.createElement('iframe');
81684
+ iframe.style.cssText = 'position:absolute;left:-9999px;width:960px;height:540px;border:none;';
81611
81685
 
81612
- const blob = new Blob([transformedHtml], { type: 'text/html' });
81613
- const blobUrl = URL.createObjectURL(blob);
81686
+ const blob = new Blob([transformedHtml], { type: 'text/html' });
81687
+ const blobUrl = URL.createObjectURL(blob);
81614
81688
 
81615
- return new Promise((resolve) => {
81616
- iframe.onload = async () => {
81617
- URL.revokeObjectURL(blobUrl);
81689
+ return new Promise((resolve) => {
81690
+ iframe.onload = async () => {
81691
+ URL.revokeObjectURL(blobUrl);
81618
81692
 
81619
- const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
81620
- const win = iframe.contentWindow;
81693
+ const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
81694
+ const win = iframe.contentWindow;
81621
81695
 
81622
- if (win.document.fonts && win.document.fonts.ready) {
81623
- await Promise.race([
81624
- win.document.fonts.ready,
81625
- new Promise(r => setTimeout(r, 500))
81626
- ]);
81627
- }
81696
+ if (win.document.fonts && win.document.fonts.ready) {
81697
+ await Promise.race([
81698
+ win.document.fonts.ready,
81699
+ new Promise(r => setTimeout(r, 500))
81700
+ ]);
81701
+ }
81628
81702
 
81629
- try {
81630
- const slideData = docgen.parseSlideHtml(iframeDoc);
81631
- iframe.parentNode.removeChild(iframe);
81632
- resolve(JSON.stringify(slideData));
81633
- } catch(e) {
81634
- iframe.parentNode.removeChild(iframe);
81635
- resolve(JSON.stringify({ error: e.message }));
81636
- }
81637
- };
81703
+ try {
81704
+ const slideData = docgen.parseSlideHtml(iframeDoc);
81705
+ iframe.parentNode.removeChild(iframe);
81706
+ resolve(JSON.stringify(slideData));
81707
+ } catch(e) {
81708
+ iframe.parentNode.removeChild(iframe);
81709
+ resolve(JSON.stringify({ error: e.message }));
81710
+ }
81711
+ };
81638
81712
 
81639
- iframe.onerror = () => {
81640
- URL.revokeObjectURL(blobUrl);
81641
- iframe.parentNode?.removeChild(iframe);
81642
- resolve(JSON.stringify({ error: 'iframe load error' }));
81643
- };
81713
+ iframe.onerror = () => {
81714
+ URL.revokeObjectURL(blobUrl);
81715
+ iframe.parentNode?.removeChild(iframe);
81716
+ resolve(JSON.stringify({ error: 'iframe load error' }));
81717
+ };
81644
81718
 
81645
- iframe.src = blobUrl;
81646
- document.body.appendChild(iframe);
81719
+ iframe.src = blobUrl;
81720
+ document.body.appendChild(iframe);
81647
81721
 
81648
- setTimeout(() => {
81649
- if (iframe.parentNode) {
81650
- iframe.parentNode.removeChild(iframe);
81651
- resolve(JSON.stringify({ error: 'timeout' }));
81652
- }
81653
- }, 10000);
81654
- });
81655
- })()`);
81656
- await page.close();
81657
- if (!slideDataJson) {
81658
- throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - null result`);
81659
- }
81660
- const parsed = JSON.parse(slideDataJson);
81661
- if (typeof parsed === "object" && "error" in parsed) {
81662
- throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - ${parsed.error}`);
81663
- }
81664
- const slideData = parsed;
81665
- parsedCount++;
81666
- console.log(` Parsed ${parsedCount}/${absolutePaths.length}`);
81667
- const urls = collectImageUrls(slideData);
81668
- urls.forEach((url) => startImageFetch(url));
81669
- const imagesReady = waitForSlideImages(slideData);
81670
- parsedSlides.push({ index, slideData, imagesReady });
81671
- queueGeneration();
81672
- });
81673
- await Promise.all(batchPromises);
81722
+ setTimeout(() => {
81723
+ if (iframe.parentNode) {
81724
+ iframe.parentNode.removeChild(iframe);
81725
+ resolve(JSON.stringify({ error: 'timeout' }));
81726
+ }
81727
+ }, 10000);
81728
+ });
81729
+ })()`);
81730
+ if (!slideDataJson) {
81731
+ throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - null result`);
81732
+ }
81733
+ const parsed = JSON.parse(slideDataJson);
81734
+ if (typeof parsed === "object" && "error" in parsed) {
81735
+ throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - ${parsed.error}`);
81736
+ }
81737
+ const slideData = parsed;
81738
+ parsedCount++;
81739
+ console.log(` Parsed ${parsedCount}/${absolutePaths.length}`);
81740
+ const urls = collectImageUrls(slideData);
81741
+ urls.forEach((url) => startImageFetch(url));
81742
+ const imagesReady = waitForSlideImages(slideData);
81743
+ parsedSlides.push({ index, slideData, imagesReady });
81744
+ queueGeneration();
81674
81745
  }
81746
+ await page.close();
81675
81747
  await context.close();
81676
81748
  await browser2.close();
81677
81749
  await generationChain;
81750
+ if (failedImages.size > 0) {
81751
+ console.error(`Warning: Failed to fetch ${failedImages.size} image(s)`);
81752
+ }
81678
81753
  const base64 = await pptx.write({ outputType: "base64" });
81679
81754
  const pptxBuffer = Buffer.from(base64, "base64");
81680
81755
  const firstBaseName = path5.basename(absolutePaths[0], ".html");
@@ -1 +1 @@
1
- {"version":3,"file":"export-slides.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6EH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwQhI"}
1
+ {"version":3,"file":"export-slides.d.ts","sourceRoot":"","sources":["../../../../packages/cli/commands/export-slides.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6EH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2QhI"}
@@ -101,13 +101,18 @@ export async function exportSlides(filePaths, outDir, outputName, pdf = false) {
101
101
  // Shared image cache - populated as images are fetched
102
102
  const imageCache = new Map();
103
103
  const imageFetchPromises = new Map();
104
+ // Track failed image fetches
105
+ const failedImages = new Set();
104
106
  // Start fetching an image if not already fetching
105
107
  function startImageFetch(url) {
106
108
  if (imageFetchPromises.has(url))
107
109
  return;
108
110
  const promise = fetchImageAsDataUrlNode(url)
109
111
  .then(dataUrl => { imageCache.set(url, dataUrl); })
110
- .catch(() => { });
112
+ .catch((err) => {
113
+ console.error(` Failed to fetch image: ${url} - ${err.message}`);
114
+ failedImages.add(url);
115
+ });
111
116
  imageFetchPromises.set(url, promise);
112
117
  }
113
118
  // Wait for all images needed by a slide
@@ -183,104 +188,102 @@ export async function exportSlides(filePaths, outDir, outputName, pdf = false) {
183
188
  }
184
189
  return route.continue();
185
190
  });
186
- // Parse slides in batches, but start processing immediately
187
- const MAX_CONCURRENT = 4;
188
- for (let batchStart = 0; batchStart < absolutePaths.length; batchStart += MAX_CONCURRENT) {
189
- const batchEnd = Math.min(batchStart + MAX_CONCURRENT, absolutePaths.length);
190
- const batchPaths = absolutePaths.slice(batchStart, batchEnd);
191
- const batchPromises = batchPaths.map(async (slidePath, batchIndex) => {
192
- const index = batchStart + batchIndex;
193
- const page = await context.newPage();
194
- page.setDefaultTimeout(60000);
195
- await page.goto(`file://${slidePath}`, { waitUntil: "domcontentloaded" });
196
- await page.addScriptTag({ content: bundleJs });
197
- await page.waitForFunction("typeof window.docgen !== 'undefined'");
198
- await page.evaluate(`(async function() {
199
- if (document.fonts && document.fonts.ready) {
200
- await Promise.race([
201
- document.fonts.ready,
202
- new Promise(r => setTimeout(r, 500))
203
- ]);
204
- }
205
- })()`);
206
- const slideDataJson = await page.evaluate(`(async function() {
207
- const docgen = window.docgen;
208
- const html = document.documentElement.outerHTML;
209
- const transformedHtml = docgen.transformHtmlForPptx(html);
191
+ // Use a single page and process slides sequentially
192
+ const page = await context.newPage();
193
+ page.setDefaultTimeout(60000);
194
+ for (let index = 0; index < absolutePaths.length; index++) {
195
+ const slidePath = absolutePaths[index];
196
+ await page.goto(`file://${slidePath}`, { waitUntil: "domcontentloaded" });
197
+ await page.addScriptTag({ content: bundleJs });
198
+ await page.waitForFunction("typeof window.docgen !== 'undefined'");
199
+ await page.evaluate(`(async function() {
200
+ if (document.fonts && document.fonts.ready) {
201
+ await Promise.race([
202
+ document.fonts.ready,
203
+ new Promise(r => setTimeout(r, 500))
204
+ ]);
205
+ }
206
+ })()`);
207
+ const slideDataJson = await page.evaluate(`(async function() {
208
+ const docgen = window.docgen;
209
+ const html = document.documentElement.outerHTML;
210
+ const transformedHtml = docgen.transformHtmlForPptx(html);
210
211
 
211
- const iframe = document.createElement('iframe');
212
- iframe.style.cssText = 'position:absolute;left:-9999px;width:960px;height:540px;border:none;';
212
+ const iframe = document.createElement('iframe');
213
+ iframe.style.cssText = 'position:absolute;left:-9999px;width:960px;height:540px;border:none;';
213
214
 
214
- const blob = new Blob([transformedHtml], { type: 'text/html' });
215
- const blobUrl = URL.createObjectURL(blob);
215
+ const blob = new Blob([transformedHtml], { type: 'text/html' });
216
+ const blobUrl = URL.createObjectURL(blob);
216
217
 
217
- return new Promise((resolve) => {
218
- iframe.onload = async () => {
219
- URL.revokeObjectURL(blobUrl);
218
+ return new Promise((resolve) => {
219
+ iframe.onload = async () => {
220
+ URL.revokeObjectURL(blobUrl);
220
221
 
221
- const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
222
- const win = iframe.contentWindow;
222
+ const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
223
+ const win = iframe.contentWindow;
223
224
 
224
- if (win.document.fonts && win.document.fonts.ready) {
225
- await Promise.race([
226
- win.document.fonts.ready,
227
- new Promise(r => setTimeout(r, 500))
228
- ]);
229
- }
225
+ if (win.document.fonts && win.document.fonts.ready) {
226
+ await Promise.race([
227
+ win.document.fonts.ready,
228
+ new Promise(r => setTimeout(r, 500))
229
+ ]);
230
+ }
230
231
 
231
- try {
232
- const slideData = docgen.parseSlideHtml(iframeDoc);
233
- iframe.parentNode.removeChild(iframe);
234
- resolve(JSON.stringify(slideData));
235
- } catch(e) {
236
- iframe.parentNode.removeChild(iframe);
237
- resolve(JSON.stringify({ error: e.message }));
238
- }
239
- };
232
+ try {
233
+ const slideData = docgen.parseSlideHtml(iframeDoc);
234
+ iframe.parentNode.removeChild(iframe);
235
+ resolve(JSON.stringify(slideData));
236
+ } catch(e) {
237
+ iframe.parentNode.removeChild(iframe);
238
+ resolve(JSON.stringify({ error: e.message }));
239
+ }
240
+ };
240
241
 
241
- iframe.onerror = () => {
242
- URL.revokeObjectURL(blobUrl);
243
- iframe.parentNode?.removeChild(iframe);
244
- resolve(JSON.stringify({ error: 'iframe load error' }));
245
- };
242
+ iframe.onerror = () => {
243
+ URL.revokeObjectURL(blobUrl);
244
+ iframe.parentNode?.removeChild(iframe);
245
+ resolve(JSON.stringify({ error: 'iframe load error' }));
246
+ };
246
247
 
247
- iframe.src = blobUrl;
248
- document.body.appendChild(iframe);
248
+ iframe.src = blobUrl;
249
+ document.body.appendChild(iframe);
249
250
 
250
- setTimeout(() => {
251
- if (iframe.parentNode) {
252
- iframe.parentNode.removeChild(iframe);
253
- resolve(JSON.stringify({ error: 'timeout' }));
254
- }
255
- }, 10000);
256
- });
257
- })()`);
258
- await page.close();
259
- if (!slideDataJson) {
260
- throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - null result`);
261
- }
262
- const parsed = JSON.parse(slideDataJson);
263
- if (typeof parsed === 'object' && 'error' in parsed) {
264
- throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - ${parsed.error}`);
265
- }
266
- const slideData = parsed;
267
- parsedCount++;
268
- console.log(` Parsed ${parsedCount}/${absolutePaths.length}`);
269
- // Start fetching images for this slide immediately
270
- const urls = collectImageUrls(slideData);
271
- urls.forEach(url => startImageFetch(url));
272
- // Create promise that resolves when all images for this slide are ready
273
- const imagesReady = waitForSlideImages(slideData);
274
- // Add to queue and trigger generation
275
- parsedSlides.push({ index, slideData, imagesReady });
276
- queueGeneration();
277
- });
278
- await Promise.all(batchPromises);
251
+ setTimeout(() => {
252
+ if (iframe.parentNode) {
253
+ iframe.parentNode.removeChild(iframe);
254
+ resolve(JSON.stringify({ error: 'timeout' }));
255
+ }
256
+ }, 10000);
257
+ });
258
+ })()`);
259
+ if (!slideDataJson) {
260
+ throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - null result`);
261
+ }
262
+ const parsed = JSON.parse(slideDataJson);
263
+ if (typeof parsed === 'object' && 'error' in parsed) {
264
+ throw new Error(`Failed to parse slide ${index + 1}: ${slidePath} - ${parsed.error}`);
265
+ }
266
+ const slideData = parsed;
267
+ parsedCount++;
268
+ console.log(` Parsed ${parsedCount}/${absolutePaths.length}`);
269
+ // Start fetching images for this slide immediately
270
+ const urls = collectImageUrls(slideData);
271
+ urls.forEach(url => startImageFetch(url));
272
+ // Create promise that resolves when all images for this slide are ready
273
+ const imagesReady = waitForSlideImages(slideData);
274
+ // Add to queue and trigger generation
275
+ parsedSlides.push({ index, slideData, imagesReady });
276
+ queueGeneration();
279
277
  }
278
+ await page.close();
280
279
  await context.close();
281
280
  await browser.close();
282
281
  // Wait for all slide generation to complete
283
282
  await generationChain;
283
+ // Report any images that failed to fetch
284
+ if (failedImages.size > 0) {
285
+ console.error(`Warning: Failed to fetch ${failedImages.size} image(s)`);
286
+ }
284
287
  // Write final PPTX
285
288
  const base64 = await pptx.write({ outputType: "base64" });
286
289
  const pptxBuffer = Buffer.from(base64, "base64");
@@ -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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"}
@@ -8,7 +8,12 @@ interface ProxyResponse {
8
8
  }
9
9
  /**
10
10
  * Fetch a URL with optional proxy support.
11
- * Uses only documented Node.js APIs: http.CONNECT, tls.connect(), raw HTTP write.
11
+ *
12
+ * Supports two proxy modes:
13
+ * 1. Forward proxy (default): Sends full URL to proxy, proxy handles TLS.
14
+ * Works with most proxies (Squid, corporate proxies, etc.)
15
+ * 2. CONNECT tunnel (fallback): Establishes tunnel, client handles TLS.
16
+ * Used when forward proxy fails or for CONNECT-only proxies.
12
17
  *
13
18
  * @param url - The URL to fetch
14
19
  * @returns A Promise resolving to a ProxyResponse or native Response
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-with-proxy.d.ts","sourceRoot":"","sources":["../../../packages/shared/fetch-with-proxy.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AA6MD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CAuCnC"}
1
+ {"version":3,"file":"fetch-with-proxy.d.ts","sourceRoot":"","sources":["../../../packages/shared/fetch-with-proxy.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAoTD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CA8BnC"}