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