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.
Files changed (44) hide show
  1. package/.github/workflows/publish.yml +129 -0
  2. package/LICENSE +107 -0
  3. package/README.md +202 -0
  4. package/dist/index.d.ts +10 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +23 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/keyboard.d.ts +82 -0
  9. package/dist/keyboard.d.ts.map +1 -0
  10. package/dist/keyboard.js +116 -0
  11. package/dist/keyboard.js.map +1 -0
  12. package/dist/mouse.d.ts +61 -0
  13. package/dist/mouse.d.ts.map +1 -0
  14. package/dist/mouse.js +107 -0
  15. package/dist/mouse.js.map +1 -0
  16. package/dist/native.d.ts +63 -0
  17. package/dist/native.d.ts.map +1 -0
  18. package/dist/native.js +91 -0
  19. package/dist/native.js.map +1 -0
  20. package/dist/screen.d.ts +39 -0
  21. package/dist/screen.d.ts.map +1 -0
  22. package/dist/screen.js +43 -0
  23. package/dist/screen.js.map +1 -0
  24. package/dist/window.d.ts +61 -0
  25. package/dist/window.d.ts.map +1 -0
  26. package/dist/window.js +66 -0
  27. package/dist/window.js.map +1 -0
  28. package/libnut-core/CHANGELOG.md +122 -0
  29. package/libnut-core/LICENSE.md +201 -0
  30. package/libnut-core/README.md +26 -0
  31. package/libnut-core/index.d.ts +82 -0
  32. package/libnut-core/index.js +51 -0
  33. package/libnut-core/package-lock.json +1430 -0
  34. package/libnut-core/package.json +59 -0
  35. package/libnut-core/patch-packagename.js +18 -0
  36. package/libnut-core/permissionCheck.js +82 -0
  37. package/package.json +61 -0
  38. package/src/index.ts +10 -0
  39. package/src/keyboard.ts +125 -0
  40. package/src/mouse.ts +114 -0
  41. package/src/native.ts +103 -0
  42. package/src/screen.ts +59 -0
  43. package/src/window.ts +89 -0
  44. package/tsconfig.json +20 -0
@@ -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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"}
@@ -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"}
@@ -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"}
@@ -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"}