@intentic/desktop-automation 1.308.2 → 1.310.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/README.md +26 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/notice-windows.d.ts +5 -0
- package/dist/notice-windows.d.ts.map +1 -0
- package/dist/notice-windows.js +205 -0
- package/dist/notice-windows.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,7 +33,8 @@ testable, since a real click can only be verified by a human watching a screen.
|
|
|
33
33
|
**Windows**: PowerShell into `user32.dll`. `SetCursorPos` + `mouse_event` for the pointer, `keybd_event` for
|
|
34
34
|
chords, and `SendKeys` for text only. The split is deliberate: SendKeys is the only one that handles arbitrary
|
|
35
35
|
unicode sensibly, and the only one that *cannot press the Windows key*: so text uses it and chords do not.
|
|
36
|
-
Screen capture is `System.Drawing`. No install step, nothing left resident
|
|
36
|
+
Screen capture is `System.Drawing`. No install step, and nothing left resident but the helper of a notice that is
|
|
37
|
+
open (below).
|
|
37
38
|
|
|
38
39
|
**Linux**: two backends behind one interface. X11 lets any client synthesise input, so `xdotool` does
|
|
39
40
|
everything with no privileges. Wayland does not, so the pointer goes through `ydotool` (which needs
|
|
@@ -81,6 +82,30 @@ wlroots family (sway, Hyprland) answers `swaymsg -t get_tree` to anyone who can
|
|
|
81
82
|
supported; everything else gets a sentence explaining why, rather than an empty list that reads as "nothing is
|
|
82
83
|
open".
|
|
83
84
|
|
|
85
|
+
## A notice nothing driving the machine can touch
|
|
86
|
+
|
|
87
|
+
`notice(hotkey, events)` pins one line of text to the top of the display the pointer is on, for the person sitting
|
|
88
|
+
at the machine, while something else drives it ([src/notice-windows.ts](src/notice-windows.ts)). Windows only: elsewhere
|
|
89
|
+
it answers `undefined`, and the caller has nothing to show.
|
|
90
|
+
|
|
91
|
+
- **It is a hidden `powershell.exe` hosting a WinForms window**, alive exactly as long as the notice is open. It is
|
|
92
|
+
told `show <text>` or `quit` on stdin, and end of input is quit, so it dies with the process that opened it; it
|
|
93
|
+
answers `hotkey` and `hotkey-taken` on stdout. `close()` asks it to quit and kills it a second later if it has not.
|
|
94
|
+
- **It never takes focus**: `WS_EX_NOACTIVATE`, and it is shown with `SetWindowPos(SWP_NOACTIVATE | SWP_SHOWWINDOW)`
|
|
95
|
+
alone. Typing goes to the focused window, so a notice that took focus would take the next `type` with it. (Not
|
|
96
|
+
`ShowWindow`: a process's first call obeys the `SW_HIDE` a hidden spawn hands it, whatever it asks for.)
|
|
97
|
+
- **Every click goes through it** (`WS_EX_TRANSPARENT | WS_EX_LAYERED`), and it has no taskbar button or Alt+Tab
|
|
98
|
+
entry (`WS_EX_TOOLWINDOW`) and no title, so `windows()` does not list it either. It stays on top (`WS_EX_TOPMOST`,
|
|
99
|
+
re-asserted on every `show`).
|
|
100
|
+
- **It is left out of every screen capture**, `capture()` included: `SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE)`.
|
|
101
|
+
A helper Windows refuses that to quits rather than show a notice that would cover part of the next screenshot.
|
|
102
|
+
- **The hotkey is `RegisterHotKey` on that window**, in this package's key vocabulary (`"Ctrl+Alt+Shift+P"`), so it
|
|
103
|
+
works exactly while the notice is open. When another program already holds it, `hotkeyTaken` says so.
|
|
104
|
+
|
|
105
|
+
The window's C# is C# 5, the newest Windows PowerShell 5.1 compiles. What it asks Windows for is pinned by
|
|
106
|
+
[src/notice-windows.test.ts](src/notice-windows.test.ts); whether Windows honours it is for a person at a Windows
|
|
107
|
+
screen to see.
|
|
108
|
+
|
|
84
109
|
## Two details worth knowing
|
|
85
110
|
|
|
86
111
|
**Coordinates are screenshot pixels.** `frame()` also reports the virtual desktop's `origin`, which is not
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { type Desktop } from "./types.js";
|
|
1
|
+
import { type Desktop, type Notice, type NoticeEvents } from "./types.js";
|
|
2
2
|
export { windowsSession } from "./apps-windows.js";
|
|
3
3
|
export { parseChord, windowsChord, wtypeArgs, xdotoolChord, type Chord, type Modifier } from "./keys.js";
|
|
4
4
|
export { focusRefusal, looksLikeUrl, parseSessionJson, parseSwayTree, parseWindowsJson, parseWmctrl } from "./parse.js";
|
|
5
5
|
export { capture, frame, hasGraphicalSession, isWayland, pngSize } from "./screen.js";
|
|
6
|
-
export { DesktopError, type Desktop, type ForegroundWindow, type MouseButton, type Point, type ScreenFrame, type ScrollDirection, type SessionState, type WindowInfo, } from "./types.js";
|
|
6
|
+
export { DesktopError, type Desktop, type ForegroundWindow, type MouseButton, type Notice, type NoticeEvents, type Point, type ScreenFrame, type ScrollDirection, type SessionState, type WindowInfo, } from "./types.js";
|
|
7
7
|
export declare const desktop: () => Desktop;
|
|
8
|
+
export declare const notice: (hotkey: string, events: NoticeEvents) => Notice | undefined;
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,OAAO,EAAgB,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACH,YAAY,EACZ,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,GAClB,MAAM,YAAY,CAAC;AAUpB,eAAO,MAAM,OAAO,QAAO,OAkC1B,CAAC;AAGF,eAAO,MAAM,MAAM,WAAY,MAAM,UAAU,YAAY,KAAG,MAAM,GAAG,SACK,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { linuxApps } from "./apps-linux.js";
|
|
|
2
2
|
import { windowsApps } from "./apps-windows.js";
|
|
3
3
|
import { linuxInput } from "./input-linux.js";
|
|
4
4
|
import { windowsInput } from "./input-windows.js";
|
|
5
|
+
import { windowsNotice } from "./notice-windows.js";
|
|
5
6
|
import { capture, frame } from "./screen.js";
|
|
6
7
|
import { DesktopError } from "./types.js";
|
|
7
8
|
export { windowsSession } from "./apps-windows.js";
|
|
@@ -47,4 +48,5 @@ export const desktop = () => {
|
|
|
47
48
|
writeClipboard: unsupported,
|
|
48
49
|
};
|
|
49
50
|
};
|
|
51
|
+
export const notice = (hotkey, events) => process.platform === "win32" ? windowsNotice(hotkey, events) : undefined;
|
|
50
52
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Notice, NoticeEvents } from "./types.js";
|
|
2
|
+
export declare const noticeScript: (hotkey: string) => string;
|
|
3
|
+
export declare const spawnNotice: (command: string, args: readonly string[], events: NoticeEvents) => Notice;
|
|
4
|
+
export declare const windowsNotice: (hotkey: string, events: NoticeEvents) => Notice;
|
|
5
|
+
//# sourceMappingURL=notice-windows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice-windows.d.ts","sourceRoot":"","sources":["../src/notice-windows.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuJvD,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,MAS7C,CAAC;AAOF,eAAO,MAAM,WAAW,YAAa,MAAM,QAAQ,SAAS,MAAM,EAAE,UAAU,YAAY,KAAG,MAoD5F,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,MAAM,UAAU,YAAY,KAAG,MACyC,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createInterface } from "node:readline";
|
|
3
|
+
import { parseChord, windowsChord } from "./keys.js";
|
|
4
|
+
const MOD = { alt: 0x1, ctrl: 0x2, shift: 0x4, super: 0x8 };
|
|
5
|
+
const QUIT_GRACE_MS = 1_000;
|
|
6
|
+
const PILL = `
|
|
7
|
+
using System;
|
|
8
|
+
using System.Drawing;
|
|
9
|
+
using System.IO;
|
|
10
|
+
using System.Runtime.InteropServices;
|
|
11
|
+
using System.Text;
|
|
12
|
+
using System.Threading;
|
|
13
|
+
using System.Windows.Forms;
|
|
14
|
+
|
|
15
|
+
namespace IntenticNotice {
|
|
16
|
+
public class Pill : Form {
|
|
17
|
+
const int WS_EX_TOPMOST = 0x00000008;
|
|
18
|
+
const int WS_EX_TRANSPARENT = 0x00000020;
|
|
19
|
+
const int WS_EX_TOOLWINDOW = 0x00000080;
|
|
20
|
+
const int WS_EX_APPWINDOW = 0x00040000;
|
|
21
|
+
const int WS_EX_LAYERED = 0x00080000;
|
|
22
|
+
const int WS_EX_NOACTIVATE = 0x08000000;
|
|
23
|
+
const uint WDA_EXCLUDEFROMCAPTURE = 0x00000011;
|
|
24
|
+
const uint LWA_ALPHA = 0x00000002;
|
|
25
|
+
const uint MOD_NOREPEAT = 0x00004000;
|
|
26
|
+
const int WM_HOTKEY = 0x0312;
|
|
27
|
+
const int HOTKEY_ID = 1;
|
|
28
|
+
const uint SWP_NOACTIVATE = 0x0010;
|
|
29
|
+
const uint SWP_SHOWWINDOW = 0x0040;
|
|
30
|
+
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
|
|
31
|
+
|
|
32
|
+
[DllImport("user32.dll", SetLastError = true)] static extern bool SetWindowDisplayAffinity(IntPtr window, uint affinity);
|
|
33
|
+
[DllImport("user32.dll")] static extern bool SetLayeredWindowAttributes(IntPtr window, uint colorKey, byte alpha, uint flags);
|
|
34
|
+
[DllImport("user32.dll")] static extern bool RegisterHotKey(IntPtr window, int id, uint modifiers, uint key);
|
|
35
|
+
[DllImport("user32.dll")] static extern bool SetWindowPos(IntPtr window, IntPtr after, int x, int y, int width, int height, uint flags);
|
|
36
|
+
[DllImport("user32.dll")] static extern int SetWindowRgn(IntPtr window, IntPtr region, bool redraw);
|
|
37
|
+
[DllImport("gdi32.dll")] static extern IntPtr CreateRoundRectRgn(int left, int top, int right, int bottom, int width, int height);
|
|
38
|
+
[DllImport("user32.dll")] static extern bool SetProcessDPIAware();
|
|
39
|
+
|
|
40
|
+
readonly uint modifiers;
|
|
41
|
+
readonly uint key;
|
|
42
|
+
string text = "";
|
|
43
|
+
Rectangle? area;
|
|
44
|
+
|
|
45
|
+
Pill(uint modifiers, uint key) {
|
|
46
|
+
this.modifiers = modifiers;
|
|
47
|
+
this.key = key;
|
|
48
|
+
FormBorderStyle = FormBorderStyle.None;
|
|
49
|
+
ShowInTaskbar = false;
|
|
50
|
+
StartPosition = FormStartPosition.Manual;
|
|
51
|
+
BackColor = Color.FromArgb(32, 33, 36);
|
|
52
|
+
ForeColor = Color.White;
|
|
53
|
+
Font = new Font("Segoe UI Semibold", 10f);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected override bool ShowWithoutActivation { get { return true; } }
|
|
57
|
+
|
|
58
|
+
protected override CreateParams CreateParams {
|
|
59
|
+
get {
|
|
60
|
+
CreateParams created = base.CreateParams;
|
|
61
|
+
created.ExStyle |= WS_EX_NOACTIVATE | WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOOLWINDOW | WS_EX_TOPMOST;
|
|
62
|
+
created.ExStyle &= ~WS_EX_APPWINDOW;
|
|
63
|
+
return created;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
protected override void OnHandleCreated(EventArgs e) {
|
|
68
|
+
base.OnHandleCreated(e);
|
|
69
|
+
SetLayeredWindowAttributes(Handle, 0, 235, LWA_ALPHA);
|
|
70
|
+
if (!SetWindowDisplayAffinity(Handle, WDA_EXCLUDEFROMCAPTURE)) {
|
|
71
|
+
Quit("Windows would not keep the notice out of screen captures (error " + Marshal.GetLastWin32Error() + ").");
|
|
72
|
+
}
|
|
73
|
+
if (!RegisterHotKey(Handle, HOTKEY_ID, modifiers | MOD_NOREPEAT, key)) {
|
|
74
|
+
Say("hotkey-taken");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
protected override void WndProc(ref Message message) {
|
|
79
|
+
if (message.Msg == WM_HOTKEY && message.WParam.ToInt32() == HOTKEY_ID) {
|
|
80
|
+
Say("hotkey");
|
|
81
|
+
}
|
|
82
|
+
base.WndProc(ref message);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
protected override void OnPaint(PaintEventArgs e) {
|
|
86
|
+
TextRenderer.DrawText(e.Graphics, text, Font, ClientRectangle, ForeColor,
|
|
87
|
+
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.SingleLine | TextFormatFlags.NoPrefix);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void Pin(string next) {
|
|
91
|
+
text = next;
|
|
92
|
+
if (area == null) {
|
|
93
|
+
area = Screen.FromPoint(Cursor.Position).WorkingArea;
|
|
94
|
+
}
|
|
95
|
+
Rectangle screen = area.Value;
|
|
96
|
+
Size measured = TextRenderer.MeasureText(text, Font);
|
|
97
|
+
int height = measured.Height + Font.Height;
|
|
98
|
+
int width = measured.Width + 2 * Font.Height;
|
|
99
|
+
SetWindowRgn(Handle, CreateRoundRectRgn(0, 0, width + 1, height + 1, height, height), true);
|
|
100
|
+
SetWindowPos(Handle, HWND_TOPMOST, screen.X + (screen.Width - width) / 2, screen.Y + Font.Height, width, height, SWP_NOACTIVATE | SWP_SHOWWINDOW);
|
|
101
|
+
Invalidate();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static void Say(string line) {
|
|
105
|
+
Console.Out.WriteLine(line);
|
|
106
|
+
Console.Out.Flush();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static void Quit(string why) {
|
|
110
|
+
Console.Error.WriteLine(why);
|
|
111
|
+
Environment.Exit(1);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
public static void Run(uint modifiers, uint key) {
|
|
115
|
+
SetProcessDPIAware();
|
|
116
|
+
Application.ThreadException += delegate(object sender, ThreadExceptionEventArgs e) { Quit(e.Exception.Message); };
|
|
117
|
+
Pill pill = new Pill(modifiers, key);
|
|
118
|
+
if (pill.Handle == IntPtr.Zero) {
|
|
119
|
+
Quit("The notice's window could not be created.");
|
|
120
|
+
}
|
|
121
|
+
Thread reader = new Thread(delegate() {
|
|
122
|
+
try {
|
|
123
|
+
StreamReader input = new StreamReader(Console.OpenStandardInput(), new UTF8Encoding(false));
|
|
124
|
+
for (string line = input.ReadLine(); line != null && line != "quit"; line = input.ReadLine()) {
|
|
125
|
+
if (line.StartsWith("show ", StringComparison.Ordinal)) {
|
|
126
|
+
string next = line.Substring(5);
|
|
127
|
+
pill.BeginInvoke(new MethodInvoker(delegate() { pill.Pin(next); }));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
} catch (IOException) {
|
|
131
|
+
}
|
|
132
|
+
pill.BeginInvoke(new MethodInvoker(Application.ExitThread));
|
|
133
|
+
});
|
|
134
|
+
reader.IsBackground = true;
|
|
135
|
+
reader.Start();
|
|
136
|
+
Application.Run();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
export const noticeScript = (hotkey) => {
|
|
142
|
+
const modifiers = parseChord(hotkey).modifiers.reduce((bits, modifier) => bits | MOD[modifier], 0);
|
|
143
|
+
return [
|
|
144
|
+
"$ErrorActionPreference = 'Stop'",
|
|
145
|
+
"$ProgressPreference = 'SilentlyContinue'",
|
|
146
|
+
"Add-Type -AssemblyName System.Windows.Forms, System.Drawing",
|
|
147
|
+
`Add-Type -ReferencedAssemblies System.Windows.Forms, System.Drawing -IgnoreWarnings -TypeDefinition @'${PILL}'@`,
|
|
148
|
+
`[IntenticNotice.Pill]::Run(${modifiers}, ${windowsChord(hotkey).key})`,
|
|
149
|
+
].join("\n");
|
|
150
|
+
};
|
|
151
|
+
const running = new Set();
|
|
152
|
+
let hooked = false;
|
|
153
|
+
export const spawnNotice = (command, args, events) => {
|
|
154
|
+
if (!hooked) {
|
|
155
|
+
hooked = true;
|
|
156
|
+
process.on("exit", () => running.forEach((helper) => helper.kill()));
|
|
157
|
+
}
|
|
158
|
+
const child = spawn(command, [...args], { windowsHide: true, stdio: "pipe" });
|
|
159
|
+
running.add(child);
|
|
160
|
+
let over = false;
|
|
161
|
+
let said = "";
|
|
162
|
+
const kill = () => void child.kill();
|
|
163
|
+
const gone = (why) => {
|
|
164
|
+
running.delete(child);
|
|
165
|
+
if (over) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
over = true;
|
|
169
|
+
events.exited(why);
|
|
170
|
+
};
|
|
171
|
+
child.on("error", (error) => gone(error.message));
|
|
172
|
+
child.on("close", (code) => gone(said.trim().replace(/\s+/g, " ") || `it exited with code ${code}`));
|
|
173
|
+
child.stdin.on("error", kill);
|
|
174
|
+
child.stderr.setEncoding("utf8").on("data", (chunk) => {
|
|
175
|
+
said = `${said}${chunk}`.slice(-2_000);
|
|
176
|
+
});
|
|
177
|
+
createInterface({ input: child.stdout }).on("line", (line) => {
|
|
178
|
+
if (over) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (line === "hotkey") {
|
|
182
|
+
events.hotkey();
|
|
183
|
+
}
|
|
184
|
+
else if (line === "hotkey-taken") {
|
|
185
|
+
events.hotkeyTaken();
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return {
|
|
189
|
+
show: (text) => {
|
|
190
|
+
if (!over) {
|
|
191
|
+
child.stdin.write(`show ${text.replace(/\s+/g, " ")}\n`);
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
close: () => {
|
|
195
|
+
if (over) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
over = true;
|
|
199
|
+
child.stdin.end("quit\n");
|
|
200
|
+
setTimeout(kill, QUIT_GRACE_MS).unref();
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
export const windowsNotice = (hotkey, events) => spawnNotice("powershell.exe", ["-NoProfile", "-NonInteractive", "-Command", noticeScript(hotkey)], events);
|
|
205
|
+
//# sourceMappingURL=notice-windows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice-windows.js","sourceRoot":"","sources":["../src/notice-windows.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -46,6 +46,15 @@ export interface Desktop {
|
|
|
46
46
|
readonly readClipboard: () => Promise<string>;
|
|
47
47
|
readonly writeClipboard: (text: string) => Promise<void>;
|
|
48
48
|
}
|
|
49
|
+
export interface Notice {
|
|
50
|
+
readonly show: (text: string) => void;
|
|
51
|
+
readonly close: () => void;
|
|
52
|
+
}
|
|
53
|
+
export interface NoticeEvents {
|
|
54
|
+
readonly hotkey: () => void;
|
|
55
|
+
readonly hotkeyTaken: () => void;
|
|
56
|
+
readonly exited: (said: string) => void;
|
|
57
|
+
}
|
|
49
58
|
export declare class DesktopError extends Error {
|
|
50
59
|
readonly install: string | undefined;
|
|
51
60
|
constructor(message: string, install?: string);
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+FA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC1B,OAAO,CAAqB;IACrC,YAAY,OAAe,EAAE,OAAgB;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/desktop-automation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.310.0",
|
|
4
4
|
"description": "Drive a desktop from Node: capture the screen, move the pointer, click, type and scroll, Windows and Linux, no native modules",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|