@desklink/host 0.1.0 → 0.2.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/NOTICE +3 -0
- package/README.md +72 -16
- package/bin/desklink-host.mjs +14 -3
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +5 -1
- package/dist/bridge.js.map +1 -1
- package/dist/engineProcess.d.ts.map +1 -1
- package/dist/engineProcess.js +17 -5
- package/dist/engineProcess.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keeper.d.ts +52 -0
- package/dist/keeper.d.ts.map +1 -0
- package/dist/keeper.js +101 -0
- package/dist/keeper.js.map +1 -0
- package/dist/protocol.d.ts +42 -5
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/resolveEngine.d.ts +3 -2
- package/dist/resolveEngine.d.ts.map +1 -1
- package/dist/resolveEngine.js +20 -5
- package/dist/resolveEngine.js.map +1 -1
- package/docs/BOUNDARY.md +11 -6
- package/docs/PROTOCOL.md +297 -33
- package/engine/Cargo.lock +196 -1
- package/engine/Cargo.toml +26 -5
- package/engine/build.rs +98 -23
- package/engine/native/agent_overlay_mac.m +133 -0
- package/engine/native/agent_overlay_wayland.c +192 -0
- package/engine/native/agent_overlay_x11.c +103 -0
- package/engine/native/mac_stream.mm +188 -0
- package/engine/src/capture.rs +169 -19
- package/engine/src/capture_mac.rs +145 -0
- package/engine/src/clipboard_mac.rs +182 -0
- package/engine/src/convert.rs +57 -1
- package/engine/src/indicator.rs +162 -0
- package/engine/src/input.rs +12 -0
- package/engine/src/input_mac.rs +312 -0
- package/engine/src/keeper.rs +622 -0
- package/engine/src/keymap.rs +25 -0
- package/engine/src/keymap_mac.rs +209 -0
- package/engine/src/mac.rs +722 -0
- package/engine/src/main.rs +158 -2
- package/engine/src/peer.rs +429 -22
- package/engine/src/portal.rs +4 -0
- package/engine/src/portal_mac.rs +68 -0
- package/engine/src/protocol.rs +186 -3
- package/engine/src/session.rs +1307 -100
- package/engine/src/x11.rs +23 -3
- package/engine/src/x11_mac.rs +40 -0
- package/examples/reference-client.html +33 -4
- package/package.json +2 -2
package/NOTICE
CHANGED
|
@@ -30,6 +30,9 @@ licences.
|
|
|
30
30
|
The client library the engine uses to read the portal's stream.
|
|
31
31
|
|
|
32
32
|
wayland / wayland-protocols MIT
|
|
33
|
+
wlr-layer-shell-unstable-v1 MIT (Copyright 2017 Drew DeVault)
|
|
34
|
+
The small protocol interface declarations in native/agent_overlay_wayland.c
|
|
35
|
+
carry their own permission and warranty notice.
|
|
33
36
|
xkbcommon MIT
|
|
34
37
|
Keyboard layout lookup.
|
|
35
38
|
|
package/README.md
CHANGED
|
@@ -11,10 +11,14 @@ particular application.
|
|
|
11
11
|
|
|
12
12
|
## What it does
|
|
13
13
|
|
|
14
|
+
The engine supports Linux and macOS desktop sessions; macOS currently requires
|
|
15
|
+
a source build with a static VP9 library.
|
|
16
|
+
|
|
14
17
|
- **Capture** through the XDG Desktop Portal (`ScreenCast`) and PipeWire, with
|
|
15
|
-
compositor consent,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
compositor consent, from an explicitly selected X display's root window, or
|
|
19
|
+
from a selected macOS display through ScreenCaptureKit. The macOS backend
|
|
20
|
+
currently requests images at the session frame cap; the source may supply fewer
|
|
21
|
+
frames. The portal path asks for shared-memory buffers rather than DMA-BUFs.
|
|
18
22
|
- **Encode** VP9 with libvpx in real time, single pass, no lookahead: one frame
|
|
19
23
|
in, one packet out. Software by default, because a hardware encoder would put a
|
|
20
24
|
vendor driver dependency on every machine class. Tuned for a desktop: the
|
|
@@ -23,13 +27,18 @@ particular application.
|
|
|
23
27
|
re-codes a still desktop once at a fine quantizer so it reads sharp.
|
|
24
28
|
- **Transport** with WebRTC — ICE, DTLS, SRTP, RTP — and one data channel for the
|
|
25
29
|
session's pointer/keyboard/clipboard.
|
|
30
|
+
- **Carry** video the consumer encoded itself, on an `encoded` source: Annex-B
|
|
31
|
+
H.264 access units arrive as they are produced, and the session's pointer,
|
|
32
|
+
keyboard and wheel messages come back to the consumer as events instead of
|
|
33
|
+
being applied. This is for a stream whose encoder lives elsewhere — a phone
|
|
34
|
+
mirror from a device helper — so the helper keeps its own hardware encoder and
|
|
35
|
+
the engine keeps the WebRTC path. See `docs/PROTOCOL.md`.
|
|
26
36
|
- **Input** through [inputtino](https://github.com/games-on-whales/inputtino)
|
|
27
|
-
(MIT) over `uinput`/`libevdev` for portal capture,
|
|
28
|
-
|
|
37
|
+
(MIT) over `uinput`/`libevdev` for portal capture, XTest for an X display, or
|
|
38
|
+
Quartz events on macOS. Held input is released when the session ends.
|
|
29
39
|
- **Clipboard** explicitly, in both directions, only when asked. It is never
|
|
30
40
|
polled and never used as a hidden way to type. On Wayland, writes require
|
|
31
|
-
`wl-copy` from `wl-clipboard`;
|
|
32
|
-
available after the desktop session ends, until another app replaces it.
|
|
41
|
+
`wl-copy` from `wl-clipboard`; macOS uses the plain-text general pasteboard.
|
|
33
42
|
|
|
34
43
|
## What it deliberately does not do
|
|
35
44
|
|
|
@@ -54,8 +63,8 @@ platform package `@desklink/host-linux-x64-gnu`, which carries the prebuilt
|
|
|
54
63
|
engine, and `resolveEngine()` finds it there. No Rust toolchain, compiler or
|
|
55
64
|
install script is involved, so `--ignore-scripts` installs work. The engine
|
|
56
65
|
requires the system's `libpipewire-0.3.so.0`, `libxkbcommon.so.0`,
|
|
57
|
-
`libevdev.so.2
|
|
58
|
-
desktop). If one is missing, the host reports `missing system library: <name>`
|
|
66
|
+
`libevdev.so.2`, `libstdc++.so.6`, `libXcursor.so.1`, `libX11.so.6`, and
|
|
67
|
+
`libwayland-client.so.0` (normally supplied by a modern Linux desktop). If one is missing, the host reports `missing system library: <name>`
|
|
59
68
|
with code `missing-system-library` rather than failing silently; it does not
|
|
60
69
|
bundle these system libraries. libvpx and inputtino are linked into the engine.
|
|
61
70
|
|
|
@@ -63,8 +72,45 @@ The one step no install does for you is [kernel input access](#kernel-input-acce
|
|
|
63
72
|
and only the portal backend needs it.
|
|
64
73
|
|
|
65
74
|
There is no prebuilt engine for any other platform. Another Linux (arm64, musl)
|
|
66
|
-
can [build it from source](#building-from-source).
|
|
67
|
-
|
|
75
|
+
can [build it from source](#building-from-source). Windows remains unsupported.
|
|
76
|
+
|
|
77
|
+
### macOS
|
|
78
|
+
|
|
79
|
+
The macOS engine shares protocol v3's WebRTC session path: selected-display
|
|
80
|
+
ScreenCaptureKit capture, VP9 encoding, Quartz pointer/keyboard events, and
|
|
81
|
+
plain-text NSPasteboard operations. `capabilities` is non-prompting; `session.open`
|
|
82
|
+
requests Screen Recording and, for control, Accessibility consent when needed.
|
|
83
|
+
For persistent grants, install the signed `DesklinkHost.app` at one fixed path.
|
|
84
|
+
Build the engine on the Mac, then run
|
|
85
|
+
`release/install-mac-app.sh <engine> <absolute path to DesklinkHost.app> [existing signing PEM]`
|
|
86
|
+
from this package. It prefers a usable Developer ID Application or Apple
|
|
87
|
+
Development identity in the login keychain; otherwise it imports the supplied
|
|
88
|
+
existing certificate/key (to preserve existing grants), or creates one local
|
|
89
|
+
certificate/key in `~/Library/Application Support/Desklink/signing.pem`, and
|
|
90
|
+
trusts it in the login keychain. Unlock the login keychain in the Mac GUI if
|
|
91
|
+
import or trust asks; never supply a person's password to automation. Do not
|
|
92
|
+
regenerate that identity, move the app, or replace and re-sign its executable
|
|
93
|
+
per run. Rebuild, install once at the **same path** with the same identity, and
|
|
94
|
+
verify `codesign -dv --verbose=4 <app>` and `codesign -dr - <app>`; the designated
|
|
95
|
+
requirement must be certificate-based, not a cdhash requirement. Signatures
|
|
96
|
+
made from the same certificate have a stable designated requirement even when
|
|
97
|
+
the binary hash changes. The app does not pre-seed or bypass TCC. Launch it
|
|
98
|
+
from the logged-in Mac session, grant **Screen & System Audio Recording** and
|
|
99
|
+
**Accessibility** to DesklinkHost once in System Settings, then launch twice
|
|
100
|
+
and check `log show --last 5m --predicate 'process == "tccd"'` for new denials.
|
|
101
|
+
TCC belongs to the responsible app: launching the unsigned CLI or a Node
|
|
102
|
+
bridge from SSH/Terminal can instead request grants for Node or Terminal.
|
|
103
|
+
macOS currently uses a US ANSI virtual-key map for character chords (the
|
|
104
|
+
current input layout is diagnostic); free-form text uses Unicode key events.
|
|
105
|
+
|
|
106
|
+
The published engine is an **unsigned macOS arm64 CLI** in the optional
|
|
107
|
+
`@desklink/host-darwin-arm64` platform package; no Developer ID identity or
|
|
108
|
+
notarization is required. The macOS engine remains opt-in (`DESKLINK_MACOS=1`).
|
|
109
|
+
To build and pack it, build on an Apple Silicon Mac with Rust 1.97+ and static
|
|
110
|
+
Homebrew libvpx, then run `release/build-engine-macos-arm64.sh` and
|
|
111
|
+
`node release/pack.mjs --engine dist-desklink/engine-darwin-arm64 --platform darwin-arm64`.
|
|
112
|
+
The app-bundled signed harness is for local TCC qualification, not npm
|
|
113
|
+
installation. See the [macOS protocol](docs/PROTOCOL.md#macos).
|
|
68
114
|
|
|
69
115
|
Point `MUXR_DESKLINK_ENGINE` at a binary built elsewhere if you have one. The
|
|
70
116
|
package never searches `PATH` for a same-named program: "a binary called
|
|
@@ -80,9 +126,15 @@ cargo build --release --manifest-path engine/Cargo.toml
|
|
|
80
126
|
./bin/desklink-host.mjs capabilities
|
|
81
127
|
```
|
|
82
128
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
129
|
+
On macOS, prefix the launcher commands with `DESKLINK_MACOS=1` to resolve the
|
|
130
|
+
local candidate. The app-bundled dev harness is not the npm package; a source
|
|
131
|
+
build is an unsigned CLI and its TCC permissions are attributed to the
|
|
132
|
+
responsible launching app.
|
|
133
|
+
|
|
134
|
+
On Linux, a source build links system libraries through `pkg-config` (and
|
|
135
|
+
libxcb directly), compiles `native/vpx_shim.c` against libvpx's headers, and
|
|
136
|
+
builds the vendored inputtino project with CMake. On a clean Linux machine,
|
|
137
|
+
install:
|
|
86
138
|
|
|
87
139
|
| Need | Debian/Ubuntu | Fedora | Arch |
|
|
88
140
|
|---|---|---|---|
|
|
@@ -95,13 +147,17 @@ the vendored inputtino project with CMake. On a clean machine, install:
|
|
|
95
147
|
| Wayland (`wayland-client`) | `libwayland-dev` | `wayland-devel` | `wayland` |
|
|
96
148
|
| libevdev | `libevdev-dev` | `libevdev-devel` | `libevdev` |
|
|
97
149
|
| libxcb (source/container builds only) | `libxcb1-dev` | `libxcb-devel` | `libxcb` |
|
|
150
|
+
| Xcursor | `libxcursor-dev` | `libXcursor-devel` | `libxcursor` |
|
|
98
151
|
|
|
99
152
|
These are build prerequisites, not additional runtime requirements for the
|
|
100
153
|
prebuilt package; in particular, libxcb is not a prebuilt runtime requirement.
|
|
101
154
|
Nothing is downloaded by the build itself. The engine step in `yarn run check`
|
|
102
155
|
skips with a list of missing prerequisites when any of these is absent; direct
|
|
103
156
|
`cargo test --manifest-path engine/Cargo.toml` does not skip and needs them
|
|
104
|
-
installed. Only a machine with all of them compiles and tests the crate.
|
|
157
|
+
installed. Only a Linux machine with all of them compiles and tests the crate.
|
|
158
|
+
On macOS the source build does not use these Linux native libraries or shims;
|
|
159
|
+
run `cargo test --bin desklink-host --manifest-path engine/Cargo.toml` for its
|
|
160
|
+
binary tests (the full test command also builds a Linux-only example).
|
|
105
161
|
|
|
106
162
|
### Kernel input access
|
|
107
163
|
|
|
@@ -125,7 +181,7 @@ session instead uses XTest and does not need `/dev/uinput`.
|
|
|
125
181
|
|
|
126
182
|
## Licence and provenance
|
|
127
183
|
|
|
128
|
-
Apache-2.0. The engine links two permissive native libraries — libvpx
|
|
184
|
+
Apache-2.0. The Linux engine links two permissive native libraries — libvpx
|
|
129
185
|
(BSD-3-Clause) and inputtino (MIT, vendored under `engine/vendor/`) — and calls
|
|
130
186
|
the portal over D-Bus rather than linking it. See `NOTICE`. The prebuilt engine
|
|
131
187
|
links libvpx statically and carries every licence text it owes, including each
|
package/bin/desklink-host.mjs
CHANGED
|
@@ -22,10 +22,10 @@ async function main() {
|
|
|
22
22
|
USAGE:
|
|
23
23
|
desklink-host path print the engine binary this package would run
|
|
24
24
|
desklink-host capabilities print what this machine can do right now
|
|
25
|
-
desklink-host bridge [--listen H:P] [--token T] [--source portal|x11] [--display :0]
|
|
25
|
+
desklink-host bridge [--listen H:P] [--token T] [--source portal|x11|display] [--display :0] [--display-id ID]
|
|
26
26
|
re-serve the engine's protocol over a WebSocket and
|
|
27
27
|
print the URL to open; no signaling of your own needed
|
|
28
|
-
desklink-host <engine command> ... run the engine directly (serve, capture-probe, setup-input, version)
|
|
28
|
+
desklink-host <engine command> ... run the engine directly (serve, keep, capture-probe, setup-input, version)
|
|
29
29
|
|
|
30
30
|
Set MUXR_DESKLINK_ENGINE to use an engine built somewhere else.`);
|
|
31
31
|
return 0;
|
|
@@ -54,6 +54,15 @@ Set MUXR_DESKLINK_ENGINE to use an engine built somewhere else.`);
|
|
|
54
54
|
if (typeof token !== 'string' || token.trim() === '') throw new Error('the bridge token must not be blank');
|
|
55
55
|
const sourceKind = flag('source', process.env.MUXR_DESKTOP_SOURCE ?? 'portal');
|
|
56
56
|
const display = flag('display', process.env.MUXR_DESKTOP_X11_DISPLAY);
|
|
57
|
+
const displayId = flag('display-id', process.env.MUXR_DESKTOP_DISPLAY_ID);
|
|
58
|
+
if (!['portal', 'x11', 'display'].includes(sourceKind)) {
|
|
59
|
+
throw new Error('--source must be portal, x11, or display');
|
|
60
|
+
}
|
|
61
|
+
const numericDisplayId = displayId === undefined ? undefined : Number(displayId);
|
|
62
|
+
if (sourceKind === 'display' && displayId !== undefined
|
|
63
|
+
&& (!/^\d+$/.test(displayId) || !Number.isSafeInteger(numericDisplayId) || numericDisplayId > 0xffff_ffff)) {
|
|
64
|
+
throw new Error('--display-id must be a non-negative 32-bit integer');
|
|
65
|
+
}
|
|
57
66
|
const bridge = await Bridge.start({
|
|
58
67
|
listen,
|
|
59
68
|
token,
|
|
@@ -65,7 +74,9 @@ Set MUXR_DESKLINK_ENGINE to use an engine built somewhere else.`);
|
|
|
65
74
|
engineOptions: { onDiagnostic: (line) => console.error(`engine: ${line}`) },
|
|
66
75
|
...(sourceKind === 'x11'
|
|
67
76
|
? { source: display === undefined ? { kind: 'x11' } : { kind: 'x11', display } }
|
|
68
|
-
:
|
|
77
|
+
: sourceKind === 'display'
|
|
78
|
+
? { source: displayId === undefined ? { kind: 'display' } : { kind: 'display', display_id: Number(displayId) } }
|
|
79
|
+
: {}),
|
|
69
80
|
});
|
|
70
81
|
const host = listen.startsWith('0.0.0.0:') ? '<this machine>' : listen.split(':')[0];
|
|
71
82
|
console.log(`engine ${resolved.command}`);
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC1B,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,yDAAyD;AACzD,eAAO,MAAM,WAAW,aAAa,CAAC;AAYtC,qBAAa,MAAM;IAMX,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IARlC,OAAO,CAAC,OAAO,CAAS;IACxB,gFAAgF;IAChF,OAAO,CAAC,OAAO,CAAyD;IAExE,OAAO;WAOM,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAqD3D,6EAA6E;IAC7E,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC1B,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,yDAAyD;AACzD,eAAO,MAAM,WAAW,aAAa,CAAC;AAYtC,qBAAa,MAAM;IAMX,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IARlC,OAAO,CAAC,OAAO,CAAS;IACxB,gFAAgF;IAChF,OAAO,CAAC,OAAO,CAAyD;IAExE,OAAO;WAOM,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAqD3D,6EAA6E;IAC7E,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,OAAO,CAAC,MAAM;IAgEd,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,wBAAwB;IAa1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
|
package/dist/bridge.js
CHANGED
|
@@ -76,7 +76,7 @@ export class Bridge {
|
|
|
76
76
|
// to the attached controllers watching this session.
|
|
77
77
|
onEvent: (event) => {
|
|
78
78
|
options.engineOptions?.onEvent?.(event);
|
|
79
|
-
if (event.event === 'session.restoreToken')
|
|
79
|
+
if (event.event === 'session.restoreToken' || event.event === 'session.frame.changed')
|
|
80
80
|
return;
|
|
81
81
|
const line = JSON.stringify(event);
|
|
82
82
|
for (const socket of sockets.clients) {
|
|
@@ -116,6 +116,10 @@ export class Bridge {
|
|
|
116
116
|
const method = request.method;
|
|
117
117
|
if (typeof method !== 'string')
|
|
118
118
|
return;
|
|
119
|
+
if (method === 'session.frame') {
|
|
120
|
+
socket.send(JSON.stringify({ id: request.id, error: { code: 'operation', message: 'session.frame is local-only' } }));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
119
123
|
if (method === 'session.open' && request.params != null && Object.prototype.hasOwnProperty.call(request.params, 'source')) {
|
|
120
124
|
socket.send(JSON.stringify({ id: request.id, error: { code: 'source', message: 'the client cannot choose the desktop source' } }));
|
|
121
125
|
return;
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineProcess.d.ts","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engineProcess.d.ts","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACtB,MAAM,eAAe,CAAC;AAQvB,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO;IAuBP,mEAAmE;WACtD,KAAK,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,mBAAwB,EACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,OAAO,CAAC,YAAY,CAAC;IA4BxB,OAAO,CAAC,UAAU;IAgClB;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,SAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;IAkBpG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI3C;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBpF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAQhG,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAUjC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAIlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI/E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,qDAAqD;IACrD,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAU9C;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAUT,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB9B"}
|
package/dist/engineProcess.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn, spawnSync } from 'node:child_process';
|
|
2
|
+
import { appendFileSync } from 'node:fs';
|
|
2
3
|
import { createInterface } from 'node:readline';
|
|
3
4
|
import { EngineRefused, PROTOCOL_VERSION, } from './protocol.js';
|
|
4
5
|
/**
|
|
@@ -45,11 +46,21 @@ export class EngineClient {
|
|
|
45
46
|
const missing = /error while loading shared libraries: ([^:\s]+): cannot open shared object file/.exec(probe.stderr ?? '')?.[1];
|
|
46
47
|
if (missing !== undefined && [
|
|
47
48
|
'libpipewire-0.3.so.0', 'libxkbcommon.so.0', 'libevdev.so.2', 'libstdc++.so.6',
|
|
49
|
+
'libXcursor.so.1', 'libX11.so.6', 'libwayland-client.so.0',
|
|
48
50
|
].includes(missing)) {
|
|
49
51
|
throw new EngineRefused('missing-system-library', `missing system library: ${missing}`);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
const child = spawn(command, args, { env, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
55
|
+
if (env.DESKLINK_AXI_ENGINE_PID_FILE && child.pid) {
|
|
56
|
+
try {
|
|
57
|
+
appendFileSync(env.DESKLINK_AXI_ENGINE_PID_FILE, `${child.pid}\n`);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
child.kill('SIGKILL');
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
53
64
|
const client = new EngineClient(child, options);
|
|
54
65
|
try {
|
|
55
66
|
await client.request('hello', { protocol: PROTOCOL_VERSION });
|
|
@@ -78,7 +89,8 @@ export class EngineClient {
|
|
|
78
89
|
const event = parsed;
|
|
79
90
|
// Setup notifications are drained by the consumer; queue them so a
|
|
80
91
|
// slow reader cannot lose an offer or a candidate.
|
|
81
|
-
|
|
92
|
+
if (event.event !== 'session.frame.changed' || options.onEvent === undefined)
|
|
93
|
+
this.queue.push(event);
|
|
82
94
|
options.onEvent?.(event);
|
|
83
95
|
return;
|
|
84
96
|
}
|
|
@@ -141,6 +153,7 @@ export class EngineClient {
|
|
|
141
153
|
...(request.restoreToken === undefined ? {} : { restore_token: request.restoreToken }),
|
|
142
154
|
...(request.ttlSeconds === undefined ? {} : { ttl_seconds: request.ttlSeconds }),
|
|
143
155
|
...(request.loopbackTcp === true ? { loopback_tcp: true } : {}),
|
|
156
|
+
...(request.agentIndicator === true ? { agent_indicator: true } : {}),
|
|
144
157
|
}, timeoutMs);
|
|
145
158
|
}
|
|
146
159
|
acceptAnswer(sessionId, generation, sdp) {
|
|
@@ -216,10 +229,9 @@ export class EngineClient {
|
|
|
216
229
|
this.child.stdin.end();
|
|
217
230
|
const child = this.child;
|
|
218
231
|
await new Promise((resolve) => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}, 3000);
|
|
232
|
+
if (child.exitCode !== null || child.signalCode !== null)
|
|
233
|
+
return resolve();
|
|
234
|
+
const timer = setTimeout(() => child.kill('SIGKILL'), 3000);
|
|
223
235
|
child.once('exit', () => {
|
|
224
236
|
clearTimeout(timer);
|
|
225
237
|
resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineProcess.js","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAuC,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACH,aAAa,EACb,gBAAgB,GAMnB,MAAM,eAAe,CAAC;AAqBvB;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACJ,KAAK,CAAiC;IACtC,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IACrC,KAAK,GAAkB,EAAE,CAAC;IACnC,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;IACf,QAAQ,GAAG,KAAK,CAAC;IACR,SAAS,CAAS;IAEnC,YAAoB,KAAqC,EAAE,OAA4B;QACnF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC;QAEpD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,YAAY,EAAE,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,KAAK,CAAC,KAAK,CACd,OAAe,EACf,IAAc,EACd,UAA+B,EAAE,EACjC,MAAyB,OAAO,CAAC,GAAG;QAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,iFAAiF,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChI,IAAI,OAAO,KAAK,SAAS,IAAI;gBACzB,sBAAsB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"engineProcess.js","sourceRoot":"","sources":["../src/engineProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAuC,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACH,aAAa,EACb,gBAAgB,GAMnB,MAAM,eAAe,CAAC;AAqBvB;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACJ,KAAK,CAAiC;IACtC,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IACrC,KAAK,GAAkB,EAAE,CAAC;IACnC,MAAM,GAAG,CAAC,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;IACf,QAAQ,GAAG,KAAK,CAAC;IACR,SAAS,CAAS;IAEnC,YAAoB,KAAqC,EAAE,OAA4B;QACnF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC;QAEpD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,YAAY,EAAE,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,KAAK,CAAC,KAAK,CACd,OAAe,EACf,IAAc,EACd,UAA+B,EAAE,EACjC,MAAyB,OAAO,CAAC,GAAG;QAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,iFAAiF,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChI,IAAI,OAAO,KAAK,SAAS,IAAI;gBACzB,sBAAsB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB;gBAC9E,iBAAiB,EAAE,aAAa,EAAE,wBAAwB;aAC7D,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,2BAA2B,OAAO,EAAE,CAAC,CAAC;YAC5F,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,GAAG,CAAC,4BAA4B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YAChD,IAAI,CAAC;gBAAC,cAAc,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAAC,CAAC;YAC3E,OAAO,KAAK,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAAC,MAAM,KAAK,CAAC;YAAC,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kEAAkE;YAClE,mDAAmD;YACnD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,OAA4B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO;QAC3B,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,YAAY,EAAE,CAAC,wCAAwC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO;QACX,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAgC,CAAC;YAC/C,mEAAmE;YACnE,mDAAmD;YACnD,IAAI,KAAK,CAAC,KAAK,KAAK,uBAAuB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrG,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACX,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAwD,CAAC;QAC9E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC,CAAC;YAC7G,OAAO;QACX,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAI,MAAc,EAAE,MAAgC,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS;QACnF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAmC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,OAAO,CAAqB,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,OAA2B,EAAE,SAAkB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAgB,cAAc,EAAE;YAC/C,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YACnF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAChF,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;YACtF,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAChF,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,EAAE,SAAS,CAAC,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,UAAkB,EAAE,GAAW;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACvC,UAAU,EAAE,SAAS;YACrB,UAAU;YACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;SACvC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CACR,SAAiB,EACjB,UAAkB,EAClB,SAAiB,EACjB,MAAqB,EACrB,aAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACrC,UAAU,EAAE,SAAS;YACrB,UAAU;YACV,SAAS;YACT,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,aAAa;SAClC,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,OAAO,CAAiB,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,YAAY,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,qDAAqD;IACrD,WAAW,CAAC,SAAkB;QAC1B,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACK,OAAO,CAAC,MAAa;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IAAI;QACN,yEAAyE;QACzE,kDAAkD;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,uEAAuE;QACvE,qEAAqE;QACrE,QAAQ;QACR,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;gBAAE,OAAO,OAAO,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACpB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,MAAc,EAAE,MAA2C,EAAE,SAAiB;IAC5F,MAAM,OAAO,GAAG,qCAAqC,MAAM,OAAO,SAAS,IAAI,CAAC;IAChF,MAAM,MAAM,GAAG,MAAM,EAAE,MAAwC,CAAC;IAChE,IAAI,MAAM,KAAK,cAAc,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,aAAa,CAAC,iBAAiB,EAAE,GAAG,OAAO,mDAAmD,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export * from './protocol.js';
|
|
9
9
|
export { EngineClient, type EngineClientOptions } from './engineProcess.js';
|
|
10
|
+
export { startDisplayKeeper, parseKeeperLine, type DisplayKeeper, type DisplayKeeperOptions, type KeeperWindow } from './keeper.js';
|
|
10
11
|
export { resolveEngine, explainMissingEngine, enginePackageRoot, type ResolvedEngine } from './resolveEngine.js';
|
|
11
12
|
export { Bridge, BRIDGE_PATH, type BridgeOptions } from './bridge.js';
|
|
12
13
|
//# 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":"AAAA;;;;;;GAMG;AACH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export * from './protocol.js';
|
|
9
9
|
export { EngineClient } from './engineProcess.js';
|
|
10
|
+
export { startDisplayKeeper, parseKeeperLine } from './keeper.js';
|
|
10
11
|
export { resolveEngine, explainMissingEngine, enginePackageRoot } from './resolveEngine.js';
|
|
11
12
|
export { Bridge, BRIDGE_PATH } from './bridge.js';
|
|
12
13
|
//# 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;;;;;;GAMG;AACH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAA4B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAA4B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAoE,MAAM,aAAa,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC"}
|
package/dist/keeper.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** One top-level window on the kept screen, stacking order, newest last. */
|
|
2
|
+
export interface KeeperWindow {
|
|
3
|
+
id: number;
|
|
4
|
+
title: string | null;
|
|
5
|
+
class: string | null;
|
|
6
|
+
pid: number | null;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
export interface DisplayKeeperOptions {
|
|
11
|
+
/** The X display to keep, for example ':42'. Auth comes from `XAUTHORITY` in `env`. */
|
|
12
|
+
display: string;
|
|
13
|
+
/**
|
|
14
|
+
* The engine to run. Defaults to this package's resolved engine; an
|
|
15
|
+
* embedder that owns its engine names it.
|
|
16
|
+
*/
|
|
17
|
+
engine?: {
|
|
18
|
+
command: string;
|
|
19
|
+
args: string[];
|
|
20
|
+
};
|
|
21
|
+
/** The keeper's environment; `XAUTHORITY` must carry the display's cookie. */
|
|
22
|
+
env?: NodeJS.ProcessEnv;
|
|
23
|
+
onWindows?: (windows: KeeperWindow[]) => void;
|
|
24
|
+
/** The keeper died; `error` is why it refused to run, when it said. */
|
|
25
|
+
onExit?: (detail: {
|
|
26
|
+
code: number | null;
|
|
27
|
+
signal: NodeJS.Signals | null;
|
|
28
|
+
error?: string;
|
|
29
|
+
}) => void;
|
|
30
|
+
onDiagnostic?: (line: string) => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse one keeper stdout line: a window report, a fatal refusal, or nothing
|
|
34
|
+
* (not JSON and not the keeper's business, which goes to diagnostics).
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseKeeperLine(line: string): {
|
|
37
|
+
windows?: KeeperWindow[];
|
|
38
|
+
error?: string;
|
|
39
|
+
} | null;
|
|
40
|
+
/** A running keeper of one X screen. It exits by itself when the display goes. */
|
|
41
|
+
export interface DisplayKeeper {
|
|
42
|
+
/** Stop the keeper and wait for it to be gone. */
|
|
43
|
+
stop(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Run the engine as the kiosk keeper of one private X screen: it fills the
|
|
47
|
+
* screen with each normal window, parks tiny helper windows off-screen, keeps
|
|
48
|
+
* focus on the newest window, and reports the screen's windows on every change.
|
|
49
|
+
* Nothing arrives when no window is open — which is the point.
|
|
50
|
+
*/
|
|
51
|
+
export declare function startDisplayKeeper(options: DisplayKeeperOptions): DisplayKeeper;
|
|
52
|
+
//# sourceMappingURL=keeper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keeper.d.ts","sourceRoot":"","sources":["../src/keeper.ts"],"names":[],"mappings":"AAKA,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7C,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC9C,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClG,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA2BjG;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC1B,kDAAkD;IAClD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgD/E"}
|
package/dist/keeper.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
import { resolveEngine } from './resolveEngine.js';
|
|
4
|
+
/**
|
|
5
|
+
* Parse one keeper stdout line: a window report, a fatal refusal, or nothing
|
|
6
|
+
* (not JSON and not the keeper's business, which goes to diagnostics).
|
|
7
|
+
*/
|
|
8
|
+
export function parseKeeperLine(line) {
|
|
9
|
+
const trimmed = line.trim();
|
|
10
|
+
if (trimmed === '')
|
|
11
|
+
return null;
|
|
12
|
+
let parsed;
|
|
13
|
+
try {
|
|
14
|
+
parsed = JSON.parse(trimmed);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
if (typeof parsed.error === 'string')
|
|
20
|
+
return { error: parsed.error };
|
|
21
|
+
const list = parsed.windows;
|
|
22
|
+
if (!Array.isArray(list))
|
|
23
|
+
return null;
|
|
24
|
+
const windows = [];
|
|
25
|
+
for (const entry of list) {
|
|
26
|
+
if (typeof entry !== 'object' || entry === null)
|
|
27
|
+
continue;
|
|
28
|
+
const window = entry;
|
|
29
|
+
if (typeof window.id !== 'number' || typeof window.width !== 'number' || typeof window.height !== 'number')
|
|
30
|
+
continue;
|
|
31
|
+
windows.push({
|
|
32
|
+
id: window.id,
|
|
33
|
+
title: typeof window.title === 'string' ? window.title : null,
|
|
34
|
+
class: typeof window.class === 'string' ? window.class : null,
|
|
35
|
+
pid: typeof window.pid === 'number' ? window.pid : null,
|
|
36
|
+
width: window.width,
|
|
37
|
+
height: window.height,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return { windows };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Run the engine as the kiosk keeper of one private X screen: it fills the
|
|
44
|
+
* screen with each normal window, parks tiny helper windows off-screen, keeps
|
|
45
|
+
* focus on the newest window, and reports the screen's windows on every change.
|
|
46
|
+
* Nothing arrives when no window is open — which is the point.
|
|
47
|
+
*/
|
|
48
|
+
export function startDisplayKeeper(options) {
|
|
49
|
+
const engine = options.engine ?? resolveEngine();
|
|
50
|
+
if (!engine)
|
|
51
|
+
throw new Error('no desktop engine to keep the display with; see resolveEngine');
|
|
52
|
+
const child = spawn(engine.command, [...engine.args.filter((arg) => arg !== 'serve'), 'keep', '--display', options.display], {
|
|
53
|
+
env: options.env ?? process.env,
|
|
54
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
55
|
+
});
|
|
56
|
+
let refusal;
|
|
57
|
+
const stdout = createInterface({ input: child.stdout });
|
|
58
|
+
stdout.on('line', (line) => {
|
|
59
|
+
const parsed = parseKeeperLine(line);
|
|
60
|
+
if (parsed === null) {
|
|
61
|
+
options.onDiagnostic?.(line.trim());
|
|
62
|
+
}
|
|
63
|
+
else if (parsed.error !== undefined) {
|
|
64
|
+
refusal = parsed.error;
|
|
65
|
+
options.onDiagnostic?.(`display keeper refused: ${parsed.error}`);
|
|
66
|
+
}
|
|
67
|
+
else if (parsed.windows !== undefined) {
|
|
68
|
+
options.onWindows?.(parsed.windows);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
const stderr = createInterface({ input: child.stderr });
|
|
72
|
+
stderr.on('line', (line) => options.onDiagnostic?.(line));
|
|
73
|
+
child.on('error', (error) => {
|
|
74
|
+
options.onDiagnostic?.(`display keeper process error: ${error.message}`);
|
|
75
|
+
// A process that never spawned emits no 'exit'; this is its only death.
|
|
76
|
+
if (child.pid === undefined)
|
|
77
|
+
options.onExit?.({ code: null, signal: null, error: error.message });
|
|
78
|
+
});
|
|
79
|
+
// 'close', not 'exit': the death detail may carry a refusal parsed from
|
|
80
|
+
// stdout, which has fully drained by the time 'close' fires.
|
|
81
|
+
child.on('close', () => {
|
|
82
|
+
if (child.pid !== undefined)
|
|
83
|
+
options.onExit?.({
|
|
84
|
+
code: child.exitCode,
|
|
85
|
+
signal: child.signalCode,
|
|
86
|
+
...(refusal === undefined ? {} : { error: refusal }),
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
stop: () => new Promise((resolve) => {
|
|
91
|
+
if (child.exitCode !== null || child.signalCode !== null)
|
|
92
|
+
return resolve();
|
|
93
|
+
// 'close', not 'exit': every report line must have been read
|
|
94
|
+
// before the consumer can be sure what the last state was.
|
|
95
|
+
child.once('close', () => resolve());
|
|
96
|
+
child.kill('SIGTERM');
|
|
97
|
+
setTimeout(() => child.kill('SIGKILL'), 3000).unref();
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=keeper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keeper.js","sourceRoot":"","sources":["../src/keeper.ts"],"names":[],"mappings":"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"}
|