@@ -2,18 +2,16 @@ import { NativeAdapter } from "./adapter/native.adapter.class";
2
2
import { Button } from "./button.enum" ;
3
3
import { MovementType } from "./movementtype.class" ;
4
4
import { Point } from "./point.class" ;
5
+ import { sleep } from "./sleep.function" ;
5
6
6
7
export class Mouse {
7
8
public config = {
8
9
autoDelayMs : 100 ,
9
10
mouseSpeed : 1000 ,
10
11
} ;
11
12
12
- private lastAction : number ;
13
-
14
13
constructor ( private native : NativeAdapter ) {
15
14
this . native . setMouseDelay ( 0 ) ;
16
- this . lastAction = Date . now ( ) ;
17
15
}
18
16
19
17
public async setPosition ( target : Point ) : Promise < Mouse > {
@@ -38,9 +36,8 @@ export class Mouse {
38
36
for ( let idx = 0 ; idx < path . length ; ++ idx ) {
39
37
const node = path [ idx ] ;
40
38
const minTime = timeSteps [ idx ] ;
41
- await this . waitForNextTick ( minTime ) ;
39
+ await sleep ( minTime ) ;
42
40
await this . native . setMousePosition ( node ) ;
43
- await this . updateTick ( ) ;
44
41
}
45
42
resolve ( this ) ;
46
43
} catch ( e ) {
@@ -51,19 +48,17 @@ export class Mouse {
51
48
52
49
public async leftClick ( ) : Promise < Mouse > {
53
50
return new Promise < Mouse > ( async resolve => {
54
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
51
+ await sleep ( this . config . autoDelayMs ) ;
55
52
await this . native . leftClick ( ) ;
56
- await this . updateTick ( ) ;
57
53
resolve ( this ) ;
58
54
} ) ;
59
55
}
60
56
61
57
public async rightClick ( ) : Promise < Mouse > {
62
58
return new Promise < Mouse > ( async ( resolve , reject ) => {
63
59
try {
64
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
60
+ await sleep ( this . config . autoDelayMs ) ;
65
61
await this . native . rightClick ( ) ;
66
- await this . updateTick ( ) ;
67
62
resolve ( this ) ;
68
63
} catch ( e ) {
69
64
reject ( e ) ;
@@ -74,9 +69,8 @@ export class Mouse {
74
69
public async scrollDown ( amount : number ) : Promise < Mouse > {
75
70
return new Promise < Mouse > ( async ( resolve , reject ) => {
76
71
try {
77
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
72
+ await sleep ( this . config . autoDelayMs ) ;
78
73
await this . native . scrollDown ( amount ) ;
79
- await this . updateTick ( ) ;
80
74
resolve ( this ) ;
81
75
} catch ( e ) {
82
76
reject ( e ) ;
@@ -87,9 +81,8 @@ export class Mouse {
87
81
public async scrollUp ( amount : number ) : Promise < Mouse > {
88
82
return new Promise < Mouse > ( async ( resolve , reject ) => {
89
83
try {
90
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
84
+ await sleep ( this . config . autoDelayMs ) ;
91
85
await this . native . scrollUp ( amount ) ;
92
- await this . updateTick ( ) ;
93
86
resolve ( this ) ;
94
87
} catch ( e ) {
95
88
reject ( e ) ;
@@ -100,9 +93,8 @@ export class Mouse {
100
93
public async scrollLeft ( amount : number ) : Promise < Mouse > {
101
94
return new Promise < Mouse > ( async ( resolve , reject ) => {
102
95
try {
103
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
96
+ await sleep ( this . config . autoDelayMs ) ;
104
97
await this . native . scrollLeft ( amount ) ;
105
- await this . updateTick ( ) ;
106
98
resolve ( this ) ;
107
99
} catch ( e ) {
108
100
reject ( e ) ;
@@ -113,9 +105,8 @@ export class Mouse {
113
105
public async scrollRight ( amount : number ) : Promise < Mouse > {
114
106
return new Promise < Mouse > ( async ( resolve , reject ) => {
115
107
try {
116
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
108
+ await sleep ( this . config . autoDelayMs ) ;
117
109
await this . native . scrollRight ( amount ) ;
118
- await this . updateTick ( ) ;
119
110
resolve ( this ) ;
120
111
} catch ( e ) {
121
112
reject ( e ) ;
@@ -126,29 +117,14 @@ export class Mouse {
126
117
public async drag ( path : Point [ ] ) : Promise < Mouse > {
127
118
return new Promise < Mouse > ( async ( resolve , reject ) => {
128
119
try {
129
- await this . waitForNextTick ( this . config . autoDelayMs ) ;
120
+ await sleep ( this . config . autoDelayMs ) ;
130
121
await this . native . pressButton ( Button . LEFT ) ;
131
122
await this . move ( path ) ;
132
123
await this . native . releaseButton ( Button . LEFT ) ;
133
- await this . updateTick ( ) ;
134
124
resolve ( this ) ;
135
125
} catch ( e ) {
136
126
reject ( e ) ;
137
127
}
138
128
} ) ;
139
129
}
140
-
141
- private async updateTick ( ) {
142
- this . lastAction = Date . now ( ) ;
143
- }
144
-
145
- private async waitForNextTick ( minTime : number ) : Promise < void > {
146
- return new Promise < void > ( resolve => {
147
- let current = Date . now ( ) ;
148
- while ( current - this . lastAction < minTime ) {
149
- current = Date . now ( ) ;
150
- }
151
- resolve ( ) ;
152
- } ) ;
153
- }
154
130
}
0 commit comments