@skrillex1224/playwright-toolkit 3.0.5 → 3.0.6

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
@@ -6303,7 +6303,7 @@ function useCaptchaMonitor(page, options) {
6303
6303
  let isStopped = false;
6304
6304
  let isHandling = false;
6305
6305
  let frameHandler = null;
6306
- let exposedFunctionName = null;
6306
+ let domFrameHandler = null;
6307
6307
  const triggerDetected = async () => {
6308
6308
  if (isStopped || isHandling) return;
6309
6309
  isHandling = true;
@@ -6315,12 +6315,16 @@ function useCaptchaMonitor(page, options) {
6315
6315
  };
6316
6316
  const cleanupFns = [];
6317
6317
  if (domSelector) {
6318
- exposedFunctionName = `__c_d_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
6318
+ const exposedFunctionName = `__c_d_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
6319
6319
  const cleanerName = `__c_cleaner_${(0, import_uuid.v4)().replace(/-/g, "_")}`;
6320
- page.exposeFunction(exposedFunctionName, triggerDetected).catch(() => {
6321
- });
6322
- page.addInitScript(({ selector, callbackName, cleanerName: cleanupName }) => {
6320
+ const installDomMonitor = ({ selector, callbackName, cleanerName: cleanupName }) => {
6323
6321
  (() => {
6322
+ if (typeof window[cleanupName] === "function") {
6323
+ try {
6324
+ window[cleanupName]();
6325
+ } catch {
6326
+ }
6327
+ }
6324
6328
  let observer = null;
6325
6329
  const checkAndReport = () => {
6326
6330
  const element = document.querySelector(selector);
@@ -6346,7 +6350,7 @@ function useCaptchaMonitor(page, options) {
6346
6350
  }
6347
6351
  };
6348
6352
  if (document.readyState === "loading") {
6349
- window.addEventListener("DOMContentLoaded", mountObserver);
6353
+ window.addEventListener("DOMContentLoaded", mountObserver, { once: true });
6350
6354
  } else {
6351
6355
  mountObserver();
6352
6356
  }
@@ -6357,9 +6361,41 @@ function useCaptchaMonitor(page, options) {
6357
6361
  }
6358
6362
  };
6359
6363
  })();
6360
- }, { selector: domSelector, callbackName: exposedFunctionName, cleanerName });
6361
- logger12.success("useCaptchaMonitor", `DOM \u76D1\u63A7\u5DF2\u542F\u7528\uFF1A${domSelector}`);
6364
+ };
6365
+ const installArgs = {
6366
+ selector: domSelector,
6367
+ callbackName: exposedFunctionName,
6368
+ cleanerName
6369
+ };
6370
+ const domMonitorReady = (async () => {
6371
+ await page.exposeFunction(exposedFunctionName, triggerDetected);
6372
+ await page.addInitScript(installDomMonitor, installArgs);
6373
+ await page.evaluate(installDomMonitor, installArgs).catch(() => {
6374
+ });
6375
+ logger12.success("useCaptchaMonitor", `DOM \u76D1\u63A7\u5DF2\u542F\u7528\uFF1A${domSelector}`);
6376
+ })().catch((error) => {
6377
+ if (isStopped) {
6378
+ return;
6379
+ }
6380
+ logger12.warn(`DOM \u76D1\u63A7\u521D\u59CB\u5316\u5931\u8D25 (${domSelector}): ${error?.message || error}`);
6381
+ });
6382
+ domFrameHandler = async (frame) => {
6383
+ if (frame !== page.mainFrame() || isStopped) {
6384
+ return;
6385
+ }
6386
+ await domMonitorReady;
6387
+ if (isStopped) {
6388
+ return;
6389
+ }
6390
+ await page.evaluate(installDomMonitor, installArgs).catch(() => {
6391
+ });
6392
+ };
6393
+ page.on("framenavigated", domFrameHandler);
6362
6394
  cleanupFns.push(async () => {
6395
+ if (domFrameHandler) {
6396
+ page.off("framenavigated", domFrameHandler);
6397
+ }
6398
+ await domMonitorReady;
6363
6399
  try {
6364
6400
  await page.evaluate((name) => {
6365
6401
  if (window[name]) {
@@ -6390,10 +6426,10 @@ function useCaptchaMonitor(page, options) {
6390
6426
  return {
6391
6427
  stop: async () => {
6392
6428
  logger12.info("\u6B63\u5728\u505C\u6B62\u9A8C\u8BC1\u7801\u76D1\u63A7...");
6429
+ isStopped = true;
6393
6430
  for (const fn of cleanupFns) {
6394
6431
  await fn();
6395
6432
  }
6396
- isStopped = true;
6397
6433
  }
6398
6434
  };
6399
6435
  }