Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/core/models/MouseEventsTable.ts
1028 views
1
import { Database as SqliteDatabase } from 'better-sqlite3';
2
import SqliteTable from '@secret-agent/commons/SqliteTable';
3
import { IMouseEvent } from '@secret-agent/interfaces/IMouseEvent';
4
5
export default class MouseEventsTable extends SqliteTable<IMouseEventRecord> {
6
constructor(readonly db: SqliteDatabase) {
7
super(db, 'MouseEvents', [
8
['tabId', 'INTEGER'],
9
['frameId', 'INTEGER'],
10
['event', 'INTEGER'],
11
['commandId', 'INTEGER'],
12
['pageX', 'INTEGER'],
13
['pageY', 'INTEGER'],
14
['offsetX', 'INTEGER'],
15
['offsetY', 'INTEGER'],
16
['buttons', 'INTEGER'],
17
['targetNodeId', 'INTEGER'],
18
['relatedTargetNodeId', 'INTEGER'],
19
['timestamp', 'INTEGER'],
20
]);
21
}
22
23
public insert(tabId: number, frameId: number, commandId: number, mouseEvent: IMouseEvent) {
24
const [
25
event,
26
pageX,
27
pageY,
28
offsetX,
29
offsetY,
30
buttons,
31
targetNodeId,
32
relatedTargetNodeId,
33
timestamp,
34
] = mouseEvent;
35
const record = [
36
tabId,
37
frameId,
38
event,
39
commandId,
40
pageX,
41
pageY,
42
offsetX,
43
offsetY,
44
buttons,
45
targetNodeId,
46
relatedTargetNodeId,
47
timestamp,
48
];
49
this.queuePendingInsert(record);
50
}
51
}
52
53
export interface IMouseEventRecord {
54
tabId: number;
55
frameId: number;
56
event: MouseEventType;
57
commandId: number;
58
pageX: number;
59
pageY: number;
60
offsetX: number;
61
offsetY: number;
62
buttons: number;
63
targetNodeId?: number;
64
relatedTargetNodeId?: number;
65
timestamp: number;
66
}
67
68
export enum MouseEventType {
69
MOVE = 0,
70
DOWN = 1,
71
UP = 2,
72
OVER = 3,
73
OUT = 4,
74
}
75
76