customer-chat-sdk 1.0.71 → 1.0.72

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
@@ -15638,7 +15638,10 @@ class ScreenshotManager {
15638
15638
  // 对于 body 元素,已经使用了 window.innerWidth/innerHeight,所以直接使用压缩尺寸即可
15639
15639
  const finalWidth = width;
15640
15640
  const finalHeight = height;
15641
- // 处理跨域图片的函数
15641
+ // 判断是否使用代理
15642
+ const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
15643
+ // 处理跨域图片的函数(仅在配置了代理时使用)
15644
+ // 注意:这个函数只在 shouldUseProxy 为 true 时才会被传递给 modern-screenshot
15642
15645
  const handleCrossOriginImage = async (url) => {
15643
15646
  // 如果是 data URL 或 blob URL,直接返回
15644
15647
  if (url.startsWith('data:') || url.startsWith('blob:')) {
@@ -15654,76 +15657,68 @@ class ScreenshotManager {
15654
15657
  catch (e) {
15655
15658
  // URL 解析失败,继续处理
15656
15659
  }
15657
- // 如果配置了代理服务器,使用代理处理跨域图片
15658
- // 只有当 useProxy 为 true 且 proxyUrl 存在时才使用代理
15659
- const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
15660
- if (shouldUseProxy) {
15661
- // 检查内存缓存(优先使用缓存,带过期时间检查)
15662
- const cachedDataUrl = this.getCachedImage(url);
15663
- if (cachedDataUrl) {
15664
- if (!this.options.silentMode) {
15665
- console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
15666
- }
15667
- return cachedDataUrl;
15660
+ // 使用代理处理跨域图片
15661
+ // 检查内存缓存(优先使用缓存,带过期时间检查)
15662
+ const cachedDataUrl = this.getCachedImage(url);
15663
+ if (cachedDataUrl) {
15664
+ if (!this.options.silentMode) {
15665
+ console.log(`📸 使用内存缓存图片: ${url.substring(0, 50)}...`);
15668
15666
  }
15667
+ return cachedDataUrl;
15668
+ }
15669
+ try {
15670
+ // 构建代理请求参数
15671
+ const params = new URLSearchParams({
15672
+ url: url,
15673
+ maxWidth: String(this.options.maxWidth || 1600),
15674
+ maxHeight: String(this.options.maxHeight || 900),
15675
+ quality: String(Math.round((this.options.quality || 0.4) * 100)),
15676
+ format: this.options.outputFormat || 'webp'
15677
+ });
15678
+ let baseUrl = this.options.proxyUrl;
15679
+ baseUrl = baseUrl.replace(/[?&]$/, '');
15680
+ const proxyUrl = `${baseUrl}?${params.toString()}`;
15681
+ // 请求代理服务器(优化:添加超时控制和优先级)
15682
+ const controller = new AbortController();
15683
+ const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
15669
15684
  try {
15670
- // 构建代理请求参数
15671
- const params = new URLSearchParams({
15672
- url: url,
15673
- maxWidth: String(this.options.maxWidth || 1600),
15674
- maxHeight: String(this.options.maxHeight || 900),
15675
- quality: String(Math.round((this.options.quality || 0.4) * 100)),
15676
- format: this.options.outputFormat || 'webp'
15677
- });
15678
- let baseUrl = this.options.proxyUrl;
15679
- baseUrl = baseUrl.replace(/[?&]$/, '');
15680
- const proxyUrl = `${baseUrl}?${params.toString()}`;
15681
- // 请求代理服务器(优化:添加超时控制和优先级)
15682
- const controller = new AbortController();
15683
- const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
15684
- try {
15685
- const fetchOptions = {
15686
- method: 'GET',
15687
- mode: 'cors',
15688
- credentials: 'omit',
15689
- headers: {
15690
- 'Accept': 'image/*'
15691
- },
15692
- cache: 'no-cache',
15693
- signal: controller.signal
15694
- };
15695
- // 添加 fetch priority(如果支持)
15696
- if ('priority' in fetchOptions) {
15697
- fetchOptions.priority = this.options.fetchPriority;
15698
- }
15699
- const response = await fetch(proxyUrl, fetchOptions);
15700
- clearTimeout(timeoutId);
15701
- if (!response.ok) {
15702
- throw new Error(`代理请求失败: ${response.status}`);
15703
- }
15704
- const blob = await response.blob();
15705
- const dataUrl = await this.blobToDataUrl(blob);
15706
- // 缓存结果(带时间戳,10分钟有效)
15707
- this.setCachedImage(url, dataUrl);
15708
- return dataUrl;
15685
+ const fetchOptions = {
15686
+ method: 'GET',
15687
+ mode: 'cors',
15688
+ credentials: 'omit',
15689
+ headers: {
15690
+ 'Accept': 'image/*'
15691
+ },
15692
+ cache: 'no-cache',
15693
+ signal: controller.signal
15694
+ };
15695
+ // 添加 fetch priority(如果支持)
15696
+ if ('priority' in fetchOptions) {
15697
+ fetchOptions.priority = this.options.fetchPriority;
15709
15698
  }
15710
- catch (fetchError) {
15711
- clearTimeout(timeoutId);
15712
- throw fetchError;
15699
+ const response = await fetch(proxyUrl, fetchOptions);
15700
+ clearTimeout(timeoutId);
15701
+ if (!response.ok) {
15702
+ throw new Error(`代理请求失败: ${response.status}`);
15713
15703
  }
15704
+ const blob = await response.blob();
15705
+ const dataUrl = await this.blobToDataUrl(blob);
15706
+ // 缓存结果(带时间戳,10分钟有效)
15707
+ this.setCachedImage(url, dataUrl);
15708
+ return dataUrl;
15714
15709
  }
15715
- catch (error) {
15716
- if (!this.options.silentMode) {
15717
- console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
15718
- }
15719
- // 失败时返回原 URL
15720
- return url;
15710
+ catch (fetchError) {
15711
+ clearTimeout(timeoutId);
15712
+ throw fetchError;
15713
+ }
15714
+ }
15715
+ catch (error) {
15716
+ if (!this.options.silentMode) {
15717
+ console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
15721
15718
  }
15719
+ // 失败时返回原 URL,让 modern-screenshot 自己处理
15720
+ return url;
15722
15721
  }
15723
- // 如果没有配置代理,直接返回原 URL,让 modern-screenshot 自己处理
15724
- // 不再主动下载图片,避免阻塞和耗时过长
15725
- // 如果 modern-screenshot 无法处理跨域图片,建议配置代理服务器
15726
- return url;
15727
15722
  };
15728
15723
  // 检查元素是否可见且有尺寸
15729
15724
  const rect = element.getBoundingClientRect();
@@ -15767,13 +15762,16 @@ class ScreenshotManager {
15767
15762
  const contextOptions = {
15768
15763
  workerNumber, // Worker 数量,> 0 启用 Worker 模式
15769
15764
  quality: finalQuality, // 图片质量(0-1),已优化为更低的值以减少 base64 大小
15770
- fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
15771
- fetch: {
15772
- requestInit: {
15773
- cache: 'no-cache',
15765
+ // 只有在配置了代理时才传递 fetchFn,否则让 modern-screenshot 自己处理(性能更好)
15766
+ ...(shouldUseProxy ? {
15767
+ fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
15768
+ fetch: {
15769
+ requestInit: {
15770
+ cache: 'no-cache',
15771
+ },
15772
+ bypassingCache: true,
15774
15773
  },
15775
- bypassingCache: true,
15776
- },
15774
+ } : {}),
15777
15775
  // 设置最大 canvas 尺寸,防止生成过大的 canvas(避免内存问题)
15778
15776
  // 参考: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size
15779
15777
  // 大多数浏览器限制为 16,777,216 像素(4096x4096),这里设置为更保守的值
@@ -15634,7 +15634,10 @@ class ScreenshotManager {
15634
15634
  // 对于 body 元素,已经使用了 window.innerWidth/innerHeight,所以直接使用压缩尺寸即可
15635
15635
  const finalWidth = width;
15636
15636
  const finalHeight = height;
15637
- // 处理跨域图片的函数
15637
+ // 判断是否使用代理
15638
+ const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
15639
+ // 处理跨域图片的函数(仅在配置了代理时使用)
15640
+ // 注意:这个函数只在 shouldUseProxy 为 true 时才会被传递给 modern-screenshot
15638
15641
  const handleCrossOriginImage = async (url) => {
15639
15642
  // 如果是 data URL 或 blob URL,直接返回
15640
15643
  if (url.startsWith('data:') || url.startsWith('blob:')) {
@@ -15650,76 +15653,68 @@ class ScreenshotManager {
15650
15653
  catch (e) {
15651
15654
  // URL 解析失败,继续处理
15652
15655
  }
15653
- // 如果配置了代理服务器,使用代理处理跨域图片
15654
- // 只有当 useProxy 为 true 且 proxyUrl 存在时才使用代理
15655
- const shouldUseProxy = this.options.useProxy && this.options.proxyUrl && this.options.proxyUrl.trim() !== '';
15656
- if (shouldUseProxy) {
15657
- // 检查内存缓存(优先使用缓存,带过期时间检查)
15658
- const cachedDataUrl = this.getCachedImage(url);
15659
- if (cachedDataUrl) {
15660
- if (!this.options.silentMode) {
15661
- console.log(`📸 ✅ 使用内存缓存图片: ${url.substring(0, 50)}...`);
15662
- }
15663
- return cachedDataUrl;
15656
+ // 使用代理处理跨域图片
15657
+ // 检查内存缓存(优先使用缓存,带过期时间检查)
15658
+ const cachedDataUrl = this.getCachedImage(url);
15659
+ if (cachedDataUrl) {
15660
+ if (!this.options.silentMode) {
15661
+ console.log(`📸 使用内存缓存图片: ${url.substring(0, 50)}...`);
15664
15662
  }
15663
+ return cachedDataUrl;
15664
+ }
15665
+ try {
15666
+ // 构建代理请求参数
15667
+ const params = new URLSearchParams({
15668
+ url: url,
15669
+ maxWidth: String(this.options.maxWidth || 1600),
15670
+ maxHeight: String(this.options.maxHeight || 900),
15671
+ quality: String(Math.round((this.options.quality || 0.4) * 100)),
15672
+ format: this.options.outputFormat || 'webp'
15673
+ });
15674
+ let baseUrl = this.options.proxyUrl;
15675
+ baseUrl = baseUrl.replace(/[?&]$/, '');
15676
+ const proxyUrl = `${baseUrl}?${params.toString()}`;
15677
+ // 请求代理服务器(优化:添加超时控制和优先级)
15678
+ const controller = new AbortController();
15679
+ const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
15665
15680
  try {
15666
- // 构建代理请求参数
15667
- const params = new URLSearchParams({
15668
- url: url,
15669
- maxWidth: String(this.options.maxWidth || 1600),
15670
- maxHeight: String(this.options.maxHeight || 900),
15671
- quality: String(Math.round((this.options.quality || 0.4) * 100)),
15672
- format: this.options.outputFormat || 'webp'
15673
- });
15674
- let baseUrl = this.options.proxyUrl;
15675
- baseUrl = baseUrl.replace(/[?&]$/, '');
15676
- const proxyUrl = `${baseUrl}?${params.toString()}`;
15677
- // 请求代理服务器(优化:添加超时控制和优先级)
15678
- const controller = new AbortController();
15679
- const timeoutId = setTimeout(() => controller.abort(), this.options.imageLoadTimeout);
15680
- try {
15681
- const fetchOptions = {
15682
- method: 'GET',
15683
- mode: 'cors',
15684
- credentials: 'omit',
15685
- headers: {
15686
- 'Accept': 'image/*'
15687
- },
15688
- cache: 'no-cache',
15689
- signal: controller.signal
15690
- };
15691
- // 添加 fetch priority(如果支持)
15692
- if ('priority' in fetchOptions) {
15693
- fetchOptions.priority = this.options.fetchPriority;
15694
- }
15695
- const response = await fetch(proxyUrl, fetchOptions);
15696
- clearTimeout(timeoutId);
15697
- if (!response.ok) {
15698
- throw new Error(`代理请求失败: ${response.status}`);
15699
- }
15700
- const blob = await response.blob();
15701
- const dataUrl = await this.blobToDataUrl(blob);
15702
- // 缓存结果(带时间戳,10分钟有效)
15703
- this.setCachedImage(url, dataUrl);
15704
- return dataUrl;
15681
+ const fetchOptions = {
15682
+ method: 'GET',
15683
+ mode: 'cors',
15684
+ credentials: 'omit',
15685
+ headers: {
15686
+ 'Accept': 'image/*'
15687
+ },
15688
+ cache: 'no-cache',
15689
+ signal: controller.signal
15690
+ };
15691
+ // 添加 fetch priority(如果支持)
15692
+ if ('priority' in fetchOptions) {
15693
+ fetchOptions.priority = this.options.fetchPriority;
15705
15694
  }
15706
- catch (fetchError) {
15707
- clearTimeout(timeoutId);
15708
- throw fetchError;
15695
+ const response = await fetch(proxyUrl, fetchOptions);
15696
+ clearTimeout(timeoutId);
15697
+ if (!response.ok) {
15698
+ throw new Error(`代理请求失败: ${response.status}`);
15709
15699
  }
15700
+ const blob = await response.blob();
15701
+ const dataUrl = await this.blobToDataUrl(blob);
15702
+ // 缓存结果(带时间戳,10分钟有效)
15703
+ this.setCachedImage(url, dataUrl);
15704
+ return dataUrl;
15710
15705
  }
15711
- catch (error) {
15712
- if (!this.options.silentMode) {
15713
- console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
15714
- }
15715
- // 失败时返回原 URL
15716
- return url;
15706
+ catch (fetchError) {
15707
+ clearTimeout(timeoutId);
15708
+ throw fetchError;
15709
+ }
15710
+ }
15711
+ catch (error) {
15712
+ if (!this.options.silentMode) {
15713
+ console.warn(`📸 代理处理图片失败: ${url.substring(0, 100)}...`, error);
15717
15714
  }
15715
+ // 失败时返回原 URL,让 modern-screenshot 自己处理
15716
+ return url;
15718
15717
  }
15719
- // 如果没有配置代理,直接返回原 URL,让 modern-screenshot 自己处理
15720
- // 不再主动下载图片,避免阻塞和耗时过长
15721
- // 如果 modern-screenshot 无法处理跨域图片,建议配置代理服务器
15722
- return url;
15723
15718
  };
15724
15719
  // 检查元素是否可见且有尺寸
15725
15720
  const rect = element.getBoundingClientRect();
@@ -15763,13 +15758,16 @@ class ScreenshotManager {
15763
15758
  const contextOptions = {
15764
15759
  workerNumber, // Worker 数量,> 0 启用 Worker 模式
15765
15760
  quality: finalQuality, // 图片质量(0-1),已优化为更低的值以减少 base64 大小
15766
- fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
15767
- fetch: {
15768
- requestInit: {
15769
- cache: 'no-cache',
15761
+ // 只有在配置了代理时才传递 fetchFn,否则让 modern-screenshot 自己处理(性能更好)
15762
+ ...(shouldUseProxy ? {
15763
+ fetchFn: handleCrossOriginImage, // 使用代理服务器处理跨域图片
15764
+ fetch: {
15765
+ requestInit: {
15766
+ cache: 'no-cache',
15767
+ },
15768
+ bypassingCache: true,
15770
15769
  },
15771
- bypassingCache: true,
15772
- },
15770
+ } : {}),
15773
15771
  // 设置最大 canvas 尺寸,防止生成过大的 canvas(避免内存问题)
15774
15772
  // 参考: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size
15775
15773
  // 大多数浏览器限制为 16,777,216 像素(4096x4096),这里设置为更保守的值