@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.cjs CHANGED
@@ -8169,7 +8169,10 @@ var buildWatermarkifyRenderHtml = ({ imageSrc, overlaySvg, width, height, imageH
8169
8169
  </html>
8170
8170
  `;
8171
8171
  };
8172
- var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageInfo = {}) => {
8172
+ var normalizeWatermarkifyRenderMode = (value) => {
8173
+ return String(value || "default").trim().toLowerCase() === "cloakbrowser" ? "cloakbrowser" : "default";
8174
+ };
8175
+ var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageInfo = {}, options = {}) => {
8173
8176
  if (!page || typeof page.context !== "function") {
8174
8177
  logger14.warning("watermarkify \u6D4F\u89C8\u5668\u5408\u6210\u8DF3\u8FC7: \u7F3A\u5C11\u53EF\u7528 page");
8175
8178
  return buffer;
@@ -8193,15 +8196,35 @@ var composeScreenshotBufferWithBrowser = async (page, buffer, overlaySvg, imageI
8193
8196
  height: viewportHeight
8194
8197
  }).catch(() => {
8195
8198
  });
8196
- await renderPage.setContent(buildWatermarkifyRenderHtml({
8197
- imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8198
- overlaySvg,
8199
- width: safeWidth,
8200
- height: safeHeight,
8201
- imageHeight: safeImageHeight
8202
- }), {
8203
- waitUntil: "load"
8204
- });
8199
+ const renderMode = normalizeWatermarkifyRenderMode(options.mode);
8200
+ if (renderMode === "cloakbrowser") {
8201
+ const renderHtml = buildWatermarkifyRenderHtml({
8202
+ imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8203
+ overlaySvg,
8204
+ width: safeWidth,
8205
+ height: safeHeight,
8206
+ imageHeight: safeImageHeight
8207
+ });
8208
+ await renderPage.goto("about:blank", {
8209
+ waitUntil: "commit"
8210
+ }).catch(() => {
8211
+ });
8212
+ await renderPage.evaluate((html) => {
8213
+ document.open();
8214
+ document.write(html);
8215
+ document.close();
8216
+ }, renderHtml);
8217
+ } else {
8218
+ await renderPage.setContent(buildWatermarkifyRenderHtml({
8219
+ imageSrc: `data:${imageInfo.mimeType || "image/png"};base64,${buffer.toString("base64")}`,
8220
+ overlaySvg,
8221
+ width: safeWidth,
8222
+ height: safeHeight,
8223
+ imageHeight: safeImageHeight
8224
+ }), {
8225
+ waitUntil: "load"
8226
+ });
8227
+ }
8205
8228
  await renderPage.waitForFunction(() => {
8206
8229
  const image = document.getElementById("pk-base-image");
8207
8230
  return image instanceof HTMLImageElement && image.complete && image.naturalWidth > 0 && image.naturalHeight > 0;
@@ -9136,7 +9159,7 @@ var buildWatermarkifySvg = (meta, imageWidth, imageHeight) => {
9136
9159
  </svg>
9137
9160
  `;
9138
9161
  };
9139
- var watermarkifyScreenshotBuffer = async (buffer, meta, page = null) => {
9162
+ var watermarkifyScreenshotBuffer = async (buffer, meta, page = null, options = {}) => {
9140
9163
  const hasWatermark = meta?.watermark?.enabled !== false && normalizeText(meta?.watermarkText);
9141
9164
  const hasStrip = meta?.strip?.enabled !== false && Array.isArray(meta?.stripSegments) && meta.stripSegments.length > 0;
9142
9165
  if (!Buffer.isBuffer(buffer) || !meta || !hasWatermark && !hasStrip) {
@@ -9157,7 +9180,7 @@ var watermarkifyScreenshotBuffer = async (buffer, meta, page = null) => {
9157
9180
  if (!overlaySvg) {
9158
9181
  return buffer;
9159
9182
  }
9160
- return await composeScreenshotBufferWithBrowser(page, buffer, overlaySvg, outputImageInfo);
9183
+ return await composeScreenshotBufferWithBrowser(page, buffer, overlaySvg, outputImageInfo, options);
9161
9184
  };
9162
9185
 
9163
9186
  // src/internals/compression.js
@@ -9755,6 +9778,7 @@ var Share = {
9755
9778
  * @param {number} [options.maxBytes] 默认 5MiB,返回 base64 超过后会压缩
9756
9779
  * @param {'jpeg'|'jpg'} [options.type] 压缩输出格式,默认 jpeg
9757
9780
  * @param {boolean|Object} [options.compression] 传 false 可关闭压缩
9781
+ * @param {'default'|'cloakbrowser'} [options.mode] 截图水印合成模式,默认 default
9758
9782
  * @returns {Promise<string>} base64 image
9759
9783
  */
9760
9784
  async captureScreen(page, options = {}) {
@@ -9775,7 +9799,9 @@ var Share = {
9775
9799
  ...screenshotWatermarkify,
9776
9800
  capturedAt
9777
9801
  });
9778
- outputBuffer = await watermarkifyScreenshotBuffer(rawBuffer, watermarkifyMeta, page);
9802
+ outputBuffer = await watermarkifyScreenshotBuffer(rawBuffer, watermarkifyMeta, page, {
9803
+ mode: options.mode === "cloakbrowser" ? "cloakbrowser" : "default"
9804
+ });
9779
9805
  }
9780
9806
  return await compressImageBufferToBase64(outputBuffer, compression);
9781
9807
  }