@testingbot/mobilewright-driver 0.1.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/LICENSE +202 -0
- package/README.md +211 -0
- package/dist/actions.d.ts +25 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +76 -0
- package/dist/actions.js.map +1 -0
- package/dist/app-storage.d.ts +20 -0
- package/dist/app-storage.d.ts.map +1 -0
- package/dist/app-storage.js +68 -0
- package/dist/app-storage.js.map +1 -0
- package/dist/capabilities.d.ts +27 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +120 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/ci.d.ts +8 -0
- package/dist/ci.d.ts.map +1 -0
- package/dist/ci.js +46 -0
- package/dist/ci.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +43 -0
- package/dist/cli.js.map +1 -0
- package/dist/device-catalog.d.ts +37 -0
- package/dist/device-catalog.d.ts.map +1 -0
- package/dist/device-catalog.js +159 -0
- package/dist/device-catalog.js.map +1 -0
- package/dist/driver.d.ts +80 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +646 -0
- package/dist/driver.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +104 -0
- package/dist/errors.js.map +1 -0
- package/dist/hierarchy.d.ts +10 -0
- package/dist/hierarchy.d.ts.map +1 -0
- package/dist/hierarchy.js +103 -0
- package/dist/hierarchy.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +19 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +108 -0
- package/dist/init.js.map +1 -0
- package/dist/keepalive.d.ts +16 -0
- package/dist/keepalive.d.ts.map +1 -0
- package/dist/keepalive.js +56 -0
- package/dist/keepalive.js.map +1 -0
- package/dist/keys.d.ts +32 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +117 -0
- package/dist/keys.js.map +1 -0
- package/dist/observer.d.ts +55 -0
- package/dist/observer.d.ts.map +1 -0
- package/dist/observer.js +148 -0
- package/dist/observer.js.map +1 -0
- package/dist/options.d.ts +154 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +49 -0
- package/dist/options.js.map +1 -0
- package/dist/rest-api.d.ts +67 -0
- package/dist/rest-api.d.ts.map +1 -0
- package/dist/rest-api.js +117 -0
- package/dist/rest-api.js.map +1 -0
- package/dist/run-log.d.ts +56 -0
- package/dist/run-log.d.ts.map +1 -0
- package/dist/run-log.js +72 -0
- package/dist/run-log.js.map +1 -0
- package/dist/tunnel.d.ts +13 -0
- package/dist/tunnel.d.ts.map +1 -0
- package/dist/tunnel.js +47 -0
- package/dist/tunnel.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/dist/webdriver-client.d.ts +43 -0
- package/dist/webdriver-client.d.ts.map +1 -0
- package/dist/webdriver-client.js +109 -0
- package/dist/webdriver-client.js.map +1 -0
- package/dist/webview.d.ts +16 -0
- package/dist/webview.d.ts.map +1 -0
- package/dist/webview.js +109 -0
- package/dist/webview.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../src/driver.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { NoDeviceAvailableError } from '@mobilewright/protocol';
|
|
2
|
+
export { NoDeviceAvailableError };
|
|
3
|
+
/** Base class for all errors raised by this driver. */
|
|
4
|
+
export declare class TestingBotError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
/** Credentials missing or rejected by TestingBot. */
|
|
8
|
+
export declare class AuthenticationError extends TestingBotError {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
/** A session method was called before connect() (or after disconnect). */
|
|
12
|
+
export declare class SessionNotActiveError extends TestingBotError {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
/** A WebDriver command returned an error response. */
|
|
16
|
+
export declare class WebDriverError extends TestingBotError {
|
|
17
|
+
/** W3C error code, e.g. "invalid session id", "unknown error". */
|
|
18
|
+
readonly error: string;
|
|
19
|
+
readonly httpStatus: number;
|
|
20
|
+
constructor(error: string, message: string, httpStatus: number);
|
|
21
|
+
}
|
|
22
|
+
/** A TestingBot REST API call failed. */
|
|
23
|
+
export declare class RestApiError extends TestingBotError {
|
|
24
|
+
readonly httpStatus: number;
|
|
25
|
+
constructor(message: string, httpStatus: number);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert an allocation-time failure into `NoDeviceAvailableError` when it is
|
|
29
|
+
* temporary (device shortage, concurrency limit) so the mobilewright device
|
|
30
|
+
* pool re-queues instead of failing the run. The pool detects it with
|
|
31
|
+
* `instanceof` against `@mobilewright/protocol` — which is why this package
|
|
32
|
+
* declares protocol as a peerDependency and re-throws the protocol class.
|
|
33
|
+
*/
|
|
34
|
+
export declare function toAllocationError(err: unknown): Error;
|
|
35
|
+
/**
|
|
36
|
+
* Wrap a permanent allocation failure with the criteria being allocated and
|
|
37
|
+
* an actionable hint when the hub message matches a known cause. Retriable
|
|
38
|
+
* errors pass through untouched — the pool needs the exact class.
|
|
39
|
+
*/
|
|
40
|
+
export declare function withAllocationContext(err: Error, criteriaDescription: string): Error;
|
|
41
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,uDAAuD;AACvD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,0EAA0E;AAC1E,qBAAa,qBAAsB,SAAQ,eAAe;;CAKzD;AAED,sDAAsD;AACtD,qBAAa,cAAe,SAAQ,eAAe;IACjD,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAM/D;AAED,yCAAyC;AACzC,qBAAa,YAAa,SAAQ,eAAe;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAKhD;AAeD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAarD;AAcD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,GAAG,KAAK,CASpF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { NoDeviceAvailableError } from '@mobilewright/protocol';
|
|
2
|
+
export { NoDeviceAvailableError };
|
|
3
|
+
/** Base class for all errors raised by this driver. */
|
|
4
|
+
export class TestingBotError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'TestingBotError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** Credentials missing or rejected by TestingBot. */
|
|
11
|
+
export class AuthenticationError extends TestingBotError {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'AuthenticationError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** A session method was called before connect() (or after disconnect). */
|
|
18
|
+
export class SessionNotActiveError extends TestingBotError {
|
|
19
|
+
constructor() {
|
|
20
|
+
super('No active session. Call connect() first.');
|
|
21
|
+
this.name = 'SessionNotActiveError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** A WebDriver command returned an error response. */
|
|
25
|
+
export class WebDriverError extends TestingBotError {
|
|
26
|
+
/** W3C error code, e.g. "invalid session id", "unknown error". */
|
|
27
|
+
error;
|
|
28
|
+
httpStatus;
|
|
29
|
+
constructor(error, message, httpStatus) {
|
|
30
|
+
super(message ? `${error}: ${message}` : error);
|
|
31
|
+
this.name = 'WebDriverError';
|
|
32
|
+
this.error = error;
|
|
33
|
+
this.httpStatus = httpStatus;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** A TestingBot REST API call failed. */
|
|
37
|
+
export class RestApiError extends TestingBotError {
|
|
38
|
+
httpStatus;
|
|
39
|
+
constructor(message, httpStatus) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'RestApiError';
|
|
42
|
+
this.httpStatus = httpStatus;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// The hub has no structured error type — every failure path returns a string
|
|
46
|
+
// (its own analytics.js classifies faults by these exact substrings, which
|
|
47
|
+
// makes this list canonical). Retriable = temporary shortage or contention;
|
|
48
|
+
// everything else (bad capabilities, unknown browserName, ...) is permanent.
|
|
49
|
+
const RETRIABLE_PATTERNS = [
|
|
50
|
+
/Waited too long for job to start/i, // hub queue TTL (390s) expired (WebDriverError prefixes the code, so no ^ anchor)
|
|
51
|
+
/unable to fulfill your request/i, // no node currently matches (capacity)
|
|
52
|
+
/device is currently in use/i, // pinned real device busy
|
|
53
|
+
/experiencing high load/i,
|
|
54
|
+
/Could not acquire processing lock/i,
|
|
55
|
+
/temporarily busy/i,
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* Convert an allocation-time failure into `NoDeviceAvailableError` when it is
|
|
59
|
+
* temporary (device shortage, concurrency limit) so the mobilewright device
|
|
60
|
+
* pool re-queues instead of failing the run. The pool detects it with
|
|
61
|
+
* `instanceof` against `@mobilewright/protocol` — which is why this package
|
|
62
|
+
* declares protocol as a peerDependency and re-throws the protocol class.
|
|
63
|
+
*/
|
|
64
|
+
export function toAllocationError(err) {
|
|
65
|
+
if (err instanceof NoDeviceAvailableError)
|
|
66
|
+
return err;
|
|
67
|
+
// Client-side allocationTimeout expiry while the hub still queues the
|
|
68
|
+
// request: aborting the socket dropped the queue entry, and retrying later
|
|
69
|
+
// is exactly right.
|
|
70
|
+
if (err instanceof WebDriverError && err.error === 'timeout') {
|
|
71
|
+
return new NoDeviceAvailableError(err.message);
|
|
72
|
+
}
|
|
73
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
74
|
+
if (RETRIABLE_PATTERNS.some((re) => re.test(message))) {
|
|
75
|
+
return new NoDeviceAvailableError(message);
|
|
76
|
+
}
|
|
77
|
+
return err instanceof Error ? err : new Error(message);
|
|
78
|
+
}
|
|
79
|
+
// Actionable hints for known permanent hub failures, keyed by message pattern.
|
|
80
|
+
const ALLOCATION_HINTS = [
|
|
81
|
+
[/Unknown browserName|we only serve/i,
|
|
82
|
+
"Make sure the app under test is declared via the driver's `apps` option — TestingBot sessions must start with an app or a browser."],
|
|
83
|
+
[/signature|provision|codesign|entitlement/i,
|
|
84
|
+
'Real iOS devices need a test-signed .ipa; simulator builds and unsigned archives cannot be installed on physical hardware.'],
|
|
85
|
+
[/appium.*version|version.*not supported/i,
|
|
86
|
+
'Pin a known-good version with the `appiumVersion` option (e.g. "latest" or "2.0").'],
|
|
87
|
+
[/invalid.*capabilit/i,
|
|
88
|
+
'Check the `capabilities` / `tbOptions` escape hatches for typos — they are merged into the session request as-is.'],
|
|
89
|
+
];
|
|
90
|
+
/**
|
|
91
|
+
* Wrap a permanent allocation failure with the criteria being allocated and
|
|
92
|
+
* an actionable hint when the hub message matches a known cause. Retriable
|
|
93
|
+
* errors pass through untouched — the pool needs the exact class.
|
|
94
|
+
*/
|
|
95
|
+
export function withAllocationContext(err, criteriaDescription) {
|
|
96
|
+
if (err instanceof NoDeviceAvailableError)
|
|
97
|
+
return err;
|
|
98
|
+
const hint = ALLOCATION_HINTS.find(([re]) => re.test(err.message))?.[1];
|
|
99
|
+
const wrapped = new Error(`TestingBot could not start a session for ${criteriaDescription}: ${err.message}` +
|
|
100
|
+
(hint ? `\nHint: ${hint}` : ''));
|
|
101
|
+
wrapped.cause = err;
|
|
102
|
+
return wrapped;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Platform, ViewNode } from '@mobilewright/protocol';
|
|
2
|
+
/**
|
|
3
|
+
* Parse an Appium page-source XML document into the protocol's ViewNode
|
|
4
|
+
* forest. Raw native type strings are passed through verbatim
|
|
5
|
+
* ("android.widget.Button", "XCUIElementTypeButton") — mobilewright-core's
|
|
6
|
+
* role engine normalizes them itself (bareTypeName), and getByType matches
|
|
7
|
+
* case-insensitively on the raw value.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseHierarchy(xml: string, platform: Platform): ViewNode[];
|
|
10
|
+
//# sourceMappingURL=hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAW1E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { XMLParser } from 'fast-xml-parser';
|
|
2
|
+
/**
|
|
3
|
+
* Parse an Appium page-source XML document into the protocol's ViewNode
|
|
4
|
+
* forest. Raw native type strings are passed through verbatim
|
|
5
|
+
* ("android.widget.Button", "XCUIElementTypeButton") — mobilewright-core's
|
|
6
|
+
* role engine normalizes them itself (bareTypeName), and getByType matches
|
|
7
|
+
* case-insensitively on the raw value.
|
|
8
|
+
*/
|
|
9
|
+
export function parseHierarchy(xml, platform) {
|
|
10
|
+
const parser = new XMLParser({
|
|
11
|
+
ignoreAttributes: false,
|
|
12
|
+
attributeNamePrefix: '',
|
|
13
|
+
preserveOrder: true,
|
|
14
|
+
parseTagValue: false,
|
|
15
|
+
parseAttributeValue: false,
|
|
16
|
+
});
|
|
17
|
+
const doc = parser.parse(xml);
|
|
18
|
+
const mapper = platform === 'ios' ? mapIosNode : mapAndroidNode;
|
|
19
|
+
return doc.flatMap((n) => convert(n, mapper));
|
|
20
|
+
}
|
|
21
|
+
function convert(node, mapper) {
|
|
22
|
+
const tag = Object.keys(node).find((k) => k !== ':@');
|
|
23
|
+
if (!tag || tag === '?xml' || tag === '#text')
|
|
24
|
+
return [];
|
|
25
|
+
const attrs = node[':@'] ?? {};
|
|
26
|
+
const childNodes = node[tag] ?? [];
|
|
27
|
+
const children = childNodes.flatMap((c) => convert(c, mapper));
|
|
28
|
+
// Both drivers wrap content in a synthetic root ("hierarchy" on Android,
|
|
29
|
+
// "AppiumAUT" on iOS) — skip wrappers, promote their children.
|
|
30
|
+
if (tag === 'hierarchy' || tag === 'AppiumAUT')
|
|
31
|
+
return children;
|
|
32
|
+
const mapped = mapper(tag, attrs, children);
|
|
33
|
+
return mapped ? [mapped] : children;
|
|
34
|
+
}
|
|
35
|
+
function mapAndroidNode(tag, attrs, children) {
|
|
36
|
+
const type = attrs['class'] ?? tag;
|
|
37
|
+
const bounds = parseAndroidBounds(attrs['bounds']);
|
|
38
|
+
const node = {
|
|
39
|
+
type,
|
|
40
|
+
bounds,
|
|
41
|
+
children,
|
|
42
|
+
isVisible: attrs['displayed'] !== 'false',
|
|
43
|
+
isEnabled: attrs['enabled'] !== 'false',
|
|
44
|
+
raw: attrs,
|
|
45
|
+
};
|
|
46
|
+
if (attrs['content-desc'])
|
|
47
|
+
node.label = attrs['content-desc'];
|
|
48
|
+
if (attrs['resource-id'])
|
|
49
|
+
node.resourceId = attrs['resource-id'];
|
|
50
|
+
if (attrs['text'])
|
|
51
|
+
node.text = attrs['text'];
|
|
52
|
+
if (attrs['hint'])
|
|
53
|
+
node.placeholder = attrs['hint'];
|
|
54
|
+
if (attrs['selected'] !== undefined)
|
|
55
|
+
node.isSelected = attrs['selected'] === 'true';
|
|
56
|
+
if (attrs['focused'] !== undefined)
|
|
57
|
+
node.isFocused = attrs['focused'] === 'true';
|
|
58
|
+
if (attrs['checked'] !== undefined)
|
|
59
|
+
node.isChecked = attrs['checked'] === 'true';
|
|
60
|
+
return node;
|
|
61
|
+
}
|
|
62
|
+
function mapIosNode(tag, attrs, children) {
|
|
63
|
+
const type = attrs['type'] ?? tag;
|
|
64
|
+
const node = {
|
|
65
|
+
type,
|
|
66
|
+
bounds: {
|
|
67
|
+
x: num(attrs['x']),
|
|
68
|
+
y: num(attrs['y']),
|
|
69
|
+
width: num(attrs['width']),
|
|
70
|
+
height: num(attrs['height']),
|
|
71
|
+
},
|
|
72
|
+
children,
|
|
73
|
+
isVisible: attrs['visible'] !== 'false',
|
|
74
|
+
isEnabled: attrs['enabled'] !== 'false',
|
|
75
|
+
raw: attrs,
|
|
76
|
+
};
|
|
77
|
+
if (attrs['name'])
|
|
78
|
+
node.identifier = attrs['name'];
|
|
79
|
+
if (attrs['label'])
|
|
80
|
+
node.label = attrs['label'];
|
|
81
|
+
if (attrs['value'])
|
|
82
|
+
node.value = attrs['value'];
|
|
83
|
+
if (attrs['placeholderValue'])
|
|
84
|
+
node.placeholder = attrs['placeholderValue'];
|
|
85
|
+
if (attrs['selected'] !== undefined)
|
|
86
|
+
node.isSelected = attrs['selected'] === 'true';
|
|
87
|
+
if (attrs['focused'] !== undefined)
|
|
88
|
+
node.isFocused = attrs['focused'] === 'true';
|
|
89
|
+
return node;
|
|
90
|
+
}
|
|
91
|
+
/** Android bounds attribute: "[x1,y1][x2,y2]". */
|
|
92
|
+
function parseAndroidBounds(value) {
|
|
93
|
+
const match = value?.match(/\[(-?\d+),(-?\d+)\]\[(-?\d+),(-?\d+)\]/);
|
|
94
|
+
if (!match)
|
|
95
|
+
return { x: 0, y: 0, width: 0, height: 0 };
|
|
96
|
+
const [x1, y1, x2, y2] = [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])];
|
|
97
|
+
return { x: x1, y: y1, width: x2 - x1, height: y2 - y1 };
|
|
98
|
+
}
|
|
99
|
+
function num(value) {
|
|
100
|
+
const n = Number(value);
|
|
101
|
+
return Number.isFinite(n) ? n : 0;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { TestingBotDriver } from './driver.js';
|
|
2
|
+
export type { TestingBotDriverOptions } from './options.js';
|
|
3
|
+
export { AuthenticationError, NoDeviceAvailableError, RestApiError, SessionNotActiveError, TestingBotError, WebDriverError, } from './errors.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC"}
|
package/dist/init.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AppSlot } from './options.js';
|
|
2
|
+
/** Answers collected by `init` (defaults applied when non-interactive). */
|
|
3
|
+
export interface InitAnswers {
|
|
4
|
+
bundleId: string;
|
|
5
|
+
targets: InitTarget[];
|
|
6
|
+
apps: Partial<Record<AppSlot, string>>;
|
|
7
|
+
sessionPerTest: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type InitTarget = 'android-emulator' | 'android-real' | 'ios-simulator' | 'ios-real';
|
|
10
|
+
export declare const DEFAULT_ANSWERS: InitAnswers;
|
|
11
|
+
export declare function renderConfig(answers: InitAnswers): string;
|
|
12
|
+
export declare function renderSampleTest(answers: InitAnswers): string;
|
|
13
|
+
export interface InitIo {
|
|
14
|
+
ask(question: string, fallback: string): Promise<string>;
|
|
15
|
+
log(message: string): void;
|
|
16
|
+
}
|
|
17
|
+
/** Scaffold mobilewright.config.ts + a sample test in `dir`. */
|
|
18
|
+
export declare function runInit(dir: string, io: InitIo, interactive: boolean): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,UAAU,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,WAK7B,CAAC;AASF,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAuBzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAS7D;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,gEAAgE;AAChE,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD1F"}
|
package/dist/init.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
export const DEFAULT_ANSWERS = {
|
|
5
|
+
bundleId: 'com.example.MyApp',
|
|
6
|
+
targets: ['android-emulator'],
|
|
7
|
+
apps: { android: './build/app.apk' },
|
|
8
|
+
sessionPerTest: false,
|
|
9
|
+
};
|
|
10
|
+
const TARGET_PROJECTS = {
|
|
11
|
+
'android-emulator': ` { name: 'android-emulator', use: { platform: 'android', deviceType: 'emulator' } },`,
|
|
12
|
+
'android-real': ` { name: 'android', use: { platform: 'android', deviceType: 'real' } },`,
|
|
13
|
+
'ios-simulator': ` { name: 'ios-simulator', use: { platform: 'ios', deviceType: 'simulator' } },`,
|
|
14
|
+
'ios-real': ` { name: 'ios', use: { platform: 'ios', deviceType: 'real' } },`,
|
|
15
|
+
};
|
|
16
|
+
export function renderConfig(answers) {
|
|
17
|
+
const apps = Object.entries(answers.apps)
|
|
18
|
+
.map(([slot, path]) => ` ${slot.includes('-') ? `'${slot}'` : slot}: '${path}',`)
|
|
19
|
+
.join('\n');
|
|
20
|
+
return `import { defineConfig } from 'mobilewright';
|
|
21
|
+
import { TestingBotDriver } from '@testingbot/mobilewright-driver';
|
|
22
|
+
|
|
23
|
+
export default defineConfig({
|
|
24
|
+
testDir: '.',
|
|
25
|
+
bundleId: '${answers.bundleId}',
|
|
26
|
+
driver: new TestingBotDriver({
|
|
27
|
+
// TestingBot sessions start with the app pre-installed — declare it per
|
|
28
|
+
// platform/device type. Local paths (.apk / .ipa / .zip) upload automatically.
|
|
29
|
+
apps: {
|
|
30
|
+
${apps}
|
|
31
|
+
},${answers.sessionPerTest ? `
|
|
32
|
+
sessionPerTest: true, // one TestingBot session, video, and verdict per test` : ''}
|
|
33
|
+
}),
|
|
34
|
+
projects: [
|
|
35
|
+
${answers.targets.map((t) => TARGET_PROJECTS[t]).join('\n')}
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
export function renderSampleTest(answers) {
|
|
41
|
+
return `import { test, expect } from '@mobilewright/test';
|
|
42
|
+
|
|
43
|
+
test('app launches', async ({ device, screen, bundleId }) => {
|
|
44
|
+
await device.launchApp(bundleId);
|
|
45
|
+
// Adjust to something your app actually shows:
|
|
46
|
+
await expect(screen.getByText('Welcome', { exact: false })).toBeVisible();
|
|
47
|
+
});
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
/** Scaffold mobilewright.config.ts + a sample test in `dir`. */
|
|
51
|
+
export async function runInit(dir, io, interactive) {
|
|
52
|
+
const configPath = join(dir, 'mobilewright.config.ts');
|
|
53
|
+
if (existsSync(configPath)) {
|
|
54
|
+
io.log(`${configPath} already exists — not overwriting. Delete it first to re-run init.`);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
let answers = DEFAULT_ANSWERS;
|
|
58
|
+
if (interactive) {
|
|
59
|
+
const bundleId = await io.ask('App bundle id', DEFAULT_ANSWERS.bundleId);
|
|
60
|
+
const targetsRaw = await io.ask('Targets (comma-separated: android-emulator, android-real, ios-simulator, ios-real)', DEFAULT_ANSWERS.targets.join(','));
|
|
61
|
+
const targets = targetsRaw.split(',').map((t) => t.trim()).filter((t) => t in TARGET_PROJECTS);
|
|
62
|
+
const apps = {};
|
|
63
|
+
if (targets.some((t) => t.startsWith('android'))) {
|
|
64
|
+
apps['android'] = await io.ask('Android app (.apk path)', './build/app.apk');
|
|
65
|
+
}
|
|
66
|
+
if (targets.includes('ios-simulator')) {
|
|
67
|
+
apps['ios-simulator'] = await io.ask('iOS simulator build (.zip/.app path)', './build/app-sim.zip');
|
|
68
|
+
}
|
|
69
|
+
if (targets.includes('ios-real')) {
|
|
70
|
+
apps['ios-real'] = await io.ask('iOS device build (test-signed .ipa path)', './build/app.ipa');
|
|
71
|
+
}
|
|
72
|
+
const perTest = await io.ask('One TestingBot session per test? (y/N)', 'n');
|
|
73
|
+
answers = {
|
|
74
|
+
bundleId,
|
|
75
|
+
targets: targets.length ? targets : DEFAULT_ANSWERS.targets,
|
|
76
|
+
apps: Object.keys(apps).length ? apps : DEFAULT_ANSWERS.apps,
|
|
77
|
+
sessionPerTest: /^y/i.test(perTest),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
await writeFile(configPath, renderConfig(answers));
|
|
81
|
+
io.log(`Wrote ${configPath}`);
|
|
82
|
+
const testPath = join(dir, 'app.test.ts');
|
|
83
|
+
if (!existsSync(testPath)) {
|
|
84
|
+
await writeFile(testPath, renderSampleTest(answers));
|
|
85
|
+
io.log(`Wrote ${testPath}`);
|
|
86
|
+
}
|
|
87
|
+
const missing = await missingDependencies(dir);
|
|
88
|
+
io.log('');
|
|
89
|
+
io.log('Next steps:');
|
|
90
|
+
if (missing.length) {
|
|
91
|
+
io.log(` npm install --save-dev ${missing.join(' ')}`);
|
|
92
|
+
}
|
|
93
|
+
io.log(' export TESTINGBOT_KEY=... # https://testingbot.com/members/user/edit');
|
|
94
|
+
io.log(' export TESTINGBOT_SECRET=...');
|
|
95
|
+
io.log(' npx mobilewright test');
|
|
96
|
+
}
|
|
97
|
+
async function missingDependencies(dir) {
|
|
98
|
+
const wanted = ['mobilewright', '@mobilewright/test', '@testingbot/mobilewright-driver'];
|
|
99
|
+
try {
|
|
100
|
+
const pkg = JSON.parse(await readFile(join(dir, 'package.json'), 'utf-8'));
|
|
101
|
+
const present = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
102
|
+
return wanted.filter((name) => !present[name]);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return wanted;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WebDriverClient } from './webdriver-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pings live sessions so TestingBot's idle reaper doesn't kill pooled slots:
|
|
4
|
+
* a slot idles between allocate() and the first worker command, and between
|
|
5
|
+
* tests when the pool re-grants it. Pings hit the hub (not the rate-limited
|
|
6
|
+
* REST API) via a cheap read-only command.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Keepalive {
|
|
9
|
+
private readonly client;
|
|
10
|
+
private readonly timers;
|
|
11
|
+
constructor(client: WebDriverClient);
|
|
12
|
+
start(sessionId: string): void;
|
|
13
|
+
stop(sessionId: string): void;
|
|
14
|
+
stopAll(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=keepalive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keepalive.d.ts","sourceRoot":"","sources":["../src/keepalive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAEhD,MAAM,EAAE,eAAe;IAInC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA2B9B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS7B,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import createDebug from 'debug';
|
|
2
|
+
import { WebDriverError } from './errors.js';
|
|
3
|
+
const debug = createDebug('testingbot:keepalive');
|
|
4
|
+
const PING_INTERVAL_MS = 45_000;
|
|
5
|
+
const MAX_CONSECUTIVE_FAILURES = 3;
|
|
6
|
+
/**
|
|
7
|
+
* Pings live sessions so TestingBot's idle reaper doesn't kill pooled slots:
|
|
8
|
+
* a slot idles between allocate() and the first worker command, and between
|
|
9
|
+
* tests when the pool re-grants it. Pings hit the hub (not the rate-limited
|
|
10
|
+
* REST API) via a cheap read-only command.
|
|
11
|
+
*/
|
|
12
|
+
export class Keepalive {
|
|
13
|
+
client;
|
|
14
|
+
timers = new Map();
|
|
15
|
+
constructor(client) {
|
|
16
|
+
this.client = client;
|
|
17
|
+
}
|
|
18
|
+
start(sessionId) {
|
|
19
|
+
if (this.timers.has(sessionId))
|
|
20
|
+
return;
|
|
21
|
+
let failures = 0;
|
|
22
|
+
const timer = setInterval(() => {
|
|
23
|
+
this.client.get(sessionId, '/orientation', { timeout: 15_000 }).then(() => { failures = 0; }, (err) => {
|
|
24
|
+
// Stop immediately when the session is definitively gone; tolerate
|
|
25
|
+
// transient failures (timeouts, network blips) so one hiccup does
|
|
26
|
+
// not leave a live session unprotected from the idle reaper.
|
|
27
|
+
const gone = err instanceof WebDriverError && (err.httpStatus === 404 || err.error === 'invalid session id');
|
|
28
|
+
failures += 1;
|
|
29
|
+
const reason = err instanceof Error ? err.message.split('\n')[0] : String(err);
|
|
30
|
+
if (gone || failures >= MAX_CONSECUTIVE_FAILURES) {
|
|
31
|
+
debug('ping failed for %s (%s), stopping keepalive: %s', sessionId, gone ? 'session gone' : 'repeated failures', reason);
|
|
32
|
+
this.stop(sessionId);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
debug('transient ping failure %d/%d for %s: %s', failures, MAX_CONSECUTIVE_FAILURES, sessionId, reason);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}, PING_INTERVAL_MS);
|
|
39
|
+
timer.unref?.();
|
|
40
|
+
this.timers.set(sessionId, timer);
|
|
41
|
+
debug('started for %s', sessionId);
|
|
42
|
+
}
|
|
43
|
+
stop(sessionId) {
|
|
44
|
+
const timer = this.timers.get(sessionId);
|
|
45
|
+
if (timer) {
|
|
46
|
+
clearInterval(timer);
|
|
47
|
+
this.timers.delete(sessionId);
|
|
48
|
+
debug('stopped for %s', sessionId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
stopAll() {
|
|
52
|
+
for (const sessionId of [...this.timers.keys()])
|
|
53
|
+
this.stop(sessionId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=keepalive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keepalive.js","sourceRoot":"","sources":["../src/keepalive.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,KAAK,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAElD,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IACH,MAAM,CAAkB;IACxB,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE5D,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAClE,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EACvB,CAAC,GAAG,EAAE,EAAE;gBACN,mEAAmE;gBACnE,kEAAkE;gBAClE,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,GAAG,YAAY,cAAc,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAC;gBAC7G,QAAQ,IAAI,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/E,IAAI,IAAI,IAAI,QAAQ,IAAI,wBAAwB,EAAE,CAAC;oBACjD,KAAK,CAAC,iDAAiD,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;oBACzH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,yCAAyC,EAAE,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1G,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACrB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9B,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF"}
|
package/dist/keys.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key-chord handling for pressKeys()/clearText(). Chords look like
|
|
3
|
+
* "ctrl+a", "backspace", "meta+shift+z".
|
|
4
|
+
*
|
|
5
|
+
* Android: translated to `mobile: pressKey` keycodes + metastate.
|
|
6
|
+
* iOS: translated to W3C key action sequences with WebDriver unicode keys.
|
|
7
|
+
*/
|
|
8
|
+
export interface Chord {
|
|
9
|
+
modifiers: string[];
|
|
10
|
+
key: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseChord(chord: string): Chord;
|
|
13
|
+
export interface AndroidKeyPress {
|
|
14
|
+
keycode: number;
|
|
15
|
+
metastate?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function toAndroidKeyPress(chord: Chord): AndroidKeyPress;
|
|
18
|
+
type W3CAction = Record<string, unknown>;
|
|
19
|
+
/** Build one W3C key-input source pressing the given chords in order. */
|
|
20
|
+
export declare function toW3CKeyActions(chords: Chord[]): {
|
|
21
|
+
type: 'key';
|
|
22
|
+
id: string;
|
|
23
|
+
actions: W3CAction[];
|
|
24
|
+
}[];
|
|
25
|
+
/** Type plain text as a W3C key-input source (per-character down/up). */
|
|
26
|
+
export declare function typeTextActions(text: string): {
|
|
27
|
+
type: 'key';
|
|
28
|
+
id: string;
|
|
29
|
+
actions: W3CAction[];
|
|
30
|
+
}[];
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAM/C;AAwCD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAiB/D;AAoBD,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,EAAE,CAiBpG;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,EAAE,CAMjG"}
|