obsidian-integration-testing 12.1.0 → 12.1.2
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/dist/lib/cjs/adb.cjs +61 -0
- package/dist/lib/cjs/adb.d.cts +61 -0
- package/dist/lib/cjs/device-screenshot.cjs +42 -0
- package/dist/lib/cjs/device-screenshot.d.cts +36 -0
- package/dist/lib/cjs/device-setting-restore.cjs +45 -0
- package/dist/lib/cjs/device-setting-restore.d.cts +60 -0
- package/dist/lib/cjs/device-settings-command.cjs +49 -0
- package/dist/lib/cjs/device-settings-command.d.cts +76 -0
- package/dist/lib/cjs/device-settings.cjs +88 -0
- package/dist/lib/cjs/device-settings.d.cts +94 -0
- package/dist/lib/cjs/emulator-device-id.cjs +32 -0
- package/dist/lib/cjs/emulator-device-id.d.cts +49 -0
- package/dist/lib/cjs/index.cjs +56 -3
- package/dist/lib/cjs/index.d.cts +18 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +14 -1
- package/dist/lib/cjs/mobile-input.d.cts +30 -0
- package/dist/lib/cjs/namespace-bootstrap.cjs +9 -1
- package/dist/lib/cjs/resolve-emulator-device-id.cjs +54 -0
- package/dist/lib/cjs/resolve-emulator-device-id.d.cts +28 -0
- package/dist/lib/cjs/soft-keyboard-geometry.cjs +75 -0
- package/dist/lib/cjs/soft-keyboard-geometry.d.cts +156 -0
- package/dist/lib/cjs/soft-keyboard.cjs +118 -0
- package/dist/lib/cjs/soft-keyboard.d.cts +82 -0
- package/dist/lib/cjs/transport-appium.cjs +5 -1
- package/dist/lib/esm/adb.d.mts +61 -0
- package/dist/lib/esm/adb.mjs +35 -0
- package/dist/lib/esm/device-screenshot.d.mts +36 -0
- package/dist/lib/esm/device-screenshot.mjs +18 -0
- package/dist/lib/esm/device-setting-restore.d.mts +60 -0
- package/dist/lib/esm/device-setting-restore.mjs +20 -0
- package/dist/lib/esm/device-settings-command.d.mts +76 -0
- package/dist/lib/esm/device-settings-command.mjs +23 -0
- package/dist/lib/esm/device-settings.d.mts +94 -0
- package/dist/lib/esm/device-settings.mjs +67 -0
- package/dist/lib/esm/emulator-device-id.d.mts +49 -0
- package/dist/lib/esm/emulator-device-id.mjs +8 -0
- package/dist/lib/esm/index.d.mts +18 -0
- package/dist/lib/esm/index.mjs +58 -2
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.d.mts +30 -0
- package/dist/lib/esm/mobile-input.mjs +12 -1
- package/dist/lib/esm/namespace-bootstrap.mjs +9 -1
- package/dist/lib/esm/resolve-emulator-device-id.d.mts +28 -0
- package/dist/lib/esm/resolve-emulator-device-id.mjs +33 -0
- package/dist/lib/esm/soft-keyboard-geometry.d.mts +156 -0
- package/dist/lib/esm/soft-keyboard-geometry.mjs +47 -0
- package/dist/lib/esm/soft-keyboard.d.mts +82 -0
- package/dist/lib/esm/soft-keyboard.mjs +91 -0
- package/dist/lib/esm/transport-appium.mjs +7 -1
- package/package.json +4 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Builds the `adb shell settings …` argument list.
|
|
5
|
+
*
|
|
6
|
+
* Split out of {@link ./device-settings.ts} for the same reason
|
|
7
|
+
* {@link ./adb-device-list.ts} is split out of the transport factory: the
|
|
8
|
+
* argument list is pure and worth unit-testing, while the call that runs it is
|
|
9
|
+
* integration-time code that a unit test cannot reach. Keeping them in one file
|
|
10
|
+
* would put the namespace default inside a coverage-ignored block, where nothing
|
|
11
|
+
* checks that it is what the documentation claims.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The `settings` namespaces this helper addresses.
|
|
15
|
+
*/
|
|
16
|
+
export declare enum DeviceSettingNamespace {
|
|
17
|
+
/**
|
|
18
|
+
* Device-wide settings, e.g. `hide_error_dialogs`.
|
|
19
|
+
*/
|
|
20
|
+
Global = "global",
|
|
21
|
+
/**
|
|
22
|
+
* Per-user settings the system reads, e.g. `show_ime_with_hard_keyboard`.
|
|
23
|
+
*/
|
|
24
|
+
Secure = "secure",
|
|
25
|
+
/**
|
|
26
|
+
* Per-user settings apps may read, e.g. `screen_brightness`.
|
|
27
|
+
*/
|
|
28
|
+
System = "system"
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The `settings` sub-commands this helper issues.
|
|
32
|
+
*/
|
|
33
|
+
export declare enum DeviceSettingVerb {
|
|
34
|
+
/**
|
|
35
|
+
* Removes the setting, returning it to never-having-been-written.
|
|
36
|
+
*/
|
|
37
|
+
Delete = "delete",
|
|
38
|
+
/**
|
|
39
|
+
* Reads the setting, printing `null` when it has never been written.
|
|
40
|
+
*/
|
|
41
|
+
Get = "get",
|
|
42
|
+
/**
|
|
43
|
+
* Writes the setting.
|
|
44
|
+
*/
|
|
45
|
+
Put = "put"
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parameters for {@link buildDeviceSettingsCommandArguments}.
|
|
49
|
+
*/
|
|
50
|
+
export interface BuildDeviceSettingsCommandArgumentsParams {
|
|
51
|
+
/**
|
|
52
|
+
* The setting's name within {@link namespace}, e.g. `show_ime_with_hard_keyboard`.
|
|
53
|
+
*/
|
|
54
|
+
readonly name: string;
|
|
55
|
+
/**
|
|
56
|
+
* The settings namespace the name lives in.
|
|
57
|
+
*
|
|
58
|
+
* @default {@link DeviceSettingNamespace.Secure}
|
|
59
|
+
*/
|
|
60
|
+
readonly namespace?: DeviceSettingNamespace;
|
|
61
|
+
/**
|
|
62
|
+
* The value to write. Meaningful only for {@link DeviceSettingVerb.Put}.
|
|
63
|
+
*/
|
|
64
|
+
readonly value?: string;
|
|
65
|
+
/**
|
|
66
|
+
* The sub-command to issue.
|
|
67
|
+
*/
|
|
68
|
+
readonly verb: DeviceSettingVerb;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds the arguments for `adb shell settings <verb> <namespace> <name> [value]`.
|
|
72
|
+
*
|
|
73
|
+
* @param params - The sub-command, the setting, its namespace and — for a write — its value.
|
|
74
|
+
* @returns The arguments to hand to `runAdbText`, `shell` included.
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildDeviceSettingsCommandArguments(params: BuildDeviceSettingsCommandArgumentsParams): string[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var DeviceSettingNamespace = /* @__PURE__ */ ((DeviceSettingNamespace2) => {
|
|
2
|
+
DeviceSettingNamespace2["Global"] = "global";
|
|
3
|
+
DeviceSettingNamespace2["Secure"] = "secure";
|
|
4
|
+
DeviceSettingNamespace2["System"] = "system";
|
|
5
|
+
return DeviceSettingNamespace2;
|
|
6
|
+
})(DeviceSettingNamespace || {});
|
|
7
|
+
var DeviceSettingVerb = /* @__PURE__ */ ((DeviceSettingVerb2) => {
|
|
8
|
+
DeviceSettingVerb2["Delete"] = "delete";
|
|
9
|
+
DeviceSettingVerb2["Get"] = "get";
|
|
10
|
+
DeviceSettingVerb2["Put"] = "put";
|
|
11
|
+
return DeviceSettingVerb2;
|
|
12
|
+
})(DeviceSettingVerb || {});
|
|
13
|
+
function buildDeviceSettingsCommandArguments(params) {
|
|
14
|
+
const namespace = params.namespace ?? "secure" /* Secure */;
|
|
15
|
+
const value = params.verb === "put" /* Put */ && params.value !== void 0 ? [params.value] : [];
|
|
16
|
+
return ["shell", "settings", params.verb, namespace, params.name, ...value];
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
DeviceSettingNamespace,
|
|
20
|
+
DeviceSettingVerb,
|
|
21
|
+
buildDeviceSettingsCommandArguments
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1zZXR0aW5ncy1jb21tYW5kLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQnVpbGRzIHRoZSBgYWRiIHNoZWxsIHNldHRpbmdzIFx1MjAyNmAgYXJndW1lbnQgbGlzdC5cbiAqXG4gKiBTcGxpdCBvdXQgb2Yge0BsaW5rIC4vZGV2aWNlLXNldHRpbmdzLnRzfSBmb3IgdGhlIHNhbWUgcmVhc29uXG4gKiB7QGxpbmsgLi9hZGItZGV2aWNlLWxpc3QudHN9IGlzIHNwbGl0IG91dCBvZiB0aGUgdHJhbnNwb3J0IGZhY3Rvcnk6IHRoZVxuICogYXJndW1lbnQgbGlzdCBpcyBwdXJlIGFuZCB3b3J0aCB1bml0LXRlc3RpbmcsIHdoaWxlIHRoZSBjYWxsIHRoYXQgcnVucyBpdCBpc1xuICogaW50ZWdyYXRpb24tdGltZSBjb2RlIHRoYXQgYSB1bml0IHRlc3QgY2Fubm90IHJlYWNoLiBLZWVwaW5nIHRoZW0gaW4gb25lIGZpbGVcbiAqIHdvdWxkIHB1dCB0aGUgbmFtZXNwYWNlIGRlZmF1bHQgaW5zaWRlIGEgY292ZXJhZ2UtaWdub3JlZCBibG9jaywgd2hlcmUgbm90aGluZ1xuICogY2hlY2tzIHRoYXQgaXQgaXMgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBjbGFpbXMuXG4gKi9cblxuLyoqXG4gKiBUaGUgYHNldHRpbmdzYCBuYW1lc3BhY2VzIHRoaXMgaGVscGVyIGFkZHJlc3Nlcy5cbiAqL1xuZXhwb3J0IGVudW0gRGV2aWNlU2V0dGluZ05hbWVzcGFjZSB7XG4gIC8qKlxuICAgKiBEZXZpY2Utd2lkZSBzZXR0aW5ncywgZS5nLiBgaGlkZV9lcnJvcl9kaWFsb2dzYC5cbiAgICovXG4gIEdsb2JhbCA9ICdnbG9iYWwnLFxuXG4gIC8qKlxuICAgKiBQZXItdXNlciBzZXR0aW5ncyB0aGUgc3lzdGVtIHJlYWRzLCBlLmcuIGBzaG93X2ltZV93aXRoX2hhcmRfa2V5Ym9hcmRgLlxuICAgKi9cbiAgU2VjdXJlID0gJ3NlY3VyZScsXG5cbiAgLyoqXG4gICAqIFBlci11c2VyIHNldHRpbmdzIGFwcHMgbWF5IHJlYWQsIGUuZy4gYHNjcmVlbl9icmlnaHRuZXNzYC5cbiAgICovXG4gIFN5c3RlbSA9ICdzeXN0ZW0nXG59XG5cbi8qKlxuICogVGhlIGBzZXR0aW5nc2Agc3ViLWNvbW1hbmRzIHRoaXMgaGVscGVyIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGVudW0gRGV2aWNlU2V0dGluZ1ZlcmIge1xuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgc2V0dGluZywgcmV0dXJuaW5nIGl0IHRvIG5ldmVyLWhhdmluZy1iZWVuLXdyaXR0ZW4uXG4gICAqL1xuICBEZWxldGUgPSAnZGVsZXRlJyxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIHNldHRpbmcsIHByaW50aW5nIGBudWxsYCB3aGVuIGl0IGhhcyBuZXZlciBiZWVuIHdyaXR0ZW4uXG4gICAqL1xuICBHZXQgPSAnZ2V0JyxcblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBzZXR0aW5nLlxuICAgKi9cbiAgUHV0ID0gJ3B1dCdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5nJ3MgbmFtZSB3aXRoaW4ge0BsaW5rIG5hbWVzcGFjZX0sIGUuZy4gYHNob3dfaW1lX3dpdGhfaGFyZF9rZXlib2FyZGAuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBuYW1lc3BhY2UgdGhlIG5hbWUgbGl2ZXMgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBEZXZpY2VTZXR0aW5nTmFtZXNwYWNlLlNlY3VyZX1cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IERldmljZVNldHRpbmdOYW1lc3BhY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byB3cml0ZS4gTWVhbmluZ2Z1bCBvbmx5IGZvciB7QGxpbmsgRGV2aWNlU2V0dGluZ1ZlcmIuUHV0fS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3ViLWNvbW1hbmQgdG8gaXNzdWUuXG4gICAqL1xuICByZWFkb25seSB2ZXJiOiBEZXZpY2VTZXR0aW5nVmVyYjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGFyZ3VtZW50cyBmb3IgYGFkYiBzaGVsbCBzZXR0aW5ncyA8dmVyYj4gPG5hbWVzcGFjZT4gPG5hbWU+IFt2YWx1ZV1gLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc3ViLWNvbW1hbmQsIHRoZSBzZXR0aW5nLCBpdHMgbmFtZXNwYWNlIGFuZCBcdTIwMTQgZm9yIGEgd3JpdGUgXHUyMDE0IGl0cyB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSBhcmd1bWVudHMgdG8gaGFuZCB0byBgcnVuQWRiVGV4dGAsIGBzaGVsbGAgaW5jbHVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyhwYXJhbXM6IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lc3BhY2UgPSBwYXJhbXMubmFtZXNwYWNlID8/IERldmljZVNldHRpbmdOYW1lc3BhY2UuU2VjdXJlO1xuICBjb25zdCB2YWx1ZSA9IHBhcmFtcy52ZXJiID09PSBEZXZpY2VTZXR0aW5nVmVyYi5QdXQgJiYgcGFyYW1zLnZhbHVlICE9PSB1bmRlZmluZWQgPyBbcGFyYW1zLnZhbHVlXSA6IFtdO1xuXG4gIHJldHVybiBbJ3NoZWxsJywgJ3NldHRpbmdzJywgcGFyYW1zLnZlcmIsIG5hbWVzcGFjZSwgcGFyYW1zLm5hbWUsIC4uLnZhbHVlXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWdCTyxJQUFLLHlCQUFMLGtCQUFLQSw0QkFBTDtBQUlMLEVBQUFBLHdCQUFBLFlBQVM7QUFLVCxFQUFBQSx3QkFBQSxZQUFTO0FBS1QsRUFBQUEsd0JBQUEsWUFBUztBQWRDLFNBQUFBO0FBQUEsR0FBQTtBQW9CTCxJQUFLLG9CQUFMLGtCQUFLQyx1QkFBTDtBQUlMLEVBQUFBLG1CQUFBLFlBQVM7QUFLVCxFQUFBQSxtQkFBQSxTQUFNO0FBS04sRUFBQUEsbUJBQUEsU0FBTTtBQWRJLFNBQUFBO0FBQUEsR0FBQTtBQWtETCxTQUFTLG9DQUFvQyxRQUE2RDtBQUMvRyxRQUFNLFlBQVksT0FBTyxhQUFhO0FBQ3RDLFFBQU0sUUFBUSxPQUFPLFNBQVMsbUJBQXlCLE9BQU8sVUFBVSxTQUFZLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztBQUV0RyxTQUFPLENBQUMsU0FBUyxZQUFZLE9BQU8sTUFBTSxXQUFXLE9BQU8sTUFBTSxHQUFHLEtBQUs7QUFDNUU7IiwKICAibmFtZXMiOiBbIkRldmljZVNldHRpbmdOYW1lc3BhY2UiLCAiRGV2aWNlU2V0dGluZ1ZlcmIiXQp9Cg==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Reads and writes Android device settings — and wraps the one setting a
|
|
5
|
+
* screenshot suite has to change.
|
|
6
|
+
*
|
|
7
|
+
* The screenshot AVDs are built `hw.keyboard=yes`, so Android suppresses the
|
|
8
|
+
* on-screen keyboard even where the page asks for one. `show_ime_with_hard_keyboard`
|
|
9
|
+
* is what turns it back on. {@link withSoftKeyboardEnabled} flips it, runs the
|
|
10
|
+
* work, and puts the device back exactly as it found it — including restoring a
|
|
11
|
+
* setting that had never been written, which takes a delete rather than a write
|
|
12
|
+
* (see `device-setting-restore`).
|
|
13
|
+
*
|
|
14
|
+
* Every function here shells out, so the whole module is integration-time code;
|
|
15
|
+
* the restore decision and the argument list it depends on are unit-tested in
|
|
16
|
+
* their own modules.
|
|
17
|
+
*/
|
|
18
|
+
import type { DeviceSettingNamespace } from './device-settings-command.mjs';
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for {@link deleteDeviceSetting} and {@link readDeviceSetting}.
|
|
21
|
+
*/
|
|
22
|
+
export interface DeviceSettingParams {
|
|
23
|
+
/**
|
|
24
|
+
* The device to address.
|
|
25
|
+
*/
|
|
26
|
+
readonly deviceId: string;
|
|
27
|
+
/**
|
|
28
|
+
* The setting's name within {@link namespace}, e.g. `show_ime_with_hard_keyboard`.
|
|
29
|
+
*/
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/**
|
|
32
|
+
* The settings namespace the name lives in.
|
|
33
|
+
*
|
|
34
|
+
* @default {@link DeviceSettingNamespace.Secure}
|
|
35
|
+
*/
|
|
36
|
+
readonly namespace?: DeviceSettingNamespace;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parameters for {@link withSoftKeyboardEnabled}.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam T - What the wrapped work returns.
|
|
42
|
+
*/
|
|
43
|
+
export interface WithSoftKeyboardEnabledParams<T> {
|
|
44
|
+
/**
|
|
45
|
+
* The work to run while the on-screen keyboard is permitted.
|
|
46
|
+
*/
|
|
47
|
+
readonly callback: (this: void) => Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* The device to address.
|
|
50
|
+
*/
|
|
51
|
+
readonly deviceId: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parameters for {@link writeDeviceSetting}.
|
|
55
|
+
*/
|
|
56
|
+
export interface WriteDeviceSettingParams extends DeviceSettingParams {
|
|
57
|
+
/**
|
|
58
|
+
* The value to write.
|
|
59
|
+
*/
|
|
60
|
+
readonly value: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clears a device setting, returning it to never-having-been-written.
|
|
64
|
+
*
|
|
65
|
+
* @param params - The device, the setting and its namespace.
|
|
66
|
+
* @returns A {@link Promise} that resolves once the setting is gone.
|
|
67
|
+
*/
|
|
68
|
+
export declare function deleteDeviceSetting(params: DeviceSettingParams): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Reads a device setting.
|
|
71
|
+
*
|
|
72
|
+
* @param params - The device, the setting and its namespace.
|
|
73
|
+
* @returns A {@link Promise} that resolves to the setting's value, or the literal `null` when it has never
|
|
74
|
+
* been written.
|
|
75
|
+
*/
|
|
76
|
+
export declare function readDeviceSetting(params: DeviceSettingParams): Promise<string>;
|
|
77
|
+
/**
|
|
78
|
+
* Permits the on-screen keyboard for the duration of a callback, then restores the device exactly.
|
|
79
|
+
*
|
|
80
|
+
* The restore runs whether the callback succeeded or threw — a suite that dies mid-capture must not leave
|
|
81
|
+
* the device configured differently than it found it.
|
|
82
|
+
*
|
|
83
|
+
* @typeParam T - What the wrapped work returns.
|
|
84
|
+
* @param params - The device and the work to run.
|
|
85
|
+
* @returns A {@link Promise} that resolves to whatever the callback returned.
|
|
86
|
+
*/
|
|
87
|
+
export declare function withSoftKeyboardEnabled<T>(params: WithSoftKeyboardEnabledParams<T>): Promise<T>;
|
|
88
|
+
/**
|
|
89
|
+
* Writes a device setting.
|
|
90
|
+
*
|
|
91
|
+
* @param params - The device, the setting, its namespace and the value to write.
|
|
92
|
+
* @returns A {@link Promise} that resolves once the setting is written.
|
|
93
|
+
*/
|
|
94
|
+
export declare function writeDeviceSetting(params: WriteDeviceSettingParams): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { runAdbText } from "./adb.mjs";
|
|
2
|
+
import {
|
|
3
|
+
DeviceSettingRestoreKind,
|
|
4
|
+
resolveDeviceSettingRestore
|
|
5
|
+
} from "./device-setting-restore.mjs";
|
|
6
|
+
import {
|
|
7
|
+
buildDeviceSettingsCommandArguments,
|
|
8
|
+
DeviceSettingVerb
|
|
9
|
+
} from "./device-settings-command.mjs";
|
|
10
|
+
const SOFT_KEYBOARD_SETTING_NAME = "show_ime_with_hard_keyboard";
|
|
11
|
+
const SOFT_KEYBOARD_SETTING_ON = "1";
|
|
12
|
+
async function deleteDeviceSetting(params) {
|
|
13
|
+
await runAdbText({
|
|
14
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
15
|
+
name: params.name,
|
|
16
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
17
|
+
verb: DeviceSettingVerb.Delete
|
|
18
|
+
}),
|
|
19
|
+
deviceId: params.deviceId
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async function readDeviceSetting(params) {
|
|
23
|
+
return await runAdbText({
|
|
24
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
25
|
+
name: params.name,
|
|
26
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
27
|
+
verb: DeviceSettingVerb.Get
|
|
28
|
+
}),
|
|
29
|
+
deviceId: params.deviceId
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async function withSoftKeyboardEnabled(params) {
|
|
33
|
+
const settingParams = {
|
|
34
|
+
deviceId: params.deviceId,
|
|
35
|
+
name: SOFT_KEYBOARD_SETTING_NAME
|
|
36
|
+
};
|
|
37
|
+
const previousValue = await readDeviceSetting(settingParams);
|
|
38
|
+
await writeDeviceSetting({ ...settingParams, value: SOFT_KEYBOARD_SETTING_ON });
|
|
39
|
+
try {
|
|
40
|
+
return await params.callback();
|
|
41
|
+
} finally {
|
|
42
|
+
const restore = resolveDeviceSettingRestore(previousValue);
|
|
43
|
+
if (restore.kind === DeviceSettingRestoreKind.Delete) {
|
|
44
|
+
await deleteDeviceSetting(settingParams);
|
|
45
|
+
} else {
|
|
46
|
+
await writeDeviceSetting({ ...settingParams, value: restore.value });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function writeDeviceSetting(params) {
|
|
51
|
+
await runAdbText({
|
|
52
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
53
|
+
name: params.name,
|
|
54
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
55
|
+
value: params.value,
|
|
56
|
+
verb: DeviceSettingVerb.Put
|
|
57
|
+
}),
|
|
58
|
+
deviceId: params.deviceId
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
deleteDeviceSetting,
|
|
63
|
+
readDeviceSetting,
|
|
64
|
+
withSoftKeyboardEnabled,
|
|
65
|
+
writeDeviceSetting
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlYWRzIGFuZCB3cml0ZXMgQW5kcm9pZCBkZXZpY2Ugc2V0dGluZ3MgXHUyMDE0IGFuZCB3cmFwcyB0aGUgb25lIHNldHRpbmcgYVxuICogc2NyZWVuc2hvdCBzdWl0ZSBoYXMgdG8gY2hhbmdlLlxuICpcbiAqIFRoZSBzY3JlZW5zaG90IEFWRHMgYXJlIGJ1aWx0IGBody5rZXlib2FyZD15ZXNgLCBzbyBBbmRyb2lkIHN1cHByZXNzZXMgdGhlXG4gKiBvbi1zY3JlZW4ga2V5Ym9hcmQgZXZlbiB3aGVyZSB0aGUgcGFnZSBhc2tzIGZvciBvbmUuIGBzaG93X2ltZV93aXRoX2hhcmRfa2V5Ym9hcmRgXG4gKiBpcyB3aGF0IHR1cm5zIGl0IGJhY2sgb24uIHtAbGluayB3aXRoU29mdEtleWJvYXJkRW5hYmxlZH0gZmxpcHMgaXQsIHJ1bnMgdGhlXG4gKiB3b3JrLCBhbmQgcHV0cyB0aGUgZGV2aWNlIGJhY2sgZXhhY3RseSBhcyBpdCBmb3VuZCBpdCBcdTIwMTQgaW5jbHVkaW5nIHJlc3RvcmluZyBhXG4gKiBzZXR0aW5nIHRoYXQgaGFkIG5ldmVyIGJlZW4gd3JpdHRlbiwgd2hpY2ggdGFrZXMgYSBkZWxldGUgcmF0aGVyIHRoYW4gYSB3cml0ZVxuICogKHNlZSBgZGV2aWNlLXNldHRpbmctcmVzdG9yZWApLlxuICpcbiAqIEV2ZXJ5IGZ1bmN0aW9uIGhlcmUgc2hlbGxzIG91dCwgc28gdGhlIHdob2xlIG1vZHVsZSBpcyBpbnRlZ3JhdGlvbi10aW1lIGNvZGU7XG4gKiB0aGUgcmVzdG9yZSBkZWNpc2lvbiBhbmQgdGhlIGFyZ3VtZW50IGxpc3QgaXQgZGVwZW5kcyBvbiBhcmUgdW5pdC10ZXN0ZWQgaW5cbiAqIHRoZWlyIG93biBtb2R1bGVzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIGNvZGUgKHNoZWxscyBvdXQgdG8gYSByZWFsIGRldmljZSkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRGV2aWNlU2V0dGluZ05hbWVzcGFjZSB9IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcblxuaW1wb3J0IHsgcnVuQWRiVGV4dCB9IGZyb20gJy4vYWRiLm1qcyc7XG5pbXBvcnQge1xuICBEZXZpY2VTZXR0aW5nUmVzdG9yZUtpbmQsXG4gIHJlc29sdmVEZXZpY2VTZXR0aW5nUmVzdG9yZVxufSBmcm9tICcuL2RldmljZS1zZXR0aW5nLXJlc3RvcmUubWpzJztcbmltcG9ydCB7XG4gIGJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzLFxuICBEZXZpY2VTZXR0aW5nVmVyYlxufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy1jb21tYW5kLm1qcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGRlbGV0ZURldmljZVNldHRpbmd9IGFuZCB7QGxpbmsgcmVhZERldmljZVNldHRpbmd9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZVNldHRpbmdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmcncyBuYW1lIHdpdGhpbiB7QGxpbmsgbmFtZXNwYWNlfSwgZS5nLiBgc2hvd19pbWVfd2l0aF9oYXJkX2tleWJvYXJkYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIG5hbWVzcGFjZSB0aGUgbmFtZSBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIERldmljZVNldHRpbmdOYW1lc3BhY2UuU2VjdXJlfVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogRGV2aWNlU2V0dGluZ05hbWVzcGFjZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2l0aFNvZnRLZXlib2FyZEVuYWJsZWR9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFdoYXQgdGhlIHdyYXBwZWQgd29yayByZXR1cm5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrIHRvIHJ1biB3aGlsZSB0aGUgb24tc2NyZWVuIGtleWJvYXJkIGlzIHBlcm1pdHRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrOiAodGhpczogdm9pZCkgPT4gUHJvbWlzZTxUPjtcblxuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd3JpdGVEZXZpY2VTZXR0aW5nfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZURldmljZVNldHRpbmdQYXJhbXMgZXh0ZW5kcyBEZXZpY2VTZXR0aW5nUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNldHRpbmcgZGVjaWRpbmcgd2hldGhlciBBbmRyb2lkIGRyYXdzIGEga2V5Ym9hcmQgd2hpbGUgYSBoYXJkd2FyZSBvbmUgaXMgYXR0YWNoZWQuXG4gKi9cbmNvbnN0IFNPRlRfS0VZQk9BUkRfU0VUVElOR19OQU1FID0gJ3Nob3dfaW1lX3dpdGhfaGFyZF9rZXlib2FyZCc7XG5cbmNvbnN0IFNPRlRfS0VZQk9BUkRfU0VUVElOR19PTiA9ICcxJztcblxuLyoqXG4gKiBDbGVhcnMgYSBkZXZpY2Ugc2V0dGluZywgcmV0dXJuaW5nIGl0IHRvIG5ldmVyLWhhdmluZy1iZWVuLXdyaXR0ZW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nIGFuZCBpdHMgbmFtZXNwYWNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBzZXR0aW5nIGlzIGdvbmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVEZXZpY2VTZXR0aW5nKHBhcmFtczogRGV2aWNlU2V0dGluZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5BZGJUZXh0KHtcbiAgICBjb21tYW5kQXJndW1lbnRzOiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyh7XG4gICAgICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgICAgIC4uLihwYXJhbXMubmFtZXNwYWNlICE9PSB1bmRlZmluZWQgJiYgeyBuYW1lc3BhY2U6IHBhcmFtcy5uYW1lc3BhY2UgfSksXG4gICAgICB2ZXJiOiBEZXZpY2VTZXR0aW5nVmVyYi5EZWxldGVcbiAgICB9KSxcbiAgICBkZXZpY2VJZDogcGFyYW1zLmRldmljZUlkXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlYWRzIGEgZGV2aWNlIHNldHRpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nIGFuZCBpdHMgbmFtZXNwYWNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc2V0dGluZydzIHZhbHVlLCBvciB0aGUgbGl0ZXJhbCBgbnVsbGAgd2hlbiBpdCBoYXMgbmV2ZXJcbiAqICAgYmVlbiB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERldmljZVNldHRpbmcocGFyYW1zOiBEZXZpY2VTZXR0aW5nUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IHJ1bkFkYlRleHQoe1xuICAgIGNvbW1hbmRBcmd1bWVudHM6IGJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzKHtcbiAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgLi4uKHBhcmFtcy5uYW1lc3BhY2UgIT09IHVuZGVmaW5lZCAmJiB7IG5hbWVzcGFjZTogcGFyYW1zLm5hbWVzcGFjZSB9KSxcbiAgICAgIHZlcmI6IERldmljZVNldHRpbmdWZXJiLkdldFxuICAgIH0pLFxuICAgIGRldmljZUlkOiBwYXJhbXMuZGV2aWNlSWRcbiAgfSk7XG59XG5cbi8qKlxuICogUGVybWl0cyB0aGUgb24tc2NyZWVuIGtleWJvYXJkIGZvciB0aGUgZHVyYXRpb24gb2YgYSBjYWxsYmFjaywgdGhlbiByZXN0b3JlcyB0aGUgZGV2aWNlIGV4YWN0bHkuXG4gKlxuICogVGhlIHJlc3RvcmUgcnVucyB3aGV0aGVyIHRoZSBjYWxsYmFjayBzdWNjZWVkZWQgb3IgdGhyZXcgXHUyMDE0IGEgc3VpdGUgdGhhdCBkaWVzIG1pZC1jYXB0dXJlIG11c3Qgbm90IGxlYXZlXG4gKiB0aGUgZGV2aWNlIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkgdGhhbiBpdCBmb3VuZCBpdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBXaGF0IHRoZSB3cmFwcGVkIHdvcmsgcmV0dXJucy5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGV2aWNlIGFuZCB0aGUgd29yayB0byBydW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHdoYXRldmVyIHRoZSBjYWxsYmFjayByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkPFQ+KHBhcmFtczogV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXM8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3Qgc2V0dGluZ1BhcmFtczogRGV2aWNlU2V0dGluZ1BhcmFtcyA9IHtcbiAgICBkZXZpY2VJZDogcGFyYW1zLmRldmljZUlkLFxuICAgIG5hbWU6IFNPRlRfS0VZQk9BUkRfU0VUVElOR19OQU1FXG4gIH07XG5cbiAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGF3YWl0IHJlYWREZXZpY2VTZXR0aW5nKHNldHRpbmdQYXJhbXMpO1xuICBhd2FpdCB3cml0ZURldmljZVNldHRpbmcoeyAuLi5zZXR0aW5nUGFyYW1zLCB2YWx1ZTogU09GVF9LRVlCT0FSRF9TRVRUSU5HX09OIH0pO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHBhcmFtcy5jYWxsYmFjaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGNvbnN0IHJlc3RvcmUgPSByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmUocHJldmlvdXNWYWx1ZSk7XG4gICAgaWYgKHJlc3RvcmUua2luZCA9PT0gRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLkRlbGV0ZSkge1xuICAgICAgYXdhaXQgZGVsZXRlRGV2aWNlU2V0dGluZyhzZXR0aW5nUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgd3JpdGVEZXZpY2VTZXR0aW5nKHsgLi4uc2V0dGluZ1BhcmFtcywgdmFsdWU6IHJlc3RvcmUudmFsdWUgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogV3JpdGVzIGEgZGV2aWNlIHNldHRpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nLCBpdHMgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgdG8gd3JpdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHNldHRpbmcgaXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlRGV2aWNlU2V0dGluZyhwYXJhbXM6IFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5BZGJUZXh0KHtcbiAgICBjb21tYW5kQXJndW1lbnRzOiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyh7XG4gICAgICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgICAgIC4uLihwYXJhbXMubmFtZXNwYWNlICE9PSB1bmRlZmluZWQgJiYgeyBuYW1lc3BhY2U6IHBhcmFtcy5uYW1lc3BhY2UgfSksXG4gICAgICB2YWx1ZTogcGFyYW1zLnZhbHVlLFxuICAgICAgdmVyYjogRGV2aWNlU2V0dGluZ1ZlcmIuUHV0XG4gICAgfSksXG4gICAgZGV2aWNlSWQ6IHBhcmFtcy5kZXZpY2VJZFxuICB9KTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQXNCQSxTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBc0RQLE1BQU0sNkJBQTZCO0FBRW5DLE1BQU0sMkJBQTJCO0FBUWpDLGVBQXNCLG9CQUFvQixRQUE0QztBQUNwRixRQUFNLFdBQVc7QUFBQSxJQUNmLGtCQUFrQixvQ0FBb0M7QUFBQSxNQUNwRCxNQUFNLE9BQU87QUFBQSxNQUNiLEdBQUksT0FBTyxjQUFjLFVBQWEsRUFBRSxXQUFXLE9BQU8sVUFBVTtBQUFBLE1BQ3BFLE1BQU0sa0JBQWtCO0FBQUEsSUFDMUIsQ0FBQztBQUFBLElBQ0QsVUFBVSxPQUFPO0FBQUEsRUFDbkIsQ0FBQztBQUNIO0FBU0EsZUFBc0Isa0JBQWtCLFFBQThDO0FBQ3BGLFNBQU8sTUFBTSxXQUFXO0FBQUEsSUFDdEIsa0JBQWtCLG9DQUFvQztBQUFBLE1BQ3BELE1BQU0sT0FBTztBQUFBLE1BQ2IsR0FBSSxPQUFPLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxVQUFVO0FBQUEsTUFDcEUsTUFBTSxrQkFBa0I7QUFBQSxJQUMxQixDQUFDO0FBQUEsSUFDRCxVQUFVLE9BQU87QUFBQSxFQUNuQixDQUFDO0FBQ0g7QUFZQSxlQUFzQix3QkFBMkIsUUFBc0Q7QUFDckcsUUFBTSxnQkFBcUM7QUFBQSxJQUN6QyxVQUFVLE9BQU87QUFBQSxJQUNqQixNQUFNO0FBQUEsRUFDUjtBQUVBLFFBQU0sZ0JBQWdCLE1BQU0sa0JBQWtCLGFBQWE7QUFDM0QsUUFBTSxtQkFBbUIsRUFBRSxHQUFHLGVBQWUsT0FBTyx5QkFBeUIsQ0FBQztBQUU5RSxNQUFJO0FBQ0YsV0FBTyxNQUFNLE9BQU8sU0FBUztBQUFBLEVBQy9CLFVBQUU7QUFDQSxVQUFNLFVBQVUsNEJBQTRCLGFBQWE7QUFDekQsUUFBSSxRQUFRLFNBQVMseUJBQXlCLFFBQVE7QUFDcEQsWUFBTSxvQkFBb0IsYUFBYTtBQUFBLElBQ3pDLE9BQU87QUFDTCxZQUFNLG1CQUFtQixFQUFFLEdBQUcsZUFBZSxPQUFPLFFBQVEsTUFBTSxDQUFDO0FBQUEsSUFDckU7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxlQUFzQixtQkFBbUIsUUFBaUQ7QUFDeEYsUUFBTSxXQUFXO0FBQUEsSUFDZixrQkFBa0Isb0NBQW9DO0FBQUEsTUFDcEQsTUFBTSxPQUFPO0FBQUEsTUFDYixHQUFJLE9BQU8sY0FBYyxVQUFhLEVBQUUsV0FBVyxPQUFPLFVBQVU7QUFBQSxNQUNwRSxPQUFPLE9BQU87QUFBQSxNQUNkLE1BQU0sa0JBQWtCO0FBQUEsSUFDMUIsQ0FBQztBQUFBLElBQ0QsVUFBVSxPQUFPO0FBQUEsRUFDbkIsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Picks the running emulator that belongs to a named AVD.
|
|
5
|
+
*
|
|
6
|
+
* A capture suite must never take "the first device `adb devices` lists". Two
|
|
7
|
+
* things routinely make that the wrong device on this fleet: a physical phone is
|
|
8
|
+
* often plugged into the same machine, and the harness's own `obsidian_test` AVD
|
|
9
|
+
* runs at a different geometry than the `obsidian_screenshots` AVD sized to the
|
|
10
|
+
* store's frame. Picking by position silently photographs the wrong screen at
|
|
11
|
+
* the wrong size, and the dimension assertion that would have caught it fires
|
|
12
|
+
* several minutes later, after the run.
|
|
13
|
+
*
|
|
14
|
+
* Pure and unit-tested; the `adb` round-trips that gather the AVD names live in
|
|
15
|
+
* `resolve-emulator-device-id`.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* One running emulator, paired with the AVD it was started from.
|
|
19
|
+
*/
|
|
20
|
+
export interface EmulatorDeviceCandidate {
|
|
21
|
+
/**
|
|
22
|
+
* The AVD name the emulator reports, e.g. `obsidian_screenshots`.
|
|
23
|
+
*/
|
|
24
|
+
readonly avdName: string;
|
|
25
|
+
/**
|
|
26
|
+
* The device UDID, e.g. `emulator-5554`.
|
|
27
|
+
*/
|
|
28
|
+
readonly deviceId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parameters for {@link selectEmulatorDeviceId}.
|
|
32
|
+
*/
|
|
33
|
+
export interface SelectEmulatorDeviceIdParams {
|
|
34
|
+
/**
|
|
35
|
+
* The AVD name to match.
|
|
36
|
+
*/
|
|
37
|
+
readonly avdName: string;
|
|
38
|
+
/**
|
|
39
|
+
* Every running emulator, with the AVD each was started from.
|
|
40
|
+
*/
|
|
41
|
+
readonly candidates: readonly EmulatorDeviceCandidate[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Picks the emulator started from a named AVD.
|
|
45
|
+
*
|
|
46
|
+
* @param params - The AVD to match and the running emulators to match against.
|
|
47
|
+
* @returns The matching device UDID, or `null` when no running emulator carries that AVD name.
|
|
48
|
+
*/
|
|
49
|
+
export declare function selectEmulatorDeviceId(params: SelectEmulatorDeviceIdParams): null | string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
function selectEmulatorDeviceId(params) {
|
|
2
|
+
const match = params.candidates.find((candidate) => candidate.avdName === params.avdName);
|
|
3
|
+
return match ? match.deviceId : null;
|
|
4
|
+
}
|
|
5
|
+
export {
|
|
6
|
+
selectEmulatorDeviceId
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VtdWxhdG9yLWRldmljZS1pZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFBpY2tzIHRoZSBydW5uaW5nIGVtdWxhdG9yIHRoYXQgYmVsb25ncyB0byBhIG5hbWVkIEFWRC5cbiAqXG4gKiBBIGNhcHR1cmUgc3VpdGUgbXVzdCBuZXZlciB0YWtlIFwidGhlIGZpcnN0IGRldmljZSBgYWRiIGRldmljZXNgIGxpc3RzXCIuIFR3b1xuICogdGhpbmdzIHJvdXRpbmVseSBtYWtlIHRoYXQgdGhlIHdyb25nIGRldmljZSBvbiB0aGlzIGZsZWV0OiBhIHBoeXNpY2FsIHBob25lIGlzXG4gKiBvZnRlbiBwbHVnZ2VkIGludG8gdGhlIHNhbWUgbWFjaGluZSwgYW5kIHRoZSBoYXJuZXNzJ3Mgb3duIGBvYnNpZGlhbl90ZXN0YCBBVkRcbiAqIHJ1bnMgYXQgYSBkaWZmZXJlbnQgZ2VvbWV0cnkgdGhhbiB0aGUgYG9ic2lkaWFuX3NjcmVlbnNob3RzYCBBVkQgc2l6ZWQgdG8gdGhlXG4gKiBzdG9yZSdzIGZyYW1lLiBQaWNraW5nIGJ5IHBvc2l0aW9uIHNpbGVudGx5IHBob3RvZ3JhcGhzIHRoZSB3cm9uZyBzY3JlZW4gYXRcbiAqIHRoZSB3cm9uZyBzaXplLCBhbmQgdGhlIGRpbWVuc2lvbiBhc3NlcnRpb24gdGhhdCB3b3VsZCBoYXZlIGNhdWdodCBpdCBmaXJlc1xuICogc2V2ZXJhbCBtaW51dGVzIGxhdGVyLCBhZnRlciB0aGUgcnVuLlxuICpcbiAqIFB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgYGFkYmAgcm91bmQtdHJpcHMgdGhhdCBnYXRoZXIgdGhlIEFWRCBuYW1lcyBsaXZlIGluXG4gKiBgcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWRgLlxuICovXG5cbi8qKlxuICogT25lIHJ1bm5pbmcgZW11bGF0b3IsIHBhaXJlZCB3aXRoIHRoZSBBVkQgaXQgd2FzIHN0YXJ0ZWQgZnJvbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgQVZEIG5hbWUgdGhlIGVtdWxhdG9yIHJlcG9ydHMsIGUuZy4gYG9ic2lkaWFuX3NjcmVlbnNob3RzYC5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElELCBlLmcuIGBlbXVsYXRvci01NTU0YC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEVtdWxhdG9yRGV2aWNlSWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEVtdWxhdG9yRGV2aWNlSWRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIEFWRCBuYW1lIHRvIG1hdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVyeSBydW5uaW5nIGVtdWxhdG9yLCB3aXRoIHRoZSBBVkQgZWFjaCB3YXMgc3RhcnRlZCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuZGlkYXRlczogcmVhZG9ubHkgRW11bGF0b3JEZXZpY2VDYW5kaWRhdGVbXTtcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgZW11bGF0b3Igc3RhcnRlZCBmcm9tIGEgbmFtZWQgQVZELlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgQVZEIHRvIG1hdGNoIGFuZCB0aGUgcnVubmluZyBlbXVsYXRvcnMgdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBkZXZpY2UgVURJRCwgb3IgYG51bGxgIHdoZW4gbm8gcnVubmluZyBlbXVsYXRvciBjYXJyaWVzIHRoYXQgQVZEIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RFbXVsYXRvckRldmljZUlkKHBhcmFtczogU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHBhcmFtcy5jYW5kaWRhdGVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLmF2ZE5hbWUgPT09IHBhcmFtcy5hdmROYW1lKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2guZGV2aWNlSWQgOiBudWxsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBcURPLFNBQVMsdUJBQXVCLFFBQXFEO0FBQzFGLFFBQU0sUUFBUSxPQUFPLFdBQVcsS0FBSyxDQUFDLGNBQWMsVUFBVSxZQUFZLE9BQU8sT0FBTztBQUN4RixTQUFPLFFBQVEsTUFBTSxXQUFXO0FBQ2xDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Contains the entry point for the integration testing module.
|
|
5
5
|
*/
|
|
6
|
+
export type { RunAdbParams } from './adb.mjs';
|
|
7
|
+
export { runAdbBinary, runAdbText, runAdbTextWithoutDevice } from './adb.mjs';
|
|
6
8
|
export type { AsarFallback, AsarFallbackTier, ResolveAsarFallbackParams } from './asar-fallback-detection.mjs';
|
|
7
9
|
export { resolveAsarFallback } from './asar-fallback-detection.mjs';
|
|
8
10
|
export type { CaptureObsidianScreenshotOptions } from './capture-obsidian-screenshot.mjs';
|
|
@@ -25,8 +27,18 @@ export { buildDemoVaultPopulate, resolveMissingInjectedPlugins } from './demo-va
|
|
|
25
27
|
export type { ReadDemoVaultTreeParams } from './demo-vault-tree.mjs';
|
|
26
28
|
export { readDemoVaultTree } from './demo-vault-tree.mjs';
|
|
27
29
|
export { DesktopOnlyPluginSkipError } from './desktop-only-plugin-skip-error.mjs';
|
|
30
|
+
export type { CaptureDeviceScreenshotParams } from './device-screenshot.mjs';
|
|
31
|
+
export { captureDeviceScreenshot } from './device-screenshot.mjs';
|
|
32
|
+
export type { DeviceSettingRestore, DeviceSettingRestoreDelete, DeviceSettingRestoreWrite } from './device-setting-restore.mjs';
|
|
33
|
+
export { DeviceSettingRestoreKind, resolveDeviceSettingRestore } from './device-setting-restore.mjs';
|
|
34
|
+
export type { BuildDeviceSettingsCommandArgumentsParams } from './device-settings-command.mjs';
|
|
35
|
+
export { buildDeviceSettingsCommandArguments, DeviceSettingNamespace, DeviceSettingVerb } from './device-settings-command.mjs';
|
|
36
|
+
export type { DeviceSettingParams, WithSoftKeyboardEnabledParams, WriteDeviceSettingParams } from './device-settings.mjs';
|
|
37
|
+
export { deleteDeviceSetting, readDeviceSetting, withSoftKeyboardEnabled, writeDeviceSetting } from './device-settings.mjs';
|
|
28
38
|
export type { ElectronCompatibility, ElectronCompatibilityTier, ResolveElectronCompatibilityParams } from './electron-compatibility.mjs';
|
|
29
39
|
export { resolveElectronCompatibility } from './electron-compatibility.mjs';
|
|
40
|
+
export type { EmulatorDeviceCandidate, SelectEmulatorDeviceIdParams } from './emulator-device-id.mjs';
|
|
41
|
+
export { selectEmulatorDeviceId } from './emulator-device-id.mjs';
|
|
30
42
|
export type { ClickElementParams, ClickMouseParams, CommonArguments, CreateNoteParams, EvalInObsidianParams, GenericObject, HoverElementParams, Lib, MouseButton, MoveMouseParams, OpenSettingsTabParams, PressKeyParams, TypeIntoEditorParams, UnhoverElementParams, WaitUntilParams } from './eval-in-obsidian.mjs';
|
|
31
43
|
export { evalInObsidian } from './eval-in-obsidian.mjs';
|
|
32
44
|
export type { ComputeFitToCanvasParams, FitScreenshotToCanvasOptions, FitToCanvasGeometry } from './fit-screenshot.mjs';
|
|
@@ -51,10 +63,16 @@ export { OwnedInstanceExitedError } from './owned-instance-exited-error.mjs';
|
|
|
51
63
|
export type { PollInObsidianParams } from './poll-in-obsidian.mjs';
|
|
52
64
|
export { pollInObsidian } from './poll-in-obsidian.mjs';
|
|
53
65
|
export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.mjs';
|
|
66
|
+
export type { ResolveEmulatorDeviceIdParams } from './resolve-emulator-device-id.mjs';
|
|
67
|
+
export { resolveEmulatorDeviceId } from './resolve-emulator-device-id.mjs';
|
|
54
68
|
export type { RunObsidianVersionMatrixParams } from './run-version-matrix.mjs';
|
|
55
69
|
export { runObsidianVersionMatrix } from './run-version-matrix.mjs';
|
|
56
70
|
export type { SilentAsarFallbackErrorConstructorParams } from './silent-asar-fallback-error.mjs';
|
|
57
71
|
export { SilentAsarFallbackError } from './silent-asar-fallback-error.mjs';
|
|
72
|
+
export type { BuildSoftKeyboardDiagnosticMessageParams, CheckIsSoftKeyboardUpParams, ElementRect, ResolveSoftKeyboardTapPointsParams, SoftKeyboardTapPoint, SoftKeyboardViewportSnapshot } from './soft-keyboard-geometry.mjs';
|
|
73
|
+
export { buildSoftKeyboardDiagnosticMessage, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.mjs';
|
|
74
|
+
export type { RaiseSoftKeyboardParams, TapDeviceParams } from './soft-keyboard.mjs';
|
|
75
|
+
export { raiseSoftKeyboard, tapDevice } from './soft-keyboard.mjs';
|
|
58
76
|
export type { PopulateFileContent, PopulateFilesParams, TemporaryVaultOptions } from './temporary-vault.mjs';
|
|
59
77
|
export { TemporaryVault } from './temporary-vault.mjs';
|
|
60
78
|
export type { AppiumSessionInfo, AppiumTransportConfig } from './transport-appium.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAdbBinary,
|
|
3
|
+
runAdbText,
|
|
4
|
+
runAdbTextWithoutDevice
|
|
5
|
+
} from "./adb.mjs";
|
|
1
6
|
import { resolveAsarFallback } from "./asar-fallback-detection.mjs";
|
|
2
7
|
import { captureObsidianScreenshot } from "./capture-obsidian-screenshot.mjs";
|
|
3
8
|
import {
|
|
@@ -28,7 +33,24 @@ import {
|
|
|
28
33
|
} from "./demo-vault-populate.mjs";
|
|
29
34
|
import { readDemoVaultTree } from "./demo-vault-tree.mjs";
|
|
30
35
|
import { DesktopOnlyPluginSkipError } from "./desktop-only-plugin-skip-error.mjs";
|
|
36
|
+
import { captureDeviceScreenshot } from "./device-screenshot.mjs";
|
|
37
|
+
import {
|
|
38
|
+
DeviceSettingRestoreKind,
|
|
39
|
+
resolveDeviceSettingRestore
|
|
40
|
+
} from "./device-setting-restore.mjs";
|
|
41
|
+
import {
|
|
42
|
+
buildDeviceSettingsCommandArguments,
|
|
43
|
+
DeviceSettingNamespace,
|
|
44
|
+
DeviceSettingVerb
|
|
45
|
+
} from "./device-settings-command.mjs";
|
|
46
|
+
import {
|
|
47
|
+
deleteDeviceSetting,
|
|
48
|
+
readDeviceSetting,
|
|
49
|
+
withSoftKeyboardEnabled,
|
|
50
|
+
writeDeviceSetting
|
|
51
|
+
} from "./device-settings.mjs";
|
|
31
52
|
import { resolveElectronCompatibility } from "./electron-compatibility.mjs";
|
|
53
|
+
import { selectEmulatorDeviceId } from "./emulator-device-id.mjs";
|
|
32
54
|
import { evalInObsidian } from "./eval-in-obsidian.mjs";
|
|
33
55
|
import {
|
|
34
56
|
computeFitToCanvas,
|
|
@@ -53,8 +75,20 @@ import { openObsidianSettingsTab } from "./open-obsidian-settings-tab.mjs";
|
|
|
53
75
|
import { OwnedInstanceExitedError } from "./owned-instance-exited-error.mjs";
|
|
54
76
|
import { pollInObsidian } from "./poll-in-obsidian.mjs";
|
|
55
77
|
import { RendererFailedToInitializeError } from "./renderer-failed-to-initialize-error.mjs";
|
|
78
|
+
import { resolveEmulatorDeviceId } from "./resolve-emulator-device-id.mjs";
|
|
56
79
|
import { runObsidianVersionMatrix } from "./run-version-matrix.mjs";
|
|
57
80
|
import { SilentAsarFallbackError } from "./silent-asar-fallback-error.mjs";
|
|
81
|
+
import {
|
|
82
|
+
buildSoftKeyboardDiagnosticMessage,
|
|
83
|
+
checkIsSoftKeyboardUp,
|
|
84
|
+
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
85
|
+
parseInputMethodState,
|
|
86
|
+
resolveSoftKeyboardTapPoints
|
|
87
|
+
} from "./soft-keyboard-geometry.mjs";
|
|
88
|
+
import {
|
|
89
|
+
raiseSoftKeyboard,
|
|
90
|
+
tapDevice
|
|
91
|
+
} from "./soft-keyboard.mjs";
|
|
58
92
|
import { TemporaryVault } from "./temporary-vault.mjs";
|
|
59
93
|
import { AppiumTransport } from "./transport-appium.mjs";
|
|
60
94
|
import { DesktopCdpTransport } from "./transport-desktop-cdp.mjs";
|
|
@@ -71,9 +105,13 @@ export {
|
|
|
71
105
|
ConfigDirectoryFallbackError,
|
|
72
106
|
ContextId,
|
|
73
107
|
DEFAULT_CONFIG_DIRECTORY,
|
|
108
|
+
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
74
109
|
DEFAULT_OBSIDIAN_VERSION_SPECS,
|
|
75
110
|
DesktopCdpTransport,
|
|
76
111
|
DesktopOnlyPluginSkipError,
|
|
112
|
+
DeviceSettingNamespace,
|
|
113
|
+
DeviceSettingRestoreKind,
|
|
114
|
+
DeviceSettingVerb,
|
|
77
115
|
IncompatibleInstallerVersionError,
|
|
78
116
|
IntegrationSetupFailedError,
|
|
79
117
|
OwnedInstanceExitedError,
|
|
@@ -86,14 +124,19 @@ export {
|
|
|
86
124
|
buildDemoVaultPopulate,
|
|
87
125
|
buildDemoVaultPopulateAsync,
|
|
88
126
|
buildDeviceMetricsOverride,
|
|
127
|
+
buildDeviceSettingsCommandArguments,
|
|
89
128
|
buildLabelSvg,
|
|
129
|
+
buildSoftKeyboardDiagnosticMessage,
|
|
130
|
+
captureDeviceScreenshot,
|
|
90
131
|
captureObsidianScreenshot,
|
|
91
132
|
checkIsMobileTransport,
|
|
133
|
+
checkIsSoftKeyboardUp,
|
|
92
134
|
computeFitToCanvas,
|
|
93
135
|
computeLabelBand,
|
|
94
136
|
connectToCdp,
|
|
95
137
|
createTransportFromOptions,
|
|
96
138
|
decodeBase64Png,
|
|
139
|
+
deleteDeviceSetting,
|
|
97
140
|
escapeSvgText,
|
|
98
141
|
evalInObsidian,
|
|
99
142
|
fitScreenshotToCanvas,
|
|
@@ -101,19 +144,32 @@ export {
|
|
|
101
144
|
isPng,
|
|
102
145
|
labelScreenshot,
|
|
103
146
|
openObsidianSettingsTab,
|
|
147
|
+
parseInputMethodState,
|
|
104
148
|
pollInObsidian,
|
|
149
|
+
raiseSoftKeyboard,
|
|
105
150
|
readDemoVaultTree,
|
|
151
|
+
readDeviceSetting,
|
|
106
152
|
readPngDimensions,
|
|
107
153
|
registerLibResolver,
|
|
108
154
|
registerVault,
|
|
109
155
|
resolveAsarFallback,
|
|
156
|
+
resolveDeviceSettingRestore,
|
|
110
157
|
resolveElectronCompatibility,
|
|
158
|
+
resolveEmulatorDeviceId,
|
|
111
159
|
resolveInstallerCompatibility,
|
|
112
160
|
resolveMissingInjectedPlugins,
|
|
161
|
+
resolveSoftKeyboardTapPoints,
|
|
162
|
+
runAdbBinary,
|
|
163
|
+
runAdbText,
|
|
164
|
+
runAdbTextWithoutDevice,
|
|
113
165
|
runObsidianVersionMatrix,
|
|
166
|
+
selectEmulatorDeviceId,
|
|
114
167
|
setSetupErrorResolver,
|
|
115
168
|
setTransportOptionsResolver,
|
|
116
169
|
setVaultPathResolver,
|
|
117
|
-
|
|
170
|
+
tapDevice,
|
|
171
|
+
unregisterVault,
|
|
172
|
+
withSoftKeyboardEnabled,
|
|
173
|
+
writeDeviceSetting
|
|
118
174
|
};
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBhc3NlcnRWYWxpZENvbmZpZ0RpcmVjdG9yeSxcbiAgREVGQVVMVF9DT05GSUdfRElSRUNUT1JZXG59IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDZHBDb25uZWN0aW9uLFxuICBDb25uZWN0VG9DZHBPcHRpb25zXG59IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dE9mXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFNldHVwRXJyb3JSZXNvbHZlcixcbiAgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB7XG4gIHNldFNldHVwRXJyb3JSZXNvbHZlcixcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyxcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdCxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDbGlja0VsZW1lbnRQYXJhbXMsXG4gIENsaWNrTW91c2VQYXJhbXMsXG4gIENvbW1vbkFyZ3VtZW50cyxcbiAgQ3JlYXRlTm90ZVBhcmFtcyxcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3QsXG4gIEhvdmVyRWxlbWVudFBhcmFtcyxcbiAgTGliLFxuICBNb3VzZUJ1dHRvbixcbiAgTW92ZU1vdXNlUGFyYW1zLFxuICBPcGVuU2V0dGluZ3NUYWJQYXJhbXMsXG4gIFByZXNzS2V5UGFyYW1zLFxuICBUeXBlSW50b0VkaXRvclBhcmFtcyxcbiAgVW5ob3ZlckVsZW1lbnRQYXJhbXMsXG4gIFdhaXRVbnRpbFBhcmFtc1xufSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVGaXRUb0NhbnZhc1BhcmFtcyxcbiAgRml0U2NyZWVuc2hvdFRvQ2FudmFzT3B0aW9ucyxcbiAgRml0VG9DYW52YXNHZW9tZXRyeVxufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBjb21wdXRlRml0VG9DYW52YXMsXG4gIGZpdFNjcmVlbnNob3RUb0NhbnZhc1xufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsU2NyZWVuc2hvdE9wdGlvbnNcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZExhYmVsU3ZnLFxuICBjb21wdXRlTGFiZWxCYW5kLFxuICBlc2NhcGVTdmdUZXh0LFxuICBsYWJlbFNjcmVlbnNob3Rcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7IExpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkubWpzJztcbmV4cG9ydCB7IHJlZ2lzdGVyTGliUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhblJ1bnRpbWVWZXJzaW9ucyxcbiAgT2JzaWRpYW5WZXJzaW9uQ2hhbmdlbG9nVXJscyxcbiAgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzLFxuICBPYnNpZGlhblZlcnNpb25NZXRhZGF0YVxufSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLm1qcyc7XG5leHBvcnQgeyBnZXRWZXJzaW9uTWV0YWRhdGEgfSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLm1qcyc7XG5leHBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIFBVQkxJQ19MQVRFU1Rcbn0gZnJvbSAnLi9vYnNpZGlhbi12ZXJzaW9uLm1qcyc7XG5leHBvcnQgdHlwZSB7IE9wZW5PYnNpZGlhblNldHRpbmdzVGFiT3B0aW9ucyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIubWpzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUgeyBQb2xsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgcG9sbEluT2JzaWRpYW4gfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3IgfSBmcm9tICcuL3JlbmRlcmVyLWZhaWxlZC10by1pbml0aWFsaXplLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeFBhcmFtcyB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBydW5PYnNpZGlhblZlcnNpb25NYXRyaXggfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHR5cGUgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3IgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0T3B0aW9uc1xufSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5tanMnO1xuZXhwb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBpdW1TZXNzaW9uSW5mbyxcbiAgQXBwaXVtVHJhbnNwb3J0Q29uZmlnXG59IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5tanMnO1xuZXhwb3J0IHsgQXBwaXVtVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIERlc2t0b3BDZHBUcmFuc3BvcnRDb25maWcsXG4gIE93bmVkSW5zdGFuY2VBc2FyLFxuICBPd25lZEluc3RhbmNlQ29uZmlnLFxuICBPd25lZEluc3RhbmNlRW5kcG9pbnRcbn0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IERlc2t0b3BDZHBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zXG59IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcbmV4cG9ydCB7IGNoZWNrSXNNb2JpbGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnNvbGVDYXB0dXJlSGFuZGxlLFxuICBPYnNpZGlhblRyYW5zcG9ydCxcbiAgVHJhbnNwb3J0RXZhbE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQubWpzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHsgREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTIH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5tanMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBV0EsU0FBUywyQkFBMkI7QUFFcEMsU0FBUyxpQ0FBaUM7QUFLMUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsb0NBQW9DO0FBQzdDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsU0FBUyxvQkFBb0I7QUFLN0IsU0FBUyxpQkFBaUI7QUFNMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsb0NBQW9DO0FBa0I3QyxTQUFTLHNCQUFzQjtBQU0vQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUNBQXlDO0FBTWxELFNBQVMscUNBQXFDO0FBRTlDLFNBQVMsbUNBQW1DO0FBTTVDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQU9wQyxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBRWhELFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsK0JBQStCO0FBTXhDLFNBQVMsc0JBQXNCO0FBSy9CLFNBQVMsdUJBQXVCO0FBT2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsOEJBQThCO0FBTXZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxzQ0FBc0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBhc3NlcnRWYWxpZENvbmZpZ0RpcmVjdG9yeSxcbiAgREVGQVVMVF9DT05GSUdfRElSRUNUT1JZXG59IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDZHBDb25uZWN0aW9uLFxuICBDb25uZWN0VG9DZHBPcHRpb25zXG59IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dE9mXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFNldHVwRXJyb3JSZXNvbHZlcixcbiAgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB7XG4gIHNldFNldHVwRXJyb3JSZXNvbHZlcixcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyxcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdCxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5tanMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLm1qcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5tanMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2luY29tcGF0aWJsZS1pbnN0YWxsZXItdmVyc2lvbi1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSxcbiAgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIsXG4gIFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB7IHJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5IH0gZnJvbSAnLi9pbnN0YWxsZXItY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vaW50ZWdyYXRpb24tc2V0dXAtZmFpbGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb21wdXRlTGFiZWxCYW5kUGFyYW1zLFxuICBMYWJlbEJhbmRHZW9tZXRyeSxcbiAgTGFiZWxTY3JlZW5zaG90T3B0aW9uc1xufSBmcm9tICcuL2xhYmVsLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkTGFiZWxTdmcsXG4gIGNvbXB1dGVMYWJlbEJhbmQsXG4gIGVzY2FwZVN2Z1RleHQsXG4gIGxhYmVsU2NyZWVuc2hvdFxufSBmcm9tICcuL2xhYmVsLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgTGliUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHsgcmVnaXN0ZXJMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuUnVudGltZVZlcnNpb25zLFxuICBPYnNpZGlhblZlcnNpb25DaGFuZ2Vsb2dVcmxzLFxuICBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMsXG4gIE9ic2lkaWFuVmVyc2lvbk1ldGFkYXRhXG59IGZyb20gJy4vb2JzaWRpYW4tbWV0YWRhdGEubWpzJztcbmV4cG9ydCB7IGdldFZlcnNpb25NZXRhZGF0YSB9IGZyb20gJy4vb2JzaWRpYW4tbWV0YWRhdGEubWpzJztcbmV4cG9ydCB7XG4gIENBVEFMWVNUX0xBVEVTVCxcbiAgUFVCTElDX0xBVEVTVFxufSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgT3Blbk9ic2lkaWFuU2V0dGluZ3NUYWJPcHRpb25zIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHsgb3Blbk9ic2lkaWFuU2V0dGluZ3NUYWIgfSBmcm9tICcuL29wZW4tb2JzaWRpYW4tc2V0dGluZ3MtdGFiLm1qcyc7XG5leHBvcnQgdHlwZSB7IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0ZWQtZXJyb3IubWpzJztcbmV4cG9ydCB7IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IFBvbGxJbk9ic2lkaWFuUGFyYW1zIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgeyBwb2xsSW5PYnNpZGlhbiB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvciB9IGZyb20gJy4vcmVuZGVyZXItZmFpbGVkLXRvLWluaXRpYWxpemUtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgeyByZXNvbHZlRW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWQubWpzJztcbmV4cG9ydCB0eXBlIHsgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB7IHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeCB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgdHlwZSB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvciB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZVBhcmFtcyxcbiAgQ2hlY2tJc1NvZnRLZXlib2FyZFVwUGFyYW1zLFxuICBFbGVtZW50UmVjdCxcbiAgUmVzb2x2ZVNvZnRLZXlib2FyZFRhcFBvaW50c1BhcmFtcyxcbiAgU29mdEtleWJvYXJkVGFwUG9pbnQsXG4gIFNvZnRLZXlib2FyZFZpZXdwb3J0U25hcHNob3Rcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZFNvZnRLZXlib2FyZERpYWdub3N0aWNNZXNzYWdlLFxuICBjaGVja0lzU29mdEtleWJvYXJkVXAsXG4gIERFRkFVTFRfTUlOSU1VTV9LRVlCT0FSRF9IRUlHSFRfSU5fUElYRUxTLFxuICBwYXJzZUlucHV0TWV0aG9kU3RhdGUsXG4gIHJlc29sdmVTb2Z0S2V5Ym9hcmRUYXBQb2ludHNcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFJhaXNlU29mdEtleWJvYXJkUGFyYW1zLFxuICBUYXBEZXZpY2VQYXJhbXNcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLm1qcyc7XG5leHBvcnQge1xuICByYWlzZVNvZnRLZXlib2FyZCxcbiAgdGFwRGV2aWNlXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBQb3B1bGF0ZUZpbGVDb250ZW50LFxuICBQb3B1bGF0ZUZpbGVzUGFyYW1zLFxuICBUZW1wb3JhcnlWYXVsdE9wdGlvbnNcbn0gZnJvbSAnLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmV4cG9ydCB7IFRlbXBvcmFyeVZhdWx0IH0gZnJvbSAnLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQXBwaXVtU2Vzc2lvbkluZm8sXG4gIEFwcGl1bVRyYW5zcG9ydENvbmZpZ1xufSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB7IEFwcGl1bVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBEZXNrdG9wQ2RwVHJhbnNwb3J0Q29uZmlnLFxuICBPd25lZEluc3RhbmNlQXNhcixcbiAgT3duZWRJbnN0YW5jZUNvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUVuZHBvaW50XG59IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBEZXNrdG9wQ2RwVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtZmFjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5leHBvcnQgeyBjaGVja0lzTW9iaWxlVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb25zb2xlQ2FwdHVyZUhhbmRsZSxcbiAgT2JzaWRpYW5UcmFuc3BvcnQsXG4gIFRyYW5zcG9ydEV2YWxPcHRpb25zXG59IGZyb20gJy4vdHJhbnNwb3J0Lm1qcyc7XG5leHBvcnQge1xuICByZWdpc3RlclZhdWx0LFxuICB1bnJlZ2lzdGVyVmF1bHRcbn0gZnJvbSAnLi92YXVsdC1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHR5cGUgeyBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeSB9IGZyb20gJy4vdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB7IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUyB9IGZyb20gJy4vdmVyc2lvbi1tYXRyaXgubWpzJztcbiJdLAogICJtYXBwaW5ncyI6ICJBQU9BO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QLFNBQVMsMkJBQTJCO0FBRXBDLFNBQVMsaUNBQWlDO0FBSzFDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLG9DQUFvQztBQUM3QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtQLFNBQVMsb0JBQW9CO0FBSzdCLFNBQVMsaUJBQWlCO0FBTTFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGtDQUFrQztBQUUzQyxTQUFTLCtCQUErQjtBQU14QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUCxTQUFTLG9DQUFvQztBQUs3QyxTQUFTLDhCQUE4QjtBQWtCdkMsU0FBUyxzQkFBc0I7QUFNL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHlDQUF5QztBQU1sRCxTQUFTLHFDQUFxQztBQUU5QyxTQUFTLG1DQUFtQztBQU01QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUywyQkFBMkI7QUFPcEMsU0FBUywwQkFBMEI7QUFDbkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLCtCQUErQjtBQUV4QyxTQUFTLGdDQUFnQztBQUV6QyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLHVDQUF1QztBQUVoRCxTQUFTLCtCQUErQjtBQUV4QyxTQUFTLGdDQUFnQztBQUV6QyxTQUFTLCtCQUErQjtBQVN4QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUyxzQkFBc0I7QUFLL0IsU0FBUyx1QkFBdUI7QUFPaEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyxrQ0FBa0M7QUFNM0MsU0FBUyw4QkFBOEI7QUFNdkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHNDQUFzQzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/esm/library.mjs
CHANGED
|
@@ -111,6 +111,23 @@ export interface MobilePointerInputRequest {
|
|
|
111
111
|
*/
|
|
112
112
|
readonly y: number;
|
|
113
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Builds the expression the host evaluates to claim one input request before injecting it.
|
|
116
|
+
*
|
|
117
|
+
* CDP delivers `Runtime.bindingCalled` to **every** attached session, so each Node process holding an
|
|
118
|
+
* input channel to this WebView services the same request and injects the same gesture. The claim is
|
|
119
|
+
* what makes the injection exactly-once across all of them: the page is the only thing every host
|
|
120
|
+
* shares, and it runs the racing evaluates one after another on its single thread, so exactly one of
|
|
121
|
+
* them gets `true`.
|
|
122
|
+
*
|
|
123
|
+
* Optional chaining for the same reason as {@link buildResolveInputExpression}, and it is why
|
|
124
|
+
* {@link checkInputClaimGranted} treats a non-`false` result as claimed: a page that has dropped the
|
|
125
|
+
* namespace yields `undefined`, and injecting twice is a far better failure than never injecting.
|
|
126
|
+
*
|
|
127
|
+
* @param id - The request id to claim.
|
|
128
|
+
* @returns A self-contained expression to pass to `Runtime.evaluate`.
|
|
129
|
+
*/
|
|
130
|
+
export declare function buildClaimInputExpression(id: string): string;
|
|
114
131
|
/**
|
|
115
132
|
* Builds the expression the host evaluates to answer one input request.
|
|
116
133
|
*
|
|
@@ -123,6 +140,19 @@ export interface MobilePointerInputRequest {
|
|
|
123
140
|
* @returns A self-contained expression to pass to `Runtime.evaluate`.
|
|
124
141
|
*/
|
|
125
142
|
export declare function buildResolveInputExpression(id: string, errorMessage?: string): string;
|
|
143
|
+
/**
|
|
144
|
+
* Reads a `Runtime.evaluate` result for {@link buildClaimInputExpression} and says whether to inject.
|
|
145
|
+
*
|
|
146
|
+
* **Deliberately fails OPEN.** Only a literal `false` — the page actively saying another host already
|
|
147
|
+
* claimed this id — stops the injection. A missing namespace, a page mid-navigation, or any result
|
|
148
|
+
* shape this does not recognize yields `true`, because a gesture injected twice is a far better
|
|
149
|
+
* failure than a gesture never injected at all: the first is a doubled tap, the second is a test that
|
|
150
|
+
* hangs until the renderer's timeout and reports nothing useful.
|
|
151
|
+
*
|
|
152
|
+
* @param result - The raw `Runtime.evaluate` result object.
|
|
153
|
+
* @returns Whether this host should perform the injection.
|
|
154
|
+
*/
|
|
155
|
+
export declare function checkInputClaimGranted(result: unknown): boolean;
|
|
126
156
|
/**
|
|
127
157
|
* The first code point of a non-empty string.
|
|
128
158
|
*
|