@skrillex1224/playwright-toolkit 3.0.18 → 3.0.21

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
@@ -154,6 +154,7 @@ var createActorInfo = (info) => {
154
154
  const buildLandingUrl = ({ protocol: protocol2, domain: domain2, path: path4 }) => {
155
155
  const safeProtocol = String(protocol2).trim();
156
156
  const safeDomain = normalizeDomain(domain2);
157
+ if (!safeDomain) return "";
157
158
  const safePath = normalizePath(path4);
158
159
  return `${safeProtocol}://${safeDomain}${safePath}`;
159
160
  };
@@ -361,6 +362,18 @@ var ActorInfo = {
361
362
  prefix: "",
362
363
  xurl: []
363
364
  }
365
+ }),
366
+ // 通用网页抓取 Actor:入口 URL 来自 query,因此这里只声明统一的 Actor 元信息。
367
+ webpage: createActorInfo({
368
+ key: "webpage",
369
+ name: "\u901A\u7528\u7F51\u9875",
370
+ domain: "",
371
+ path: "/",
372
+ share: {
373
+ mode: "dom",
374
+ prefix: "",
375
+ xurl: []
376
+ }
364
377
  })
365
378
  };
366
379
 
@@ -2793,33 +2806,86 @@ var toFiniteNumber = (value, fallback = 0) => {
2793
2806
  const number = Number(value);
2794
2807
  return Number.isFinite(number) ? number : fallback;
2795
2808
  };
2796
- var dispatchMouseMove = (page, point, options = {}) => page.mouse.move(point.x, point.y, options);
2809
+ var resolveCloakRawMouseMove = (page) => {
2810
+ const rawMove = page?._original?.mouseMove;
2811
+ return typeof rawMove === "function" ? rawMove : null;
2812
+ };
2813
+ var syncCloakCursorPoint = (page, point) => {
2814
+ const cursor = page?._humanCursor;
2815
+ if (!cursor || !Number.isFinite(point?.x) || !Number.isFinite(point?.y)) {
2816
+ return;
2817
+ }
2818
+ cursor.x = point.x;
2819
+ cursor.y = point.y;
2820
+ cursor.initialized = true;
2821
+ };
2822
+ var isCloakHumanizedPage = (page) => Boolean(
2823
+ resolveCloakRawMouseMove(page) && page?._humanCursor
2824
+ );
2825
+ var resolveDragTiming = (page, options = {}) => {
2826
+ const cloakFastPath = isCloakHumanizedPage(page);
2827
+ return {
2828
+ preferRawMouseMove: cloakFastPath,
2829
+ initialDelayMs: options.initialDelayMs ?? (cloakFastPath ? 50 : 250),
2830
+ holdDelayMs: options.holdDelayMs ?? (cloakFastPath ? 70 : 350),
2831
+ liftDelayMs: options.liftDelayMs ?? (cloakFastPath ? 50 : 250),
2832
+ stepDelayMs: options.stepDelayMs ?? (cloakFastPath ? 20 : 90),
2833
+ finalMoveDelayMs: options.finalMoveDelayMs ?? (cloakFastPath ? 15 : 35),
2834
+ beforeReleaseDelayMs: options.beforeReleaseDelayMs ?? (cloakFastPath ? 20 : 100),
2835
+ afterReleaseDelayMs: options.afterReleaseDelayMs ?? (cloakFastPath ? 40 : 100)
2836
+ };
2837
+ };
2838
+ var dispatchMouseMove = async (page, point, options = {}) => {
2839
+ const { preferRaw = false, ...mouseOptions } = options;
2840
+ if (preferRaw) {
2841
+ const rawMove = resolveCloakRawMouseMove(page);
2842
+ if (rawMove) {
2843
+ await rawMove(point.x, point.y, mouseOptions);
2844
+ syncCloakCursorPoint(page, point);
2845
+ return;
2846
+ }
2847
+ }
2848
+ await page.mouse.move(point.x, point.y, mouseOptions);
2849
+ };
2797
2850
  var dispatchMouseStart = (page, options = {}) => page.mouse.down(options);
2798
2851
  var dispatchMouseEnd = (page, options = {}) => page.mouse.up(options);
2799
2852
  var dragWithMouse = async (page, points, options = {}) => {
2800
- await dispatchMouseMove(page, points.start, { steps: 8 });
2801
- await waitFor(page, options.initialDelayMs ?? 250);
2853
+ const timing = resolveDragTiming(page, options);
2854
+ await dispatchMouseMove(page, points.start, {
2855
+ steps: 8,
2856
+ preferRaw: timing.preferRawMouseMove
2857
+ });
2858
+ await waitFor(page, timing.initialDelayMs);
2802
2859
  await dispatchMouseStart(page);
2803
- await waitFor(page, options.holdDelayMs ?? 350);
2804
- await dispatchMouseMove(page, points.lift, { steps: 6 });
2805
- await waitFor(page, options.liftDelayMs ?? 250);
2860
+ await waitFor(page, timing.holdDelayMs);
2861
+ await dispatchMouseMove(page, points.lift, {
2862
+ steps: 6,
2863
+ preferRaw: timing.preferRawMouseMove
2864
+ });
2865
+ await waitFor(page, timing.liftDelayMs);
2806
2866
  for (let step = 1; step <= points.steps; step += 1) {
2807
2867
  const progress = step / points.steps;
2808
2868
  const easedProgress = 1 - (1 - progress) * (1 - progress);
2809
2869
  await dispatchMouseMove(page, {
2810
2870
  x: points.lift.x + (points.end.x - points.lift.x) * easedProgress,
2811
2871
  y: points.lift.y + (points.end.y - points.lift.y) * easedProgress
2812
- }, { steps: 2 });
2813
- await waitFor(page, options.stepDelayMs ?? 90);
2872
+ }, {
2873
+ steps: 2,
2874
+ preferRaw: timing.preferRawMouseMove
2875
+ });
2876
+ await waitFor(page, timing.stepDelayMs);
2814
2877
  }
2815
2878
  const finalMoveRepeats = Math.max(0, Math.floor(toFiniteNumber(options.finalMoveRepeats)));
2816
2879
  for (let repeat = 0; repeat < finalMoveRepeats; repeat += 1) {
2817
- await dispatchMouseMove(page, points.end, { steps: 1 });
2818
- await waitFor(page, options.finalMoveDelayMs ?? 35);
2880
+ await dispatchMouseMove(page, points.end, {
2881
+ steps: 1,
2882
+ preferRaw: timing.preferRawMouseMove
2883
+ });
2884
+ await waitFor(page, timing.finalMoveDelayMs);
2819
2885
  }
2820
- await waitFor(page, options.beforeReleaseDelayMs ?? 100);
2886
+ await waitFor(page, timing.beforeReleaseDelayMs);
2821
2887
  await dispatchMouseEnd(page);
2822
- await waitFor(page, options.afterReleaseDelayMs ?? 100);
2888
+ await waitFor(page, timing.afterReleaseDelayMs);
2823
2889
  return true;
2824
2890
  };
2825
2891
  var dragWithTouch = async (page, points, options = {}) => {