obsidian-integration-testing 12.1.1 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cjs/app-config.cjs +137 -0
- package/dist/lib/cjs/app-config.d.cts +190 -0
- package/dist/lib/cjs/appium-session-config.cjs +9 -1
- package/dist/lib/cjs/appium-session-config.d.cts +23 -0
- package/dist/lib/cjs/cdp-command-timeout-error.cjs +50 -0
- package/dist/lib/cjs/cdp-command-timeout-error.d.cts +48 -0
- package/dist/lib/cjs/emulator-arguments.cjs +19 -3
- package/dist/lib/cjs/emulator-arguments.d.cts +44 -0
- package/dist/lib/cjs/emulator-marker.cjs +169 -0
- package/dist/lib/cjs/emulator-marker.d.cts +224 -0
- package/dist/lib/cjs/emulator-reaper.cjs +248 -0
- package/dist/lib/cjs/emulator-reaper.d.cts +225 -0
- package/dist/lib/cjs/emulator-reclaim.cjs +312 -0
- package/dist/lib/cjs/emulator-reclaim.d.cts +179 -0
- package/dist/lib/cjs/eval-cap-exceeded-error.cjs +61 -0
- package/dist/lib/cjs/eval-cap-exceeded-error.d.cts +92 -0
- package/dist/lib/cjs/global-setup-core.cjs +2 -3
- package/dist/lib/cjs/index.cjs +18 -1
- package/dist/lib/cjs/index.d.cts +6 -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/poll-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/poll-in-obsidian.d.cts +6 -2
- package/dist/lib/cjs/setup-lock.cjs +56 -8
- package/dist/lib/cjs/setup-lock.d.cts +53 -0
- package/dist/lib/cjs/transport-appium.cjs +73 -4
- package/dist/lib/cjs/transport-appium.d.cts +35 -0
- package/dist/lib/cjs/transport-desktop-cdp.cjs +22 -7
- package/dist/lib/cjs/transport-factory.cjs +297 -190
- package/dist/lib/cjs/transport-factory.d.cts +15 -0
- package/dist/lib/cjs/transport-options.cjs +1 -1
- package/dist/lib/cjs/transport-options.d.cts +27 -0
- package/dist/lib/esm/app-config.d.mts +190 -0
- package/dist/lib/esm/app-config.mjs +110 -0
- package/dist/lib/esm/appium-session-config.d.mts +23 -0
- package/dist/lib/esm/appium-session-config.mjs +7 -1
- package/dist/lib/esm/cdp-command-timeout-error.d.mts +48 -0
- package/dist/lib/esm/cdp-command-timeout-error.mjs +26 -0
- package/dist/lib/esm/emulator-arguments.d.mts +44 -0
- package/dist/lib/esm/emulator-arguments.mjs +16 -2
- package/dist/lib/esm/emulator-marker.d.mts +224 -0
- package/dist/lib/esm/emulator-marker.mjs +134 -0
- package/dist/lib/esm/emulator-reaper.d.mts +225 -0
- package/dist/lib/esm/emulator-reaper.mjs +211 -0
- package/dist/lib/esm/emulator-reclaim.d.mts +179 -0
- package/dist/lib/esm/emulator-reclaim.mjs +291 -0
- package/dist/lib/esm/eval-cap-exceeded-error.d.mts +92 -0
- package/dist/lib/esm/eval-cap-exceeded-error.mjs +36 -0
- package/dist/lib/esm/global-setup-core.mjs +6 -4
- package/dist/lib/esm/index.d.mts +6 -0
- package/dist/lib/esm/index.mjs +19 -1
- 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/poll-in-obsidian.d.mts +6 -2
- package/dist/lib/esm/poll-in-obsidian.mjs +1 -1
- package/dist/lib/esm/setup-lock.d.mts +53 -0
- package/dist/lib/esm/setup-lock.mjs +52 -7
- package/dist/lib/esm/transport-appium.d.mts +35 -0
- package/dist/lib/esm/transport-appium.mjs +78 -4
- package/dist/lib/esm/transport-desktop-cdp.mjs +22 -7
- package/dist/lib/esm/transport-factory.d.mts +15 -0
- package/dist/lib/esm/transport-factory.mjs +305 -184
- package/dist/lib/esm/transport-options.d.mts +27 -0
- package/dist/lib/esm/transport-options.mjs +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var app_config_exports = {};
|
|
20
|
+
__export(app_config_exports, {
|
|
21
|
+
getAppConfig: () => getAppConfig,
|
|
22
|
+
restoreAppConfig: () => restoreAppConfig,
|
|
23
|
+
setAppConfig: () => setAppConfig,
|
|
24
|
+
withAppConfig: () => withAppConfig
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(app_config_exports);
|
|
27
|
+
var import_eval_in_obsidian = require("./eval-in-obsidian.cjs");
|
|
28
|
+
var import_normalize_optional_properties = require("./normalize-optional-properties.cjs");
|
|
29
|
+
async function getAppConfig(params) {
|
|
30
|
+
const {
|
|
31
|
+
configKey,
|
|
32
|
+
transport,
|
|
33
|
+
vaultPath
|
|
34
|
+
} = params;
|
|
35
|
+
return await (0, import_eval_in_obsidian.evalInObsidian)((0, import_normalize_optional_properties.normalizeOptionalProperties)({
|
|
36
|
+
callback({ app, configKey: key }) {
|
|
37
|
+
const getConfig = app.vault.getConfig.bind(app.vault);
|
|
38
|
+
return getConfig(key);
|
|
39
|
+
},
|
|
40
|
+
input: { configKey },
|
|
41
|
+
transport,
|
|
42
|
+
vaultPath
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
async function restoreAppConfig(restore) {
|
|
46
|
+
const {
|
|
47
|
+
configKey,
|
|
48
|
+
isPresent,
|
|
49
|
+
transport,
|
|
50
|
+
value,
|
|
51
|
+
vaultPath
|
|
52
|
+
} = restore;
|
|
53
|
+
await (0, import_eval_in_obsidian.evalInObsidian)((0, import_normalize_optional_properties.normalizeOptionalProperties)({
|
|
54
|
+
callback({
|
|
55
|
+
app,
|
|
56
|
+
configKey: key,
|
|
57
|
+
isPresent: wasPresent,
|
|
58
|
+
value: previousValue
|
|
59
|
+
}) {
|
|
60
|
+
const setConfig = app.vault.setConfig.bind(app.vault);
|
|
61
|
+
setConfig(key, wasPresent ? previousValue : void 0);
|
|
62
|
+
},
|
|
63
|
+
input: {
|
|
64
|
+
configKey,
|
|
65
|
+
isPresent,
|
|
66
|
+
value
|
|
67
|
+
},
|
|
68
|
+
transport,
|
|
69
|
+
vaultPath
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
async function setAppConfig(params) {
|
|
73
|
+
const {
|
|
74
|
+
configKey,
|
|
75
|
+
transport,
|
|
76
|
+
value,
|
|
77
|
+
vaultPath
|
|
78
|
+
} = params;
|
|
79
|
+
const captured = await (0, import_eval_in_obsidian.evalInObsidian)((0, import_normalize_optional_properties.normalizeOptionalProperties)({
|
|
80
|
+
callback({
|
|
81
|
+
app,
|
|
82
|
+
configKey: key,
|
|
83
|
+
value: newValue
|
|
84
|
+
}) {
|
|
85
|
+
const isPresent = Object.hasOwn(app.vault.config, key);
|
|
86
|
+
const getConfig = app.vault.getConfig.bind(app.vault);
|
|
87
|
+
const previousValue = isPresent ? getConfig(key) : void 0;
|
|
88
|
+
const setConfig = app.vault.setConfig.bind(app.vault);
|
|
89
|
+
setConfig(key, newValue);
|
|
90
|
+
return {
|
|
91
|
+
isPresent,
|
|
92
|
+
value: previousValue
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
input: {
|
|
96
|
+
configKey,
|
|
97
|
+
value
|
|
98
|
+
},
|
|
99
|
+
transport,
|
|
100
|
+
vaultPath
|
|
101
|
+
}));
|
|
102
|
+
return (0, import_normalize_optional_properties.normalizeOptionalProperties)({
|
|
103
|
+
configKey,
|
|
104
|
+
isPresent: captured.isPresent,
|
|
105
|
+
transport,
|
|
106
|
+
value: captured.value,
|
|
107
|
+
vaultPath
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async function withAppConfig(params) {
|
|
111
|
+
const {
|
|
112
|
+
callback,
|
|
113
|
+
configKey,
|
|
114
|
+
transport,
|
|
115
|
+
value,
|
|
116
|
+
vaultPath
|
|
117
|
+
} = params;
|
|
118
|
+
const restore = await setAppConfig((0, import_normalize_optional_properties.normalizeOptionalProperties)({
|
|
119
|
+
configKey,
|
|
120
|
+
transport,
|
|
121
|
+
value,
|
|
122
|
+
vaultPath
|
|
123
|
+
}));
|
|
124
|
+
try {
|
|
125
|
+
return await callback();
|
|
126
|
+
} finally {
|
|
127
|
+
await restoreAppConfig(restore);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
131
|
+
0 && (module.exports = {
|
|
132
|
+
getAppConfig,
|
|
133
|
+
restoreAppConfig,
|
|
134
|
+
setAppConfig,
|
|
135
|
+
withAppConfig
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcC1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBOb2RlLXNpZGUgcmVhZC93cml0ZS9yZXN0b3JlIHNlYW0gZm9yIG9uZSBvZiBPYnNpZGlhbidzICoqdmF1bHQgY29uZmlnKioga2V5cyxcbiAqIGZvciB0aGUgZmV3IHRlc3RzIHRoYXQgbmVlZCBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIHRoZSBoYXJuZXNzJ3MgaGVhZGxlc3NcbiAqIGRlZmF1bHQuXG4gKlxuICogYGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWdgIHdyaXRlcyBgYWx3YXlzVXBkYXRlTGlua3M6IHRydWVgIGFuZFxuICogYHNldHRpbmdzUG9wb3V0V2luZG93OiBmYWxzZWAgaW50byBldmVyeSB2YXVsdCB0aGUgaGFybmVzcyBwcm92aXNpb25zLCBiZWZvcmVcbiAqIHRoYXQgdmF1bHQgaXMgZXZlciBvcGVuZWQsIGFuZCBuZWl0aGVyIGlzIGEga25vYiBhIGNvbnN1bWVyIGNvbmZpZ3VyZXMgXHUyMDE0IHNlZVxuICogdGhlIHByb2plY3QgYEFHRU5UUy5tZGAgKCoqTDQ4KiopLiBUaGF0IGlzIHJpZ2h0IGZvciBhbG1vc3QgZXZlcnkgdGVzdCwgYW5kXG4gKiB3cm9uZyBmb3IgdGhlIGZldyB3aG9zZSAqKnN1YmplY3QgaXMqKiB0aGUgc2Vjb25kIEVsZWN0cm9uIHdpbmRvdyB0aGUgcG9wb3V0XG4gKiBjcmVhdGVzOiBhIHRlc3QgdGhhdCB3YWl0cyBvbiBgYWN0aXZlV2luZG93ICE9PSB3aW5kb3dgLCBvciByZWFkc1xuICogYGFwcC5zZXR0aW5nLnBvcG91dGAsIG5ldmVyIG9ic2VydmVzIHRoZSB0aGluZyBpdCBhc3NlcnRzIGFuZCBzaW1wbHkgdGltZXMgb3V0LlxuICpcbiAqIFRob3NlIHRlc3RzIG9wdCBiYWNrIGluIHRocm91Z2ggaGVyZSByYXRoZXIgdGhhbiBieSBoYW5kLCB3aGljaCBidXlzIHRocmVlXG4gKiB0aGluZ3Mgb3ZlciBhbiBpbmxpbmUgYHNldENvbmZpZ2AgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZTpcbiAqXG4gKiAtICoqVGhlIHZhbHVlIGlzIHJlc3RvcmVkKiosIGluY2x1ZGluZyBkZWxldGluZyBhIGtleSB0aGF0IGhhZCBuZXZlciBiZWVuXG4gKiAgIHdyaXR0ZW4uIEFuIGlubGluZSBzZXR0ZXIgd3JpdGVzIGludG8gYSB2YXVsdCBzaGFyZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGVcbiAqICAgcnVuLCBzbyBldmVyeSBsYXRlciB0ZXN0IGluIHRoYXQgaW5zdGFuY2UgaW5oZXJpdHMgdGhlIGNoYW5nZSBcdTIwMTQgdGhlXG4gKiAgIGNyb3NzLXRlc3QgY29udGFtaW5hdGlvbiB0aGUgdW5jb25kaXRpb25hbCBkZWZhdWx0IGV4aXN0cyB0byBlbmQuXG4gKiAtICoqVGhlIGNhc3QgbGl2ZXMgaW4gb25lIHBsYWNlLioqIGBvYnNpZGlhbi10eXBpbmdzYCcgYENvbmZpZ0l0ZW1gIHVuaW9uIG9taXRzXG4gKiAgIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AsIHNvIHRoZSBrZXkgY2Fubm90IGJlIHBhc3NlZCB0byBgZ2V0Q29uZmlnYCAvXG4gKiAgIGBzZXRDb25maWdgIHdpdGhvdXQgd2lkZW5pbmcgdGhlbTsgZXZlcnkgY29uc3VtZXIgdGhhdCB3cm90ZSB0aGUgc2V0dGVyXG4gKiAgIGlubGluZSByZXBlYXRlZCB0aGF0IGNhc3QuXG4gKiAtICoqUGVyLXRlc3QgZ3JhbnVsYXJpdHkuKiogQSBwYXJhbWV0ZXIgb24gdGhlIHByb3Zpc2lvbmluZyB3cml0ZSB3b3VsZCBiZVxuICogICBwZXItdmF1bHQsIGFuZCBhIHByb2plY3Qgd2hvc2UgdGVzdHMgc2hhcmUgb25lIHZhdWx0IFx1MjAxNCB0aGUgdXN1YWwgc2hhcGUgXHUyMDE0XG4gKiAgIGNhbm5vdCBoYXZlIGl0IGJvdGggd2F5cy5cbiAqXG4gKiBFdmVyeXRoaW5nIGhlcmUgcnVucyBvbiB0aGUgKipOb2RlKiogc2lkZS4gQW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsYmFjayBpc1xuICogc2VyaWFsaXplZCBpbnRvIHRoZSBkcml2ZW4gT2JzaWRpYW4gYW5kIGNhbiBpbXBvcnQgbm90aGluZywgc28gYSBoZWxwZXJcbiAqIGNhbGxhYmxlIGZyb20gaW5zaWRlIG9uZSBpcyBub3QgZXhwcmVzc2libGU7IGVhY2ggZnVuY3Rpb24gYmVsb3cgaXMgaXRzIG93blxuICogc2hvcnQgZXZhbCBpbnN0ZWFkLlxuICpcbiAqICMjIyBXaHkgcHJlc2VuY2UgaXMgcmVhZCBvZmYgYGFwcC52YXVsdC5jb25maWdgLCBub3QgZnJvbSBgZ2V0Q29uZmlnYFxuICpcbiAqIEJvdGggZmFjdHMgd2VyZSB2ZXJpZmllZCBpbiB0aGUgc2hpcHBlZCAxLjE0LjEgYnVuZGxlIHJhdGhlciB0aGFuIGFzc3VtZWQ6XG4gKlxuICogLSBgVmF1bHQuc2V0Q29uZmlnKGtleSwgdmFsdWUpYCAqKmRlbGV0ZXMqKiB0aGUga2V5IHdoZW4gYHZhbHVlYCBpc1xuICogICBgdW5kZWZpbmVkYCwgYW5kIGRvZXMgbm90aGluZyBhdCBhbGwgd2hlbiB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkIChubyBzYXZlLFxuICogICBubyBgY29uZmlnLWNoYW5nZWRgIGV2ZW50KS4gU28gYW4gZXhhY3QgcmVzdG9yZSBvZiBhIGtleSB0aGF0IHdhcyBuZXZlclxuICogICB3cml0dGVuIGlzIGV4cHJlc3NpYmxlLlxuICogLSBgVmF1bHQuZ2V0Q29uZmlnKGtleSlgIGZhbGxzIGJhY2sgdG8gT2JzaWRpYW4ncyBkZWZhdWx0cyB0YWJsZSB3aGVuIHRoZSBrZXlcbiAqICAgaXMgYWJzZW50LCBzbyBpdCBjYW5ub3QgdGVsbCAqdW5zZXQqIGZyb20gKnNldCB0byB0aGUgc2hpcHBlZCBkZWZhdWx0KiBcdTIwMTRcbiAqICAgcmVzdG9yaW5nIGZyb20gaXQgd291bGQgbGVhdmUgdGhlIGtleSB3cml0dGVuIHdoZXJlIGl0IGhhZCBub3QgYmVlbi5cbiAqICAgYGFwcC52YXVsdC5jb25maWdgIGhvbGRzIG9ubHkgdGhlIGtleXMgY2hhbmdlZCBmcm9tIHRoZWlyIGRlZmF1bHQsIHNvXG4gKiAgIGBPYmplY3QuaGFzT3duYCBvbiBpdCBpcyB0aGUgc2lnbmFsIGEgcmVzdG9yZSBuZWVkcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChkcml2ZXMgYSBsaXZlIE9ic2lkaWFuIHZpYSBldmFsSW5PYnNpZGlhbikgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3Rcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQuY2pzJztcblxuaW1wb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJy4vbm9ybWFsaXplLW9wdGlvbmFsLXByb3BlcnRpZXMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXBwQ29uZmlnfSwgYW5kIHRoZSBzaGFyZWQgc2hhcGUgb2YgdGhlIHdyaXRlcnMgYmVsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBjb25maWcga2V5LCBlLmcuIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AuIE5vdCBuYXJyb3dlZCB0b1xuICAgKiBgb2JzaWRpYW4tdHlwaW5nc2AnIGBDb25maWdJdGVtYDogdGhhdCB1bmlvbiBvbWl0cyBrZXlzIE9ic2lkaWFuIHJlYWxseVxuICAgKiByZWFkcywgYHNldHRpbmdzUG9wb3V0V2luZG93YCBhbW9uZyB0aGVtLCB3aGljaCBpcyB0aGUgd2hvbGUgcmVhc29uIGFcbiAgICogY29uc3VtZXIgaGFkIHRvIHdpZGVuIHRoZSBzZXR0ZXIgYnkgaGFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0tleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJhbnNwb3J0LiBXaGVuIG9taXR0ZWQsIHRoZSB0cmFuc3BvcnQgdGhlIGN1cnJlbnQgdGVzdFxuICAgKiBjb250ZXh0IGlzIGRyaXZpbmcgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydD86IE9ic2lkaWFuVHJhbnNwb3J0O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgd2hvc2UgT2JzaWRpYW4gaW5zdGFuY2UgdG8gcmVhZCBvciB3cml0ZS4gV2hlbiBvbWl0dGVkLCB0aGVcbiAgICogY3VycmVudCB0ZXN0IGNvbnRleHQncyB2YXVsdCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoYXQge0BsaW5rIHNldEFwcENvbmZpZ30gY2FwdHVyZWQgYmVmb3JlIGl0IHdyb3RlLCBhbmQgYWxsXG4gKiB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30gbmVlZHMgdG8gcHV0IHRoZSBrZXkgYmFjayBleGFjdGx5IGFzIGl0IHdhcyBcdTIwMTRcbiAqIGluY2x1ZGluZyBwdXR0aW5nIGl0IGJhY2sgdG8gKmFic2VudCouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUmVzdG9yZSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRoYXQgd2FzIHdyaXR0ZW4uXG4gICAqL1xuICByZWFkb25seSBjb25maWdLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmF1bHQncyBjb25maWcgY2FycmllZCB0aGUga2V5IGF0IGFsbCBiZWZvcmUgdGhlIHdyaXRlLiBgZmFsc2VgXG4gICAqIG1lYW5zIHRoZSB2YXVsdCB3YXMgcnVubmluZyBvbiBPYnNpZGlhbidzIG93biBkZWZhdWx0LCBhbmQgcmVzdG9yaW5nIGlzIGFcbiAgICogZGVsZXRlIHJhdGhlciB0aGFuIGEgd3JpdGUuXG4gICAqL1xuICByZWFkb25seSBpc1ByZXNlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc3BvcnQgdGhlIGNhcHR1cmUgd2FzIG1hZGUgYWdhaW5zdCwgc28gdGhlIHJlc3RvcmUgbGFuZHMgaW4gdGhlXG4gICAqIHNhbWUgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSBrZXkgaGVsZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB7QGxpbmsgaXNQcmVzZW50fSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0aGUgY2FwdHVyZSB3YXMgbWFkZSBhZ2FpbnN0LCBzbyB0aGUgcmVzdG9yZSBsYW5kcyBpbiB0aGUgc2FtZVxuICAgKiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc2V0QXBwQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBcHBDb25maWdQYXJhbXMgZXh0ZW5kcyBBcHBDb25maWdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRvIHdyaXRlLiBgdW5kZWZpbmVkYCBkZWxldGVzIHRoZSBrZXksIGxlYXZpbmcgT2JzaWRpYW4ncyBvd25cbiAgICogZGVmYXVsdCBpbiBmb3JjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3aXRoQXBwQ29uZmlnfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBXaGF0IHRoZSB3cmFwcGVkIHdvcmsgcmV0dXJucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+IGV4dGVuZHMgU2V0QXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrIHRvIHJ1biB3aGlsZSB0aGUga2V5IGhvbGRzIHtAbGluayBTZXRBcHBDb25maWdQYXJhbXMudmFsdWV9LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2s6ICh0aGlzOiB2b2lkKSA9PiBQcm9taXNlPFQ+O1xufVxuXG4vKipcbiAqIFdoYXQgYSB3cml0ZSBjYXB0dXJlZCBhYm91dCB0aGUga2V5J3Mgc3RhdGUgYmVmb3JlIGl0IHdyb3RlLlxuICovXG5pbnRlcmZhY2UgQ2FwdHVyZWRWYWx1ZSB7XG4gIGlzUHJlc2VudDogYm9vbGVhbjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHJlYWQuXG4gKi9cbmludGVyZmFjZSBSZWFkSW5wdXQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0IHtcbiAgY29uZmlnS2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHJlc3RvcmUuXG4gKi9cbmludGVyZmFjZSBSZXN0b3JlSW5wdXQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0IHtcbiAgY29uZmlnS2V5OiBzdHJpbmc7XG4gIGlzUHJlc2VudDogYm9vbGVhbjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHdyaXRlLlxuICovXG5pbnRlcmZhY2UgV3JpdGVJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3Qge1xuICBjb25maWdLZXk6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogUmVhZHMgYSB2YXVsdCBjb25maWcga2V5LCByZXNvbHZpbmcgdGhlIHRyYW5zcG9ydCBhbmQgdmF1bHQgZnJvbSB0aGUgY3VycmVudFxuICogdGVzdCBjb250ZXh0LlxuICpcbiAqIFRoaXMgaXMgT2JzaWRpYW4ncyBvd24gYFZhdWx0LmdldENvbmZpZ2AsIHNvIGFuIGFic2VudCBrZXkgcmVhZHMgYmFjayBhc1xuICogT2JzaWRpYW4ncyAqKmRlZmF1bHQqKiBmb3IgaXQgcmF0aGVyIHRoYW4gYXMgYHVuZGVmaW5lZGAgXHUyMDE0IHNlZSB0aGlzIGZpbGUnc1xuICogaGVhZGVyLiBVc2Uge0BsaW5rIHNldEFwcENvbmZpZ30ncyB7QGxpbmsgQXBwQ29uZmlnUmVzdG9yZS5pc1ByZXNlbnR9IHdoZW4gdGhlXG4gKiBkaWZmZXJlbmNlIG1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBrZXkgdG8gcmVhZCwgYW5kIHRyYW5zcG9ydCAvIHZhdWx0IG92ZXJyaWRlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUga2V5J3MgZWZmZWN0aXZlIHZhbHVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQ29uZmlnKHBhcmFtczogQXBwQ29uZmlnUGFyYW1zKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHtcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIHJldHVybiBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8UmVhZElucHV0LCB1bmtub3duPj4oe1xuICAgIGNhbGxiYWNrKHsgYXBwLCBjb25maWdLZXk6IGtleSB9KTogdW5rbm93biB7XG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICByZXR1cm4gZ2V0Q29uZmlnKGtleSk7XG4gICAgfSxcbiAgICBpbnB1dDogeyBjb25maWdLZXkgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBQdXRzIGEga2V5IGJhY2sgZXhhY3RseSBhcyB7QGxpbmsgc2V0QXBwQ29uZmlnfSBmb3VuZCBpdCBcdTIwMTQgd3JpdGluZyB0aGUgY2FwdHVyZWRcbiAqIHZhbHVlIGJhY2ssIG9yICoqZGVsZXRpbmcqKiB0aGUga2V5IHdoZW4gdGhlIHZhdWx0IGhhZCBuZXZlciBjYXJyaWVkIGl0LlxuICpcbiAqIFRoZSBgYmVmb3JlQWxsYCAvIGBhZnRlckFsbGAgaGFsZiBvZiB0aGUgc2VhbS4gQSB0ZXN0IHRoYXQgc2NvcGVzIHRoZSBjaGFuZ2VcbiAqIHRvIG9uZSBjYWxsYmFjayB3YW50cyB7QGxpbmsgd2l0aEFwcENvbmZpZ30gaW5zdGVhZCwgd2hpY2ggY2Fubm90IGZvcmdldCB0aGVcbiAqIHJlc3RvcmUuXG4gKlxuICogQHBhcmFtIHJlc3RvcmUgLSBUaGUgdG9rZW4ge0BsaW5rIHNldEFwcENvbmZpZ30gcmV0dXJuZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGtleSBpcyBiYWNrIGFzIGl0IHdhcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVBcHBDb25maWcocmVzdG9yZTogQXBwQ29uZmlnUmVzdG9yZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgY29uZmlnS2V5LFxuICAgIGlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSByZXN0b3JlO1xuXG4gIGF3YWl0IGV2YWxJbk9ic2lkaWFuKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFdmFsSW5PYnNpZGlhblBhcmFtczxSZXN0b3JlSW5wdXQsIHVuZGVmaW5lZD4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIGlzUHJlc2VudDogd2FzUHJlc2VudCxcbiAgICAgIHZhbHVlOiBwcmV2aW91c1ZhbHVlXG4gICAgfSk6IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBzZXRDb25maWcgPSBhcHAudmF1bHQuc2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gICAgICAvLyBgdW5kZWZpbmVkYCBpcyBub3QgYSBuby1vcCBoZXJlOiBgc2V0Q29uZmlnYCBkZWxldGVzIHRoZSBrZXkgZm9yIGl0LFxuICAgICAgLy8gV2hpY2ggaXMgdGhlIG9ubHkgd2F5IHRvIHJlc3RvcmUgb25lIHRoZSB2YXVsdCBuZXZlciBjYXJyaWVkLlxuICAgICAgc2V0Q29uZmlnKGtleSwgd2FzUHJlc2VudCA/IHByZXZpb3VzVmFsdWUgOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGNvbmZpZ0tleSxcbiAgICAgIGlzUHJlc2VudCxcbiAgICAgIHZhbHVlXG4gICAgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgYSB2YXVsdCBjb25maWcga2V5LCBjYXB0dXJpbmcgd2hhdCBpdCBoZWxkIGZpcnN0IHNvIHRoZSB3cml0ZSBjYW4gYmVcbiAqIHVuZG9uZSBleGFjdGx5LlxuICpcbiAqIE9ic2lkaWFuIHBlcnNpc3RzIHRoZSBjaGFuZ2UgKGByZXF1ZXN0U2F2ZUNvbmZpZ2ApIGFuZCBmaXJlcyBpdHNcbiAqIGBjb25maWctY2hhbmdlZGAgZXZlbnQsIGJvdGggb2Ygd2hpY2ggdGhlIGFwcCdzIG93biBzZXR0aW5ncyBVSSBkb2VzIHRvbyBcdTIwMTQgc29cbiAqIGFueXRoaW5nIGxpc3RlbmluZyByZWFjdHMgYXMgaXQgd291bGQgdG8gYSB1c2VyIGZsaXBwaW5nIHRoZSB0b2dnbGUuIEEgd3JpdGVcbiAqIG9mIHRoZSB2YWx1ZSB0aGUga2V5IGFscmVhZHkgaG9sZHMgaXMgYSBuby1vcCBpbiBPYnNpZGlhbiBpdHNlbGYsIGFuZCB0aGVcbiAqIHJldHVybmVkIHRva2VuIHN0aWxsIGRlc2NyaWJlcyB0aGUgc3RhdGUgdGhhdCBwcmVjZWRlZCBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlLCBhbmQgdHJhbnNwb3J0IC8gdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSB7QGxpbmsgQXBwQ29uZmlnUmVzdG9yZX0gdG9rZW4gdG9cbiAqICAgaGFuZCB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRBcHBDb25maWcocGFyYW1zOiBTZXRBcHBDb25maWdQYXJhbXMpOiBQcm9taXNlPEFwcENvbmZpZ1Jlc3RvcmU+IHtcbiAgY29uc3Qge1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY2FwdHVyZWQgPSBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8V3JpdGVJbnB1dCwgQ2FwdHVyZWRWYWx1ZT4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIHZhbHVlOiBuZXdWYWx1ZVxuICAgIH0pOiBDYXB0dXJlZFZhbHVlIHtcbiAgICAgIC8vIGBjb25maWdgIGNhcnJpZXMgT05MWSB0aGUga2V5cyBjaGFuZ2VkIGZyb20gdGhlaXIgZGVmYXVsdCwgd2hpY2ggaXMgd2hhdFxuICAgICAgLy8gTWFrZXMgaXQgdGhlIHByZXNlbmNlIHNpZ25hbDsgYGdldENvbmZpZ2Agc3Vic3RpdHV0ZXMgdGhlIGRlZmF1bHQgYW5kIHNvXG4gICAgICAvLyBDYW5ub3QgdGVsbCBhbiB1bnNldCBrZXkgZnJvbSBvbmUgc2V0IHRvIHRoYXQgZGVmYXVsdC4gVGhlIHZhbHVlIGl0c2VsZlxuICAgICAgLy8gU3RpbGwgY29tZXMgZnJvbSBgZ2V0Q29uZmlnYCwgd2hpY2ggcmV0dXJucyB0aGUgc3RvcmVkIG9uZSB3aGVuZXZlclxuICAgICAgLy8gVGhlcmUgaXMgb25lIFx1MjAxNCBzbyB0aGUgcmVhZCBuZWVkcyBubyBjYXN0IG9mIHRoZSBjb25maWcgb2JqZWN0LlxuICAgICAgY29uc3QgaXNQcmVzZW50ID0gT2JqZWN0Lmhhc093bihhcHAudmF1bHQuY29uZmlnLCBrZXkpO1xuXG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gaXNQcmVzZW50ID8gZ2V0Q29uZmlnKGtleSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHNldENvbmZpZyA9IGFwcC52YXVsdC5zZXRDb25maWcuYmluZChhcHAudmF1bHQpIGFzIChjb25maWdLZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gICAgICBzZXRDb25maWcoa2V5LCBuZXdWYWx1ZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudCxcbiAgICAgICAgdmFsdWU6IHByZXZpb3VzVmFsdWVcbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgY29uZmlnS2V5LFxuICAgICAgdmFsdWVcbiAgICB9LFxuICAgIHRyYW5zcG9ydCxcbiAgICB2YXVsdFBhdGhcbiAgfSkpO1xuXG4gIHJldHVybiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QXBwQ29uZmlnUmVzdG9yZT4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICBpc1ByZXNlbnQ6IGNhcHR1cmVkLmlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWU6IGNhcHR1cmVkLnZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHdvcmsgd2l0aCBhIHZhdWx0IGNvbmZpZyBrZXkgdGVtcG9yYXJpbHkgc2V0LCBhbmQgcHV0cyB0aGUga2V5IGJhY2tcbiAqIGFmdGVyd2FyZHMgXHUyMDE0IG9uIGEgdGhyb3cgYXMgbXVjaCBhcyBvbiBhIHJldHVybi5cbiAqXG4gKiBUaGUgc2hhcGUgYSBwb3BvdXQtc3ViamVjdCB0ZXN0IHdhbnRzOlxuICpcbiAqIGBgYHRzXG4gKiBhd2FpdCB3aXRoQXBwQ29uZmlnKHtcbiAqICAgYXN5bmMgY2FsbGJhY2soKSB7XG4gKiAgICAgYXdhaXQgZXZhbEluT2JzaWRpYW4oeyAuLi4gfSk7IC8vIHRoZSBzZXR0aW5ncyB3aW5kb3cgaXMgYSBwb3BvdXQgaW4gaGVyZVxuICogICB9LFxuICogICBjb25maWdLZXk6ICdzZXR0aW5nc1BvcG91dFdpbmRvdycsXG4gKiAgIHZhbHVlOiB0cnVlLFxuICogICB2YXVsdFBhdGhcbiAqIH0pO1xuICogYGBgXG4gKlxuICogVGhlIGNhbGxiYWNrIHJ1bnMgb24gdGhlICoqTm9kZSoqIHNpZGUsIHNvIGl0IGlzIGZyZWUgdG8gbWFrZSBzZXZlcmFsIGV2YWxzLFxuICogdGFrZSBhIHNjcmVlbnNob3QsIG9yIGFzc2VydCBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gV2hhdCB0aGUgd3JhcHBlZCB3b3JrIHJldHVybnMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlIHRvIGhvbGQgaXQgYXQsIHRoZSB3b3JrLCBhbmQgdHJhbnNwb3J0IC9cbiAqICAgdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHdoYXRldmVyIHRoZSBjYWxsYmFjayByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhBcHBDb25maWc8VD4ocGFyYW1zOiBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHtcbiAgICBjYWxsYmFjayxcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHJlc3RvcmUgPSBhd2FpdCBzZXRBcHBDb25maWcobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFNldEFwcENvbmZpZ1BhcmFtcz4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlc3RvcmVBcHBDb25maWcocmVzdG9yZSk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwREEsOEJBQStCO0FBQy9CLDJDQUE0QztBQWtJNUMsZUFBc0IsYUFBYSxRQUEyQztBQUM1RSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosU0FBTyxVQUFNLDRDQUFlLGtFQUFzRTtBQUFBLElBQ2hHLFNBQVMsRUFBRSxLQUFLLFdBQVcsSUFBSSxHQUFZO0FBQ3pDLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUNwRCxhQUFPLFVBQVUsR0FBRztBQUFBLElBQ3RCO0FBQUEsSUFDQSxPQUFPLEVBQUUsVUFBVTtBQUFBLElBQ25CO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFhQSxlQUFzQixpQkFBaUIsU0FBMEM7QUFDL0UsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosWUFBTSw0Q0FBZSxrRUFBMkU7QUFBQSxJQUM5RixTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLElBQ1QsR0FBYztBQUNaLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUlwRCxnQkFBVSxLQUFLLGFBQWEsZ0JBQWdCLE1BQVM7QUFBQSxJQUN2RDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFnQkEsZUFBc0IsYUFBYSxRQUF1RDtBQUN4RixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sV0FBVyxVQUFNLDRDQUFlLGtFQUE2RTtBQUFBLElBQ2pILFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxPQUFPO0FBQUEsSUFDVCxHQUFrQjtBQU1oQixZQUFNLFlBQVksT0FBTyxPQUFPLElBQUksTUFBTSxRQUFRLEdBQUc7QUFFckQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELFlBQU0sZ0JBQWdCLFlBQVksVUFBVSxHQUFHLElBQUk7QUFFbkQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELGdCQUFVLEtBQUssUUFBUTtBQUV2QixhQUFPO0FBQUEsUUFDTDtBQUFBLFFBQ0EsT0FBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUMsQ0FBQztBQUVGLGFBQU8sa0VBQThDO0FBQUEsSUFDbkQ7QUFBQSxJQUNBLFdBQVcsU0FBUztBQUFBLElBQ3BCO0FBQUEsSUFDQSxPQUFPLFNBQVM7QUFBQSxJQUNoQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBMkJBLGVBQXNCLGNBQWlCLFFBQTRDO0FBQ2pGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sVUFBVSxNQUFNLGlCQUFhLGtFQUFnRDtBQUFBLElBQ2pGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDLENBQUM7QUFFRixNQUFJO0FBQ0YsV0FBTyxNQUFNLFNBQVM7QUFBQSxFQUN4QixVQUFFO0FBQ0EsVUFBTSxpQkFBaUIsT0FBTztBQUFBLEVBQ2hDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Node-side read/write/restore seam for one of Obsidian's **vault config** keys,
|
|
5
|
+
* for the few tests that need a different value than the harness's headless
|
|
6
|
+
* default.
|
|
7
|
+
*
|
|
8
|
+
* `ensureHeadlessVaultConfig` writes `alwaysUpdateLinks: true` and
|
|
9
|
+
* `settingsPopoutWindow: false` into every vault the harness provisions, before
|
|
10
|
+
* that vault is ever opened, and neither is a knob a consumer configures — see
|
|
11
|
+
* the project `AGENTS.md` (**L48**). That is right for almost every test, and
|
|
12
|
+
* wrong for the few whose **subject is** the second Electron window the popout
|
|
13
|
+
* creates: a test that waits on `activeWindow !== window`, or reads
|
|
14
|
+
* `app.setting.popout`, never observes the thing it asserts and simply times out.
|
|
15
|
+
*
|
|
16
|
+
* Those tests opt back in through here rather than by hand, which buys three
|
|
17
|
+
* things over an inline `setConfig` inside an `evalInObsidian` closure:
|
|
18
|
+
*
|
|
19
|
+
* - **The value is restored**, including deleting a key that had never been
|
|
20
|
+
* written. An inline setter writes into a vault shared with the rest of the
|
|
21
|
+
* run, so every later test in that instance inherits the change — the
|
|
22
|
+
* cross-test contamination the unconditional default exists to end.
|
|
23
|
+
* - **The cast lives in one place.** `obsidian-typings`' `ConfigItem` union omits
|
|
24
|
+
* `settingsPopoutWindow`, so the key cannot be passed to `getConfig` /
|
|
25
|
+
* `setConfig` without widening them; every consumer that wrote the setter
|
|
26
|
+
* inline repeated that cast.
|
|
27
|
+
* - **Per-test granularity.** A parameter on the provisioning write would be
|
|
28
|
+
* per-vault, and a project whose tests share one vault — the usual shape —
|
|
29
|
+
* cannot have it both ways.
|
|
30
|
+
*
|
|
31
|
+
* Everything here runs on the **Node** side. An `evalInObsidian` callback is
|
|
32
|
+
* serialized into the driven Obsidian and can import nothing, so a helper
|
|
33
|
+
* callable from inside one is not expressible; each function below is its own
|
|
34
|
+
* short eval instead.
|
|
35
|
+
*
|
|
36
|
+
* ### Why presence is read off `app.vault.config`, not from `getConfig`
|
|
37
|
+
*
|
|
38
|
+
* Both facts were verified in the shipped 1.14.1 bundle rather than assumed:
|
|
39
|
+
*
|
|
40
|
+
* - `Vault.setConfig(key, value)` **deletes** the key when `value` is
|
|
41
|
+
* `undefined`, and does nothing at all when the value is unchanged (no save,
|
|
42
|
+
* no `config-changed` event). So an exact restore of a key that was never
|
|
43
|
+
* written is expressible.
|
|
44
|
+
* - `Vault.getConfig(key)` falls back to Obsidian's defaults table when the key
|
|
45
|
+
* is absent, so it cannot tell *unset* from *set to the shipped default* —
|
|
46
|
+
* restoring from it would leave the key written where it had not been.
|
|
47
|
+
* `app.vault.config` holds only the keys changed from their default, so
|
|
48
|
+
* `Object.hasOwn` on it is the signal a restore needs.
|
|
49
|
+
*/
|
|
50
|
+
import type { ObsidianTransport } from './transport.cjs';
|
|
51
|
+
/**
|
|
52
|
+
* Parameters for {@link getAppConfig}, and the shared shape of the writers below.
|
|
53
|
+
*/
|
|
54
|
+
export interface AppConfigParams {
|
|
55
|
+
/**
|
|
56
|
+
* The vault config key, e.g. `settingsPopoutWindow`. Not narrowed to
|
|
57
|
+
* `obsidian-typings`' `ConfigItem`: that union omits keys Obsidian really
|
|
58
|
+
* reads, `settingsPopoutWindow` among them, which is the whole reason a
|
|
59
|
+
* consumer had to widen the setter by hand.
|
|
60
|
+
*/
|
|
61
|
+
readonly configKey: string;
|
|
62
|
+
/**
|
|
63
|
+
* Override the transport. When omitted, the transport the current test
|
|
64
|
+
* context is driving is used.
|
|
65
|
+
*/
|
|
66
|
+
readonly transport?: ObsidianTransport;
|
|
67
|
+
/**
|
|
68
|
+
* The vault whose Obsidian instance to read or write. When omitted, the
|
|
69
|
+
* current test context's vault is used.
|
|
70
|
+
*/
|
|
71
|
+
readonly vaultPath?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What {@link setAppConfig} captured before it wrote, and all
|
|
75
|
+
* {@link restoreAppConfig} needs to put the key back exactly as it was —
|
|
76
|
+
* including putting it back to *absent*.
|
|
77
|
+
*/
|
|
78
|
+
export interface AppConfigRestore {
|
|
79
|
+
/**
|
|
80
|
+
* The key that was written.
|
|
81
|
+
*/
|
|
82
|
+
readonly configKey: string;
|
|
83
|
+
/**
|
|
84
|
+
* Whether the vault's config carried the key at all before the write. `false`
|
|
85
|
+
* means the vault was running on Obsidian's own default, and restoring is a
|
|
86
|
+
* delete rather than a write.
|
|
87
|
+
*/
|
|
88
|
+
readonly isPresent: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* The transport the capture was made against, so the restore lands in the
|
|
91
|
+
* same instance.
|
|
92
|
+
*/
|
|
93
|
+
readonly transport?: ObsidianTransport;
|
|
94
|
+
/**
|
|
95
|
+
* The value the key held, or `undefined` when {@link isPresent} is `false`.
|
|
96
|
+
*/
|
|
97
|
+
readonly value: unknown;
|
|
98
|
+
/**
|
|
99
|
+
* The vault the capture was made against, so the restore lands in the same
|
|
100
|
+
* instance.
|
|
101
|
+
*/
|
|
102
|
+
readonly vaultPath?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parameters for {@link setAppConfig}.
|
|
106
|
+
*/
|
|
107
|
+
export interface SetAppConfigParams extends AppConfigParams {
|
|
108
|
+
/**
|
|
109
|
+
* The value to write. `undefined` deletes the key, leaving Obsidian's own
|
|
110
|
+
* default in force.
|
|
111
|
+
*/
|
|
112
|
+
readonly value: unknown;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Parameters for {@link withAppConfig}.
|
|
116
|
+
*
|
|
117
|
+
* @typeParam T - What the wrapped work returns.
|
|
118
|
+
*/
|
|
119
|
+
export interface WithAppConfigParams<T> extends SetAppConfigParams {
|
|
120
|
+
/**
|
|
121
|
+
* The work to run while the key holds {@link SetAppConfigParams.value}.
|
|
122
|
+
*/
|
|
123
|
+
readonly callback: (this: void) => Promise<T>;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reads a vault config key, resolving the transport and vault from the current
|
|
127
|
+
* test context.
|
|
128
|
+
*
|
|
129
|
+
* This is Obsidian's own `Vault.getConfig`, so an absent key reads back as
|
|
130
|
+
* Obsidian's **default** for it rather than as `undefined` — see this file's
|
|
131
|
+
* header. Use {@link setAppConfig}'s {@link AppConfigRestore.isPresent} when the
|
|
132
|
+
* difference matters.
|
|
133
|
+
*
|
|
134
|
+
* @param params - The key to read, and transport / vault overrides.
|
|
135
|
+
* @returns A {@link Promise} resolving to the key's effective value.
|
|
136
|
+
*/
|
|
137
|
+
export declare function getAppConfig(params: AppConfigParams): Promise<unknown>;
|
|
138
|
+
/**
|
|
139
|
+
* Puts a key back exactly as {@link setAppConfig} found it — writing the captured
|
|
140
|
+
* value back, or **deleting** the key when the vault had never carried it.
|
|
141
|
+
*
|
|
142
|
+
* The `beforeAll` / `afterAll` half of the seam. A test that scopes the change
|
|
143
|
+
* to one callback wants {@link withAppConfig} instead, which cannot forget the
|
|
144
|
+
* restore.
|
|
145
|
+
*
|
|
146
|
+
* @param restore - The token {@link setAppConfig} returned.
|
|
147
|
+
* @returns A {@link Promise} that resolves once the key is back as it was.
|
|
148
|
+
*/
|
|
149
|
+
export declare function restoreAppConfig(restore: AppConfigRestore): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Writes a vault config key, capturing what it held first so the write can be
|
|
152
|
+
* undone exactly.
|
|
153
|
+
*
|
|
154
|
+
* Obsidian persists the change (`requestSaveConfig`) and fires its
|
|
155
|
+
* `config-changed` event, both of which the app's own settings UI does too — so
|
|
156
|
+
* anything listening reacts as it would to a user flipping the toggle. A write
|
|
157
|
+
* of the value the key already holds is a no-op in Obsidian itself, and the
|
|
158
|
+
* returned token still describes the state that preceded it.
|
|
159
|
+
*
|
|
160
|
+
* @param params - The key, the value, and transport / vault overrides.
|
|
161
|
+
* @returns A {@link Promise} resolving to the {@link AppConfigRestore} token to
|
|
162
|
+
* hand {@link restoreAppConfig}.
|
|
163
|
+
*/
|
|
164
|
+
export declare function setAppConfig(params: SetAppConfigParams): Promise<AppConfigRestore>;
|
|
165
|
+
/**
|
|
166
|
+
* Runs work with a vault config key temporarily set, and puts the key back
|
|
167
|
+
* afterwards — on a throw as much as on a return.
|
|
168
|
+
*
|
|
169
|
+
* The shape a popout-subject test wants:
|
|
170
|
+
*
|
|
171
|
+
* ```ts
|
|
172
|
+
* await withAppConfig({
|
|
173
|
+
* async callback() {
|
|
174
|
+
* await evalInObsidian({ ... }); // the settings window is a popout in here
|
|
175
|
+
* },
|
|
176
|
+
* configKey: 'settingsPopoutWindow',
|
|
177
|
+
* value: true,
|
|
178
|
+
* vaultPath
|
|
179
|
+
* });
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* The callback runs on the **Node** side, so it is free to make several evals,
|
|
183
|
+
* take a screenshot, or assert between them.
|
|
184
|
+
*
|
|
185
|
+
* @typeParam T - What the wrapped work returns.
|
|
186
|
+
* @param params - The key, the value to hold it at, the work, and transport /
|
|
187
|
+
* vault overrides.
|
|
188
|
+
* @returns A {@link Promise} resolving to whatever the callback returned.
|
|
189
|
+
*/
|
|
190
|
+
export declare function withAppConfig<T>(params: WithAppConfigParams<T>): Promise<T>;
|
|
@@ -19,24 +19,32 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var appium_session_config_exports = {};
|
|
20
20
|
__export(appium_session_config_exports, {
|
|
21
21
|
DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS: () => DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS,
|
|
22
|
+
DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS: () => DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS,
|
|
22
23
|
DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS: () => DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS,
|
|
23
24
|
resolveAppiumStartTimeoutInMilliseconds: () => resolveAppiumStartTimeoutInMilliseconds,
|
|
25
|
+
resolveScriptTimeoutInMilliseconds: () => resolveScriptTimeoutInMilliseconds,
|
|
24
26
|
resolveSessionConnectionRetryTimeoutInMilliseconds: () => resolveSessionConnectionRetryTimeoutInMilliseconds
|
|
25
27
|
});
|
|
26
28
|
module.exports = __toCommonJS(appium_session_config_exports);
|
|
27
29
|
const DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS = 18e4;
|
|
30
|
+
const DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS = 3e4;
|
|
28
31
|
const DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS = 18e4;
|
|
29
32
|
function resolveAppiumStartTimeoutInMilliseconds(options) {
|
|
30
33
|
return options.appiumStartTimeoutInMilliseconds ?? DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS;
|
|
31
34
|
}
|
|
35
|
+
function resolveScriptTimeoutInMilliseconds(options) {
|
|
36
|
+
return options.scriptTimeoutInMilliseconds ?? DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS;
|
|
37
|
+
}
|
|
32
38
|
function resolveSessionConnectionRetryTimeoutInMilliseconds(options) {
|
|
33
39
|
return options.sessionConnectionRetryTimeoutInMilliseconds ?? DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS;
|
|
34
40
|
}
|
|
35
41
|
// Annotate the CommonJS export names for ESM import in node:
|
|
36
42
|
0 && (module.exports = {
|
|
37
43
|
DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS,
|
|
44
|
+
DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS,
|
|
38
45
|
DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS,
|
|
39
46
|
resolveAppiumStartTimeoutInMilliseconds,
|
|
47
|
+
resolveScriptTimeoutInMilliseconds,
|
|
40
48
|
resolveSessionConnectionRetryTimeoutInMilliseconds
|
|
41
49
|
});
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1zZXNzaW9uLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlc29sdmVzIHR1bmFibGUgQXBwaXVtIHNlcnZlci1zdGFydCBhbmQgc2Vzc2lvbi1lc3RhYmxpc2htZW50IHRpbWVvdXRzIGZyb21cbiAqIHRoZSB0cmFuc3BvcnQgb3B0aW9ucywgYXBwbHlpbmcgZGVmYXVsdHMuIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGVcbiAqIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgZGVmYXVsdCByZXNvbHV0aW9uIHN0YXlzXG4gKiB1bml0LXRlc3RhYmxlICh0aGUgZmFjdG9yeSBpdHNlbGYgbmVlZHMgYSByZWFsIEFwcGl1bSBzZXJ2ZXIgYW5kIGlzIGV4Y2x1ZGVkXG4gKiBmcm9tIHVuaXQgdGVzdHMpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuLyoqXG4gKiBEZWZhdWx0IGZvciB7QGxpbmsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucy5hcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kc30uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FQUElVTV9TVEFSVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDE4MF8wMDA7XG5cbi8qKlxuICogRGVmYXVsdCBmb3Ige0BsaW5rIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMuc2NyaXB0VGltZW91dEluTWlsbGlzZWNvbmRzfS5cbiAqXG4gKiBUaGUgc2FtZSAzMHMgV2ViRHJpdmVyIHdvdWxkIG5vbWluYWxseSBhcHBseSwgc3RhdGVkIGhlcmUgc28gdGhlIGNhcCBpcyBhXG4gKiBkZWNsYXJlZCBudW1iZXIgcmF0aGVyIHRoYW4gYW4gaW52aXNpYmxlIHByb3RvY29sIGRlZmF1bHQgXHUyMDE0IGFuZCwgc2luY2UgdGhlXG4gKiBwcm90b2NvbCBkZWZhdWx0IHdhcyBtZWFzdXJlZCBub3QgdG8gYmUgYXBwbGllZCBhdCBhbGwgb24gdGhpcyBkcml2ZXIsIHRoZVxuICogb25seSBudW1iZXIgdGhhdCBhY3R1YWxseSBib3VuZHMgYW4gQW5kcm9pZCBldmFsLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TQ1JJUFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMF8wMDA7XG5cbi8qKlxuICogRGVmYXVsdCBmb3Ige0BsaW5rIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMuc2Vzc2lvbkNvbm5lY3Rpb25SZXRyeVRpbWVvdXRJbk1pbGxpc2Vjb25kc30uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFU1NJT05fQ09OTkVDVElPTl9SRVRSWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDE4MF8wMDA7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGF1dG8tc3RhcnRlZCBBcHBpdW0gc2VydmVyIHJlYWRpbmVzcyB0aW1lb3V0LCBhcHBseWluZyB0aGVcbiAqIGRlZmF1bHQgd2hlbiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBnb3Zlcm5zIGhvdyBsb25nIHRoZSBmYWN0b3J5IHBvbGxzIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlcidzXG4gKiBgL3N0YXR1c2AgZW5kcG9pbnQgYmVmb3JlIGdpdmluZyB1cC4gT25seSByZWxldmFudCB3aGVuIHRoZSBoYXJuZXNzXG4gKiBhdXRvLXN0YXJ0cyB0aGUgc2VydmVyOyB3aGVuIGF0dGFjaGluZyB0byBhbiBhbHJlYWR5LXJ1bm5pbmcgc2VydmVyIHRoZSB3YWl0XG4gKiBpcyBza2lwcGVkIGVudGlyZWx5LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFwcGl1bVN0YXJ0VGltZW91dEluTWlsbGlzZWNvbmRzKFxuICBvcHRpb25zOiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4pOiBudW1iZXIge1xuICByZXR1cm4gb3B0aW9ucy5hcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX0FQUElVTV9TVEFSVF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcGVyLXNjcmlwdCAocGVyLWBldmFsSW5PYnNpZGlhbmApIHRpbWVvdXQsIGFwcGx5aW5nIHRoZSBkZWZhdWx0XG4gKiB3aGVuIHRoZSBvcHRpb24gaXMgb21pdHRlZC5cbiAqXG4gKiBUaGlzIGlzIHdoYXQgYEFwcGl1bVRyYW5zcG9ydC5ldmFsdWF0ZWAgZW5mb3JjZXMgb24gdGhlIE5vZGUgc2lkZTsgaXQgaXMgYWxzb1xuICogc2VudCBhcyB0aGUgVzNDIGB0aW1lb3V0cy5zY3JpcHRgIGNhcGFiaWxpdHksIHdoaWNoIHdhcyBtZWFzdXJlZCB0byBiZVxuICogYWNjZXB0ZWQgYW5kIG5ldmVyIGFjdGVkIG9uLiBJdCBpcyBkZWxpYmVyYXRlbHkgTk9UIHRoZSBrbm9iIHRvIHJlYWNoIGZvciB3aGVuXG4gKiBhIGNsb3N1cmUgdGltZXMgb3V0OiB0aGUgY2xvc3VyZSBpcyB3aGF0IHNob3VsZCBnZXQgc2hvcnRlciwgd2l0aCB0aGUgd2FpdGluZ1xuICogbW92ZWQgdG8gTm9kZSB2aWEgYHBvbGxJbk9ic2lkaWFuYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTY3JpcHRUaW1lb3V0SW5NaWxsaXNlY29uZHMoXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLnNjcmlwdFRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX1NDUklQVF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQXBwaXVtIHNlc3Npb24gY29ubmVjdGlvbiByZXRyeSB0aW1lb3V0LCBhcHBseWluZyB0aGUgZGVmYXVsdFxuICogd2hlbiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBnb3Zlcm5zIGhvdyBsb25nIFdlYkRyaXZlcklPJ3MgYHJlbW90ZSgpYCB3YWl0cyBmb3IgdGhlIHNlc3Npb24gdG8gYmVcbiAqIGVzdGFibGlzaGVkIChVaUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGwgKyBhcHAgbGF1bmNoKSBcdTIwMTQgZW1waXJpY2FsbHkgdGhlXG4gKiBsYXJnZXN0IGFuZCBtb3N0IGxvYWQtc2Vuc2l0aXZlIHN0ZXAgb2YgdGhlIEFuZHJvaWQgc2V0dXAsIHNvIGl0IGlzIHRoZSBrbm9iXG4gKiB0byByYWlzZSB3aGVuIHNlc3Npb24gZXN0YWJsaXNobWVudCB0aW1lcyBvdXQgb24gYSBjb2xkIG9yIGNvbnRlbmRlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzKFxuICBvcHRpb25zOiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4pOiBudW1iZXIge1xuICByZXR1cm4gb3B0aW9ucy5zZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfU0VTU0lPTl9DT05ORUNUSU9OX1JFVFJZX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFlTyxNQUFNLCtDQUErQztBQVVyRCxNQUFNLHlDQUF5QztBQUsvQyxNQUFNLDJEQUEyRDtBQWNqRSxTQUFTLHdDQUNkLFNBQ1E7QUFDUixTQUFPLFFBQVEsb0NBQW9DO0FBQ3JEO0FBZU8sU0FBUyxtQ0FDZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLCtCQUErQjtBQUNoRDtBQWNPLFNBQVMsbURBQ2QsU0FDUTtBQUNSLFNBQU8sUUFBUSwrQ0FBK0M7QUFDaEU7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -12,6 +12,15 @@ import type { ObsidianAndroidAppiumTransportOptions } from './transport-options.
|
|
|
12
12
|
* Default for {@link ObsidianAndroidAppiumTransportOptions.appiumStartTimeoutInMilliseconds}.
|
|
13
13
|
*/
|
|
14
14
|
export declare const DEFAULT_APPIUM_START_TIMEOUT_IN_MILLISECONDS = 180000;
|
|
15
|
+
/**
|
|
16
|
+
* Default for {@link ObsidianAndroidAppiumTransportOptions.scriptTimeoutInMilliseconds}.
|
|
17
|
+
*
|
|
18
|
+
* The same 30s WebDriver would nominally apply, stated here so the cap is a
|
|
19
|
+
* declared number rather than an invisible protocol default — and, since the
|
|
20
|
+
* protocol default was measured not to be applied at all on this driver, the
|
|
21
|
+
* only number that actually bounds an Android eval.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DEFAULT_SCRIPT_TIMEOUT_IN_MILLISECONDS = 30000;
|
|
15
24
|
/**
|
|
16
25
|
* Default for {@link ObsidianAndroidAppiumTransportOptions.sessionConnectionRetryTimeoutInMilliseconds}.
|
|
17
26
|
*/
|
|
@@ -29,6 +38,20 @@ export declare const DEFAULT_SESSION_CONNECTION_RETRY_TIMEOUT_IN_MILLISECONDS =
|
|
|
29
38
|
* @returns The timeout in milliseconds.
|
|
30
39
|
*/
|
|
31
40
|
export declare function resolveAppiumStartTimeoutInMilliseconds(options: ObsidianAndroidAppiumTransportOptions): number;
|
|
41
|
+
/**
|
|
42
|
+
* Resolves the per-script (per-`evalInObsidian`) timeout, applying the default
|
|
43
|
+
* when the option is omitted.
|
|
44
|
+
*
|
|
45
|
+
* This is what `AppiumTransport.evaluate` enforces on the Node side; it is also
|
|
46
|
+
* sent as the W3C `timeouts.script` capability, which was measured to be
|
|
47
|
+
* accepted and never acted on. It is deliberately NOT the knob to reach for when
|
|
48
|
+
* a closure times out: the closure is what should get shorter, with the waiting
|
|
49
|
+
* moved to Node via `pollInObsidian`.
|
|
50
|
+
*
|
|
51
|
+
* @param options - The Android Appium transport options.
|
|
52
|
+
* @returns The timeout in milliseconds.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveScriptTimeoutInMilliseconds(options: ObsidianAndroidAppiumTransportOptions): number;
|
|
32
55
|
/**
|
|
33
56
|
* Resolves the Appium session connection retry timeout, applying the default
|
|
34
57
|
* when the option is omitted.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var cdp_command_timeout_error_exports = {};
|
|
20
|
+
__export(cdp_command_timeout_error_exports, {
|
|
21
|
+
CdpCommandTimeoutError: () => CdpCommandTimeoutError
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(cdp_command_timeout_error_exports);
|
|
24
|
+
class CdpCommandTimeoutError extends Error {
|
|
25
|
+
/**
|
|
26
|
+
The CDP method that got no response.
|
|
27
|
+
*/
|
|
28
|
+
method;
|
|
29
|
+
/**
|
|
30
|
+
The per-command budget that elapsed, in milliseconds.
|
|
31
|
+
*/
|
|
32
|
+
timeoutInMilliseconds;
|
|
33
|
+
/**
|
|
34
|
+
* Creates the error from the method and the elapsed budget.
|
|
35
|
+
*
|
|
36
|
+
* @param params - The CDP method and the per-command timeout.
|
|
37
|
+
*/
|
|
38
|
+
constructor(params) {
|
|
39
|
+
const { method, timeoutInMilliseconds } = params;
|
|
40
|
+
super(`CDP command timed out after ${String(timeoutInMilliseconds)}ms: ${method}`);
|
|
41
|
+
this.name = "CdpCommandTimeoutError";
|
|
42
|
+
this.method = method;
|
|
43
|
+
this.timeoutInMilliseconds = timeoutInMilliseconds;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
CdpCommandTimeoutError
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NkcC1jb21tYW5kLXRpbWVvdXQtZXJyb3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgZGlzdGluY3QgZXJyb3IgdGhlIGRlc2t0b3AgQ0RQIHRyYW5zcG9ydCByYWlzZXMgd2hlbiBhIHNpbmdsZSBDRFAgY29tbWFuZFxuICogZ2V0cyBubyByZXNwb25zZSB3aXRoaW4gYGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHNgLlxuICpcbiAqIEl0IGV4aXN0cyBhcyBhIHR5cGUgcmF0aGVyIHRoYW4gYSBiYXJlIGBFcnJvcmAgc28gT05FIGNhbGxlciBjYW4gdGVsbCBpdCBhcGFydDpcbiAqIGBldmFsdWF0ZSgpYCwgd2hpY2ggaXMgdGhlIG9ubHkgYFJ1bnRpbWUuZXZhbHVhdGVgIGNhcnJ5aW5nIGEgdGVzdCdzIG93blxuICogY2xvc3VyZSwgcmUtcmVwb3J0cyBpdCBhcyBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgLiBUaGUgaGFybmVzcydzIG90aGVyXG4gKiBgUnVudGltZS5ldmFsdWF0ZWAgY2FsbHMgXHUyMDE0IHRoZSB0cnVzdCBkaWFsb2csIHRoZSBwYXJlbnQtbGl2ZW5lc3Mgd2F0Y2hkb2csIHRoZVxuICogYm9vdCBwcm9iZXMgXHUyMDE0IHRpbWUgb3V0IGZvciByZWFzb25zIHRoYXQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggYSB0ZXN0IHdhaXRpbmdcbiAqIHRvbyBsb25nLCBhbmQgbWF0Y2hpbmcgdGhlbSBvbiB0aGUgbWV0aG9kIG5hbWUgd291bGQgcHJvZHVjZSBleGFjdGx5IHRoZVxuICogbWlzZGlhZ25vc2lzIHRoaXMgd29yayByZW1vdmVzLCBwb2ludGluZyB0aGUgb3RoZXIgd2F5LlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBDZHBDb21tYW5kVGltZW91dEVycm9yfSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZHBDb21tYW5kVGltZW91dEVycm9yQ29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgVGhlIENEUCBtZXRob2QgdGhhdCBnb3Qgbm8gcmVzcG9uc2UsIGUuZy4gYCdSdW50aW1lLmV2YWx1YXRlJ2AuXG4gICAqL1xuICByZWFkb25seSBtZXRob2Q6IHN0cmluZztcblxuICAvKipcbiAgVGhlIHBlci1jb21tYW5kIGJ1ZGdldCB0aGF0IGVsYXBzZWQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGEgQ0RQIGNvbW1hbmQgZ2V0cyBubyByZXNwb25zZSB3aXRoaW4gdGhlIHRyYW5zcG9ydCdzIHBlci1jb21tYW5kXG4gKiB0aW1lb3V0LiBDYXJyaWVzIHRoZSBtZXRob2QgYW5kIHRoZSBidWRnZXQgc28gYSBjYWxsZXIgY2FuIGBpbnN0YW5jZW9mYC1tYXRjaFxuICogYW5kIHJlLXJlcG9ydCBpdCBpbiBpdHMgb3duIHRlcm1zLlxuICovXG5leHBvcnQgY2xhc3MgQ2RwQ29tbWFuZFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gIFRoZSBDRFAgbWV0aG9kIHRoYXQgZ290IG5vIHJlc3BvbnNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1ldGhvZDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGVyLWNvbW1hbmQgYnVkZ2V0IHRoYXQgZWxhcHNlZCwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlcnJvciBmcm9tIHRoZSBtZXRob2QgYW5kIHRoZSBlbGFwc2VkIGJ1ZGdldC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBDRFAgbWV0aG9kIGFuZCB0aGUgcGVyLWNvbW1hbmQgdGltZW91dC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IENkcENvbW1hbmRUaW1lb3V0RXJyb3JDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIGNvbnN0IHsgbWV0aG9kLCB0aW1lb3V0SW5NaWxsaXNlY29uZHMgfSA9IHBhcmFtcztcbiAgICBzdXBlcihgQ0RQIGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9bXM6ICR7bWV0aG9kfWApO1xuICAgIHRoaXMubmFtZSA9ICdDZHBDb21tYW5kVGltZW91dEVycm9yJztcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICB0aGlzLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IHRpbWVvdXRJbk1pbGxpc2Vjb25kcztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1DTyxNQUFNLCtCQUErQixNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJaEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxRQUFpRDtBQUNsRSxVQUFNLEVBQUUsUUFBUSxzQkFBc0IsSUFBSTtBQUMxQyxVQUFNLCtCQUErQixPQUFPLHFCQUFxQixDQUFDLE9BQU8sTUFBTSxFQUFFO0FBQ2pGLFNBQUssT0FBTztBQUNaLFNBQUssU0FBUztBQUNkLFNBQUssd0JBQXdCO0FBQUEsRUFDL0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* The distinct error the desktop CDP transport raises when a single CDP command
|
|
5
|
+
* gets no response within `commandTimeoutInMilliseconds`.
|
|
6
|
+
*
|
|
7
|
+
* It exists as a type rather than a bare `Error` so ONE caller can tell it apart:
|
|
8
|
+
* `evaluate()`, which is the only `Runtime.evaluate` carrying a test's own
|
|
9
|
+
* closure, re-reports it as `EvalCapExceededError`. The harness's other
|
|
10
|
+
* `Runtime.evaluate` calls — the trust dialog, the parent-liveness watchdog, the
|
|
11
|
+
* boot probes — time out for reasons that have nothing to do with a test waiting
|
|
12
|
+
* too long, and matching them on the method name would produce exactly the
|
|
13
|
+
* misdiagnosis this work removes, pointing the other way.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Parameters for the {@link CdpCommandTimeoutError} constructor.
|
|
17
|
+
*/
|
|
18
|
+
export interface CdpCommandTimeoutErrorConstructorParams {
|
|
19
|
+
/**
|
|
20
|
+
The CDP method that got no response, e.g. `'Runtime.evaluate'`.
|
|
21
|
+
*/
|
|
22
|
+
readonly method: string;
|
|
23
|
+
/**
|
|
24
|
+
The per-command budget that elapsed, in milliseconds.
|
|
25
|
+
*/
|
|
26
|
+
readonly timeoutInMilliseconds: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Thrown when a CDP command gets no response within the transport's per-command
|
|
30
|
+
* timeout. Carries the method and the budget so a caller can `instanceof`-match
|
|
31
|
+
* and re-report it in its own terms.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CdpCommandTimeoutError extends Error {
|
|
34
|
+
/**
|
|
35
|
+
The CDP method that got no response.
|
|
36
|
+
*/
|
|
37
|
+
readonly method: string;
|
|
38
|
+
/**
|
|
39
|
+
The per-command budget that elapsed, in milliseconds.
|
|
40
|
+
*/
|
|
41
|
+
readonly timeoutInMilliseconds: number;
|
|
42
|
+
/**
|
|
43
|
+
* Creates the error from the method and the elapsed budget.
|
|
44
|
+
*
|
|
45
|
+
* @param params - The CDP method and the per-command timeout.
|
|
46
|
+
*/
|
|
47
|
+
constructor(params: CdpCommandTimeoutErrorConstructorParams);
|
|
48
|
+
}
|
|
@@ -18,10 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var emulator_arguments_exports = {};
|
|
20
20
|
__export(emulator_arguments_exports, {
|
|
21
|
-
|
|
21
|
+
NETSIM_LOG_FILTER: () => NETSIM_LOG_FILTER,
|
|
22
|
+
buildEmulatorArguments: () => buildEmulatorArguments,
|
|
23
|
+
buildEmulatorEnvironment: () => buildEmulatorEnvironment
|
|
22
24
|
});
|
|
23
25
|
module.exports = __toCommonJS(emulator_arguments_exports);
|
|
24
26
|
const DNS_SERVER = "8.8.8.8";
|
|
27
|
+
const NETSIM_LOG_FILTER = "error";
|
|
28
|
+
const RUST_LOG_VARIABLE_NAME = "RUST_LOG";
|
|
25
29
|
function buildEmulatorArguments(params) {
|
|
26
30
|
const emulatorArguments = ["-avd", params.avdName];
|
|
27
31
|
if (!params.shouldReuseSnapshot) {
|
|
@@ -33,8 +37,20 @@ function buildEmulatorArguments(params) {
|
|
|
33
37
|
}
|
|
34
38
|
return emulatorArguments;
|
|
35
39
|
}
|
|
40
|
+
function buildEmulatorEnvironment(baseEnvironment) {
|
|
41
|
+
const existingFilter = baseEnvironment[RUST_LOG_VARIABLE_NAME];
|
|
42
|
+
if (existingFilter !== void 0 && existingFilter !== "") {
|
|
43
|
+
return { environment: { ...baseEnvironment }, isNetsimLogGuarded: false };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
environment: { ...baseEnvironment, [RUST_LOG_VARIABLE_NAME]: NETSIM_LOG_FILTER },
|
|
47
|
+
isNetsimLogGuarded: true
|
|
48
|
+
};
|
|
49
|
+
}
|
|
36
50
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
51
|
0 && (module.exports = {
|
|
38
|
-
|
|
52
|
+
NETSIM_LOG_FILTER,
|
|
53
|
+
buildEmulatorArguments,
|
|
54
|
+
buildEmulatorEnvironment
|
|
39
55
|
});
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VtdWxhdG9yLWFyZ3VtZW50cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEJ1aWxkcyB0aGUgYXJndW1lbnQgbGlzdCBmb3Igc3Bhd25pbmcgdGhlIEFuZHJvaWQgZW11bGF0b3IuXG4gKlxuICogKipUaGUgaGFybmVzcyBvd25zIHRoZSBzbmFwc2hvdCBpdCBsb2Fkcywgb3IgaXQgbG9hZHMgbm9uZS4qKiBUaGlzIGZpbGUgdXNlZFxuICogdG8gcGFzcyBgLW5vLXNuYXBzaG90LXNhdmVgIGFsb25lIFx1MjAxNCB0aGUgb25lIGNvbWJpbmF0aW9uIHRoYXQgaXMgbmV2ZXJcbiAqIGNvcnJlY3QuIEl0IG5ldmVyICp3cml0ZXMqIGBkZWZhdWx0X2Jvb3RgLCB5ZXQgZXZlcnkgcnVuICpyZXN1bWVkKiBpdCwgc28gdGhlXG4gKiBndWVzdCBlYWNoIHJ1biBzdGFydGVkIGZyb20gd2FzIHN0YXRlIG5vdGhpbmcgaGFkIHZhbGlkYXRlZCBzaW5jZSB3aGVuZXZlciBhXG4gKiBodW1hbiBsYXN0IHNhdmVkIGl0LiBNZWFzdXJlZCAyMDI2LTA5LTAzLCBzYW1lIEFWRCBiYWNrIHRvIGJhY2s6XG4gKlxuICogfCBMYXVuY2ggfCBSZXN1bHQgfFxuICogfCAtLS0gfCAtLS0gfFxuICogfCBzbmFwc2hvdCByZXN1bWVkIChgLW5vLXNuYXBzaG90LXNhdmVgIGFsb25lKSB8IGd1ZXN0IGRpZXMgfjkwcyBpbiwgZXZlcnkgdGltZSB8XG4gKiB8IGAtbm8tc25hcHNob3QtbG9hZGAgKGNvbGQpIHwgYm9vdGVkIGluIDUwcywgYWxpdmUgYXQgNjAvMTIwLzE4MC8yNDBzIHxcbiAqXG4gKiBBIHJlc3VtZWQgc25hcHNob3Qgcm90cyBzaWxlbnRseSwgYW5kIHRoZSBmYWlsdXJlIGl0IGV2ZW50dWFsbHkgcHJvZHVjZXMgXHUyMDE0XG4gKiBhIGRldmljZSB0aGF0IHNlcnZlcyBhZGIsIGFjY2VwdHMgYSBzZXNzaW9uIGFuZCB0aGVuIGRyb3BzIGBvZmZsaW5lYCBhXG4gKiBoYWxmLW1pbnV0ZSBsYXRlciBcdTIwMTQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGNvZGUgcmVncmVzc2lvbi4gU28gdGhlXG4gKiBkZWZhdWx0IGlzIGEgZnVsbCBjb2xkIGJvb3QsIGFuZCBzbmFwc2hvdCByZXVzZSBpcyBhbiBleHBsaWNpdCBvcHQtaW4gdGhhdFxuICogdGFrZXMgKipib3RoKiogaGFsdmVzOiBsb2FkIGFuZCBzYXZlIHRvZ2V0aGVyLCBzbyB0aGUgc25hcHNob3QgdGhlIG5leHQgcnVuXG4gKiByZXN1bWVzIGlzIG9uZSB0aGlzIHJ1biB3cm90ZS5cbiAqXG4gKiAqKlRoZSBlbnZpcm9ubWVudCBxdWlldHMgYG5ldHNpbWRgLCBiZWNhdXNlIG5vdGhpbmcgZWxzZSBjYW4uKiogVGhlIGVtdWxhdG9yXG4gKiBzdGFydHMgYG5ldHNpbWRgLCBpdHMgbmV0d29yayBzaW11bGF0b3IsIGFuZCBuZXRzaW1kIGhhcyBhIGxvb3AgdGhhdCBuZXZlclxuICogY2hlY2tzIGl0cyBob3N0YXBkIHNvY2tldCBmb3IgZW5kLW9mLWZpbGU6IG9uY2UgdGhhdCBzb2NrZXQgY2xvc2VzLCBldmVyeVxuICogcGFzcyBkZWNvZGVzIGFuIGVtcHR5IFdpLUZpIGZyYW1lIGFuZCBsb2dzIHRoZSBmYWlsdXJlLCB3aXRoIG5vIHJhdGUgbGltaXQuXG4gKiBPbiAyMDI2LTA5LTEwIGFuIGlkbGUgZW11bGF0b3IncyBuZXRzaW1kIHdyb3RlIDI3OCBHQiBvZiB0aGF0IG9uZSB3YXJuaW5nIHRvXG4gKiBgJVRFTVAlXFxuZXRzaW1kXFxuZXRzaW1fc3RkZXJyLmxvZ2AgaW4gc2l4IGhvdXJzLCBmaWxsaW5nIHRoZSBkcml2ZS4gbmV0c2ltZFxuICogaGFzIG5vIGZsYWcgdG8gcXVpZXQgaXQ7IGl0cyBsb2cgbGV2ZWwgaXMgYFJVU1RfTE9HYCwgcmVhZCBmcm9tIHRoZVxuICogZW52aXJvbm1lbnQgaXQgaW5oZXJpdHMuIFNlZSAqKkw1NioqLlxuICovXG5cbmNvbnN0IEROU19TRVJWRVIgPSAnOC44LjguOCc7XG5cbi8qKlxuICogVGhlIGBSVVNUX0xPR2AgZmlsdGVyIHRoZSBoYXJuZXNzIGhhbmRzIHRoZSBlbXVsYXRvciwgYW5kIHRocm91Z2ggaXQgYG5ldHNpbWRgLlxuICpcbiAqIGBlcnJvcmAgcmF0aGVyIHRoYW4gYSBkaXJlY3RpdmUgYWltZWQgYXQgdGhlIG9uZSBub2lzeSBtb2R1bGU6IG5vdGhpbmcgcmVhZHNcbiAqIG5ldHNpbWQncyBsb2csIHJlYWwgZmFpbHVyZXMgYXJlIHN0aWxsIHJlY29yZGVkLCBhbmQgYSBsZXZlbCBjYW4gYmUgdmVyaWZpZWRcbiAqIGJ5IHRoZSBhYnNlbmNlIG9mIGBuZXRzaW1kIElgIGxpbmVzIHdoZXJlIGEgbW9kdWxlIGRpcmVjdGl2ZSBjb3VsZCBvbmx5IGJlXG4gKiB2ZXJpZmllZCBieSByZXByb2R1Y2luZyB0aGUgZmxvb2QuXG4gKi9cbmV4cG9ydCBjb25zdCBORVRTSU1fTE9HX0ZJTFRFUiA9ICdlcnJvcic7XG5cbmNvbnN0IFJVU1RfTE9HX1ZBUklBQkxFX05BTUUgPSAnUlVTVF9MT0cnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZEVtdWxhdG9yQXJndW1lbnRzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEVtdWxhdG9yQXJndW1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBBbmRyb2lkIFZpcnR1YWwgRGV2aWNlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcnVuIHRoZSBlbXVsYXRvciBoZWFkbGVzcyAoYC1uby13aW5kb3dgKSwgc28gaXQgbmV2ZXIgc3RlYWxzXG4gICAqIGZvY3VzLiBSZXNvbHZlZCBmcm9tIHRoZSBgaXNFbXVsYXRvclZpc2libGVgIHRyYW5zcG9ydCBvcHRpb24uXG4gICAqL1xuICByZWFkb25seSBpc0hpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZW11bGF0b3IgbWF5IHJlc3VtZSBcdTIwMTQgYW5kIHJlZnJlc2ggXHUyMDE0IHRoZSBBVkQncyBzYXZlZCBib290XG4gICAqIHNuYXBzaG90LiBSZXNvbHZlZCBmcm9tIHRoZSBgc2hvdWxkUmV1c2VFbXVsYXRvclNuYXBzaG90YCB0cmFuc3BvcnQgb3B0aW9uLlxuICAgKlxuICAgKiBgZmFsc2VgICh0aGUgZGVmYXVsdCkgY29sZC1ib290cyBoZXJtZXRpY2FsbHkuIGB0cnVlYCBidXlzIGJhY2sgdGhlIH4xMTJzXG4gICAqIGJvb3Qgb24gYSBwZXJzaXN0ZW50IHJ1bm5lciwgYXQgdGhlIGNvc3Qgb2YgdGVzdCBpc29sYXRpb24uXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZVNuYXBzaG90OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiB7QGxpbmsgYnVpbGRFbXVsYXRvckVudmlyb25tZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXVsYXRvckVudmlyb25tZW50IHtcbiAgLyoqXG4gIFRoZSBlbnZpcm9ubWVudCB0byBzcGF3biB0aGUgZW11bGF0b3Igd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50OiBOb2RlSlMuUHJvY2Vzc0VudjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGFybmVzcyBzZXQgYFJVU1RfTE9HYCBpdHNlbGYuIGBmYWxzZWAgbWVhbnMgdGhlIGNhbGxlcidzXG4gICAqIGVudmlyb25tZW50IGFscmVhZHkgY2FycmllZCBvbmUsIHdoaWNoIHdpbnMgXHUyMDE0IGFuZCB3aGljaCBsZWF2ZXMgbmV0c2ltZCdzXG4gICAqIGxvZyB1bmJvdW5kZWQgaWYgaXQgaXMgYHdhcm5gIG9yIGNoYXR0aWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNOZXRzaW1Mb2dHdWFyZGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYXJndW1lbnQgbGlzdCBmb3Igc3Bhd25pbmcgdGhlIEFuZHJvaWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlbXVsYXRvciBhcmd1bWVudCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGFyZ3VtZW50IGFycmF5IHRvIHBhc3MgdG8gdGhlIGVtdWxhdG9yIGJpbmFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRW11bGF0b3JBcmd1bWVudHMocGFyYW1zOiBCdWlsZEVtdWxhdG9yQXJndW1lbnRzUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBlbXVsYXRvckFyZ3VtZW50cyA9IFsnLWF2ZCcsIHBhcmFtcy5hdmROYW1lXTtcbiAgLypcbiAgICogQm90aCBmbGFncyBvciBuZWl0aGVyOiBsb2FkaW5nIHdpdGhvdXQgc2F2aW5nIGlzIHRoZSByZXN1bWUtd2hhdC13ZS1uZXZlci1cbiAgICogd3JvdGUgY29tYmluYXRpb24gdGhpcyBmaWxlJ3MgaGVhZGVyIGV4aXN0cyB0byBydWxlIG91dC5cbiAgICovXG4gIGlmICghcGFyYW1zLnNob3VsZFJldXNlU25hcHNob3QpIHtcbiAgICBlbXVsYXRvckFyZ3VtZW50cy5wdXNoKCctbm8tc25hcHNob3QtbG9hZCcsICctbm8tc25hcHNob3Qtc2F2ZScpO1xuICB9XG4gIGVtdWxhdG9yQXJndW1lbnRzLnB1c2goJy1kbnMtc2VydmVyJywgRE5TX1NFUlZFUik7XG4gIGlmIChwYXJhbXMuaXNIaWRkZW4pIHtcbiAgICBlbXVsYXRvckFyZ3VtZW50cy5wdXNoKCctbm8td2luZG93Jyk7XG4gIH1cbiAgcmV0dXJuIGVtdWxhdG9yQXJndW1lbnRzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZW52aXJvbm1lbnQgZm9yIHNwYXduaW5nIHRoZSBBbmRyb2lkIGVtdWxhdG9yOiB0aGUgY2FsbGVyJ3Mgb3duLFxuICogcGx1cyBhIGBSVVNUX0xPR2AgdGhhdCBrZWVwcyBgbmV0c2ltZGAncyBsb2cgYm91bmRlZC5cbiAqXG4gKiBBbiBleHBsaWNpdCBgUlVTVF9MT0dgIGlzIGxlZnQgYWxvbmUgXHUyMDE0IHNvbWVvbmUgd2hvIHNldCBpdCBhc2tlZCBmb3IgdGhhdFxuICogbGV2ZWwgXHUyMDE0IGFuZCByZXBvcnRlZCBiYWNrIHNvIHRoZSBjYWxsZXIgY2FuIHNheSB0aGUgZ3VhcmQgaXMgb2ZmLlxuICpcbiAqIEBwYXJhbSBiYXNlRW52aXJvbm1lbnQgLSBUaGUgZW52aXJvbm1lbnQgdG8gZXh0ZW5kLCBub3JtYWxseSBgcHJvY2Vzcy5lbnZgLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50LCBhbmQgd2hldGhlciB0aGUgaGFybmVzcyBzdXBwbGllZCB0aGUgbG9nIGZpbHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRW11bGF0b3JFbnZpcm9ubWVudChiYXNlRW52aXJvbm1lbnQ6IE5vZGVKUy5Qcm9jZXNzRW52KTogRW11bGF0b3JFbnZpcm9ubWVudCB7XG4gIGNvbnN0IGV4aXN0aW5nRmlsdGVyID0gYmFzZUVudmlyb25tZW50W1JVU1RfTE9HX1ZBUklBQkxFX05BTUVdO1xuICBpZiAoZXhpc3RpbmdGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiBleGlzdGluZ0ZpbHRlciAhPT0gJycpIHtcbiAgICByZXR1cm4geyBlbnZpcm9ubWVudDogeyAuLi5iYXNlRW52aXJvbm1lbnQgfSwgaXNOZXRzaW1Mb2dHdWFyZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnZpcm9ubWVudDogeyAuLi5iYXNlRW52aXJvbm1lbnQsIFtSVVNUX0xPR19WQVJJQUJMRV9OQU1FXTogTkVUU0lNX0xPR19GSUxURVIgfSxcbiAgICBpc05ldHNpbUxvZ0d1YXJkZWQ6IHRydWVcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUNBLE1BQU0sYUFBYTtBQVVaLE1BQU0sb0JBQW9CO0FBRWpDLE1BQU0seUJBQXlCO0FBa0R4QixTQUFTLHVCQUF1QixRQUFnRDtBQUNyRixRQUFNLG9CQUFvQixDQUFDLFFBQVEsT0FBTyxPQUFPO0FBS2pELE1BQUksQ0FBQyxPQUFPLHFCQUFxQjtBQUMvQixzQkFBa0IsS0FBSyxxQkFBcUIsbUJBQW1CO0FBQUEsRUFDakU7QUFDQSxvQkFBa0IsS0FBSyxlQUFlLFVBQVU7QUFDaEQsTUFBSSxPQUFPLFVBQVU7QUFDbkIsc0JBQWtCLEtBQUssWUFBWTtBQUFBLEVBQ3JDO0FBQ0EsU0FBTztBQUNUO0FBWU8sU0FBUyx5QkFBeUIsaUJBQXlEO0FBQ2hHLFFBQU0saUJBQWlCLGdCQUFnQixzQkFBc0I7QUFDN0QsTUFBSSxtQkFBbUIsVUFBYSxtQkFBbUIsSUFBSTtBQUN6RCxXQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsZ0JBQWdCLEdBQUcsb0JBQW9CLE1BQU07QUFBQSxFQUMxRTtBQUVBLFNBQU87QUFBQSxJQUNMLGFBQWEsRUFBRSxHQUFHLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLGtCQUFrQjtBQUFBLElBQy9FLG9CQUFvQjtBQUFBLEVBQ3RCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|