@skrillex1224/playwright-toolkit 2.1.139 → 2.1.140

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
@@ -296,18 +296,18 @@ var fallbackLog = {
296
296
  error: (...args) => console.error(...args),
297
297
  debug: (...args) => console.debug ? console.debug(...args) : console.log(...args)
298
298
  };
299
- var resolveLogMethod = (logger12, name) => {
300
- if (logger12 && typeof logger12[name] === "function") {
301
- return logger12[name].bind(logger12);
299
+ var resolveLogMethod = (logger13, name) => {
300
+ if (logger13 && typeof logger13[name] === "function") {
301
+ return logger13[name].bind(logger13);
302
302
  }
303
- if (name === "warning" && logger12 && typeof logger12.warn === "function") {
304
- return logger12.warn.bind(logger12);
303
+ if (name === "warning" && logger13 && typeof logger13.warn === "function") {
304
+ return logger13.warn.bind(logger13);
305
305
  }
306
306
  return fallbackLog[name];
307
307
  };
308
308
  var defaultLogger = null;
309
- var setDefaultLogger = (logger12) => {
310
- defaultLogger = logger12;
309
+ var setDefaultLogger = (logger13) => {
310
+ defaultLogger = logger13;
311
311
  };
312
312
  var resolveLogger = (explicitLogger) => {
313
313
  if (explicitLogger && typeof explicitLogger.info === "function") {
@@ -334,8 +334,8 @@ var colorize = (text, color) => {
334
334
  var createBaseLogger = (prefix = "", explicitLogger) => {
335
335
  const name = prefix ? String(prefix) : "";
336
336
  const dispatch = (methodName, icon, message, color) => {
337
- const logger12 = resolveLogger(explicitLogger);
338
- const logFn = resolveLogMethod(logger12, methodName);
337
+ const logger13 = resolveLogger(explicitLogger);
338
+ const logFn = resolveLogMethod(logger13, methodName);
339
339
  const timestamp = colorize(`[${formatTimestamp()}]`, ANSI.gray);
340
340
  const line = formatLine(name, icon, message);
341
341
  const coloredLine = colorize(line, color);
@@ -1260,6 +1260,7 @@ var Humanize = {
1260
1260
  };
1261
1261
 
1262
1262
  // src/launch.js
1263
+ var logger6 = createInternalLogger("Launch");
1263
1264
  var normalizeByPassDomains = (domains) => {
1264
1265
  if (!Array.isArray(domains)) return [];
1265
1266
  return domains.map((item) => String(item || "").trim()).filter(Boolean);
@@ -1308,17 +1309,16 @@ var Launch = {
1308
1309
  launchOptions.proxy = launchProxy;
1309
1310
  }
1310
1311
  const enableByPassLogger = Boolean(logOptions && logOptions.enable);
1311
- const customLogger = logOptions && typeof logOptions.customLogger === "function" ? logOptions.customLogger : console.log;
1312
1312
  if (enableByPassLogger && launchProxy) {
1313
- customLogger(
1313
+ logger6.info(
1314
1314
  `[\u4EE3\u7406\u5DF2\u542F\u7528] \u4EE3\u7406\u670D\u52A1=${launchProxy.server} \u76F4\u8FDE\u57DF\u540D=${(byPassDomains || []).join(",")}`
1315
1315
  );
1316
1316
  } else if (enableByPassLogger && enableProxy && !launchProxy) {
1317
- customLogger(
1317
+ logger6.info(
1318
1318
  `[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=true \u4F46 proxy_url \u4E3A\u7A7A`
1319
1319
  );
1320
1320
  } else if (enableByPassLogger && !enableProxy && proxyUrl) {
1321
- customLogger(
1321
+ logger6.info(
1322
1322
  `[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=false \u4E14 proxy_url \u5DF2\u914D\u7F6E`
1323
1323
  );
1324
1324
  }
@@ -1337,7 +1337,7 @@ var Launch = {
1337
1337
  return;
1338
1338
  }
1339
1339
  if (!domainSet.has(hostname)) return;
1340
- customLogger(`[\u76F4\u8FDE\u547D\u4E2D] \u57DF\u540D=${hostname} \u8D44\u6E90\u7C7B\u578B=${req.resourceType()} \u65B9\u6CD5=${req.method()} \u5730\u5740=${requestUrl}`);
1340
+ logger6.info(`[\u76F4\u8FDE\u547D\u4E2D] \u57DF\u540D=${hostname} \u8D44\u6E90\u7C7B\u578B=${req.resourceType()} \u65B9\u6CD5=${req.method()} \u5730\u5740=${requestUrl}`);
1341
1341
  };
1342
1342
  page.on("request", requestHandler);
1343
1343
  return () => page.off("request", requestHandler);
@@ -1356,7 +1356,7 @@ var Launch = {
1356
1356
  // src/live-view.js
1357
1357
  var import_express = __toESM(require("express"), 1);
1358
1358
  var import_apify = require("apify");
1359
- var logger6 = createInternalLogger("LiveView");
1359
+ var logger7 = createInternalLogger("LiveView");
1360
1360
  async function startLiveViewServer(liveViewKey) {
1361
1361
  const app = (0, import_express.default)();
1362
1362
  app.get("/", async (req, res) => {
@@ -1381,13 +1381,13 @@ async function startLiveViewServer(liveViewKey) {
1381
1381
  </html>
1382
1382
  `);
1383
1383
  } catch (error) {
1384
- logger6.fail("Live View Server", error);
1384
+ logger7.fail("Live View Server", error);
1385
1385
  res.status(500).send(`\u65E0\u6CD5\u52A0\u8F7D\u5C4F\u5E55\u622A\u56FE: ${error.message}`);
1386
1386
  }
1387
1387
  });
1388
1388
  const port = process.env.APIFY_CONTAINER_PORT || 4321;
1389
1389
  app.listen(port, () => {
1390
- logger6.success("startLiveViewServer", `\u76D1\u542C\u7AEF\u53E3 ${port}`);
1390
+ logger7.success("startLiveViewServer", `\u76D1\u542C\u7AEF\u53E3 ${port}`);
1391
1391
  });
1392
1392
  }
1393
1393
  async function takeLiveScreenshot(liveViewKey, page, logMessage) {
@@ -1395,10 +1395,10 @@ async function takeLiveScreenshot(liveViewKey, page, logMessage) {
1395
1395
  const buffer = await page.screenshot({ type: "png" });
1396
1396
  await import_apify.Actor.setValue(liveViewKey, buffer, { contentType: "image/png" });
1397
1397
  if (logMessage) {
1398
- logger6.info(`(\u622A\u56FE): ${logMessage}`);
1398
+ logger7.info(`(\u622A\u56FE): ${logMessage}`);
1399
1399
  }
1400
1400
  } catch (e) {
1401
- logger6.warn(`\u65E0\u6CD5\u6355\u83B7 Live View \u5C4F\u5E55\u622A\u56FE: ${e.message}`);
1401
+ logger7.warn(`\u65E0\u6CD5\u6355\u83B7 Live View \u5C4F\u5E55\u622A\u56FE: ${e.message}`);
1402
1402
  }
1403
1403
  }
1404
1404
  var useLiveView = (liveViewKey = PresetOfLiveViewKey) => {
@@ -1417,7 +1417,7 @@ var LiveView = {
1417
1417
 
1418
1418
  // src/captcha-monitor.js
1419
1419
  var import_uuid = require("uuid");
1420
- var logger7 = createInternalLogger("Captcha");
1420
+ var logger8 = createInternalLogger("Captcha");
1421
1421
  function useCaptchaMonitor(page, options) {
1422
1422
  const { domSelector, urlPattern, onDetected } = options;
1423
1423
  if (!domSelector && !urlPattern) {
@@ -1489,7 +1489,7 @@ function useCaptchaMonitor(page, options) {
1489
1489
  };
1490
1490
  })();
1491
1491
  }, { selector: domSelector, callbackName: exposedFunctionName, cleanerName });
1492
- logger7.success("useCaptchaMonitor", `DOM \u76D1\u63A7\u5DF2\u542F\u7528: ${domSelector}`);
1492
+ logger8.success("useCaptchaMonitor", `DOM \u76D1\u63A7\u5DF2\u542F\u7528: ${domSelector}`);
1493
1493
  cleanupFns.push(async () => {
1494
1494
  try {
1495
1495
  await page.evaluate((name) => {
@@ -1512,14 +1512,14 @@ function useCaptchaMonitor(page, options) {
1512
1512
  }
1513
1513
  };
1514
1514
  page.on("framenavigated", frameHandler);
1515
- logger7.success("useCaptchaMonitor", `URL \u76D1\u63A7\u5DF2\u542F\u7528: ${urlPattern}`);
1515
+ logger8.success("useCaptchaMonitor", `URL \u76D1\u63A7\u5DF2\u542F\u7528: ${urlPattern}`);
1516
1516
  cleanupFns.push(async () => {
1517
1517
  page.off("framenavigated", frameHandler);
1518
1518
  });
1519
1519
  }
1520
1520
  return {
1521
1521
  stop: async () => {
1522
- logger7.info("useCaptchaMonitor", "\u6B63\u5728\u505C\u6B62\u76D1\u63A7...");
1522
+ logger8.info("useCaptchaMonitor", "\u6B63\u5728\u505C\u6B62\u76D1\u63A7...");
1523
1523
  for (const fn of cleanupFns) {
1524
1524
  await fn();
1525
1525
  }
@@ -1534,7 +1534,7 @@ var Captcha = {
1534
1534
  // src/sse.js
1535
1535
  var import_https = __toESM(require("https"), 1);
1536
1536
  var import_url = require("url");
1537
- var logger8 = createInternalLogger("Sse");
1537
+ var logger9 = createInternalLogger("Sse");
1538
1538
  var Sse = {
1539
1539
  /**
1540
1540
  * 解析 SSE 流文本
@@ -1553,11 +1553,11 @@ var Sse = {
1553
1553
  events.push(JSON.parse(jsonContent));
1554
1554
  }
1555
1555
  } catch (e) {
1556
- logger8.debug("parseSseStream", `JSON \u89E3\u6790\u5931\u8D25: ${e.message}, line: ${line.substring(0, 100)}...`);
1556
+ logger9.debug("parseSseStream", `JSON \u89E3\u6790\u5931\u8D25: ${e.message}, line: ${line.substring(0, 100)}...`);
1557
1557
  }
1558
1558
  }
1559
1559
  }
1560
- logger8.success("parseSseStream", `\u89E3\u6790\u5B8C\u6210, events \u6570\u91CF: ${events.length}`);
1560
+ logger9.success("parseSseStream", `\u89E3\u6790\u5B8C\u6210, events \u6570\u91CF: ${events.length}`);
1561
1561
  return events;
1562
1562
  },
1563
1563
  /**
@@ -1607,7 +1607,7 @@ var Sse = {
1607
1607
  if (!autoUnroute) return;
1608
1608
  if (unrouteRequested) return;
1609
1609
  unrouteRequested = true;
1610
- logger8.info("[MITM] autoUnroute: \u53D6\u6D88\u540E\u7EED\u62E6\u622A");
1610
+ logger9.info("[MITM] autoUnroute: \u53D6\u6D88\u540E\u7EED\u62E6\u622A");
1611
1611
  page.unroute(urlPattern, routeHandler).catch(() => {
1612
1612
  });
1613
1613
  };
@@ -1627,19 +1627,19 @@ var Sse = {
1627
1627
  };
1628
1628
  const routeHandler = async (route) => {
1629
1629
  if (firstMatchOnly && hasMatchedOnce) {
1630
- logger8.info(`[MITM] firstMatchOnly: \u653E\u884C\u540E\u7EED\u8BF7\u6C42: ${route.request().url()}`);
1630
+ logger9.info(`[MITM] firstMatchOnly: \u653E\u884C\u540E\u7EED\u8BF7\u6C42: ${route.request().url()}`);
1631
1631
  route.continue().catch(() => {
1632
1632
  });
1633
1633
  return;
1634
1634
  }
1635
1635
  if (firstMatchOnly && !hasMatchedOnce) {
1636
1636
  hasMatchedOnce = true;
1637
- logger8.info("[MITM] firstMatchOnly: \u547D\u4E2D\u9996\u4E2A\u8BF7\u6C42\uFF0C\u53D6\u6D88\u540E\u7EED\u62E6\u622A");
1637
+ logger9.info("[MITM] firstMatchOnly: \u547D\u4E2D\u9996\u4E2A\u8BF7\u6C42\uFF0C\u53D6\u6D88\u540E\u7EED\u62E6\u622A");
1638
1638
  page.unroute(urlPattern, routeHandler).catch(() => {
1639
1639
  });
1640
1640
  }
1641
1641
  const request = route.request();
1642
- logger8.info(`[MITM] \u5DF2\u62E6\u622A\u8BF7\u6C42: ${request.url()}`);
1642
+ logger9.info(`[MITM] \u5DF2\u62E6\u622A\u8BF7\u6C42: ${request.url()}`);
1643
1643
  try {
1644
1644
  const headers = await request.allHeaders();
1645
1645
  const postData = request.postData();
@@ -1664,7 +1664,7 @@ var Sse = {
1664
1664
  clearTimeout(initialTimer);
1665
1665
  initialTimer = null;
1666
1666
  }
1667
- logger8.debug("[Intercept] \u5DF2\u63A5\u6536\u521D\u59CB\u6570\u636E");
1667
+ logger9.debug("[Intercept] \u5DF2\u63A5\u6536\u521D\u59CB\u6570\u636E");
1668
1668
  }
1669
1669
  chunks.push(chunk);
1670
1670
  const textChunk = chunk.toString("utf-8");
@@ -1673,18 +1673,18 @@ var Sse = {
1673
1673
  try {
1674
1674
  onData(textChunk, safeResolve, accumulatedText);
1675
1675
  } catch (e) {
1676
- logger8.fail(`onData \u9519\u8BEF`, e);
1676
+ logger9.fail(`onData \u9519\u8BEF`, e);
1677
1677
  }
1678
1678
  }
1679
1679
  });
1680
1680
  res.on("end", () => {
1681
- logger8.info("[MITM] \u4E0A\u6E38\u54CD\u5E94\u7ED3\u675F");
1681
+ logger9.info("[MITM] \u4E0A\u6E38\u54CD\u5E94\u7ED3\u675F");
1682
1682
  clearAllTimers();
1683
1683
  if (onEnd) {
1684
1684
  try {
1685
1685
  onEnd(accumulatedText, safeResolve);
1686
1686
  } catch (e) {
1687
- logger8.fail(`onEnd \u9519\u8BEF`, e);
1687
+ logger9.fail(`onEnd \u9519\u8BEF`, e);
1688
1688
  }
1689
1689
  } else if (!onData) {
1690
1690
  safeResolve(accumulatedText);
@@ -1767,7 +1767,7 @@ var Sse = {
1767
1767
  var import_got_scraping = require("got-scraping");
1768
1768
  var import_http = require("http");
1769
1769
  var import_https2 = require("https");
1770
- var logger9 = createInternalLogger("Interception");
1770
+ var logger10 = createInternalLogger("Interception");
1771
1771
  var SHARED_HTTP_AGENT = new import_http.Agent({
1772
1772
  keepAlive: true,
1773
1773
  keepAliveMsecs: 15e3,
@@ -1975,9 +1975,9 @@ var Interception = {
1975
1975
  const directRules = [];
1976
1976
  if (hasDirectDomains) directRules.push(`\u76F4\u8FDE\u57DF\u540D: [${normalizedDirectDomains.length} \u4E2A]`);
1977
1977
  if (hasDirectExtensions) directRules.push(`\u76F4\u8FDE\u6269\u5C55\u540D: [${normalizedDirectExtensions.join(", ")}]`);
1978
- logger9.start("setup", directRules.length > 0 ? `${directRules.join(" | ")} | \u5C4F\u853D: [${enabledCategories.join(", ")}]` : `\u4EC5\u8D44\u6E90\u5C4F\u853D\u6A21\u5F0F | \u5C4F\u853D: [${enabledCategories.join(", ")}]`);
1978
+ logger10.start("setup", directRules.length > 0 ? `${directRules.join(" | ")} | \u5C4F\u853D: [${enabledCategories.join(", ")}]` : `\u4EC5\u8D44\u6E90\u5C4F\u853D\u6A21\u5F0F | \u5C4F\u853D: [${enabledCategories.join(", ")}]`);
1979
1979
  if (!hasInterceptionRules) {
1980
- logger9.info("\u65E0\u547D\u4E2D\u89C4\u5219\uFF0C\u8DF3\u8FC7 page.route \u6CE8\u518C");
1980
+ logger10.info("\u65E0\u547D\u4E2D\u89C4\u5219\uFF0C\u8DF3\u8FC7 page.route \u6CE8\u518C");
1981
1981
  return;
1982
1982
  }
1983
1983
  const directRouteHandler = async (route) => {
@@ -2021,7 +2021,7 @@ var Interception = {
2021
2021
  delete resHeaders["transfer-encoding"];
2022
2022
  delete resHeaders["connection"];
2023
2023
  delete resHeaders["keep-alive"];
2024
- isSilent ? logger9.debug(`\u76F4\u8FDE\u6210\u529F: ${urlPath}`) : logger9.info(`\u76F4\u8FDE\u6210\u529F: ${urlPath}`);
2024
+ isSilent ? logger10.debug(`\u76F4\u8FDE\u6210\u529F: ${urlPath}`) : logger10.info(`\u76F4\u8FDE\u6210\u529F: ${urlPath}`);
2025
2025
  await safeFulfill(route, {
2026
2026
  status: response.statusCode,
2027
2027
  headers: resHeaders,
@@ -2032,7 +2032,7 @@ var Interception = {
2032
2032
  const isTimeout = err?.code === "ETIMEDOUT" || message.toLowerCase().includes("timeout");
2033
2033
  const action = fallbackToProxy ? "\u56DE\u9000\u4EE3\u7406" : "\u5DF2\u653E\u5F03";
2034
2034
  const reason = isTimeout ? `\u8D85\u65F6(${DirectConfig.directTimeout}s)` : `\u5F02\u5E38: ${message}`;
2035
- logger9.warn(`\u76F4\u8FDE${reason}\uFF0C${action}`);
2035
+ logger10.warn(`\u76F4\u8FDE${reason}\uFF0C${action}`);
2036
2036
  if (fallbackToProxy) {
2037
2037
  await safeContinue(route);
2038
2038
  } else {
@@ -2106,7 +2106,7 @@ function escapeRegex(value) {
2106
2106
 
2107
2107
  // src/mutation.js
2108
2108
  var import_uuid2 = require("uuid");
2109
- var logger10 = createInternalLogger("Mutation");
2109
+ var logger11 = createInternalLogger("Mutation");
2110
2110
  var MUTATION_MONITOR_MODE = Object.freeze({
2111
2111
  Added: "added",
2112
2112
  Changed: "changed",
@@ -2139,14 +2139,14 @@ var Mutation = {
2139
2139
  const stableTime = options.stableTime ?? 5 * 1e3;
2140
2140
  const timeout = options.timeout ?? 120 * 1e3;
2141
2141
  const onMutation = options.onMutation;
2142
- logger10.start("waitForStable", `\u76D1\u63A7 ${selectorList.length} \u4E2A\u9009\u62E9\u5668, \u7A33\u5B9A\u65F6\u95F4=${stableTime}ms`);
2142
+ logger11.start("waitForStable", `\u76D1\u63A7 ${selectorList.length} \u4E2A\u9009\u62E9\u5668, \u7A33\u5B9A\u65F6\u95F4=${stableTime}ms`);
2143
2143
  if (initialTimeout > 0) {
2144
2144
  const selectorQuery = selectorList.join(",");
2145
2145
  try {
2146
2146
  await page.waitForSelector(selectorQuery, { timeout: initialTimeout });
2147
- logger10.info(`waitForStable \u5DF2\u68C0\u6D4B\u5230\u5143\u7D20: ${selectorQuery}`);
2147
+ logger11.info(`waitForStable \u5DF2\u68C0\u6D4B\u5230\u5143\u7D20: ${selectorQuery}`);
2148
2148
  } catch (e) {
2149
- logger10.warning(`waitForStable \u521D\u59CB\u7B49\u5F85\u8D85\u65F6 (${initialTimeout}ms): ${selectorQuery}`);
2149
+ logger11.warning(`waitForStable \u521D\u59CB\u7B49\u5F85\u8D85\u65F6 (${initialTimeout}ms): ${selectorQuery}`);
2150
2150
  throw e;
2151
2151
  }
2152
2152
  }
@@ -2162,7 +2162,7 @@ var Mutation = {
2162
2162
  return "__CONTINUE__";
2163
2163
  }
2164
2164
  });
2165
- logger10.info("waitForStable \u5DF2\u542F\u7528 onMutation \u56DE\u8C03");
2165
+ logger11.info("waitForStable \u5DF2\u542F\u7528 onMutation \u56DE\u8C03");
2166
2166
  } catch (e) {
2167
2167
  }
2168
2168
  }
@@ -2277,9 +2277,9 @@ var Mutation = {
2277
2277
  { selectorList, stableTime, timeout, callbackName, hasCallback: !!onMutation }
2278
2278
  );
2279
2279
  if (result.mutationCount === 0 && result.stableTime === 0) {
2280
- logger10.warning("waitForStable \u672A\u627E\u5230\u53EF\u76D1\u63A7\u7684\u5143\u7D20");
2280
+ logger11.warning("waitForStable \u672A\u627E\u5230\u53EF\u76D1\u63A7\u7684\u5143\u7D20");
2281
2281
  }
2282
- logger10.success("waitForStable", `DOM \u7A33\u5B9A, \u603B\u5171 ${result.mutationCount} \u6B21\u53D8\u5316${result.wasPaused ? ", \u66FE\u6682\u505C\u8BA1\u65F6" : ""}`);
2282
+ logger11.success("waitForStable", `DOM \u7A33\u5B9A, \u603B\u5171 ${result.mutationCount} \u6B21\u53D8\u5316${result.wasPaused ? ", \u66FE\u6682\u505C\u8BA1\u65F6" : ""}`);
2283
2283
  return result;
2284
2284
  },
2285
2285
  /**
@@ -2299,7 +2299,7 @@ var Mutation = {
2299
2299
  const onMutation = options.onMutation;
2300
2300
  const rawMode = String(options.mode || MUTATION_MONITOR_MODE.Added).toLowerCase();
2301
2301
  const mode = [MUTATION_MONITOR_MODE.Added, MUTATION_MONITOR_MODE.Changed, MUTATION_MONITOR_MODE.All].includes(rawMode) ? rawMode : MUTATION_MONITOR_MODE.Added;
2302
- logger10.start("useMonitor", `\u76D1\u63A7 ${selectorList.length} \u4E2A\u9009\u62E9\u5668, mode=${mode}`);
2302
+ logger11.start("useMonitor", `\u76D1\u63A7 ${selectorList.length} \u4E2A\u9009\u62E9\u5668, mode=${mode}`);
2303
2303
  const monitorKey = generateKey("pk_mon");
2304
2304
  const callbackName = generateKey("pk_mon_cb");
2305
2305
  const cleanerName = generateKey("pk_mon_clean");
@@ -2442,7 +2442,7 @@ var Mutation = {
2442
2442
  return total;
2443
2443
  };
2444
2444
  }, { selectorList, monitorKey, callbackName, cleanerName, hasCallback: !!onMutation, mode });
2445
- logger10.success("useMonitor", "\u76D1\u63A7\u5668\u5DF2\u542F\u52A8");
2445
+ logger11.success("useMonitor", "\u76D1\u63A7\u5668\u5DF2\u542F\u52A8");
2446
2446
  return {
2447
2447
  stop: async () => {
2448
2448
  let totalMutations = 0;
@@ -2455,7 +2455,7 @@ var Mutation = {
2455
2455
  }, cleanerName);
2456
2456
  } catch (e) {
2457
2457
  }
2458
- logger10.success("useMonitor.stop", `\u76D1\u63A7\u5DF2\u505C\u6B62, \u5171 ${totalMutations} \u6B21\u53D8\u5316`);
2458
+ logger11.success("useMonitor.stop", `\u76D1\u63A7\u5DF2\u505C\u6B62, \u5171 ${totalMutations} \u6B21\u53D8\u5316`);
2459
2459
  return { totalMutations };
2460
2460
  }
2461
2461
  };
@@ -3276,7 +3276,7 @@ var createTemplateLogger = (baseLogger = createBaseLogger()) => {
3276
3276
  };
3277
3277
  var getDefaultBaseLogger = () => createBaseLogger("");
3278
3278
  var Logger = {
3279
- setLogger: (logger12) => setDefaultLogger(logger12),
3279
+ setLogger: (logger13) => setDefaultLogger(logger13),
3280
3280
  info: (message) => getDefaultBaseLogger().info(message),
3281
3281
  success: (message) => getDefaultBaseLogger().success(message),
3282
3282
  warning: (message) => getDefaultBaseLogger().warning(message),
@@ -3284,15 +3284,15 @@ var Logger = {
3284
3284
  error: (message) => getDefaultBaseLogger().error(message),
3285
3285
  debug: (message) => getDefaultBaseLogger().debug(message),
3286
3286
  start: (message) => getDefaultBaseLogger().start(message),
3287
- useTemplate: (logger12) => {
3288
- if (logger12) return createTemplateLogger(createBaseLogger("", logger12));
3287
+ useTemplate: (logger13) => {
3288
+ if (logger13) return createTemplateLogger(createBaseLogger("", logger13));
3289
3289
  return createTemplateLogger();
3290
3290
  }
3291
3291
  };
3292
3292
 
3293
3293
  // src/share.js
3294
3294
  var import_delay3 = __toESM(require("delay"), 1);
3295
- var logger11 = createInternalLogger("Share");
3295
+ var logger12 = createInternalLogger("Share");
3296
3296
  var DEFAULT_TIMEOUT_MS = 50 * 1e3;
3297
3297
  var DEFAULT_PAYLOAD_SNAPSHOT_MAX_LEN = 500;
3298
3298
  var DEFAULT_POLL_INTERVAL_MS = 120;
@@ -3412,7 +3412,7 @@ var createDomShareMonitor = async (page, options = {}) => {
3412
3412
  const onMatch = typeof options.onMatch === "function" ? options.onMatch : null;
3413
3413
  const onTelemetry = typeof options.onTelemetry === "function" ? options.onTelemetry : null;
3414
3414
  let matched = false;
3415
- logger11.info(`DOM \u76D1\u542C\u51C6\u5907\u6302\u8F7D: selectors=${toJsonInline(selectors, 120)}, mode=${mode}`);
3415
+ logger12.info(`DOM \u76D1\u542C\u51C6\u5907\u6302\u8F7D: selectors=${toJsonInline(selectors, 120)}, mode=${mode}`);
3416
3416
  const monitor = await Mutation.useMonitor(page, selectors, {
3417
3417
  mode,
3418
3418
  onMutation: (context = {}) => {
@@ -3430,12 +3430,12 @@ ${text}`;
3430
3430
  });
3431
3431
  }
3432
3432
  if (mutationCount <= 5 || mutationCount % 50 === 0) {
3433
- logger11.info(`DOM \u53D8\u5316\u5DF2\u6355\u83B7: mutationCount=${mutationCount}, mutationNodes=${mutationNodes.length}`);
3433
+ logger12.info(`DOM \u53D8\u5316\u5DF2\u6355\u83B7: mutationCount=${mutationCount}, mutationNodes=${mutationNodes.length}`);
3434
3434
  }
3435
3435
  const [candidate] = Utils.parseLinks(rawDom, { prefix }) || [];
3436
3436
  if (!candidate) return;
3437
3437
  matched = true;
3438
- logger11.success("captureLink.domHit", `DOM \u547D\u4E2D\u5206\u4EAB\u94FE\u63A5: mutationCount=${mutationCount}, link=${candidate}`);
3438
+ logger12.success("captureLink.domHit", `DOM \u547D\u4E2D\u5206\u4EAB\u94FE\u63A5: mutationCount=${mutationCount}, link=${candidate}`);
3439
3439
  if (onMatch) {
3440
3440
  onMatch({
3441
3441
  link: candidate,
@@ -3451,7 +3451,7 @@ ${text}`;
3451
3451
  return {
3452
3452
  stop: async () => {
3453
3453
  const result = await monitor.stop();
3454
- logger11.info(`DOM \u76D1\u542C\u5DF2\u505C\u6B62: totalMutations=${result?.totalMutations || 0}`);
3454
+ logger12.info(`DOM \u76D1\u542C\u5DF2\u505C\u6B62: totalMutations=${result?.totalMutations || 0}`);
3455
3455
  return result;
3456
3456
  }
3457
3457
  };
@@ -3491,8 +3491,8 @@ var Share = {
3491
3491
  if (share.mode === "response" && apiMatchers.length === 0) {
3492
3492
  throw new Error("Share.captureLink requires share.xurl[0] api matcher when mode=response");
3493
3493
  }
3494
- logger11.start("captureLink", `mode=${share.mode}, timeoutMs=${timeoutMs}, prefix=${share.prefix}`);
3495
- logger11.info(`captureLink \u914D\u7F6E: xurl=${toJsonInline(share.xurl)}, domMode=${domMode}, domSelectors=${toJsonInline(domSelectors, 120)}`);
3494
+ logger12.start("captureLink", `mode=${share.mode}, timeoutMs=${timeoutMs}, prefix=${share.prefix}`);
3495
+ logger12.info(`captureLink \u914D\u7F6E: xurl=${toJsonInline(share.xurl)}, domMode=${domMode}, domSelectors=${toJsonInline(domSelectors, 120)}`);
3496
3496
  const stats = {
3497
3497
  actionTimedOut: false,
3498
3498
  domMutationCount: 0,
@@ -3517,7 +3517,7 @@ var Share = {
3517
3517
  link: validated,
3518
3518
  payloadText: String(payloadText || "")
3519
3519
  };
3520
- logger11.info(`\u5019\u9009\u94FE\u63A5\u5DF2\u786E\u8BA4: source=${source}, link=${validated}`);
3520
+ logger12.info(`\u5019\u9009\u94FE\u63A5\u5DF2\u786E\u8BA4: source=${source}, link=${validated}`);
3521
3521
  return true;
3522
3522
  };
3523
3523
  const resolveResponseCandidate = (responseText) => {
@@ -3552,7 +3552,7 @@ var Share = {
3552
3552
  try {
3553
3553
  await monitor.stop();
3554
3554
  } catch (error) {
3555
- logger11.warning(`\u505C\u6B62 DOM \u76D1\u542C\u5931\u8D25: ${error instanceof Error ? error.message : String(error)}`);
3555
+ logger12.warning(`\u505C\u6B62 DOM \u76D1\u542C\u5931\u8D25: ${error instanceof Error ? error.message : String(error)}`);
3556
3556
  }
3557
3557
  };
3558
3558
  const onResponse = async (response) => {
@@ -3565,29 +3565,29 @@ var Share = {
3565
3565
  stats.responseSampleUrls.push(url);
3566
3566
  }
3567
3567
  if (stats.responseObserved <= 5) {
3568
- logger11.info(`\u63A5\u53E3\u54CD\u5E94\u91C7\u6837(${stats.responseObserved}): ${url}`);
3568
+ logger12.info(`\u63A5\u53E3\u54CD\u5E94\u91C7\u6837(${stats.responseObserved}): ${url}`);
3569
3569
  }
3570
3570
  if (!apiMatchers.some((matcher) => url.includes(matcher))) return;
3571
3571
  stats.responseMatched += 1;
3572
3572
  stats.lastMatchedUrl = url;
3573
- logger11.info(`\u63A5\u53E3\u547D\u4E2D\u5339\u914D(${stats.responseMatched}): ${url}`);
3573
+ logger12.info(`\u63A5\u53E3\u547D\u4E2D\u5339\u914D(${stats.responseMatched}): ${url}`);
3574
3574
  const text = await response.text();
3575
3575
  const hit = resolveResponseCandidate(text);
3576
3576
  if (!hit?.link) {
3577
3577
  if (stats.responseMatched <= 3) {
3578
- logger11.info(`\u63A5\u53E3\u89E3\u6790\u5B8C\u6210\u4F46\u672A\u63D0\u53D6\u5230\u5206\u4EAB\u94FE\u63A5: payloadSize=${text.length}`);
3578
+ logger12.info(`\u63A5\u53E3\u89E3\u6790\u5B8C\u6210\u4F46\u672A\u63D0\u53D6\u5230\u5206\u4EAB\u94FE\u63A5: payloadSize=${text.length}`);
3579
3579
  }
3580
3580
  return;
3581
3581
  }
3582
3582
  stats.responseResolved += 1;
3583
- logger11.success("captureLink.responseHit", `\u63A5\u53E3\u547D\u4E2D\u5206\u4EAB\u94FE\u63A5: url=${url}, link=${hit.link}`);
3583
+ logger12.success("captureLink.responseHit", `\u63A5\u53E3\u547D\u4E2D\u5206\u4EAB\u94FE\u63A5: url=${url}, link=${hit.link}`);
3584
3584
  setCandidate("response", hit.link, hit.payloadText);
3585
3585
  } catch (error) {
3586
- logger11.warning(`\u63A5\u53E3\u54CD\u5E94\u5904\u7406\u5F02\u5E38: ${error instanceof Error ? error.message : String(error)}`);
3586
+ logger12.warning(`\u63A5\u53E3\u54CD\u5E94\u5904\u7406\u5F02\u5E38: ${error instanceof Error ? error.message : String(error)}`);
3587
3587
  }
3588
3588
  };
3589
3589
  if (share.mode === "dom") {
3590
- logger11.info("\u5F53\u524D\u4E3A DOM \u6A21\u5F0F\uFF0C\u4EC5\u542F\u7528 DOM \u76D1\u542C");
3590
+ logger12.info("\u5F53\u524D\u4E3A DOM \u6A21\u5F0F\uFF0C\u4EC5\u542F\u7528 DOM \u76D1\u542C");
3591
3591
  domMonitor = await createDomShareMonitor(page, {
3592
3592
  prefix: share.prefix,
3593
3593
  selectors: domSelectors,
@@ -3602,14 +3602,14 @@ var Share = {
3602
3602
  });
3603
3603
  }
3604
3604
  if (share.mode === "response") {
3605
- logger11.info(`\u5F53\u524D\u4E3A\u63A5\u53E3\u6A21\u5F0F\uFF0C\u6302\u8F7D response \u76D1\u542C: apiMatchers=${toJsonInline(apiMatchers, 160)}`);
3605
+ logger12.info(`\u5F53\u524D\u4E3A\u63A5\u53E3\u6A21\u5F0F\uFF0C\u6302\u8F7D response \u76D1\u542C: apiMatchers=${toJsonInline(apiMatchers, 160)}`);
3606
3606
  page.on("response", onResponse);
3607
3607
  }
3608
3608
  const deadline = Date.now() + timeoutMs;
3609
3609
  const getRemainingMs = () => Math.max(0, deadline - Date.now());
3610
3610
  try {
3611
3611
  const actionTimeout = getRemainingMs();
3612
- logger11.start("captureLink.performActions", `\u6267\u884C\u52A8\u4F5C\u9884\u7B97=${actionTimeout}ms`);
3612
+ logger12.start("captureLink.performActions", `\u6267\u884C\u52A8\u4F5C\u9884\u7B97=${actionTimeout}ms`);
3613
3613
  if (actionTimeout > 0) {
3614
3614
  let timer = null;
3615
3615
  let actionError = null;
@@ -3623,21 +3623,21 @@ var Share = {
3623
3623
  const actionResult = await Promise.race([actionPromise, timeoutPromise]);
3624
3624
  if (timer) clearTimeout(timer);
3625
3625
  if (actionResult === "__ACTION_ERROR__") {
3626
- logger11.fail("captureLink.performActions", actionError);
3626
+ logger12.fail("captureLink.performActions", actionError);
3627
3627
  throw actionError;
3628
3628
  }
3629
3629
  if (actionResult === "__ACTION_TIMEOUT__") {
3630
3630
  stats.actionTimedOut = true;
3631
- logger11.warning(`performActions \u5DF2\u8D85\u65F6 (${actionTimeout}ms)\uFF0C\u52A8\u4F5C\u53EF\u80FD\u4ECD\u5728\u5F02\u6B65\u6267\u884C`);
3631
+ logger12.warning(`performActions \u5DF2\u8D85\u65F6 (${actionTimeout}ms)\uFF0C\u52A8\u4F5C\u53EF\u80FD\u4ECD\u5728\u5F02\u6B65\u6267\u884C`);
3632
3632
  } else {
3633
- logger11.success("captureLink.performActions", "\u6267\u884C\u52A8\u4F5C\u5B8C\u6210");
3633
+ logger12.success("captureLink.performActions", "\u6267\u884C\u52A8\u4F5C\u5B8C\u6210");
3634
3634
  }
3635
3635
  }
3636
3636
  let nextProgressLogTs = Date.now() + 3e3;
3637
3637
  while (true) {
3638
3638
  const selected = share.mode === "dom" ? candidates.dom : candidates.response;
3639
3639
  if (selected?.link) {
3640
- logger11.success("captureLink", `\u6355\u83B7\u6210\u529F: source=${share.mode}, link=${selected.link}`);
3640
+ logger12.success("captureLink", `\u6355\u83B7\u6210\u529F: source=${share.mode}, link=${selected.link}`);
3641
3641
  return {
3642
3642
  link: selected.link,
3643
3643
  payloadText: selected.payloadText,
@@ -3649,7 +3649,7 @@ var Share = {
3649
3649
  if (remaining <= 0) break;
3650
3650
  const now = Date.now();
3651
3651
  if (now >= nextProgressLogTs) {
3652
- logger11.info(
3652
+ logger12.info(
3653
3653
  `captureLink \u7B49\u5F85\u4E2D: remaining=${remaining}ms, domMutationCount=${stats.domMutationCount}, responseMatched=${stats.responseMatched}`
3654
3654
  );
3655
3655
  nextProgressLogTs = now + 5e3;
@@ -3657,11 +3657,11 @@ var Share = {
3657
3657
  await (0, import_delay3.default)(Math.max(0, Math.min(DEFAULT_POLL_INTERVAL_MS, remaining)));
3658
3658
  }
3659
3659
  if (share.mode === "response" && stats.responseMatched === 0) {
3660
- logger11.warning(
3660
+ logger12.warning(
3661
3661
  `\u63A5\u53E3\u76D1\u542C\u672A\u547D\u4E2D: apiMatchers=${toJsonInline(apiMatchers, 220)}, \u54CD\u5E94\u6837\u672CURLs=${toJsonInline(stats.responseSampleUrls, 420)}`
3662
3662
  );
3663
3663
  }
3664
- logger11.warning(
3664
+ logger12.warning(
3665
3665
  `captureLink \u8D85\u65F6\u672A\u62FF\u5230\u94FE\u63A5: mode=${share.mode}, actionTimedOut=${stats.actionTimedOut}, domMutationCount=${stats.domMutationCount}, responseObserved=${stats.responseObserved}, responseMatched=${stats.responseMatched}, lastMatchedUrl=${stats.lastMatchedUrl || "none"}`
3666
3666
  );
3667
3667
  return {
@@ -3673,7 +3673,7 @@ var Share = {
3673
3673
  } finally {
3674
3674
  if (share.mode === "response") {
3675
3675
  page.off("response", onResponse);
3676
- logger11.info("response \u76D1\u542C\u5DF2\u5378\u8F7D");
3676
+ logger12.info("response \u76D1\u542C\u5DF2\u5378\u8F7D");
3677
3677
  }
3678
3678
  await stopDomMonitor();
3679
3679
  }