illuma-rpa 1.0.0
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/.github/workflows/publish.yml +129 -0
- package/LICENSE +107 -0
- package/README.md +202 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/keyboard.d.ts +82 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +116 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/mouse.d.ts +61 -0
- package/dist/mouse.d.ts.map +1 -0
- package/dist/mouse.js +107 -0
- package/dist/mouse.js.map +1 -0
- package/dist/native.d.ts +63 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +91 -0
- package/dist/native.js.map +1 -0
- package/dist/screen.d.ts +39 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +43 -0
- package/dist/screen.js.map +1 -0
- package/dist/window.d.ts +61 -0
- package/dist/window.d.ts.map +1 -0
- package/dist/window.js +66 -0
- package/dist/window.js.map +1 -0
- package/libnut-core/CHANGELOG.md +122 -0
- package/libnut-core/LICENSE.md +201 -0
- package/libnut-core/README.md +26 -0
- package/libnut-core/index.d.ts +82 -0
- package/libnut-core/index.js +51 -0
- package/libnut-core/package-lock.json +1430 -0
- package/libnut-core/package.json +59 -0
- package/libnut-core/patch-packagename.js +18 -0
- package/libnut-core/permissionCheck.js +82 -0
- package/package.json +61 -0
- package/src/index.ts +10 -0
- package/src/keyboard.ts +125 -0
- package/src/mouse.ts +114 -0
- package/src/native.ts +103 -0
- package/src/screen.ts +59 -0
- package/src/window.ts +89 -0
- package/tsconfig.json +20 -0
package/dist/mouse.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mouse control module
|
|
3
|
+
*/
|
|
4
|
+
export interface Point {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
export type MouseButton = 'left' | 'right' | 'middle';
|
|
9
|
+
export declare class Mouse {
|
|
10
|
+
private delay;
|
|
11
|
+
/**
|
|
12
|
+
* Set delay between mouse actions (ms)
|
|
13
|
+
*/
|
|
14
|
+
setDelay(ms: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* Move mouse to absolute position
|
|
17
|
+
*/
|
|
18
|
+
moveTo(x: number, y: number): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Move mouse smoothly to position
|
|
21
|
+
*/
|
|
22
|
+
moveSmooth(x: number, y: number): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Click mouse button
|
|
25
|
+
*/
|
|
26
|
+
click(button?: MouseButton): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Double click
|
|
29
|
+
*/
|
|
30
|
+
doubleClick(button?: MouseButton): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Right click (convenience method)
|
|
33
|
+
*/
|
|
34
|
+
rightClick(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Press mouse button down
|
|
37
|
+
*/
|
|
38
|
+
down(button?: MouseButton): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Release mouse button
|
|
41
|
+
*/
|
|
42
|
+
up(button?: MouseButton): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Drag from current position to target
|
|
45
|
+
*/
|
|
46
|
+
drag(startX: number, startY: number, endX: number, endY: number): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Drag to target from current position
|
|
49
|
+
*/
|
|
50
|
+
dragTo(x: number, y: number): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Scroll mouse wheel
|
|
53
|
+
*/
|
|
54
|
+
scroll(direction: 'up' | 'down' | 'left' | 'right', amount?: number): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Get current mouse position
|
|
57
|
+
*/
|
|
58
|
+
getPosition(): Point;
|
|
59
|
+
}
|
|
60
|
+
export declare const mouse: Mouse;
|
|
61
|
+
//# sourceMappingURL=mouse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../src/mouse.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAM;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACG,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,KAAK,CAAC,MAAM,GAAE,WAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;OAEG;IACG,WAAW,CAAC,MAAM,GAAE,WAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,IAAI,CAAC,MAAM,GAAE,WAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACG,EAAE,CAAC,MAAM,GAAE,WAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrF;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5F;;OAEG;IACH,WAAW,IAAI,KAAK;CAGrB;AAGD,eAAO,MAAM,KAAK,OAAc,CAAC"}
|
package/dist/mouse.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mouse control module
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mouse = exports.Mouse = void 0;
|
|
7
|
+
const native_1 = require("./native");
|
|
8
|
+
class Mouse {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.delay = 10;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Set delay between mouse actions (ms)
|
|
14
|
+
*/
|
|
15
|
+
setDelay(ms) {
|
|
16
|
+
this.delay = ms;
|
|
17
|
+
(0, native_1.getNative)().setMouseDelay(ms);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Move mouse to absolute position
|
|
21
|
+
*/
|
|
22
|
+
async moveTo(x, y) {
|
|
23
|
+
(0, native_1.getNative)().moveMouse(x, y);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Move mouse smoothly to position
|
|
27
|
+
*/
|
|
28
|
+
async moveSmooth(x, y) {
|
|
29
|
+
(0, native_1.getNative)().moveMouseSmooth(x, y);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Click mouse button
|
|
33
|
+
*/
|
|
34
|
+
async click(button = 'left') {
|
|
35
|
+
(0, native_1.getNative)().mouseClick(button, false);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Double click
|
|
39
|
+
*/
|
|
40
|
+
async doubleClick(button = 'left') {
|
|
41
|
+
(0, native_1.getNative)().mouseClick(button, true);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Right click (convenience method)
|
|
45
|
+
*/
|
|
46
|
+
async rightClick() {
|
|
47
|
+
await this.click('right');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Press mouse button down
|
|
51
|
+
*/
|
|
52
|
+
async down(button = 'left') {
|
|
53
|
+
(0, native_1.getNative)().mouseToggle('down', button);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Release mouse button
|
|
57
|
+
*/
|
|
58
|
+
async up(button = 'left') {
|
|
59
|
+
(0, native_1.getNative)().mouseToggle('up', button);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Drag from current position to target
|
|
63
|
+
*/
|
|
64
|
+
async drag(startX, startY, endX, endY) {
|
|
65
|
+
await this.moveTo(startX, startY);
|
|
66
|
+
await this.down();
|
|
67
|
+
await this.moveTo(endX, endY);
|
|
68
|
+
await this.up();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Drag to target from current position
|
|
72
|
+
*/
|
|
73
|
+
async dragTo(x, y) {
|
|
74
|
+
(0, native_1.getNative)().dragMouse(x, y);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Scroll mouse wheel
|
|
78
|
+
*/
|
|
79
|
+
async scroll(direction, amount = 3) {
|
|
80
|
+
let x = 0, y = 0;
|
|
81
|
+
switch (direction) {
|
|
82
|
+
case 'up':
|
|
83
|
+
y = amount;
|
|
84
|
+
break;
|
|
85
|
+
case 'down':
|
|
86
|
+
y = -amount;
|
|
87
|
+
break;
|
|
88
|
+
case 'left':
|
|
89
|
+
x = -amount;
|
|
90
|
+
break;
|
|
91
|
+
case 'right':
|
|
92
|
+
x = amount;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
(0, native_1.getNative)().scrollMouse(x, y);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get current mouse position
|
|
99
|
+
*/
|
|
100
|
+
getPosition() {
|
|
101
|
+
return (0, native_1.getNative)().getMousePos();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.Mouse = Mouse;
|
|
105
|
+
// Export singleton instance
|
|
106
|
+
exports.mouse = new Mouse();
|
|
107
|
+
//# sourceMappingURL=mouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../src/mouse.ts"],"names":[],"mappings":"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"}
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native binding loader
|
|
3
|
+
* Automatically loads the correct platform-specific binary
|
|
4
|
+
*/
|
|
5
|
+
export interface NativeBinding {
|
|
6
|
+
setKeyboardDelay(ms: number): void;
|
|
7
|
+
keyTap(key: string, modifier?: string | string[]): void;
|
|
8
|
+
keyToggle(key: string, down: string, modifier?: string | string[]): void;
|
|
9
|
+
typeString(str: string): void;
|
|
10
|
+
typeStringDelayed(str: string, cpm: number): void;
|
|
11
|
+
setMouseDelay(delay: number): void;
|
|
12
|
+
moveMouse(x: number, y: number): void;
|
|
13
|
+
moveMouseSmooth(x: number, y: number): void;
|
|
14
|
+
mouseClick(button?: string, double?: boolean): void;
|
|
15
|
+
mouseToggle(down?: string, button?: string): void;
|
|
16
|
+
dragMouse(x: number, y: number): void;
|
|
17
|
+
scrollMouse(x: number, y: number): void;
|
|
18
|
+
getMousePos(): {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
};
|
|
22
|
+
getScreenSize(): {
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
};
|
|
26
|
+
screen: {
|
|
27
|
+
capture(x?: number, y?: number, width?: number, height?: number): {
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
image: Buffer;
|
|
31
|
+
byteWidth: number;
|
|
32
|
+
bitsPerPixel: number;
|
|
33
|
+
bytesPerPixel: number;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
getWindows(): number[];
|
|
37
|
+
getActiveWindow(): number;
|
|
38
|
+
getWindowRect(handle: number): {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
};
|
|
44
|
+
getWindowTitle(handle: number): string;
|
|
45
|
+
focusWindow(handle: number): void;
|
|
46
|
+
resizeWindow(handle: number, size: {
|
|
47
|
+
width: number;
|
|
48
|
+
height: number;
|
|
49
|
+
}): void;
|
|
50
|
+
moveWindow(handle: number, pos: {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
}): void;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Load the native binding for the current platform
|
|
57
|
+
*/
|
|
58
|
+
export declare function loadNativeBinding(): NativeBinding;
|
|
59
|
+
/**
|
|
60
|
+
* Get the native binding (lazy load)
|
|
61
|
+
*/
|
|
62
|
+
export declare function getNative(): NativeBinding;
|
|
63
|
+
//# sourceMappingURL=native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAE5B,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACzE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAGlD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,WAAW,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAGxC,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,MAAM,EAAE;QACN,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;YAChE,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IAGF,UAAU,IAAI,MAAM,EAAE,CAAC;IACvB,eAAe,IAAI,MAAM,CAAC;IAC1B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAID;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAuCjD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAKzC"}
|
package/dist/native.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Native binding loader
|
|
4
|
+
* Automatically loads the correct platform-specific binary
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.loadNativeBinding = loadNativeBinding;
|
|
41
|
+
exports.getNative = getNative;
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
let native = null;
|
|
44
|
+
/**
|
|
45
|
+
* Load the native binding for the current platform
|
|
46
|
+
*/
|
|
47
|
+
function loadNativeBinding() {
|
|
48
|
+
if (native) {
|
|
49
|
+
return native;
|
|
50
|
+
}
|
|
51
|
+
const platform = process.platform;
|
|
52
|
+
const arch = process.arch;
|
|
53
|
+
const packageName = `illuma-rpa-${platform}-${arch}`;
|
|
54
|
+
// Try loading from optional dependency
|
|
55
|
+
try {
|
|
56
|
+
native = require(packageName);
|
|
57
|
+
return native;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Fallback: try loading from local build
|
|
61
|
+
}
|
|
62
|
+
// Try loading from local libnut-core build
|
|
63
|
+
const localPaths = [
|
|
64
|
+
path.join(__dirname, '../libnut-core/build/Release/libnut.node'),
|
|
65
|
+
path.join(__dirname, '../../libnut-core/build/Release/libnut.node'),
|
|
66
|
+
path.join(process.cwd(), 'libnut-core/build/Release/libnut.node'),
|
|
67
|
+
];
|
|
68
|
+
for (const localPath of localPaths) {
|
|
69
|
+
try {
|
|
70
|
+
native = require(localPath);
|
|
71
|
+
return native;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Failed to load native binding for ${platform}-${arch}.\n` +
|
|
78
|
+
`Please ensure one of the following:\n` +
|
|
79
|
+
` 1. Install the platform package: npm install ${packageName}\n` +
|
|
80
|
+
` 2. Build from source: cd libnut-core && npm run build:release`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the native binding (lazy load)
|
|
84
|
+
*/
|
|
85
|
+
function getNative() {
|
|
86
|
+
if (!native) {
|
|
87
|
+
loadNativeBinding();
|
|
88
|
+
}
|
|
89
|
+
return native;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDH,8CAuCC;AAKD,8BAKC;AAjGD,2CAA6B;AA2C7B,IAAI,MAAM,GAAyB,IAAI,CAAC;AAExC;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,WAAW,GAAG,cAAc,QAAQ,IAAI,IAAI,EAAE,CAAC;IAErD,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,OAAO,MAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;IAED,2CAA2C;IAC3C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0CAA0C,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6CAA6C,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uCAAuC,CAAC;KAClE,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5B,OAAO,MAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,qCAAqC,QAAQ,IAAI,IAAI,KAAK;QAC1D,uCAAuC;QACvC,kDAAkD,WAAW,IAAI;QACjE,iEAAiE,CAClE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,MAAO,CAAC;AACjB,CAAC"}
|
package/dist/screen.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen capture module
|
|
3
|
+
*/
|
|
4
|
+
export interface Screenshot {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
image: Buffer;
|
|
8
|
+
byteWidth: number;
|
|
9
|
+
bitsPerPixel: number;
|
|
10
|
+
bytesPerPixel: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ScreenSize {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class Screen {
|
|
17
|
+
/**
|
|
18
|
+
* Capture the entire screen
|
|
19
|
+
*/
|
|
20
|
+
capture(): Promise<Screenshot>;
|
|
21
|
+
/**
|
|
22
|
+
* Capture a region of the screen
|
|
23
|
+
*/
|
|
24
|
+
captureRegion(x: number, y: number, width: number, height: number): Promise<Screenshot>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the screen size
|
|
27
|
+
*/
|
|
28
|
+
getSize(): ScreenSize;
|
|
29
|
+
/**
|
|
30
|
+
* Get screen width
|
|
31
|
+
*/
|
|
32
|
+
getWidth(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Get screen height
|
|
35
|
+
*/
|
|
36
|
+
getHeight(): number;
|
|
37
|
+
}
|
|
38
|
+
export declare const screen: Screen;
|
|
39
|
+
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAIpC;;OAEG;IACG,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7F;;OAEG;IACH,OAAO,IAAI,UAAU;IAIrB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
package/dist/screen.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Screen capture module
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.screen = exports.Screen = void 0;
|
|
7
|
+
const native_1 = require("./native");
|
|
8
|
+
class Screen {
|
|
9
|
+
/**
|
|
10
|
+
* Capture the entire screen
|
|
11
|
+
*/
|
|
12
|
+
async capture() {
|
|
13
|
+
return (0, native_1.getNative)().screen.capture();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Capture a region of the screen
|
|
17
|
+
*/
|
|
18
|
+
async captureRegion(x, y, width, height) {
|
|
19
|
+
return (0, native_1.getNative)().screen.capture(x, y, width, height);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the screen size
|
|
23
|
+
*/
|
|
24
|
+
getSize() {
|
|
25
|
+
return (0, native_1.getNative)().getScreenSize();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get screen width
|
|
29
|
+
*/
|
|
30
|
+
getWidth() {
|
|
31
|
+
return this.getSize().width;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get screen height
|
|
35
|
+
*/
|
|
36
|
+
getHeight() {
|
|
37
|
+
return this.getSize().height;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Screen = Screen;
|
|
41
|
+
// Export singleton instance
|
|
42
|
+
exports.screen = new Screen();
|
|
43
|
+
//# sourceMappingURL=screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAAqC;AAgBrC,MAAa,MAAM;IACjB;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAA,kBAAS,GAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QACrE,OAAO,IAAA,kBAAS,GAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAA,kBAAS,GAAE,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAnCD,wBAmCC;AAED,4BAA4B;AACf,QAAA,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
package/dist/window.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window management module
|
|
3
|
+
*/
|
|
4
|
+
export interface WindowInfo {
|
|
5
|
+
handle: number;
|
|
6
|
+
title: string;
|
|
7
|
+
bounds: {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface WindowBounds {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class Window {
|
|
21
|
+
/**
|
|
22
|
+
* Get the active (foreground) window
|
|
23
|
+
*/
|
|
24
|
+
getActive(): Promise<WindowInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* Get all window handles
|
|
27
|
+
*/
|
|
28
|
+
getAll(): Promise<number[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Get window info by handle
|
|
31
|
+
*/
|
|
32
|
+
getInfo(handle: number): Promise<WindowInfo>;
|
|
33
|
+
/**
|
|
34
|
+
* Get window title
|
|
35
|
+
*/
|
|
36
|
+
getTitle(handle: number): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Get window bounds
|
|
39
|
+
*/
|
|
40
|
+
getBounds(handle: number): Promise<WindowBounds>;
|
|
41
|
+
/**
|
|
42
|
+
* Focus a window
|
|
43
|
+
*/
|
|
44
|
+
focus(handle: number): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Resize a window
|
|
47
|
+
*/
|
|
48
|
+
resize(handle: number, size: {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Move a window
|
|
54
|
+
*/
|
|
55
|
+
move(handle: number, position: {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
}): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
export declare const window: Window;
|
|
61
|
+
//# sourceMappingURL=window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../src/window.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAOtC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMlD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAItD;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpF;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9E;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
package/dist/window.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Window management module
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.window = exports.Window = void 0;
|
|
7
|
+
const native_1 = require("./native");
|
|
8
|
+
class Window {
|
|
9
|
+
/**
|
|
10
|
+
* Get the active (foreground) window
|
|
11
|
+
*/
|
|
12
|
+
async getActive() {
|
|
13
|
+
const handle = (0, native_1.getNative)().getActiveWindow();
|
|
14
|
+
const title = (0, native_1.getNative)().getWindowTitle(handle);
|
|
15
|
+
const bounds = (0, native_1.getNative)().getWindowRect(handle);
|
|
16
|
+
return { handle, title, bounds };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get all window handles
|
|
20
|
+
*/
|
|
21
|
+
async getAll() {
|
|
22
|
+
return (0, native_1.getNative)().getWindows();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get window info by handle
|
|
26
|
+
*/
|
|
27
|
+
async getInfo(handle) {
|
|
28
|
+
const title = (0, native_1.getNative)().getWindowTitle(handle);
|
|
29
|
+
const bounds = (0, native_1.getNative)().getWindowRect(handle);
|
|
30
|
+
return { handle, title, bounds };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get window title
|
|
34
|
+
*/
|
|
35
|
+
async getTitle(handle) {
|
|
36
|
+
return (0, native_1.getNative)().getWindowTitle(handle);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get window bounds
|
|
40
|
+
*/
|
|
41
|
+
async getBounds(handle) {
|
|
42
|
+
return (0, native_1.getNative)().getWindowRect(handle);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Focus a window
|
|
46
|
+
*/
|
|
47
|
+
async focus(handle) {
|
|
48
|
+
(0, native_1.getNative)().focusWindow(handle);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resize a window
|
|
52
|
+
*/
|
|
53
|
+
async resize(handle, size) {
|
|
54
|
+
(0, native_1.getNative)().resizeWindow(handle, size);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Move a window
|
|
58
|
+
*/
|
|
59
|
+
async move(handle, position) {
|
|
60
|
+
(0, native_1.getNative)().moveWindow(handle, position);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.Window = Window;
|
|
64
|
+
// Export singleton instance
|
|
65
|
+
exports.window = new Window();
|
|
66
|
+
//# sourceMappingURL=window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../src/window.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAAqC;AAoBrC,MAAa,MAAM;IACjB;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAA,kBAAS,GAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,IAAA,kBAAS,GAAE,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,KAAK,GAAG,IAAA,kBAAS,GAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,OAAO,IAAA,kBAAS,GAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,IAAA,kBAAS,GAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,IAAA,kBAAS,GAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,IAAuC;QAClE,IAAA,kBAAS,GAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAkC;QAC3D,IAAA,kBAAS,GAAE,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;CACF;AA7DD,wBA6DC;AAED,4BAA4B;AACf,QAAA,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|