@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.js CHANGED
@@ -127,6 +127,7 @@ var createActorInfo = (info) => {
127
127
  const buildLandingUrl = ({ protocol: protocol2, domain: domain2, path: path4 }) => {
128
128
  const safeProtocol = String(protocol2).trim();
129
129
  const safeDomain = normalizeDomain(domain2);
130
+ if (!safeDomain) return "";
130
131
  const safePath = normalizePath(path4);
131
132
  return `${safeProtocol}://${safeDomain}${safePath}`;
132
133
  };
@@ -334,6 +335,18 @@ var ActorInfo = {
334
335
  prefix: "",
335
336
  xurl: []
336
337
  }
338
+ }),
339
+ // 通用网页抓取 Actor:入口 URL 来自 query,因此这里只声明统一的 Actor 元信息。
340
+ webpage: createActorInfo({
341
+ key: "webpage",
342
+ name: "\u901A\u7528\u7F51\u9875",
343
+ domain: "",
344
+ path: "/",
345
+ share: {
346
+ mode: "dom",
347
+ prefix: "",
348
+ xurl: []
349
+ }
337
350
  })
338
351
  };
339
352
 
@@ -2765,33 +2778,86 @@ var toFiniteNumber = (value, fallback = 0) => {
2765
2778
  const number = Number(value);
2766
2779
  return Number.isFinite(number) ? number : fallback;
2767
2780
  };
2768
- var dispatchMouseMove = (page, point, options = {}) => page.mouse.move(point.x, point.y, options);
2781
+ var resolveCloakRawMouseMove = (page) => {
2782
+ const rawMove = page?._original?.mouseMove;
2783
+ return typeof rawMove === "function" ? rawMove : null;
2784
+ };
2785
+ var syncCloakCursorPoint = (page, point) => {
2786
+ const cursor = page?._humanCursor;
2787
+ if (!cursor || !Number.isFinite(point?.x) || !Number.isFinite(point?.y)) {
2788
+ return;
2789
+ }
2790
+ cursor.x = point.x;
2791
+ cursor.y = point.y;
2792
+ cursor.initialized = true;
2793
+ };
2794
+ var isCloakHumanizedPage = (page) => Boolean(
2795
+ resolveCloakRawMouseMove(page) && page?._humanCursor
2796
+ );
2797
+ var resolveDragTiming = (page, options = {}) => {
2798
+ const cloakFastPath = isCloakHumanizedPage(page);
2799
+ return {
2800
+ preferRawMouseMove: cloakFastPath,
2801
+ initialDelayMs: options.initialDelayMs ?? (cloakFastPath ? 50 : 250),
2802
+ holdDelayMs: options.holdDelayMs ?? (cloakFastPath ? 70 : 350),
2803
+ liftDelayMs: options.liftDelayMs ?? (cloakFastPath ? 50 : 250),
2804
+ stepDelayMs: options.stepDelayMs ?? (cloakFastPath ? 20 : 90),
2805
+ finalMoveDelayMs: options.finalMoveDelayMs ?? (cloakFastPath ? 15 : 35),
2806
+ beforeReleaseDelayMs: options.beforeReleaseDelayMs ?? (cloakFastPath ? 20 : 100),
2807
+ afterReleaseDelayMs: options.afterReleaseDelayMs ?? (cloakFastPath ? 40 : 100)
2808
+ };
2809
+ };
2810
+ var dispatchMouseMove = async (page, point, options = {}) => {
2811
+ const { preferRaw = false, ...mouseOptions } = options;
2812
+ if (preferRaw) {
2813
+ const rawMove = resolveCloakRawMouseMove(page);
2814
+ if (rawMove) {
2815
+ await rawMove(point.x, point.y, mouseOptions);
2816
+ syncCloakCursorPoint(page, point);
2817
+ return;
2818
+ }
2819
+ }
2820
+ await page.mouse.move(point.x, point.y, mouseOptions);
2821
+ };
2769
2822
  var dispatchMouseStart = (page, options = {}) => page.mouse.down(options);
2770
2823
  var dispatchMouseEnd = (page, options = {}) => page.mouse.up(options);
2771
2824
  var dragWithMouse = async (page, points, options = {}) => {
2772
- await dispatchMouseMove(page, points.start, { steps: 8 });
2773
- await waitFor(page, options.initialDelayMs ?? 250);
2825
+ const timing = resolveDragTiming(page, options);
2826
+ await dispatchMouseMove(page, points.start, {
2827
+ steps: 8,
2828
+ preferRaw: timing.preferRawMouseMove
2829
+ });
2830
+ await waitFor(page, timing.initialDelayMs);
2774
2831
  await dispatchMouseStart(page);
2775
- await waitFor(page, options.holdDelayMs ?? 350);
2776
- await dispatchMouseMove(page, points.lift, { steps: 6 });
2777
- await waitFor(page, options.liftDelayMs ?? 250);
2832
+ await waitFor(page, timing.holdDelayMs);
2833
+ await dispatchMouseMove(page, points.lift, {
2834
+ steps: 6,
2835
+ preferRaw: timing.preferRawMouseMove
2836
+ });
2837
+ await waitFor(page, timing.liftDelayMs);
2778
2838
  for (let step = 1; step <= points.steps; step += 1) {
2779
2839
  const progress = step / points.steps;
2780
2840
  const easedProgress = 1 - (1 - progress) * (1 - progress);
2781
2841
  await dispatchMouseMove(page, {
2782
2842
  x: points.lift.x + (points.end.x - points.lift.x) * easedProgress,
2783
2843
  y: points.lift.y + (points.end.y - points.lift.y) * easedProgress
2784
- }, { steps: 2 });
2785
- await waitFor(page, options.stepDelayMs ?? 90);
2844
+ }, {
2845
+ steps: 2,
2846
+ preferRaw: timing.preferRawMouseMove
2847
+ });
2848
+ await waitFor(page, timing.stepDelayMs);
2786
2849
  }
2787
2850
  const finalMoveRepeats = Math.max(0, Math.floor(toFiniteNumber(options.finalMoveRepeats)));
2788
2851
  for (let repeat = 0; repeat < finalMoveRepeats; repeat += 1) {
2789
- await dispatchMouseMove(page, points.end, { steps: 1 });
2790
- await waitFor(page, options.finalMoveDelayMs ?? 35);
2852
+ await dispatchMouseMove(page, points.end, {
2853
+ steps: 1,
2854
+ preferRaw: timing.preferRawMouseMove
2855
+ });
2856
+ await waitFor(page, timing.finalMoveDelayMs);
2791
2857
  }
2792
- await waitFor(page, options.beforeReleaseDelayMs ?? 100);
2858
+ await waitFor(page, timing.beforeReleaseDelayMs);
2793
2859
  await dispatchMouseEnd(page);
2794
- await waitFor(page, options.afterReleaseDelayMs ?? 100);
2860
+ await waitFor(page, timing.afterReleaseDelayMs);
2795
2861
  return true;
2796
2862
  };
2797
2863
  var dragWithTouch = async (page, points, options = {}) => {