@skrillex1224/playwright-toolkit 2.1.280 → 2.1.282

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
@@ -4703,330 +4703,149 @@ var DefaultHumanize = {
4703
4703
 
4704
4704
  // src/internals/humanize/cloakbrowser.js
4705
4705
  import delay4 from "delay";
4706
- var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
4707
- var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
4708
4706
  var resolveDeviceFromPage3 = (page) => normalizeDevice(page?.[PageRuntimeStateKey]?.device);
4709
4707
  var isMobilePage = (page) => resolveDeviceFromPage3(page) === Device.Mobile;
4710
- var resolveNativeTarget2 = (page, target) => typeof target === "string" ? page.locator(target).first() : target;
4711
- var targetExists = async (target) => {
4712
- if (!target) {
4713
- return false;
4714
- }
4715
- if (typeof target.count === "function") {
4716
- const count = await target.count().catch(() => 0);
4717
- return count > 0;
4718
- }
4719
- if (typeof target.elementHandle === "function") {
4720
- const handle = await target.elementHandle().catch(() => null);
4721
- try {
4722
- return Boolean(handle);
4723
- } finally {
4724
- await handle?.dispose?.().catch(() => {
4725
- });
4726
- }
4727
- }
4728
- return true;
4729
- };
4730
- var getTargetBoundingBox2 = async (target) => {
4731
- if (!target) {
4732
- return null;
4733
- }
4734
- if (typeof target.boundingBox === "function") {
4735
- return await target.boundingBox().catch(() => null);
4736
- }
4737
- if (typeof target.elementHandle === "function") {
4738
- const handle = await target.elementHandle().catch(() => null);
4739
- try {
4740
- return await handle?.boundingBox?.().catch(() => null);
4741
- } finally {
4742
- await handle?.dispose?.().catch(() => {
4743
- });
4744
- }
4745
- }
4746
- return null;
4747
- };
4748
- var resolveActionTarget = async (page, target, { throwOnMissing = true } = {}) => {
4749
- if (target == null) {
4750
- return null;
4751
- }
4752
- const resolvedTarget = resolveNativeTarget2(page, target);
4753
- if (throwOnMissing || await targetExists(resolvedTarget)) {
4754
- return resolvedTarget;
4755
- }
4756
- return null;
4757
- };
4758
- var readViewportScroll = async (page) => {
4759
- return await page.evaluate(() => ({ x: window.scrollX, y: window.scrollY })).catch(() => ({ x: 0, y: 0 }));
4760
- };
4761
- var buildTypingHumanConfig = (options = {}) => {
4762
- const humanConfig = {};
4763
- if (Number.isFinite(Number(options.baseDelay))) {
4764
- humanConfig.typing_delay = Number(options.baseDelay);
4765
- }
4766
- if (Number.isFinite(Number(options.pauseProbability))) {
4767
- humanConfig.typing_pause_chance = Number(options.pauseProbability);
4768
- }
4769
- if (Number.isFinite(Number(options.pauseBase))) {
4770
- const basePause = Math.max(40, Number(options.pauseBase));
4771
- humanConfig.typing_pause_range = [
4772
- Math.round(basePause * 0.5),
4773
- Math.round(basePause * 1.5)
4774
- ];
4775
- }
4776
- return Object.keys(humanConfig).length > 0 ? humanConfig : null;
4777
- };
4778
- var buildActionOptions = (options = {}) => {
4779
- const actionOptions = {
4780
- force: true
4781
- };
4782
- if (options && options.timeout != null) {
4783
- actionOptions.timeout = options.timeout;
4784
- }
4785
- const humanConfig = buildTypingHumanConfig(options);
4786
- if (humanConfig) {
4787
- actionOptions.human_config = humanConfig;
4788
- }
4789
- return actionOptions;
4790
- };
4791
- var jitterSleep = async (baseMs, jitterPercent = 0.3) => {
4792
- await delay4(jitterMs(baseMs, jitterPercent));
4793
- };
4794
- var moveCursorToPoint = async (page, point) => {
4795
- await page.mouse.move(Number(point.x), Number(point.y));
4796
- return true;
4797
- };
4798
- var CloakBrowserHumanize = {
4708
+ var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
4709
+ var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
4710
+ var resolveTarget = (page, target) => typeof target === "string" ? page.locator(target).first() : target;
4711
+ var sleep = (base, jitter = 0.3) => delay4(jitterMs(base, jitter));
4712
+ var DesktopCloakHumanize = {
4799
4713
  jitterMs(base, jitterPercent = 0.3) {
4800
4714
  return jitterMs(base, jitterPercent);
4801
4715
  },
4802
4716
  async initializeCursor(page) {
4803
- if (isMobilePage(page)) {
4804
- return await MobileHumanize.initializeCursor(page);
4805
- }
4806
4717
  return Boolean(page);
4807
4718
  },
4808
4719
  async humanMove(page, target) {
4809
- if (isMobilePage(page)) {
4810
- return await MobileHumanize.humanMove(page, target);
4811
- }
4720
+ if (target == null) return false;
4812
4721
  if (isPoint2(target)) {
4813
- return await moveCursorToPoint(page, target);
4814
- }
4815
- const resolvedTarget = await resolveActionTarget(page, target, { throwOnMissing: false });
4816
- if (!resolvedTarget) {
4817
- return false;
4818
- }
4819
- if (typeof resolvedTarget.hover === "function") {
4820
- await resolvedTarget.hover({ force: true });
4722
+ await page.mouse.move(Number(target.x), Number(target.y));
4821
4723
  return true;
4822
4724
  }
4823
- const box = await getTargetBoundingBox2(resolvedTarget);
4824
- if (!box) {
4825
- return false;
4826
- }
4827
- return await moveCursorToPoint(page, {
4828
- x: box.x + box.width / 2,
4829
- y: box.y + box.height / 2
4830
- });
4725
+ await resolveTarget(page, target).hover();
4726
+ return true;
4831
4727
  },
4832
- async humanScroll(page, target, options = {}) {
4833
- if (isMobilePage(page)) {
4834
- return await MobileHumanize.humanScroll(page, target, options);
4835
- }
4836
- const resolvedTarget = await resolveActionTarget(page, target, { throwOnMissing: false });
4837
- if (!resolvedTarget) {
4838
- return { element: null, didScroll: false, restore: null };
4839
- }
4840
- const before = await readViewportScroll(page);
4841
- await resolvedTarget.scrollIntoViewIfNeeded?.().catch(() => {
4842
- });
4843
- const after = await readViewportScroll(page);
4844
- return {
4845
- element: resolvedTarget,
4846
- didScroll: before.x !== after.x || before.y !== after.y,
4847
- restore: null
4848
- };
4728
+ async humanScroll(page, target) {
4729
+ const element = resolveTarget(page, target);
4730
+ if (!element) return { element: null, didScroll: false, restore: null };
4731
+ await element.scrollIntoViewIfNeeded?.();
4732
+ return { element, didScroll: true, restore: null };
4849
4733
  },
4850
- async humanClick(page, target, options = {}) {
4851
- if (isMobilePage(page)) {
4852
- return await MobileHumanize.humanClick(page, target, options);
4853
- }
4734
+ async humanClick(page, target) {
4854
4735
  if (target == null) {
4855
- const { x = 0, y = 0 } = page?._humanCursor || {};
4856
- await page.mouse.click(x || 0, y || 0);
4736
+ await page.mouse.click(0, 0);
4857
4737
  return true;
4858
4738
  }
4859
4739
  if (isPoint2(target)) {
4860
4740
  await page.mouse.click(Number(target.x), Number(target.y));
4861
4741
  return true;
4862
4742
  }
4863
- const resolvedTarget = await resolveActionTarget(page, target, {
4864
- throwOnMissing: options.throwOnMissing !== false
4865
- });
4866
- if (!resolvedTarget) {
4867
- return false;
4868
- }
4869
- if (typeof resolvedTarget.click === "function") {
4870
- await resolvedTarget.click(buildActionOptions(options));
4743
+ if (typeof target === "string") {
4744
+ await page.click(target);
4871
4745
  return true;
4872
4746
  }
4873
- const box = await getTargetBoundingBox2(resolvedTarget);
4874
- if (!box) {
4875
- if (options.throwOnMissing !== false) {
4876
- throw new Error("\u65E0\u6CD5\u83B7\u53D6\u5143\u7D20\u4F4D\u7F6E");
4877
- }
4878
- return false;
4879
- }
4880
- await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
4747
+ await target.click();
4881
4748
  return true;
4882
4749
  },
4883
- async randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
4884
- if (isPageLike2(pageOrBaseMs)) {
4885
- if (isMobilePage(pageOrBaseMs)) {
4886
- return await MobileHumanize.randomSleep(maybeBaseMs, maybeJitterPercent);
4887
- }
4888
- await jitterSleep(maybeBaseMs, maybeJitterPercent ?? 0.3);
4889
- return;
4890
- }
4891
- await jitterSleep(pageOrBaseMs, maybeBaseMs ?? 0.3);
4750
+ async randomSleep(baseMs, jitterPercent = 0.3) {
4751
+ await sleep(baseMs, jitterPercent);
4892
4752
  },
4893
4753
  async simulateGaze(page, baseDurationMs = 2500) {
4894
- if (isMobilePage(page)) {
4895
- return await MobileHumanize.simulateGaze(page, baseDurationMs);
4896
- }
4897
4754
  const durationMs = jitterMs(baseDurationMs, 0.4);
4898
- const startTime = Date.now();
4899
- const viewportSize = page.viewportSize() || { width: 1365, height: 900 };
4900
- while (Date.now() - startTime < durationMs) {
4755
+ const startedAt = Date.now();
4756
+ const viewport = page.viewportSize() || { width: 1365, height: 900 };
4757
+ while (Date.now() - startedAt < durationMs) {
4901
4758
  await page.mouse.move(
4902
- 100 + Math.random() * Math.max(120, viewportSize.width - 200),
4903
- 100 + Math.random() * Math.max(120, viewportSize.height - 200)
4759
+ 100 + Math.random() * Math.max(120, viewport.width - 200),
4760
+ 100 + Math.random() * Math.max(120, viewport.height - 200)
4904
4761
  );
4905
- await jitterSleep(600, 0.5);
4762
+ await sleep(300, 0.5);
4906
4763
  }
4907
4764
  },
4908
- async humanType(page, selector, text, options = {}) {
4909
- if (isMobilePage(page)) {
4910
- return await MobileHumanize.humanType(page, selector, text, options);
4911
- }
4912
- const actionOptions = buildActionOptions(options);
4765
+ async humanType(page, selector, text) {
4913
4766
  if (typeof selector === "string") {
4914
- await page.type(selector, text, actionOptions);
4767
+ await page.type(selector, text);
4915
4768
  return;
4916
4769
  }
4917
- const resolvedTarget = await resolveActionTarget(page, selector, { throwOnMissing: true });
4918
- if (!resolvedTarget || typeof resolvedTarget.type !== "function") {
4919
- throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 type()");
4920
- }
4921
- await resolvedTarget.type(text, actionOptions);
4770
+ await selector.type(text);
4922
4771
  },
4923
- async humanPress(page, targetOrKey, maybeKey, options = {}) {
4924
- if (isMobilePage(page)) {
4925
- return await MobileHumanize.humanPress(page, targetOrKey, maybeKey, options);
4926
- }
4927
- const hasTarget = typeof maybeKey === "string";
4928
- const key = hasTarget ? maybeKey : targetOrKey;
4929
- const pressOptions = hasTarget ? options : maybeKey || options;
4930
- if (!hasTarget) {
4931
- await jitterSleep(pressOptions.reactionDelay ?? 180, 0.45);
4932
- await page.keyboard.press(key, {
4933
- ...pressOptions.keyboardOptions || {},
4934
- delay: jitterMs(pressOptions.holdDelay ?? 45, 0.5)
4935
- });
4772
+ async humanPress(page, targetOrKey, maybeKey) {
4773
+ if (typeof maybeKey !== "string") {
4774
+ await page.keyboard.press(targetOrKey);
4936
4775
  return true;
4937
4776
  }
4938
4777
  if (typeof targetOrKey === "string") {
4939
- await page.press(targetOrKey, key, buildActionOptions(pressOptions));
4778
+ await page.press(targetOrKey, maybeKey);
4940
4779
  return true;
4941
4780
  }
4942
- const resolvedTarget = await resolveActionTarget(page, targetOrKey, {
4943
- throwOnMissing: pressOptions.throwOnMissing !== false
4944
- });
4945
- if (!resolvedTarget) {
4946
- return false;
4947
- }
4948
- if (typeof resolvedTarget.press === "function") {
4949
- await resolvedTarget.press(key, buildActionOptions(pressOptions));
4950
- return true;
4951
- }
4952
- await this.humanClick(page, targetOrKey, {
4953
- ...pressOptions,
4954
- reactionDelay: pressOptions.focusDelay ?? 180
4955
- });
4956
- await jitterSleep(pressOptions.reactionDelay ?? 180, 0.45);
4957
- await page.keyboard.press(key, {
4958
- ...pressOptions.keyboardOptions || {},
4959
- delay: jitterMs(pressOptions.holdDelay ?? 45, 0.5)
4960
- });
4781
+ await targetOrKey.press(maybeKey);
4961
4782
  return true;
4962
4783
  },
4963
4784
  async humanClear(page, selector) {
4964
- if (isMobilePage(page)) {
4965
- return await MobileHumanize.humanClear(page, selector);
4966
- }
4967
4785
  if (typeof selector === "string") {
4968
- if (typeof page.clear === "function") {
4969
- await page.clear(selector, { force: true });
4970
- return;
4971
- }
4972
- await page.fill(selector, "", { force: true });
4973
- return;
4974
- }
4975
- const resolvedTarget = await resolveActionTarget(page, selector, { throwOnMissing: true });
4976
- if (!resolvedTarget) {
4977
- throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 clear()");
4978
- }
4979
- if (typeof resolvedTarget.clear === "function") {
4980
- await resolvedTarget.clear(buildActionOptions());
4786
+ await page.fill(selector, "");
4981
4787
  return;
4982
4788
  }
4983
- if (typeof resolvedTarget.fill === "function") {
4984
- await resolvedTarget.fill("", buildActionOptions());
4985
- return;
4986
- }
4987
- throw new Error("\u76EE\u6807\u5143\u7D20\u4E0D\u652F\u6301 clear()");
4789
+ await selector.fill("");
4988
4790
  },
4989
4791
  async warmUpBrowsing(page, baseDuration = 3500) {
4990
- if (isMobilePage(page)) {
4991
- return await MobileHumanize.warmUpBrowsing(page, baseDuration);
4992
- }
4993
- const durationMs = jitterMs(baseDuration, 0.4);
4994
- const startTime = Date.now();
4995
- const viewportSize = page.viewportSize() || { width: 1365, height: 900 };
4996
- while (Date.now() - startTime < durationMs) {
4997
- const action = Math.random();
4998
- if (action < 0.4) {
4999
- await page.mouse.move(
5000
- 100 + Math.random() * Math.max(120, viewportSize.width - 200),
5001
- 100 + Math.random() * Math.max(120, viewportSize.height - 200)
5002
- );
5003
- await jitterSleep(350, 0.4);
5004
- continue;
5005
- }
5006
- if (action < 0.7) {
5007
- await page.mouse.wheel(0, (Math.random() - 0.5) * 220);
5008
- await jitterSleep(500, 0.4);
5009
- continue;
5010
- }
5011
- await jitterSleep(800, 0.5);
5012
- }
4792
+ await this.simulateGaze(page, Math.min(baseDuration, 900));
5013
4793
  },
5014
4794
  async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
5015
- if (isMobilePage(page)) {
5016
- return await MobileHumanize.naturalScroll(page, direction, distance, baseSteps);
5017
- }
5018
- const steps = Math.max(3, baseSteps + Math.floor(Math.random() * 3) - 1);
5019
- const actualDistance = jitterMs(distance, 0.15);
5020
- const sign = direction === "down" ? 1 : -1;
5021
- const stepDistance = actualDistance / steps;
4795
+ const steps = Math.max(1, Number(baseSteps) || 1);
4796
+ const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
5022
4797
  for (let index = 0; index < steps; index += 1) {
5023
- const factor = 1 - index / steps * 0.5;
5024
- const jitter = 0.9 + Math.random() * 0.2;
5025
- await page.mouse.wheel(0, stepDistance * factor * sign * jitter);
5026
- await jitterSleep(60 + index * 25, 0.3);
4798
+ await page.mouse.wheel(0, delta);
4799
+ await sleep(60 + index * 20, 0.3);
5027
4800
  }
5028
4801
  }
5029
4802
  };
4803
+ var resolveDelegate2 = (page) => isMobilePage(page) ? MobileHumanize : DesktopCloakHumanize;
4804
+ var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
4805
+ var CloakBrowserHumanize = {
4806
+ jitterMs(base, jitterPercent = 0.3) {
4807
+ return jitterMs(base, jitterPercent);
4808
+ },
4809
+ initializeCursor(page) {
4810
+ return callDelegate2("initializeCursor", page, []);
4811
+ },
4812
+ humanMove(page, target) {
4813
+ return callDelegate2("humanMove", page, [target]);
4814
+ },
4815
+ humanScroll(page, target, options = {}) {
4816
+ return callDelegate2("humanScroll", page, [target, options]);
4817
+ },
4818
+ humanClick(page, target, options = {}) {
4819
+ return callDelegate2("humanClick", page, [target, options]);
4820
+ },
4821
+ randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
4822
+ if (isPageLike2(pageOrBaseMs)) {
4823
+ return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
4824
+ }
4825
+ return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
4826
+ },
4827
+ simulateGaze(page, baseDurationMs = 2500) {
4828
+ return callDelegate2("simulateGaze", page, [baseDurationMs]);
4829
+ },
4830
+ humanType(page, selector, text, options = {}) {
4831
+ return callDelegate2("humanType", page, [selector, text, options]);
4832
+ },
4833
+ humanPress(page, targetOrKey, maybeKey, options = {}) {
4834
+ if (typeof maybeKey === "string") {
4835
+ return callDelegate2("humanPress", page, [targetOrKey, maybeKey, options]);
4836
+ }
4837
+ return callDelegate2("humanPress", page, [targetOrKey, maybeKey || options]);
4838
+ },
4839
+ humanClear(page, selector) {
4840
+ return callDelegate2("humanClear", page, [selector]);
4841
+ },
4842
+ warmUpBrowsing(page, baseDuration = 3500) {
4843
+ return callDelegate2("warmUpBrowsing", page, [baseDuration]);
4844
+ },
4845
+ naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
4846
+ return callDelegate2("naturalScroll", page, [direction, distance, baseSteps]);
4847
+ }
4848
+ };
5030
4849
 
5031
4850
  // src/humanize.js
5032
4851
  var humanizeStrategies = {
@@ -6827,7 +6646,7 @@ var Mutation = {
6827
6646
  const overallTimeout = options.timeout ?? 180 * 1e3;
6828
6647
  const onMutation = options.onMutation;
6829
6648
  const pollInterval = 500;
6830
- const sleep = (ms) => new Promise((resolve) => {
6649
+ const sleep2 = (ms) => new Promise((resolve) => {
6831
6650
  setTimeout(resolve, ms);
6832
6651
  });
6833
6652
  const truncate = (value, max = 800) => {
@@ -7019,7 +6838,7 @@ var Mutation = {
7019
6838
  const deadline = Date.now() + overallTimeout;
7020
6839
  let lastState = state2;
7021
6840
  while (Date.now() < deadline) {
7022
- await sleep(pollInterval);
6841
+ await sleep2(pollInterval);
7023
6842
  lastState = await buildState();
7024
6843
  if (!lastState?.hasMatched) {
7025
6844
  continue;