@skrillex1224/playwright-toolkit 2.1.275 → 2.1.276

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/index.js CHANGED
@@ -8141,7 +8141,10 @@ var buildWatermarkifyRenderHtml = ({ imageSrc, overlaySvg, width, height, imageH
8141
8141
  </html>
8142
8142
  `;
8143
8143
  };
8144
- var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageInfo = {}) => {
8144
+ var normalizeWatermarkifyRenderMode = (value) => {
8145
+ return String(value || "default").trim().toLowerCase() === "cloakbrowser" ? "cloakbrowser" : "default";
8146
+ };
8147
+ var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageInfo = {}, options = {}) => {
8145
8148
  if (!page || typeof page.context !== "function") {
8146
8149
  logger14.warning("watermarkify \u6D4F\u89C8\u5668\u5408\u6210\u8DF3\u8FC7: \u7F3A\u5C11\u53EF\u7528 page");
8147
8150
  return buffer;
@@ -8165,15 +8168,35 @@ var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageI
8165
8168
  height: viewportHeight
8166
8169
  }).catch(() => {
8167
8170
  });
8168
- await renderPage.setContent(buildWatermarkifyRenderHtml({
8169
- imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8170
- overlaySvg,
8171
- width: safeWidth,
8172
- height: safeHeight,
8173
- imageHeight: safeImageHeight
8174
- }), {
8175
- waitUntil: "load"
8176
- });
8171
+ const renderMode = normalizeWatermarkifyRenderMode(options.mode);
8172
+ if (renderMode === "cloakbrowser") {
8173
+ const renderHtml = buildWatermarkifyRenderHtml({
8174
+ imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8175
+ overlaySvg,
8176
+ width: safeWidth,
8177
+ height: safeHeight,
8178
+ imageHeight: safeImageHeight
8179
+ });
8180
+ await renderPage.goto("about:blank", {
8181
+ waitUntil: "commit"
8182
+ }).catch(() => {
8183
+ });
8184
+ await renderPage.evaluate((html) => {
8185
+ document.open();
8186
+ document.write(html);
8187
+ document.close();
8188
+ }, renderHtml);
8189
+ } else {
8190
+ await renderPage.setContent(buildWatermarkifyRenderHtml({
8191
+ imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8192
+ overlaySvg,
8193
+ width: safeWidth,
8194
+ height: safeHeight,
8195
+ imageHeight: safeImageHeight
8196
+ }), {
8197
+ waitUntil: "load"
8198
+ });
8199
+ }
8177
8200
  await renderPage.waitForFunction(() => {
8178
8201
  const image = document.getElementById("pk-base-image");
8179
8202
  return image instanceof HTMLImageElement && image.complete && image.naturalWidth > 0 && image.naturalHeight > 0;
@@ -9108,7 +9131,7 @@ var buildWatermarkifySvg = (meta, imageWidth, imageHeight) => {
9108
9131
  </svg>
9109
9132
  `;
9110
9133
  };
9111
- var watermarkifyScreenshotBuffer = async (buffer, meta, page = null) => {
9134
+ var watermarkifyScreenshotBuffer = async (buffer, meta, page = null, options = {}) => {
9112
9135
  const hasWatermark = meta?.watermark?.enabled !== false && normalizeText(meta?.watermarkText);
9113
9136
  const hasStrip = meta?.strip?.enabled !== false && Array.isArray(meta?.stripSegments) && meta.stripSegments.length > 0;
9114
9137
  if (!Buffer.isBuffer(buffer) || !meta || !hasWatermark && !hasStrip) {
@@ -9129,7 +9152,7 @@ var watermarkifyScreenshotBuffer = async (buffer, meta, page = null) => {
9129
9152
  if (!overlaySvg) {
9130
9153
  return buffer;
9131
9154
  }
9132
- return await composeScreenshotBufferWithBrowser(page, buffer, overlaySvg, outputImageInfo);
9155
+ return await composeScreenshotBufferWithBrowser(page, buffer, overlaySvg, outputImageInfo, options);
9133
9156
  };
9134
9157
 
9135
9158
  // src/internals/compression.js
@@ -9727,6 +9750,7 @@ var Share = {
9727
9750
  * @param {number} [options.maxBytes] 默认 5MiB,返回 base64 超过后会压缩
9728
9751
  * @param {'jpeg'|'jpg'} [options.type] 压缩输出格式,默认 jpeg
9729
9752
  * @param {boolean|Object} [options.compression] 传 false 可关闭压缩
9753
+ * @param {'default'|'cloakbrowser'} [options.mode] 截图水印合成模式,默认 default
9730
9754
  * @returns {Promise<string>} base64 image
9731
9755
  */
9732
9756
  async captureScreen(page, options = {}) {
@@ -9747,7 +9771,9 @@ var Share = {
9747
9771
  ...screenshotWatermarkify,
9748
9772
  capturedAt
9749
9773
  });
9750
- outputBuffer = await watermarkifyScreenshotBuffer(rawBuffer, watermarkifyMeta, page);
9774
+ outputBuffer = await watermarkifyScreenshotBuffer(rawBuffer, watermarkifyMeta, page, {
9775
+ mode: options.mode === "cloakbrowser" ? "cloakbrowser" : "default"
9776
+ });
9751
9777
  }
9752
9778
  return await compressImageBufferToBase64(outputBuffer, compression);
9753
9779
  }