@roxybrowser/playwright 2.0.2-beta.12 → 2.0.2-beta.13

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.
@@ -11,6 +11,8 @@ export declare class DefaultHumanController implements HumanController {
11
11
  press(target: HumanActionTarget, key: string, options?: PressOptions): Promise<void>;
12
12
  private resolveDefaults;
13
13
  private ensureVisualization;
14
+ private prepareEditableTarget;
15
+ private typeText;
14
16
  private enqueue;
15
17
  }
16
18
  //# sourceMappingURL=controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/human/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAGpB,qBAAa,sBAAuB,YAAW,eAAe;IAGhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,WAAW,CAAqB;gBAEX,QAAQ,EAAE,2BAA2B;IAE5D,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAevE,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvE,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAKV,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IASV,KAAK,CACT,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC;IAShB,OAAO,CAAC,eAAe;YAIT,mBAAmB;YAUnB,OAAO;CAQtB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/human/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAGpB,qBAAa,sBAAuB,YAAW,eAAe;IAGhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,WAAW,CAAqB;gBAEX,QAAQ,EAAE,2BAA2B;IAE5D,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAevE,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvE,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAQV,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAMV,KAAK,CACT,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC;IAShB,OAAO,CAAC,eAAe;YAIT,mBAAmB;YAUnB,qBAAqB;YAmBrB,QAAQ;YAgBR,OAAO;CAQtB"}
@@ -25,20 +25,20 @@ export class DefaultHumanController {
25
25
  await target.hover(options);
26
26
  }
27
27
  async fill(target, value, options) {
28
- await this.ensureVisualization(target);
29
- await target.fill(value, options);
28
+ const defaults = this.resolveDefaults(options);
29
+ await this.prepareEditableTarget(target, options, defaults);
30
+ await this.typeText(target, value, {
31
+ ...(options?.human !== undefined ? { human: options.human } : {})
32
+ }, defaults);
30
33
  }
31
34
  async type(target, value, options) {
32
35
  const defaults = this.resolveDefaults(options);
33
- await this.ensureVisualization(target);
34
- await target.type(value, {
35
- ...options,
36
- delay: options?.delay ?? defaults.typingDelayMs
37
- });
36
+ await this.prepareEditableTarget(target, options, defaults);
37
+ await this.typeText(target, value, options, defaults);
38
38
  }
39
39
  async press(target, key, options) {
40
40
  const defaults = this.resolveDefaults(options);
41
- await this.ensureVisualization(target);
41
+ await this.prepareEditableTarget(target, options, defaults);
42
42
  await target.press(key, {
43
43
  ...options,
44
44
  delay: options?.delay ?? defaults.typingDelayMs
@@ -54,6 +54,29 @@ export class DefaultHumanController {
54
54
  }
55
55
  await evaluatableTarget.evaluate(BUBBLE_CURSOR_INSTALL_SOURCE);
56
56
  }
57
+ async prepareEditableTarget(target, options, defaults) {
58
+ await this.ensureVisualization(target);
59
+ await this.enqueue(async () => {
60
+ await target.hover(options);
61
+ if (defaults.hoverBeforeClickMs > 0) {
62
+ await delay(defaults.hoverBeforeClickMs);
63
+ }
64
+ await target.click({
65
+ ...(options ?? {}),
66
+ delay: defaults.clickHoldMs
67
+ });
68
+ await target.focus?.();
69
+ });
70
+ }
71
+ async typeText(target, value, options, defaults) {
72
+ const delay = options && "delay" in options && typeof options.delay === "number"
73
+ ? options.delay
74
+ : defaults.typingDelayMs;
75
+ await target.type(value, {
76
+ ...options,
77
+ delay
78
+ });
79
+ }
57
80
  async enqueue(action) {
58
81
  const run = this.actionQueue.then(action, action);
59
82
  this.actionQueue = run.then(() => undefined, () => undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/human/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/human/controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAO1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,OAAO,sBAAsB;IAGJ;IAFrB,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAExC,YAA6B,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;IAAG,CAAC;IAEtE,KAAK,CAAC,KAAK,CAAC,MAAyB,EAAE,OAAsB;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,GAAG,OAAO;gBACV,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,WAAW;aAC9C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAyB,EAAE,OAAsB;QAC3D,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAyB,EACzB,KAAa,EACb,OAAqB;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;YACjC,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAyB,EACzB,KAAa,EACb,OAAqB;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,MAAyB,EACzB,GAAW,EACX,OAAsB;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YACtB,GAAG,OAAO;YACV,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,aAAa;SAChD,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,OAA4B;QAClD,OAAO,0BAA0B,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,MAAyB;QACzD,MAAM,iBAAiB,GAAG,MAEzB,CAAC;QACF,IAAI,OAAO,iBAAiB,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IACjE,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,MAAyB,EACzB,OAAuC,EACvC,QAAqC;QAErC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,OAAmC,CAAC,CAAC;YACxD,IAAI,QAAQ,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAClB,KAAK,EAAE,QAAQ,CAAC,WAAW;aACZ,CAAC,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,MAAyB,EACzB,KAAa,EACb,OAA8C,EAC9C,QAAqC;QAErC,MAAM,KAAK,GACT,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;YAChE,CAAC,CAAC,OAAO,CAAC,KAAK;YACf,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7B,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;YACvB,GAAG,OAAO;YACV,KAAK;SACS,CAAC,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAU,MAA8B;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CACzB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,SAAS,KAAK,CAAC,SAAiB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,30 +1,30 @@
1
1
  const PROFILE_DEFAULTS = {
2
2
  cautious: {
3
3
  profile: "cautious",
4
- moveJitterMs: 28,
5
- clickHoldMs: 90,
6
- scrollStepPx: 180,
7
- typingDelayMs: 140,
8
- typingVarianceMs: 55,
9
- hoverBeforeClickMs: 180
4
+ moveJitterMs: 220,
5
+ clickHoldMs: 260,
6
+ scrollStepPx: 120,
7
+ typingDelayMs: 240,
8
+ typingVarianceMs: 90,
9
+ hoverBeforeClickMs: 680
10
10
  },
11
11
  balanced: {
12
12
  profile: "balanced",
13
- moveJitterMs: 16,
14
- clickHoldMs: 60,
15
- scrollStepPx: 280,
16
- typingDelayMs: 95,
17
- typingVarianceMs: 35,
18
- hoverBeforeClickMs: 110
13
+ moveJitterMs: 140,
14
+ clickHoldMs: 180,
15
+ scrollStepPx: 180,
16
+ typingDelayMs: 140,
17
+ typingVarianceMs: 55,
18
+ hoverBeforeClickMs: 380
19
19
  },
20
20
  fast: {
21
21
  profile: "fast",
22
- moveJitterMs: 8,
23
- clickHoldMs: 30,
24
- scrollStepPx: 360,
25
- typingDelayMs: 45,
26
- typingVarianceMs: 20,
27
- hoverBeforeClickMs: 45
22
+ moveJitterMs: 80,
23
+ clickHoldMs: 120,
24
+ scrollStepPx: 240,
25
+ typingDelayMs: 85,
26
+ typingVarianceMs: 30,
27
+ hoverBeforeClickMs: 180
28
28
  }
29
29
  };
30
30
  export function resolveHumanizationOptions(options, base) {
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/human/profile.ts"],"names":[],"mappings":"AAMA,MAAM,gBAAgB,GAA0D;IAC9E,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,GAAG;KACxB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,GAAG;KACxB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;KACvB;CACF,CAAC;AAEF,MAAM,UAAU,0BAA0B,CACxC,OAA6B,EAC7B,IAAkC;IAElC,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;IACpE,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY;QACjF,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW;QAC7E,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY;QACjF,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,aAAa;QACrF,gBAAgB,EACd,OAAO,EAAE,gBAAgB,IAAI,IAAI,EAAE,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACjF,kBAAkB,EAChB,OAAO,EAAE,kBAAkB,IAAI,IAAI,EAAE,kBAAkB,IAAI,OAAO,CAAC,kBAAkB;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/human/profile.ts"],"names":[],"mappings":"AAMA,MAAM,gBAAgB,GAA0D;IAC9E,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,GAAG;KACxB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,GAAG;KACxB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,GAAG;KACxB;CACF,CAAC;AAEF,MAAM,UAAU,0BAA0B,CACxC,OAA6B,EAC7B,IAAkC;IAElC,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;IACpE,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY;QACjF,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW;QAC7E,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY;QACjF,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,aAAa;QACrF,gBAAgB,EACd,OAAO,EAAE,gBAAgB,IAAI,IAAI,EAAE,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACjF,kBAAkB,EAChB,OAAO,EAAE,kBAAkB,IAAI,IAAI,EAAE,kBAAkB,IAAI,OAAO,CAAC,kBAAkB;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -9,6 +9,7 @@ export interface ResolvedHumanizationOptions {
9
9
  hoverBeforeClickMs: number;
10
10
  }
11
11
  export interface HumanActionTarget {
12
+ focus?(): Promise<void>;
12
13
  click(options?: ClickOptions): Promise<void>;
13
14
  hover(options?: HoverOptions): Promise<void>;
14
15
  fill(value: string, options?: FillOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/human/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/human/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectedBrowser.d.ts","sourceRoot":"","sources":["../../src/mcp/connectedBrowser.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAOV,uBAAuB,EACvB,sBAAsB,EAQvB,MAAM,YAAY,CAAC;AAi5GpB,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAMlC"}
1
+ {"version":3,"file":"connectedBrowser.d.ts","sourceRoot":"","sources":["../../src/mcp/connectedBrowser.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAOV,uBAAuB,EACvB,sBAAsB,EAQvB,MAAM,YAAY,CAAC;AAk8GpB,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAMlC"}
@@ -429,6 +429,24 @@ async function splitScrollDeltas(deltaX, deltaY, stepPx) {
429
429
  }
430
430
  return chunks.filter((chunk) => chunk.deltaX !== 0 || chunk.deltaY !== 0);
431
431
  }
432
+ function maybeReverseScrollChunk(chunk, index, total) {
433
+ if (total < 3 || index === 0 || index === total - 1) {
434
+ return null;
435
+ }
436
+ if (Math.random() > 0.18) {
437
+ return null;
438
+ }
439
+ return {
440
+ deltaX: -Math.round(chunk.deltaX * (0.18 + Math.random() * 0.18)),
441
+ deltaY: -Math.round(chunk.deltaY * (0.18 + Math.random() * 0.18))
442
+ };
443
+ }
444
+ function shouldPauseToObserve(index, total) {
445
+ if (index === total - 1) {
446
+ return false;
447
+ }
448
+ return total > 2 && Math.random() < 0.22;
449
+ }
432
450
  function extractBiDiValue(value) {
433
451
  if (!value) {
434
452
  return undefined;
@@ -814,8 +832,16 @@ class CdpConnectedBrowserSession {
814
832
  const arg = target ? this.targetArg(target) : {};
815
833
  await evaluateCdp(pageClient, ENSURE_BUBBLE_CURSOR_SOURCE, undefined, contextId).catch(() => false);
816
834
  const chunks = await splitScrollDeltas(deltaX, deltaY, options?.stepPx ?? Math.max(Math.abs(deltaX), Math.abs(deltaY), 1));
817
- for (const chunk of chunks) {
835
+ for (const [index, chunk] of chunks.entries()) {
818
836
  await evaluateCdp(pageClient, SCROLL_ELEMENT_SOURCE, { ...arg, deltaX: chunk.deltaX, deltaY: chunk.deltaY }, contextId);
837
+ const reverseChunk = maybeReverseScrollChunk(chunk, index, chunks.length);
838
+ if (reverseChunk) {
839
+ await delay(60 + Math.round(Math.random() * 120));
840
+ await evaluateCdp(pageClient, SCROLL_ELEMENT_SOURCE, { ...arg, deltaX: reverseChunk.deltaX, deltaY: reverseChunk.deltaY }, contextId);
841
+ }
842
+ if (shouldPauseToObserve(index, chunks.length)) {
843
+ await delay(220 + Math.round(Math.random() * 520));
844
+ }
819
845
  if ((options?.stepDelayMs ?? 0) > 0) {
820
846
  await delay(options.stepDelayMs);
821
847
  }
@@ -2067,12 +2093,24 @@ class BidiConnectedBrowserSession {
2067
2093
  const arg = target ? ("nodeToken" in target ? { nodeToken: target.nodeToken } : { selector: target.selector }) : {};
2068
2094
  await evaluateBiDi(this.client, tabId, ENSURE_BUBBLE_CURSOR_SOURCE).catch(() => false);
2069
2095
  const chunks = await splitScrollDeltas(deltaX, deltaY, options?.stepPx ?? Math.max(Math.abs(deltaX), Math.abs(deltaY), 1));
2070
- for (const chunk of chunks) {
2096
+ for (const [index, chunk] of chunks.entries()) {
2071
2097
  await evaluateBiDi(this.client, tabId, SCROLL_ELEMENT_SOURCE, {
2072
2098
  ...arg,
2073
2099
  deltaX: chunk.deltaX,
2074
2100
  deltaY: chunk.deltaY
2075
2101
  });
2102
+ const reverseChunk = maybeReverseScrollChunk(chunk, index, chunks.length);
2103
+ if (reverseChunk) {
2104
+ await delay(60 + Math.round(Math.random() * 120));
2105
+ await evaluateBiDi(this.client, tabId, SCROLL_ELEMENT_SOURCE, {
2106
+ ...arg,
2107
+ deltaX: reverseChunk.deltaX,
2108
+ deltaY: reverseChunk.deltaY
2109
+ });
2110
+ }
2111
+ if (shouldPauseToObserve(index, chunks.length)) {
2112
+ await delay(220 + Math.round(Math.random() * 520));
2113
+ }
2076
2114
  if ((options?.stepDelayMs ?? 0) > 0) {
2077
2115
  await delay(options.stepDelayMs);
2078
2116
  }