@yume-chan/android-bin 0.0.20 → 0.0.22
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.json +54 -0
- package/CHANGELOG.md +25 -1
- package/LICENSE +21 -0
- package/README.md +40 -14
- package/esm/am.d.ts +17 -0
- package/esm/am.d.ts.map +1 -0
- package/esm/am.js +42 -0
- package/esm/am.js.map +1 -0
- package/esm/bu.d.ts +20 -7
- package/esm/bu.d.ts.map +1 -1
- package/esm/bu.js +47 -8
- package/esm/bu.js.map +1 -1
- package/esm/bug-report.d.ts +82 -21
- package/esm/bug-report.d.ts.map +1 -1
- package/esm/bug-report.js +187 -53
- package/esm/bug-report.js.map +1 -1
- package/esm/cmd.d.ts +4 -6
- package/esm/cmd.d.ts.map +1 -1
- package/esm/cmd.js +36 -21
- package/esm/cmd.js.map +1 -1
- package/esm/demo-mode.d.ts +3 -3
- package/esm/demo-mode.d.ts.map +1 -1
- package/esm/demo-mode.js +14 -15
- package/esm/demo-mode.js.map +1 -1
- package/esm/dumpsys.d.ts +39 -0
- package/esm/dumpsys.d.ts.map +1 -1
- package/esm/dumpsys.js +111 -0
- package/esm/dumpsys.js.map +1 -1
- package/esm/index.d.ts +6 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +6 -0
- package/esm/index.js.map +1 -1
- package/esm/intent.d.ts +10 -0
- package/esm/intent.d.ts.map +1 -0
- package/esm/intent.js +51 -0
- package/esm/intent.js.map +1 -0
- package/esm/logcat.d.ts +1 -0
- package/esm/logcat.d.ts.map +1 -1
- package/esm/logcat.js +20 -18
- package/esm/logcat.js.map +1 -1
- package/esm/overlay-display.d.ts +20 -3
- package/esm/overlay-display.d.ts.map +1 -1
- package/esm/overlay-display.js +34 -61
- package/esm/overlay-display.js.map +1 -1
- package/esm/pm.d.ts +42 -5
- package/esm/pm.d.ts.map +1 -1
- package/esm/pm.js +164 -46
- package/esm/pm.js.map +1 -1
- package/esm/settings.d.ts +22 -8
- package/esm/settings.d.ts.map +1 -1
- package/esm/settings.js +50 -25
- package/esm/settings.js.map +1 -1
- package/esm/string-format.d.ts +40 -0
- package/esm/string-format.d.ts.map +1 -0
- package/esm/string-format.js +153 -0
- package/esm/string-format.js.map +1 -0
- package/esm/utils.d.ts +4 -0
- package/esm/utils.d.ts.map +1 -0
- package/esm/utils.js +23 -0
- package/esm/utils.js.map +1 -0
- package/package.json +13 -8
- package/src/am.ts +69 -0
- package/src/bu.ts +68 -14
- package/src/bug-report.ts +234 -68
- package/src/cmd.ts +64 -30
- package/src/demo-mode.ts +47 -43
- package/src/dumpsys.ts +129 -0
- package/src/index.ts +6 -0
- package/src/intent.ts +63 -0
- package/src/logcat.ts +45 -42
- package/src/overlay-display.ts +82 -85
- package/src/pm.ts +274 -61
- package/src/settings.ts +94 -43
- package/src/string-format.ts +199 -0
- package/src/utils.ts +29 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/esm/pm.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Adb } from "@yume-chan/adb";
|
|
2
2
|
import { AdbCommandBase } from "@yume-chan/adb";
|
|
3
3
|
import type { Consumable, ReadableStream } from "@yume-chan/stream-extra";
|
|
4
|
+
import type { IntentBuilder } from "./intent.js";
|
|
5
|
+
import type { SingleUserOrAll } from "./utils.js";
|
|
4
6
|
export declare enum PackageManagerInstallLocation {
|
|
5
7
|
Auto = 0,
|
|
6
8
|
InternalOnly = 1,
|
|
@@ -81,7 +83,7 @@ export interface PackageManagerInstallOptions {
|
|
|
81
83
|
/**
|
|
82
84
|
* `--user`
|
|
83
85
|
*/
|
|
84
|
-
|
|
86
|
+
user: SingleUserOrAll;
|
|
85
87
|
/**
|
|
86
88
|
* `--install-location`
|
|
87
89
|
*/
|
|
@@ -128,12 +130,47 @@ export interface PackageManagerInstallOptions {
|
|
|
128
130
|
bypassLowTargetSdkBlock: boolean;
|
|
129
131
|
}
|
|
130
132
|
export declare const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP: Record<keyof PackageManagerInstallOptions, string>;
|
|
133
|
+
export interface PackageManagerListPackagesOptions {
|
|
134
|
+
listDisabled: boolean;
|
|
135
|
+
listEnabled: boolean;
|
|
136
|
+
showSourceDir: boolean;
|
|
137
|
+
showInstaller: boolean;
|
|
138
|
+
listSystem: boolean;
|
|
139
|
+
showUid: boolean;
|
|
140
|
+
listThirdParty: boolean;
|
|
141
|
+
showVersionCode: boolean;
|
|
142
|
+
listApexOnly: boolean;
|
|
143
|
+
user: SingleUserOrAll;
|
|
144
|
+
uid: number;
|
|
145
|
+
filter: string;
|
|
146
|
+
}
|
|
147
|
+
export declare const PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP: Record<keyof PackageManagerListPackagesOptions, string>;
|
|
148
|
+
export interface PackageManagerListPackagesResult {
|
|
149
|
+
packageName: string;
|
|
150
|
+
sourceDir?: string | undefined;
|
|
151
|
+
versionCode?: number | undefined;
|
|
152
|
+
installer?: string | undefined;
|
|
153
|
+
uid?: number | undefined;
|
|
154
|
+
}
|
|
155
|
+
export interface PackageManagerUninstallOptions {
|
|
156
|
+
keepData: boolean;
|
|
157
|
+
user: SingleUserOrAll;
|
|
158
|
+
versionCode: number;
|
|
159
|
+
splitNames: string[];
|
|
160
|
+
}
|
|
161
|
+
export interface PackageManagerResolveActivityOptions {
|
|
162
|
+
user?: SingleUserOrAll;
|
|
163
|
+
intent: IntentBuilder;
|
|
164
|
+
}
|
|
131
165
|
export declare class PackageManager extends AdbCommandBase {
|
|
132
|
-
private
|
|
166
|
+
#private;
|
|
133
167
|
constructor(adb: Adb);
|
|
134
|
-
private buildInstallArgs;
|
|
135
168
|
install(apks: string[], options?: Partial<PackageManagerInstallOptions>): Promise<string>;
|
|
136
|
-
pushAndInstallStream(stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<
|
|
137
|
-
installStream(size: number, stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<
|
|
169
|
+
pushAndInstallStream(stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<void>;
|
|
170
|
+
installStream(size: number, stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<void>;
|
|
171
|
+
static parsePackageListItem(line: string): PackageManagerListPackagesResult;
|
|
172
|
+
listPackages(options?: Partial<PackageManagerListPackagesOptions>): AsyncGenerator<PackageManagerListPackagesResult, void, void>;
|
|
173
|
+
uninstall(packageName: string, options?: Partial<PackageManagerUninstallOptions>): Promise<void>;
|
|
174
|
+
resolveActivity(options: PackageManagerResolveActivityOptions): Promise<string | undefined>;
|
|
138
175
|
}
|
|
139
176
|
//# sourceMappingURL=pm.d.ts.map
|
package/esm/pm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm.d.ts","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pm.d.ts","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"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"}
|
package/esm/pm.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
// cspell:ignore dont
|
|
2
2
|
// cspell:ignore instantapp
|
|
3
3
|
// cspell:ignore apks
|
|
4
|
+
// cspell:ignore versioncode
|
|
4
5
|
import { AdbCommandBase, AdbSubprocessNoneProtocol, escapeArg, } from "@yume-chan/adb";
|
|
5
|
-
import { DecodeUtf8Stream,
|
|
6
|
+
import { ConcatStringStream, DecodeUtf8Stream, SplitStringStream, } from "@yume-chan/stream-extra";
|
|
6
7
|
import { Cmd } from "./cmd.js";
|
|
8
|
+
import { buildArguments } from "./utils.js";
|
|
7
9
|
export var PackageManagerInstallLocation;
|
|
8
10
|
(function (PackageManagerInstallLocation) {
|
|
9
11
|
PackageManagerInstallLocation[PackageManagerInstallLocation["Auto"] = 0] = "Auto";
|
|
10
12
|
PackageManagerInstallLocation[PackageManagerInstallLocation["InternalOnly"] = 1] = "InternalOnly";
|
|
11
13
|
PackageManagerInstallLocation[PackageManagerInstallLocation["PreferExternal"] = 2] = "PreferExternal";
|
|
12
|
-
})(PackageManagerInstallLocation
|
|
14
|
+
})(PackageManagerInstallLocation || (PackageManagerInstallLocation = {}));
|
|
13
15
|
export var PackageManagerInstallReason;
|
|
14
16
|
(function (PackageManagerInstallReason) {
|
|
15
17
|
PackageManagerInstallReason[PackageManagerInstallReason["Unknown"] = 0] = "Unknown";
|
|
@@ -17,7 +19,7 @@ export var PackageManagerInstallReason;
|
|
|
17
19
|
PackageManagerInstallReason[PackageManagerInstallReason["DeviceRestore"] = 2] = "DeviceRestore";
|
|
18
20
|
PackageManagerInstallReason[PackageManagerInstallReason["DeviceSetup"] = 3] = "DeviceSetup";
|
|
19
21
|
PackageManagerInstallReason[PackageManagerInstallReason["UserRequest"] = 4] = "UserRequest";
|
|
20
|
-
})(PackageManagerInstallReason
|
|
22
|
+
})(PackageManagerInstallReason || (PackageManagerInstallReason = {}));
|
|
21
23
|
export const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP = {
|
|
22
24
|
skipExisting: "-R",
|
|
23
25
|
installerPackageName: "-i",
|
|
@@ -35,7 +37,7 @@ export const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP = {
|
|
|
35
37
|
instantApp: "--instant",
|
|
36
38
|
full: "--full",
|
|
37
39
|
preload: "--preload",
|
|
38
|
-
|
|
40
|
+
user: "--user",
|
|
39
41
|
installLocation: "--install-location",
|
|
40
42
|
installReason: "--install-reason",
|
|
41
43
|
forceUuid: "--force-uuid",
|
|
@@ -48,36 +50,40 @@ export const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP = {
|
|
|
48
50
|
skipVerification: "--skip-verification",
|
|
49
51
|
bypassLowTargetSdkBlock: "--bypass-low-target-sdk-block",
|
|
50
52
|
};
|
|
53
|
+
export const PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP = {
|
|
54
|
+
listDisabled: "-d",
|
|
55
|
+
listEnabled: "-e",
|
|
56
|
+
showSourceDir: "-f",
|
|
57
|
+
showInstaller: "-i",
|
|
58
|
+
listSystem: "-s",
|
|
59
|
+
showUid: "-U",
|
|
60
|
+
listThirdParty: "-3",
|
|
61
|
+
showVersionCode: "--show-versioncode",
|
|
62
|
+
listApexOnly: "--apex-only",
|
|
63
|
+
user: "--user",
|
|
64
|
+
uid: "--uid",
|
|
65
|
+
filter: "",
|
|
66
|
+
};
|
|
67
|
+
const PACKAGE_MANAGER_UNINSTALL_OPTIONS_MAP = {
|
|
68
|
+
keepData: "-k",
|
|
69
|
+
user: "--user",
|
|
70
|
+
versionCode: "--versionCode",
|
|
71
|
+
splitNames: "",
|
|
72
|
+
};
|
|
73
|
+
const PACKAGE_MANAGER_RESOLVE_ACTIVITY_OPTIONS_MAP = {
|
|
74
|
+
user: "--user",
|
|
75
|
+
};
|
|
51
76
|
export class PackageManager extends AdbCommandBase {
|
|
52
|
-
|
|
77
|
+
#cmd;
|
|
53
78
|
constructor(adb) {
|
|
54
79
|
super(adb);
|
|
55
|
-
this
|
|
80
|
+
this.#cmd = new Cmd(adb);
|
|
56
81
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (options) {
|
|
60
|
-
for (const [key, value] of Object.entries(options)) {
|
|
61
|
-
if (value) {
|
|
62
|
-
const option = PACKAGE_MANAGER_INSTALL_OPTIONS_MAP[key];
|
|
63
|
-
if (option) {
|
|
64
|
-
args.push(option);
|
|
65
|
-
switch (typeof value) {
|
|
66
|
-
case "number":
|
|
67
|
-
args.push(value.toString());
|
|
68
|
-
break;
|
|
69
|
-
case "string":
|
|
70
|
-
args.push(value);
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return args;
|
|
82
|
+
#buildInstallArguments(options) {
|
|
83
|
+
return buildArguments(["pm", "install"], options, PACKAGE_MANAGER_INSTALL_OPTIONS_MAP);
|
|
78
84
|
}
|
|
79
85
|
async install(apks, options) {
|
|
80
|
-
const args = this
|
|
86
|
+
const args = this.#buildInstallArguments(options);
|
|
81
87
|
// WIP: old version of pm doesn't support multiple apks
|
|
82
88
|
args.push(...apks);
|
|
83
89
|
return await this.adb.subprocess.spawnAndWaitLegacy(args);
|
|
@@ -95,31 +101,143 @@ export class PackageManager extends AdbCommandBase {
|
|
|
95
101
|
finally {
|
|
96
102
|
await sync.dispose();
|
|
97
103
|
}
|
|
98
|
-
|
|
104
|
+
// Starting from Android 7, `pm` is only a wrapper for `cmd package`,
|
|
105
|
+
// and `cmd package` launches faster than `pm`.
|
|
106
|
+
// But `cmd package` can't read `/data/local/tmp` folder due to SELinux policy,
|
|
107
|
+
// so installing a file must use `pm`.
|
|
108
|
+
const args = this.#buildInstallArguments(options);
|
|
99
109
|
args.push(filePath);
|
|
100
|
-
const process = await
|
|
101
|
-
|
|
102
|
-
start: () => process.stdout.pipeThrough(new DecodeUtf8Stream()),
|
|
103
|
-
close: async () => {
|
|
104
|
-
await this.adb.rm(filePath);
|
|
105
|
-
},
|
|
110
|
+
const process = await this.adb.subprocess.spawn(args.map(escapeArg), {
|
|
111
|
+
protocols: [AdbSubprocessNoneProtocol],
|
|
106
112
|
});
|
|
113
|
+
const output = await process.stdout
|
|
114
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
115
|
+
.pipeThrough(new ConcatStringStream())
|
|
116
|
+
.then((output) => output.trim());
|
|
117
|
+
await this.adb.rm(filePath);
|
|
118
|
+
if (output !== "Success") {
|
|
119
|
+
throw new Error(output);
|
|
120
|
+
}
|
|
107
121
|
}
|
|
108
122
|
async installStream(size, stream, options) {
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
// Android 7 added both `cmd` command and streaming install support,
|
|
124
|
+
// we can't detect whether `pm` supports streaming install,
|
|
125
|
+
// so we detect `cmd` command support instead.
|
|
126
|
+
if (!this.#cmd.supportsCmd) {
|
|
127
|
+
await this.pushAndInstallStream(stream, options);
|
|
128
|
+
return;
|
|
111
129
|
}
|
|
112
|
-
|
|
113
|
-
//
|
|
114
|
-
// However, `cmd package install` can't read `/data/local/tmp` folder due to SELinux policy,
|
|
115
|
-
// so even ADB today is still using `pm install` for non-streaming installs.
|
|
116
|
-
const args = this.buildInstallArgs(options);
|
|
117
|
-
// Remove `pm` from args, final command will be `cmd package install`
|
|
130
|
+
const args = this.#buildInstallArguments(options);
|
|
131
|
+
// Remove `pm` from args, final command will starts with `cmd package install`
|
|
118
132
|
args.shift();
|
|
119
133
|
args.push("-S", size.toString());
|
|
120
|
-
const process = await this.
|
|
121
|
-
|
|
122
|
-
|
|
134
|
+
const process = await this.#cmd.spawn(false, "package", ...args);
|
|
135
|
+
const output = process.stdout
|
|
136
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
137
|
+
.pipeThrough(new ConcatStringStream())
|
|
138
|
+
.then((output) => output.trim());
|
|
139
|
+
await Promise.all([
|
|
140
|
+
stream.pipeTo(process.stdin),
|
|
141
|
+
output.then((output) => {
|
|
142
|
+
if (output !== "Success") {
|
|
143
|
+
throw new Error(output);
|
|
144
|
+
}
|
|
145
|
+
}),
|
|
146
|
+
]);
|
|
147
|
+
}
|
|
148
|
+
// TODO: install: support split apk formats (`adb install-multiple`)
|
|
149
|
+
static parsePackageListItem(line) {
|
|
150
|
+
line = line.substring("package:".length);
|
|
151
|
+
let packageName;
|
|
152
|
+
let sourceDir;
|
|
153
|
+
let versionCode;
|
|
154
|
+
let installer;
|
|
155
|
+
let uid;
|
|
156
|
+
// Parse backwards
|
|
157
|
+
let index = line.indexOf(" uid:");
|
|
158
|
+
if (index !== -1) {
|
|
159
|
+
uid = Number.parseInt(line.substring(index + " uid:".length), 10);
|
|
160
|
+
line = line.substring(0, index);
|
|
161
|
+
}
|
|
162
|
+
index = line.indexOf(" installer=");
|
|
163
|
+
if (index !== -1) {
|
|
164
|
+
installer = line.substring(index + " installer=".length);
|
|
165
|
+
line = line.substring(0, index);
|
|
166
|
+
}
|
|
167
|
+
index = line.indexOf(" versionCode:");
|
|
168
|
+
if (index !== -1) {
|
|
169
|
+
versionCode = Number.parseInt(line.substring(index + " versionCode:".length), 10);
|
|
170
|
+
line = line.substring(0, index);
|
|
171
|
+
}
|
|
172
|
+
// `sourceDir` may contain `=` so use `lastIndexOf`
|
|
173
|
+
index = line.lastIndexOf("=");
|
|
174
|
+
if (index !== -1) {
|
|
175
|
+
sourceDir = line.substring(0, index);
|
|
176
|
+
packageName = line.substring(index + "=".length);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
packageName = line;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
packageName,
|
|
183
|
+
sourceDir,
|
|
184
|
+
versionCode,
|
|
185
|
+
installer,
|
|
186
|
+
uid,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async #cmdOrSubprocess(args) {
|
|
190
|
+
if (this.#cmd.supportsCmd) {
|
|
191
|
+
args.shift();
|
|
192
|
+
return await this.#cmd.spawn(false, "package", ...args);
|
|
193
|
+
}
|
|
194
|
+
return this.adb.subprocess.spawn(args);
|
|
195
|
+
}
|
|
196
|
+
async *listPackages(options) {
|
|
197
|
+
const args = buildArguments(["pm", "list", "packages"], options, PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP);
|
|
198
|
+
if (options?.filter) {
|
|
199
|
+
args.push(options.filter);
|
|
200
|
+
}
|
|
201
|
+
const process = await this.#cmdOrSubprocess(args);
|
|
202
|
+
const reader = process.stdout
|
|
203
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
204
|
+
.pipeThrough(new SplitStringStream("\n"))
|
|
205
|
+
.getReader();
|
|
206
|
+
while (true) {
|
|
207
|
+
const { done, value } = await reader.read();
|
|
208
|
+
if (done) {
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
yield PackageManager.parsePackageListItem(value);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async uninstall(packageName, options) {
|
|
215
|
+
const args = buildArguments(["pm", "uninstall"], options, PACKAGE_MANAGER_UNINSTALL_OPTIONS_MAP);
|
|
216
|
+
args.push(packageName);
|
|
217
|
+
if (options?.splitNames) {
|
|
218
|
+
args.push(...options.splitNames);
|
|
219
|
+
}
|
|
220
|
+
const process = await this.#cmdOrSubprocess(args);
|
|
221
|
+
const output = await process.stdout
|
|
222
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
223
|
+
.pipeThrough(new ConcatStringStream())
|
|
224
|
+
.then((output) => output.trim());
|
|
225
|
+
if (output !== "Success") {
|
|
226
|
+
throw new Error(output);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async resolveActivity(options) {
|
|
230
|
+
let args = buildArguments(["pm", "resolve-activity", "--components"], options, PACKAGE_MANAGER_RESOLVE_ACTIVITY_OPTIONS_MAP);
|
|
231
|
+
args = args.concat(options.intent.build());
|
|
232
|
+
const process = await this.#cmdOrSubprocess(args);
|
|
233
|
+
const output = await process.stdout
|
|
234
|
+
.pipeThrough(new DecodeUtf8Stream())
|
|
235
|
+
.pipeThrough(new ConcatStringStream())
|
|
236
|
+
.then((output) => output.trim());
|
|
237
|
+
if (output === "No activity found") {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
return output;
|
|
123
241
|
}
|
|
124
242
|
}
|
|
125
243
|
//# sourceMappingURL=pm.js.map
|
package/esm/pm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,2BAA2B;AAC3B,qBAAqB;
|
|
1
|
+
{"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"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"}
|
package/esm/settings.d.ts
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
|
+
import type { Adb } from "@yume-chan/adb";
|
|
1
2
|
import { AdbCommandBase } from "@yume-chan/adb";
|
|
3
|
+
import type { SingleUser } from "./utils.js";
|
|
2
4
|
export type SettingsNamespace = "system" | "secure" | "global";
|
|
3
|
-
export
|
|
5
|
+
export declare enum SettingsResetMode {
|
|
6
|
+
UntrustedDefaults = "untrusted_defaults",
|
|
7
|
+
UntrustedClear = "untrusted_clear",
|
|
8
|
+
TrustedDefaults = "trusted_defaults"
|
|
9
|
+
}
|
|
10
|
+
export interface SettingsOptions {
|
|
11
|
+
user?: SingleUser;
|
|
12
|
+
}
|
|
13
|
+
export interface SettingsPutOptions extends SettingsOptions {
|
|
14
|
+
tag?: string;
|
|
15
|
+
makeDefault?: boolean;
|
|
16
|
+
}
|
|
4
17
|
export declare class Settings extends AdbCommandBase {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
18
|
+
#private;
|
|
19
|
+
constructor(adb: Adb);
|
|
20
|
+
base(verb: string, namespace: SettingsNamespace, options: SettingsOptions | undefined, ...args: string[]): Promise<string>;
|
|
21
|
+
get(namespace: SettingsNamespace, key: string, options?: SettingsOptions): Promise<string>;
|
|
22
|
+
delete(namespace: SettingsNamespace, key: string, options?: SettingsOptions): Promise<void>;
|
|
23
|
+
put(namespace: SettingsNamespace, key: string, value: string, options?: SettingsPutOptions): Promise<void>;
|
|
24
|
+
reset(namespace: SettingsNamespace, mode: SettingsResetMode, options?: SettingsOptions): Promise<void>;
|
|
25
|
+
reset(namespace: SettingsNamespace, packageName: string, tag?: string, options?: SettingsOptions): Promise<void>;
|
|
12
26
|
}
|
|
13
27
|
//# sourceMappingURL=settings.d.ts.map
|
package/esm/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAA2B,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,oBAAY,iBAAiB;IACzB,iBAAiB,uBAAuB;IACxC,cAAc,oBAAoB;IAClC,eAAe,qBAAqB;CACvC;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,qBAAa,QAAS,SAAQ,cAAc;;gBAG5B,GAAG,EAAE,GAAG;IAKd,IAAI,CACN,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,GAAG,IAAI,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC;IA2BZ,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe;IAOvB,MAAM,CACR,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAIV,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAWhB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAChB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;CAmBnB"}
|
package/esm/settings.js
CHANGED
|
@@ -1,41 +1,66 @@
|
|
|
1
1
|
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
+
import { Cmd } from "./cmd.js";
|
|
3
|
+
export var SettingsResetMode;
|
|
4
|
+
(function (SettingsResetMode) {
|
|
5
|
+
SettingsResetMode["UntrustedDefaults"] = "untrusted_defaults";
|
|
6
|
+
SettingsResetMode["UntrustedClear"] = "untrusted_clear";
|
|
7
|
+
SettingsResetMode["TrustedDefaults"] = "trusted_defaults";
|
|
8
|
+
})(SettingsResetMode || (SettingsResetMode = {}));
|
|
2
9
|
// frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
|
|
3
10
|
export class Settings extends AdbCommandBase {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
command,
|
|
9
|
-
namespace,
|
|
10
|
-
...args,
|
|
11
|
-
]);
|
|
11
|
+
#cmd;
|
|
12
|
+
constructor(adb) {
|
|
13
|
+
super(adb);
|
|
14
|
+
this.#cmd = new Cmd(adb);
|
|
12
15
|
}
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
async base(verb, namespace, options, ...args) {
|
|
17
|
+
let command = ["settings"];
|
|
18
|
+
if (options?.user !== undefined) {
|
|
19
|
+
command.push("--user", options.user.toString());
|
|
20
|
+
}
|
|
21
|
+
command.push(verb, namespace);
|
|
22
|
+
command = command.concat(args);
|
|
23
|
+
let output;
|
|
24
|
+
if (this.#cmd.supportsCmd) {
|
|
25
|
+
output = await this.#cmd.spawnAndWait(command[0], ...command.slice(1));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
output = await this.adb.subprocess.spawnAndWait(command);
|
|
29
|
+
}
|
|
30
|
+
if (output.stderr) {
|
|
31
|
+
throw new Error(output.stderr);
|
|
32
|
+
}
|
|
33
|
+
return output.stdout;
|
|
15
34
|
}
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
async get(namespace, key, options) {
|
|
36
|
+
const output = await this.base("get", namespace, options, key);
|
|
37
|
+
// Remove last \n
|
|
38
|
+
return output.substring(0, output.length - 1);
|
|
18
39
|
}
|
|
19
|
-
|
|
40
|
+
async delete(namespace, key, options) {
|
|
41
|
+
await this.base("delete", namespace, options, key);
|
|
42
|
+
}
|
|
43
|
+
async put(namespace, key, value, options) {
|
|
20
44
|
const args = [key, value];
|
|
21
|
-
if (tag) {
|
|
22
|
-
args.push(tag);
|
|
45
|
+
if (options?.tag) {
|
|
46
|
+
args.push(options.tag);
|
|
23
47
|
}
|
|
24
|
-
if (makeDefault) {
|
|
48
|
+
if (options?.makeDefault) {
|
|
25
49
|
args.push("default");
|
|
26
50
|
}
|
|
27
|
-
|
|
51
|
+
await this.base("put", namespace, options, ...args);
|
|
28
52
|
}
|
|
29
|
-
reset(namespace, modeOrPackageName,
|
|
53
|
+
async reset(namespace, modeOrPackageName, tagOrOptions, options) {
|
|
30
54
|
const args = [modeOrPackageName];
|
|
31
|
-
if (
|
|
32
|
-
|
|
55
|
+
if (modeOrPackageName === SettingsResetMode.UntrustedDefaults ||
|
|
56
|
+
modeOrPackageName === SettingsResetMode.UntrustedClear ||
|
|
57
|
+
modeOrPackageName === SettingsResetMode.TrustedDefaults) {
|
|
58
|
+
options = tagOrOptions;
|
|
33
59
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return output.split("\n");
|
|
60
|
+
else if (typeof tagOrOptions === "string") {
|
|
61
|
+
args.push(tagOrOptions);
|
|
62
|
+
}
|
|
63
|
+
await this.base("reset", namespace, options, ...args);
|
|
39
64
|
}
|
|
40
65
|
}
|
|
41
66
|
//# sourceMappingURL=settings.js.map
|
package/esm/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare class ParseError extends Error {
|
|
2
|
+
#private;
|
|
3
|
+
get expected(): string[];
|
|
4
|
+
constructor(expected: string[]);
|
|
5
|
+
}
|
|
6
|
+
export interface Reader {
|
|
7
|
+
value: string;
|
|
8
|
+
position: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Format<T> {
|
|
11
|
+
parse(reader: Reader): T;
|
|
12
|
+
stringify(value: T): string;
|
|
13
|
+
}
|
|
14
|
+
type UnionResult<T extends readonly Format<unknown>[]> = Exclude<{
|
|
15
|
+
[K in keyof T]: T[K] extends Format<infer F> ? F : never;
|
|
16
|
+
}[number], undefined>;
|
|
17
|
+
type SequenceResult<T extends readonly (Format<unknown> | {
|
|
18
|
+
name: string;
|
|
19
|
+
format: Format<unknown>;
|
|
20
|
+
})[]> = {
|
|
21
|
+
[K in keyof T as K extends `${number}` ? T[K] extends {
|
|
22
|
+
name: infer N extends string;
|
|
23
|
+
} ? N : never : never]: T[K] extends {
|
|
24
|
+
format: Format<infer F>;
|
|
25
|
+
} ? F : never;
|
|
26
|
+
} extends infer R extends Record<string, unknown> ? R : never;
|
|
27
|
+
export declare const p: {
|
|
28
|
+
literal: <T extends string>(value: T) => Format<T>;
|
|
29
|
+
digits: () => Format<number>;
|
|
30
|
+
union: <const T_1 extends readonly Format<unknown>[]>(...args: T_1) => Format<Exclude<{ [K in keyof T_1]: T_1[K] extends Format<infer F> ? F : never; }[number], undefined>>;
|
|
31
|
+
separated: <T_2>(separator: string, format: Format<T_2>, min?: number, max?: number) => Format<T_2[]>;
|
|
32
|
+
repeated: <T_3>(format: Format<T_3>) => Format<T_3[]>;
|
|
33
|
+
sequence: <const T_4 extends readonly (Format<unknown> | {
|
|
34
|
+
name: string;
|
|
35
|
+
format: Format<unknown>;
|
|
36
|
+
})[]>(...args: T_4) => Format<SequenceResult<T_4>>;
|
|
37
|
+
map: <T_5, R>(format: Format<T_5>, map: (value: T_5) => R, reverse: (value: R) => T_5) => Format<R>;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=string-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-format.d.ts","sourceRoot":"","sources":["../src/string-format.ts"],"names":[],"mappings":"AACA,qBAAa,UAAW,SAAQ,KAAK;;IAGjC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;gBAEW,QAAQ,EAAE,MAAM,EAAE;CAIjC;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IACzB,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;CAC/B;AAED,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAC5D;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC3D,CAAC,MAAM,CAAC,EACT,SAAS,CACZ,CAAC;AAEF,KAAK,cAAc,CACf,CAAC,SAAS,SAAS,CACb,MAAM,CAAC,OAAO,CAAC,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;CAAE,CAC9C,EAAE,IACH;KACC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,GAChC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;KAAE,GACzC,CAAC,GACD,KAAK,GACT,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK;CACrE,SAAS,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,CAAC,GACD,KAAK,CAAC;AAEZ,eAAO,MAAM,CAAC;;kBAaE,OAAO,MAAM,CAAC;;gCA6CX,MAAM;;;cAsDH,MAAM;gBAAU,OAAO,OAAO,CAAC;;;CAwCU,CAAC"}
|