node-devicectl 1.3.1 → 1.4.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/CHANGELOG.md +6 -0
- package/README.md +2 -0
- package/build/lib/devicectl.d.ts +1 -0
- package/build/lib/devicectl.d.ts.map +1 -1
- package/build/lib/devicectl.js +1 -0
- package/build/lib/devicectl.js.map +1 -1
- package/build/lib/mixins/process.d.ts +15 -1
- package/build/lib/mixins/process.d.ts.map +1 -1
- package/build/lib/mixins/process.js +47 -0
- package/build/lib/mixins/process.js.map +1 -1
- package/build/lib/types.d.ts +10 -0
- package/build/lib/types.d.ts.map +1 -1
- package/lib/devicectl.ts +1 -0
- package/lib/mixins/process.ts +64 -1
- package/lib/types.ts +11 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [1.4.0](https://github.com/appium/node-devicectl/compare/v1.3.1...v1.4.0) (2026-05-16)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* Add API for app termination ([#18](https://github.com/appium/node-devicectl/issues/18)) ([20601e3](https://github.com/appium/node-devicectl/commit/20601e39e63176dc988d2ed02bd799b0f7c9ffeb))
|
|
6
|
+
|
|
1
7
|
## [1.3.1](https://github.com/appium/node-devicectl/compare/v1.3.0...v1.3.1) (2026-05-08)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
package/README.md
CHANGED
|
@@ -28,6 +28,8 @@ await devicectl.launchApp('com.example.app', {
|
|
|
28
28
|
env: { DEBUG: '1' },
|
|
29
29
|
terminateExisting: true
|
|
30
30
|
});
|
|
31
|
+
await devicectl.terminateApp('com.example.app');
|
|
32
|
+
await devicectl.terminateApp('com.example.app', { force: true });
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
When Node is running under `sudo`, `node-devicectl` runs `xcrun devicectl` as the original
|
package/build/lib/devicectl.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class Devicectl {
|
|
|
16
16
|
sendMemoryWarning: typeof processMixins.sendMemoryWarning;
|
|
17
17
|
sendSignalToProcess: typeof processMixins.sendSignalToProcess;
|
|
18
18
|
launchApp: typeof processMixins.launchApp;
|
|
19
|
+
terminateApp: typeof processMixins.terminateApp;
|
|
19
20
|
listProcesses: typeof infoMixins.listProcesses;
|
|
20
21
|
listApps: typeof infoMixins.listApps;
|
|
21
22
|
listFiles: typeof copyMixins.listFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devicectl.d.ts","sourceRoot":"","sources":["../../lib/devicectl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAM5C;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,mCAAmC;IACnC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,iBAAiB,yCAAmC;IACpD,mBAAmB,2CAAqC;IACxD,SAAS,iCAA2B;
|
|
1
|
+
{"version":3,"file":"devicectl.d.ts","sourceRoot":"","sources":["../../lib/devicectl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAM5C;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,mCAAmC;IACnC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,iBAAiB,yCAAmC;IACpD,mBAAmB,2CAAqC;IACxD,SAAS,iCAA2B;IACpC,YAAY,oCAA8B;IAE1C,aAAa,kCAA4B;IACzC,QAAQ,6BAAuB;IAE/B,SAAS,8BAAwB;IACjC,QAAQ,6BAAuB;IAE/B,WAAW,gCAA0B;IAErC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAMjD;;;;;;OAMG;IACG,OAAO,CAAC,CAAC,SAAS,cAAc,EACpC,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,CAAC,EAAE,CAAC,GACP,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAoD5B,OAAO,CAAC,eAAe;CAYxB"}
|
package/build/lib/devicectl.js
CHANGED
|
@@ -58,6 +58,7 @@ class Devicectl {
|
|
|
58
58
|
sendMemoryWarning = processMixins.sendMemoryWarning;
|
|
59
59
|
sendSignalToProcess = processMixins.sendSignalToProcess;
|
|
60
60
|
launchApp = processMixins.launchApp;
|
|
61
|
+
terminateApp = processMixins.terminateApp;
|
|
61
62
|
listProcesses = infoMixins.listProcesses;
|
|
62
63
|
listApps = infoMixins.listApps;
|
|
63
64
|
listFiles = copyMixins.listFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devicectl.js","sourceRoot":"","sources":["../../lib/devicectl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA8C;AAC9C,4DAAoC;AAEpC,gEAAkD;AAClD,0DAA4C;AAC5C,0DAA4C;AAC5C,0DAA4C;AAE5C,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,OAAO,GAAG,WAAW,CAAC;AAG5B;;;;;;GAMG;AACH,MAAa,SAAS;IACpB,mCAAmC;IACnB,IAAI,CAAS;IAE7B,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IACpD,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;IACxD,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"devicectl.js","sourceRoot":"","sources":["../../lib/devicectl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LaunchAppOptions } from '../types';
|
|
1
|
+
import type { LaunchAppOptions, TerminateAppOptions } from '../types';
|
|
2
2
|
import type { Devicectl } from '../devicectl';
|
|
3
3
|
/**
|
|
4
4
|
* Simulates memory warning for the process with the given PID
|
|
@@ -14,4 +14,18 @@ export declare function sendSignalToProcess(this: Devicectl, pid: number | strin
|
|
|
14
14
|
* Please use via WDA or via appium-ios-device as primary method to launch app if possible.
|
|
15
15
|
*/
|
|
16
16
|
export declare function launchApp(this: Devicectl, bundleId: string, opts?: LaunchAppOptions): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Terminates all running processes for the app with the given bundle identifier.
|
|
19
|
+
*
|
|
20
|
+
* Resolves the app's install path via {@link Devicectl.listApps}, finds matching
|
|
21
|
+
* processes with `devicectl device info processes --filter`, then terminates each
|
|
22
|
+
* via `devicectl device process terminate`.
|
|
23
|
+
*
|
|
24
|
+
* @returns `true` if at least one process was terminated, otherwise `false`
|
|
25
|
+
*/
|
|
26
|
+
export declare function terminateApp(this: Devicectl, bundleId: string, opts?: TerminateAppOptions): Promise<boolean>;
|
|
27
|
+
/** Converts a devicectl app URL to a filesystem path for process filters. */
|
|
28
|
+
export declare function appUrlToFilesystemPath(appUrl: string): string;
|
|
29
|
+
/** Escapes a value for use inside a devicectl process filter string. */
|
|
30
|
+
export declare function escapeProcessFilterValue(value: string): string;
|
|
17
31
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../lib/mixins/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../lib/mixins/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAe,mBAAmB,EAAC,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,MAAM,EAAE,MAAM,GAAG,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.sendMemoryWarning = sendMemoryWarning;
|
|
4
4
|
exports.sendSignalToProcess = sendSignalToProcess;
|
|
5
5
|
exports.launchApp = launchApp;
|
|
6
|
+
exports.terminateApp = terminateApp;
|
|
7
|
+
exports.appUrlToFilesystemPath = appUrlToFilesystemPath;
|
|
8
|
+
exports.escapeProcessFilterValue = escapeProcessFilterValue;
|
|
6
9
|
/**
|
|
7
10
|
* Simulates memory warning for the process with the given PID
|
|
8
11
|
*/
|
|
@@ -41,4 +44,48 @@ async function launchApp(bundleId, opts = {}) {
|
|
|
41
44
|
asJson: false,
|
|
42
45
|
});
|
|
43
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Terminates all running processes for the app with the given bundle identifier.
|
|
49
|
+
*
|
|
50
|
+
* Resolves the app's install path via {@link Devicectl.listApps}, finds matching
|
|
51
|
+
* processes with `devicectl device info processes --filter`, then terminates each
|
|
52
|
+
* via `devicectl device process terminate`.
|
|
53
|
+
*
|
|
54
|
+
* @returns `true` if at least one process was terminated, otherwise `false`
|
|
55
|
+
*/
|
|
56
|
+
async function terminateApp(bundleId, opts = {}) {
|
|
57
|
+
const apps = await this.listApps(bundleId);
|
|
58
|
+
if (apps.length === 0) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const processes = await listProcessesForAppPath(this, appUrlToFilesystemPath(apps[0].url));
|
|
62
|
+
if (processes.length === 0) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const { force = false } = opts;
|
|
66
|
+
const subcommandOptions = [];
|
|
67
|
+
if (force) {
|
|
68
|
+
subcommandOptions.push('--kill');
|
|
69
|
+
}
|
|
70
|
+
await Promise.all(processes.map(({ processIdentifier }) => this.execute(['device', 'process', 'terminate'], {
|
|
71
|
+
subcommandOptions: [...subcommandOptions, '--pid', `${processIdentifier}`],
|
|
72
|
+
})));
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
/** Converts a devicectl app URL to a filesystem path for process filters. */
|
|
76
|
+
function appUrlToFilesystemPath(appUrl) {
|
|
77
|
+
const path = appUrl.startsWith('file:') ? new URL(appUrl).pathname : appUrl;
|
|
78
|
+
return path.replace(/\/$/, '') || '/';
|
|
79
|
+
}
|
|
80
|
+
/** Escapes a value for use inside a devicectl process filter string. */
|
|
81
|
+
function escapeProcessFilterValue(value) {
|
|
82
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
83
|
+
}
|
|
84
|
+
async function listProcessesForAppPath(devicectl, appPath) {
|
|
85
|
+
const filter = `executable.path BEGINSWITH "${escapeProcessFilterValue(appPath)}"`;
|
|
86
|
+
const { stdout } = await devicectl.execute(['device', 'info', 'processes'], {
|
|
87
|
+
subcommandOptions: ['--filter', filter],
|
|
88
|
+
});
|
|
89
|
+
return JSON.parse(stdout).result.runningProcesses;
|
|
90
|
+
}
|
|
44
91
|
//# sourceMappingURL=process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../lib/mixins/process.ts"],"names":[],"mappings":";;AAMA,8CAIC;AAKD,kDAQC;AAOD,8BA8BC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../lib/mixins/process.ts"],"names":[],"mappings":";;AAMA,8CAIC;AAKD,kDAQC;AAOD,8BA8BC;AAWD,oCA8BC;AAGD,wDAGC;AAGD,4DAEC;AA7GD;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAkB,GAAoB;IAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE;QAC7D,iBAAiB,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;KACvC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CAEvC,GAAoB,EACpB,MAAuB;IAEvB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QAClD,iBAAiB,EAAE,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;KAChE,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAE7B,QAAgB,EAChB,OAAyB,EAAE;IAE3B,MAAM,EAAC,GAAG,EAAE,iBAAiB,GAAG,KAAK,EAAC,GAAG,IAAI,CAAC;IAE9C,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,IAAI,iBAAiB,EAAE,CAAC;QACtB,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,iBAAiB,CAAC,IAAI,CACpB,yBAAyB,EACzB,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACpF,CACF,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,wEAAwE;IACxE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QAClD,iBAAiB;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAEhC,QAAgB,EAChB,OAA4B,EAAE;IAE9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAC,KAAK,GAAG,KAAK,EAAC,GAAG,IAAI,CAAC;IAC7B,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,CAAC,EAAC,iBAAiB,EAAC,EAAE,EAAE,CACpC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE;QAC/C,iBAAiB,EAAE,CAAC,GAAG,iBAAiB,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;KAC3E,CAAC,CACH,CACF,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,SAAgB,sBAAsB,CAAC,MAAc;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,wEAAwE;AACxE,SAAgB,wBAAwB,CAAC,KAAa;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,SAAoB,EACpB,OAAe;IAEf,MAAM,MAAM,GAAG,+BAA+B,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC;IACnF,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QACxE,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;KACxC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACpD,CAAC"}
|
package/build/lib/types.d.ts
CHANGED
|
@@ -117,6 +117,16 @@ export interface LaunchAppOptions {
|
|
|
117
117
|
/** Whether to terminate the already running app */
|
|
118
118
|
terminateExisting?: boolean;
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Options for terminating an app
|
|
122
|
+
*/
|
|
123
|
+
export interface TerminateAppOptions {
|
|
124
|
+
/**
|
|
125
|
+
* Send SIGKILL instead of SIGTERM so the process cannot catch the signal
|
|
126
|
+
* @default false
|
|
127
|
+
*/
|
|
128
|
+
force?: boolean;
|
|
129
|
+
}
|
|
120
130
|
/**
|
|
121
131
|
* Result type for synchronous execution
|
|
122
132
|
*/
|
package/build/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
package/lib/devicectl.ts
CHANGED
|
@@ -24,6 +24,7 @@ export class Devicectl {
|
|
|
24
24
|
sendMemoryWarning = processMixins.sendMemoryWarning;
|
|
25
25
|
sendSignalToProcess = processMixins.sendSignalToProcess;
|
|
26
26
|
launchApp = processMixins.launchApp;
|
|
27
|
+
terminateApp = processMixins.terminateApp;
|
|
27
28
|
|
|
28
29
|
listProcesses = infoMixins.listProcesses;
|
|
29
30
|
listApps = infoMixins.listApps;
|
package/lib/mixins/process.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {LaunchAppOptions} from '../types';
|
|
1
|
+
import type {LaunchAppOptions, ProcessInfo, TerminateAppOptions} from '../types';
|
|
2
2
|
import type {Devicectl} from '../devicectl';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -59,3 +59,66 @@ export async function launchApp(
|
|
|
59
59
|
asJson: false,
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Terminates all running processes for the app with the given bundle identifier.
|
|
65
|
+
*
|
|
66
|
+
* Resolves the app's install path via {@link Devicectl.listApps}, finds matching
|
|
67
|
+
* processes with `devicectl device info processes --filter`, then terminates each
|
|
68
|
+
* via `devicectl device process terminate`.
|
|
69
|
+
*
|
|
70
|
+
* @returns `true` if at least one process was terminated, otherwise `false`
|
|
71
|
+
*/
|
|
72
|
+
export async function terminateApp(
|
|
73
|
+
this: Devicectl,
|
|
74
|
+
bundleId: string,
|
|
75
|
+
opts: TerminateAppOptions = {},
|
|
76
|
+
): Promise<boolean> {
|
|
77
|
+
const apps = await this.listApps(bundleId);
|
|
78
|
+
if (apps.length === 0) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const processes = await listProcessesForAppPath(this, appUrlToFilesystemPath(apps[0].url));
|
|
83
|
+
if (processes.length === 0) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const {force = false} = opts;
|
|
88
|
+
const subcommandOptions: string[] = [];
|
|
89
|
+
if (force) {
|
|
90
|
+
subcommandOptions.push('--kill');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
await Promise.all(
|
|
94
|
+
processes.map(({processIdentifier}) =>
|
|
95
|
+
this.execute(['device', 'process', 'terminate'], {
|
|
96
|
+
subcommandOptions: [...subcommandOptions, '--pid', `${processIdentifier}`],
|
|
97
|
+
}),
|
|
98
|
+
),
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Converts a devicectl app URL to a filesystem path for process filters. */
|
|
105
|
+
export function appUrlToFilesystemPath(appUrl: string): string {
|
|
106
|
+
const path = appUrl.startsWith('file:') ? new URL(appUrl).pathname : appUrl;
|
|
107
|
+
return path.replace(/\/$/, '') || '/';
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Escapes a value for use inside a devicectl process filter string. */
|
|
111
|
+
export function escapeProcessFilterValue(value: string): string {
|
|
112
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async function listProcessesForAppPath(
|
|
116
|
+
devicectl: Devicectl,
|
|
117
|
+
appPath: string,
|
|
118
|
+
): Promise<ProcessInfo[]> {
|
|
119
|
+
const filter = `executable.path BEGINSWITH "${escapeProcessFilterValue(appPath)}"`;
|
|
120
|
+
const {stdout} = await devicectl.execute(['device', 'info', 'processes'], {
|
|
121
|
+
subcommandOptions: ['--filter', filter],
|
|
122
|
+
});
|
|
123
|
+
return JSON.parse(stdout).result.runningProcesses;
|
|
124
|
+
}
|
package/lib/types.ts
CHANGED
|
@@ -126,6 +126,17 @@ export interface LaunchAppOptions {
|
|
|
126
126
|
terminateExisting?: boolean;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Options for terminating an app
|
|
131
|
+
*/
|
|
132
|
+
export interface TerminateAppOptions {
|
|
133
|
+
/**
|
|
134
|
+
* Send SIGKILL instead of SIGTERM so the process cannot catch the signal
|
|
135
|
+
* @default false
|
|
136
|
+
*/
|
|
137
|
+
force?: boolean;
|
|
138
|
+
}
|
|
139
|
+
|
|
129
140
|
/**
|
|
130
141
|
* Result type for synchronous execution
|
|
131
142
|
*/
|