appium-ios-remotexpc 5.14.7 → 5.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/src/index.d.ts +9 -0
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +5 -0
- package/build/src/index.js.map +1 -1
- package/build/src/services/ios/accessibility-audit/ax-deserialize.d.ts +13 -0
- package/build/src/services/ios/accessibility-audit/ax-deserialize.d.ts.map +1 -0
- package/build/src/services/ios/accessibility-audit/ax-deserialize.js +45 -0
- package/build/src/services/ios/accessibility-audit/ax-deserialize.js.map +1 -0
- package/build/src/services/ios/accessibility-audit/ax-element.d.ts +72 -0
- package/build/src/services/ios/accessibility-audit/ax-element.d.ts.map +1 -0
- package/build/src/services/ios/accessibility-audit/ax-element.js +114 -0
- package/build/src/services/ios/accessibility-audit/ax-element.js.map +1 -0
- package/build/src/services/ios/accessibility-audit/ax-values.d.ts +25 -0
- package/build/src/services/ios/accessibility-audit/ax-values.d.ts.map +1 -0
- package/build/src/services/ios/accessibility-audit/ax-values.js +47 -0
- package/build/src/services/ios/accessibility-audit/ax-values.js.map +1 -0
- package/build/src/services/ios/accessibility-audit/dtx-transport.d.ts +122 -0
- package/build/src/services/ios/accessibility-audit/dtx-transport.d.ts.map +1 -0
- package/build/src/services/ios/accessibility-audit/dtx-transport.js +593 -0
- package/build/src/services/ios/accessibility-audit/dtx-transport.js.map +1 -0
- package/build/src/services/ios/accessibility-audit/index.d.ts +173 -0
- package/build/src/services/ios/accessibility-audit/index.d.ts.map +1 -0
- package/build/src/services/ios/accessibility-audit/index.js +306 -0
- package/build/src/services/ios/accessibility-audit/index.js.map +1 -0
- package/build/src/services.d.ts +7 -0
- package/build/src/services.d.ts.map +1 -1
- package/build/src/services.js +10 -0
- package/build/src/services.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +19 -0
- package/src/services/ios/accessibility-audit/ax-deserialize.ts +53 -0
- package/src/services/ios/accessibility-audit/ax-element.ts +183 -0
- package/src/services/ios/accessibility-audit/ax-values.ts +46 -0
- package/src/services/ios/accessibility-audit/dtx-transport.ts +646 -0
- package/src/services/ios/accessibility-audit/index.ts +400 -0
- package/src/services.ts +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [5.15.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.14.7...v5.15.0) (2026-08-21)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **accessibility:** add AccessibilityAuditService for on-device audits and element inspection ([#293](https://github.com/appium/appium-ios-remotexpc/issues/293)) ([4b89ca2](https://github.com/appium/appium-ios-remotexpc/commit/4b89ca223b559a3977becb3babe87d0fdfc95dff))
|
|
6
|
+
|
|
1
7
|
## [5.14.7](https://github.com/appium/appium-ios-remotexpc/compare/v5.14.6...v5.14.7) (2026-08-21)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/build/src/index.d.ts
CHANGED
|
@@ -26,6 +26,15 @@ export type { CoreDeviceInvokeOptions } from './services/ios/core-device/core-de
|
|
|
26
26
|
export { AppService } from './services/ios/app-service/index.js';
|
|
27
27
|
export type { AppServiceProcessToken, InstalledApp, LaunchApplicationOptions, LaunchedApplication, ListAppsOptions, } from './services/ios/app-service/index.js';
|
|
28
28
|
export { PasteboardService } from './services/ios/pasteboard/index.js';
|
|
29
|
+
export { AccessibilityAuditService } from './services/ios/accessibility-audit/index.js';
|
|
30
|
+
export type { AxDeviceSetting } from './services/ios/accessibility-audit/index.js';
|
|
31
|
+
export { AxAuditDtxTransport } from './services/ios/accessibility-audit/dtx-transport.js';
|
|
32
|
+
export type { InvokeOptions as AxInvokeOptions } from './services/ios/accessibility-audit/dtx-transport.js';
|
|
33
|
+
export { AX_OBJECT_TYPE, deserializeAxObject } from './services/ios/accessibility-audit/ax-deserialize.js';
|
|
34
|
+
export { AxPoint } from './services/ios/accessibility-audit/ax-values.js';
|
|
35
|
+
export { serializeAxAttribute, serializeAxElement, toAxElement, toInspectedElement, } from './services/ios/accessibility-audit/ax-element.js';
|
|
36
|
+
export type { AxElement, AxElementAttribute, AxInspectedElement, AxInspectorSection, } from './services/ios/accessibility-audit/ax-element.js';
|
|
37
|
+
export type { InspectOptions, RunAuditOptions, AxAuditIssue } from './services/ios/accessibility-audit/index.js';
|
|
29
38
|
export { CoreDeviceInfoService } from './services/ios/device-info/index.js';
|
|
30
39
|
export type { CoreDeviceAttributes, CoreDeviceDisplayInfo, CoreDeviceLockState, } from './services/ios/device-info/index.js';
|
|
31
40
|
export { DeviceControlService } from './services/ios/device-control/index.js';
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.js
CHANGED
|
@@ -12,6 +12,11 @@ export { HID_BUTTON_STATE_CANCELED, HID_BUTTON_STATE_DOWN, HID_BUTTON_STATE_UP,
|
|
|
12
12
|
export { CoreDeviceError, CoreDeviceService } from './services/ios/core-device/core-device-service.js';
|
|
13
13
|
export { AppService } from './services/ios/app-service/index.js';
|
|
14
14
|
export { PasteboardService } from './services/ios/pasteboard/index.js';
|
|
15
|
+
export { AccessibilityAuditService } from './services/ios/accessibility-audit/index.js';
|
|
16
|
+
export { AxAuditDtxTransport } from './services/ios/accessibility-audit/dtx-transport.js';
|
|
17
|
+
export { AX_OBJECT_TYPE, deserializeAxObject } from './services/ios/accessibility-audit/ax-deserialize.js';
|
|
18
|
+
export { AxPoint } from './services/ios/accessibility-audit/ax-values.js';
|
|
19
|
+
export { serializeAxAttribute, serializeAxElement, toAxElement, toInspectedElement, } from './services/ios/accessibility-audit/ax-element.js';
|
|
15
20
|
export { CoreDeviceInfoService } from './services/ios/device-info/index.js';
|
|
16
21
|
export { DeviceControlService } from './services/ios/device-control/index.js';
|
|
17
22
|
export { ConfigurationService } from './services/ios/configuration/index.js';
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Key under which a typed (non-passthrough) object records its `ObjectType`. */
|
|
2
|
+
export declare const AX_OBJECT_TYPE = "__axObjectType";
|
|
3
|
+
/** A decoded typed object: its fields plus the {@link AX_OBJECT_TYPE} tag. */
|
|
4
|
+
export type AxTypedObject = Record<string, unknown> & {
|
|
5
|
+
[AX_OBJECT_TYPE]: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Recursively unwraps the daemon's serialized-object envelopes.
|
|
9
|
+
*
|
|
10
|
+
* @param value A value decoded from an NSKeyedArchiver reply.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deserializeAxObject(value: unknown): unknown;
|
|
13
|
+
//# sourceMappingURL=ax-deserialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-deserialize.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-deserialize.ts"],"names":[],"mappings":"AAQA,iFAAiF;AACjF,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAC,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAUjF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAyB3D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The accessibility audit daemon wraps every value it returns in a recursive
|
|
3
|
+
* `{Value, ObjectType}` envelope. `ObjectType: "passthrough"` is a plain boxed
|
|
4
|
+
* value; any other `ObjectType` names a typed object (e.g.
|
|
5
|
+
* `AXAuditDeviceSetting_v1`) whose `Value` is a dictionary of fields.
|
|
6
|
+
*/
|
|
7
|
+
import { util } from '@appium/support';
|
|
8
|
+
/** Key under which a typed (non-passthrough) object records its `ObjectType`. */
|
|
9
|
+
export const AX_OBJECT_TYPE = '__axObjectType';
|
|
10
|
+
function isEnvelope(value) {
|
|
11
|
+
return (util.isPlainObject(value) &&
|
|
12
|
+
'ObjectType' in value &&
|
|
13
|
+
typeof value.ObjectType === 'string');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Recursively unwraps the daemon's serialized-object envelopes.
|
|
17
|
+
*
|
|
18
|
+
* @param value A value decoded from an NSKeyedArchiver reply.
|
|
19
|
+
*/
|
|
20
|
+
export function deserializeAxObject(value) {
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
return value.map(deserializeAxObject);
|
|
23
|
+
}
|
|
24
|
+
if (!isEnvelope(value)) {
|
|
25
|
+
if (util.isPlainObject(value)) {
|
|
26
|
+
// A plain dictionary with no ObjectType: deserialize each field.
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const [key, inner] of Object.entries(value)) {
|
|
29
|
+
out[key] = deserializeAxObject(inner);
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
const inner = deserializeAxObject(value.Value);
|
|
36
|
+
if (value.ObjectType === 'passthrough') {
|
|
37
|
+
return inner;
|
|
38
|
+
}
|
|
39
|
+
// A typed object. Spread its fields (when it has them) and tag the type.
|
|
40
|
+
if (util.isPlainObject(inner)) {
|
|
41
|
+
return { ...inner, [AX_OBJECT_TYPE]: value.ObjectType };
|
|
42
|
+
}
|
|
43
|
+
return { value: inner, [AX_OBJECT_TYPE]: value.ObjectType };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ax-deserialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-deserialize.js","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-deserialize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAK/C,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QACzB,YAAY,IAAI,KAAK;QACrB,OAAQ,KAA+B,CAAC,UAAU,KAAK,QAAQ,CAChE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,iEAAiE;YACjE,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yEAAyE;IACzE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAC,GAAI,KAAiC,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A handle to one element in the device's accessibility tree.
|
|
3
|
+
*
|
|
4
|
+
* `platformElement` is the daemon's opaque 20-byte identifier and is what makes
|
|
5
|
+
* the handle usable in later calls — it has to be sent back verbatim.
|
|
6
|
+
*/
|
|
7
|
+
export interface AxElement {
|
|
8
|
+
/** The daemon's opaque element identifier. */
|
|
9
|
+
platformElement: Buffer;
|
|
10
|
+
/** The element's `accessibilityIdentifier`, when it has one. */
|
|
11
|
+
accessibilityIdentifier?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* One attribute the daemon exposes for an element, e.g. `Label` or `Traits`.
|
|
15
|
+
*
|
|
16
|
+
* These are descriptors only — they carry no value. Reading a value takes a
|
|
17
|
+
* second call (`deviceElement:valueForAttribute:`) passing the element and the
|
|
18
|
+
* descriptor back, which is exactly what Xcode's Inspector does to fill each row
|
|
19
|
+
* of its panel.
|
|
20
|
+
*/
|
|
21
|
+
export interface AxElementAttribute {
|
|
22
|
+
/** Wire name, e.g. `TraitsHumanReadable`. Pass this back to read a value. */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Display name, e.g. `Traits`. */
|
|
25
|
+
humanReadableName: string;
|
|
26
|
+
/** Whether the value can be written back. */
|
|
27
|
+
settable: boolean;
|
|
28
|
+
/** Whether reading it performs an action rather than returning data. */
|
|
29
|
+
performsAction: boolean;
|
|
30
|
+
/** Whether the daemon considers this internal/debug-only. */
|
|
31
|
+
isInternal: boolean;
|
|
32
|
+
/** The daemon's value-type discriminator. */
|
|
33
|
+
valueType?: number;
|
|
34
|
+
/** The raw descriptor, needed verbatim when asking for the value. */
|
|
35
|
+
raw: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
/** A titled group of attributes — `Basic`, `Actions`, `Element`, `Hierarchy`. */
|
|
38
|
+
export interface AxInspectorSection {
|
|
39
|
+
/** Stable identifier, e.g. `Basic_v1`. */
|
|
40
|
+
identifier: string;
|
|
41
|
+
/** Display title, e.g. `Basic`. */
|
|
42
|
+
title: string;
|
|
43
|
+
/** The attributes in this section. */
|
|
44
|
+
attributes: AxElementAttribute[];
|
|
45
|
+
}
|
|
46
|
+
/** The inspector panel the device pushes when the focused element changes. */
|
|
47
|
+
export interface AxInspectedElement {
|
|
48
|
+
/** What VoiceOver would announce, when the daemon provides it. */
|
|
49
|
+
spokenDescription?: string;
|
|
50
|
+
/** The caption shown above the panel, when present. */
|
|
51
|
+
caption?: string;
|
|
52
|
+
/** The panel's sections, in the order the device sent them. */
|
|
53
|
+
sections: AxInspectorSection[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parses a deserialized `AXAuditElement_v1`.
|
|
57
|
+
*
|
|
58
|
+
* The `_v1` suffixes are the daemon's own wire keys, not our assumption. A
|
|
59
|
+
* future shape would carry different keys, so this returns `undefined` rather
|
|
60
|
+
* than misreading one.
|
|
61
|
+
*/
|
|
62
|
+
export declare function toAxElement(value: unknown): AxElement | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Rebuilds the serialized form the daemon expects when an element is passed
|
|
65
|
+
* back, matching what Xcode's Inspector sends.
|
|
66
|
+
*/
|
|
67
|
+
export declare function serializeAxElement(element: AxElement): Record<string, unknown>;
|
|
68
|
+
/** Rebuilds an attribute descriptor for the wire. */
|
|
69
|
+
export declare function serializeAxAttribute(attribute: AxElementAttribute): Record<string, unknown>;
|
|
70
|
+
/** Parses the payload of an inbound `hostInspectorCurrentElementChanged:`. */
|
|
71
|
+
export declare function toInspectedElement(value: unknown): AxInspectedElement;
|
|
72
|
+
//# sourceMappingURL=ax-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-element.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-element.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAiBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAkBjE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW9E;AA2BD,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ3F;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAwBrE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { util } from '@appium/support';
|
|
2
|
+
import { AX_OBJECT_TYPE } from './ax-deserialize.js';
|
|
3
|
+
/** Recovers a `Buffer` from a decoded `NS.data` blob. */
|
|
4
|
+
function toBuffer(value) {
|
|
5
|
+
if (Buffer.isBuffer(value)) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
if (util.isPlainObject(value)) {
|
|
9
|
+
// The archiver decodes NSData into an index-keyed object.
|
|
10
|
+
const bytes = Object.values(value).filter((b) => typeof b === 'number');
|
|
11
|
+
if (bytes.length > 0) {
|
|
12
|
+
return Buffer.from(bytes);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parses a deserialized `AXAuditElement_v1`.
|
|
19
|
+
*
|
|
20
|
+
* The `_v1` suffixes are the daemon's own wire keys, not our assumption. A
|
|
21
|
+
* future shape would carry different keys, so this returns `undefined` rather
|
|
22
|
+
* than misreading one.
|
|
23
|
+
*/
|
|
24
|
+
export function toAxElement(value) {
|
|
25
|
+
if (!util.isPlainObject(value)) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const fields = value;
|
|
29
|
+
const platformValue = fields.PlatformElementValue_v1;
|
|
30
|
+
const container = util.isPlainObject(platformValue)
|
|
31
|
+
? (platformValue['NS.data'] ?? platformValue)
|
|
32
|
+
: undefined;
|
|
33
|
+
const platformElement = toBuffer(container);
|
|
34
|
+
if (!platformElement) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
platformElement,
|
|
39
|
+
accessibilityIdentifier: typeof fields.AccessibilityIdentifier_v1 === 'string' ? fields.AccessibilityIdentifier_v1 : undefined,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Rebuilds the serialized form the daemon expects when an element is passed
|
|
44
|
+
* back, matching what Xcode's Inspector sends.
|
|
45
|
+
*/
|
|
46
|
+
export function serializeAxElement(element) {
|
|
47
|
+
const value = {
|
|
48
|
+
PlatformElementValue_v1: { ObjectType: 'passthrough', Value: element.platformElement },
|
|
49
|
+
};
|
|
50
|
+
if (element.accessibilityIdentifier !== undefined) {
|
|
51
|
+
value.AccessibilityIdentifier_v1 = { ObjectType: 'passthrough', Value: element.accessibilityIdentifier };
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
ObjectType: 'AXAuditElement_v1',
|
|
55
|
+
Value: { ObjectType: 'passthrough', Value: value },
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function toAttribute(value) {
|
|
59
|
+
if (!util.isPlainObject(value)) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const fields = value;
|
|
63
|
+
const name = fields.AttributeNameValue_v1;
|
|
64
|
+
if (typeof name !== 'string') {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
name,
|
|
69
|
+
humanReadableName: typeof fields.HumanReadableNameValue_v1 === 'string' ? fields.HumanReadableNameValue_v1 : name,
|
|
70
|
+
settable: fields.SettableValue_v1 === true,
|
|
71
|
+
performsAction: fields.PerformsActionValue_v1 === true,
|
|
72
|
+
isInternal: fields.IsInternal_v1 === true,
|
|
73
|
+
valueType: typeof fields.ValueTypeValue_v1 === 'number' ? fields.ValueTypeValue_v1 : undefined,
|
|
74
|
+
raw: stripTag(fields),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Drops the decoder's type tag so the object round-trips as the daemon sent it. */
|
|
78
|
+
function stripTag(fields) {
|
|
79
|
+
return Object.fromEntries(Object.entries(fields).filter(([key]) => key !== AX_OBJECT_TYPE));
|
|
80
|
+
}
|
|
81
|
+
/** Rebuilds an attribute descriptor for the wire. */
|
|
82
|
+
export function serializeAxAttribute(attribute) {
|
|
83
|
+
const value = Object.fromEntries(Object.entries(attribute.raw).map(([key, inner]) => [key, { ObjectType: 'passthrough', Value: inner }]));
|
|
84
|
+
return {
|
|
85
|
+
ObjectType: 'AXAuditElementAttribute_v1',
|
|
86
|
+
Value: { ObjectType: 'passthrough', Value: value },
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** Parses the payload of an inbound `hostInspectorCurrentElementChanged:`. */
|
|
90
|
+
export function toInspectedElement(value) {
|
|
91
|
+
const fields = (util.isPlainObject(value) ? value : {});
|
|
92
|
+
const rawSections = Array.isArray(fields.InspectorSectionsValue_v1) ? fields.InspectorSectionsValue_v1 : [];
|
|
93
|
+
const sections = [];
|
|
94
|
+
for (const rawSection of rawSections) {
|
|
95
|
+
if (!util.isPlainObject(rawSection)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const section = rawSection;
|
|
99
|
+
const rawAttributes = Array.isArray(section.ElementAttributesValue_v1) ? section.ElementAttributesValue_v1 : [];
|
|
100
|
+
sections.push({
|
|
101
|
+
identifier: typeof section.IdentifierValue_v1 === 'string' ? section.IdentifierValue_v1 : '',
|
|
102
|
+
title: typeof section.TitleValue_v1 === 'string' ? section.TitleValue_v1 : '',
|
|
103
|
+
attributes: rawAttributes
|
|
104
|
+
.map(toAttribute)
|
|
105
|
+
.filter((attribute) => attribute !== undefined),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
spokenDescription: typeof fields.SpokenDescriptionValue_v1 === 'string' ? fields.SpokenDescriptionValue_v1 : undefined,
|
|
110
|
+
caption: typeof fields.CaptionTextValue_v1 === 'string' ? fields.CaptionTextValue_v1 : undefined,
|
|
111
|
+
sections,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=ax-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-element.js","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A point passed to the accessibility daemon, in normalized device coordinates
|
|
3
|
+
* (`0..1` across the screen's width and height).
|
|
4
|
+
*
|
|
5
|
+
* Carried as its own type because the daemon calls `CGPointValue` on the
|
|
6
|
+
* argument, so it has to arrive as an `NSValue` wrapping a `CGPoint` — an
|
|
7
|
+
* archived array, dictionary or bare double is rejected. Verified live on
|
|
8
|
+
* iOS 27.0: a double yields "Cannot get value with size 16. The type encoded as
|
|
9
|
+
* d is expected to be 8 bytes", and a dictionary yields
|
|
10
|
+
* "-[__NSDictionaryI CGPointValue]: unrecognized selector".
|
|
11
|
+
*/
|
|
12
|
+
export declare class AxPoint {
|
|
13
|
+
readonly x: number;
|
|
14
|
+
readonly y: number;
|
|
15
|
+
constructor(x: number, y: number);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds the NSKeyedArchiver graph for an `NSValue` holding a `CGPoint`.
|
|
19
|
+
*
|
|
20
|
+
* `NS.special` discriminates the wrapped struct — 1 for a point. The device's
|
|
21
|
+
* own replies use 3 for rects (seen on `ElementRectValue_v1`), which is what
|
|
22
|
+
* corroborates the numbering.
|
|
23
|
+
*/
|
|
24
|
+
export declare function archiveAxPoint(point: AxPoint): Record<string, unknown>;
|
|
25
|
+
//# sourceMappingURL=ax-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-values.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-values.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,qBAAa,OAAO;IAEhB,QAAQ,CAAC,CAAC,EAAE,MAAM;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM;gBADT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM;CAErB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBtE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { PlistUID } from '../../../lib/plist/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A point passed to the accessibility daemon, in normalized device coordinates
|
|
4
|
+
* (`0..1` across the screen's width and height).
|
|
5
|
+
*
|
|
6
|
+
* Carried as its own type because the daemon calls `CGPointValue` on the
|
|
7
|
+
* argument, so it has to arrive as an `NSValue` wrapping a `CGPoint` — an
|
|
8
|
+
* archived array, dictionary or bare double is rejected. Verified live on
|
|
9
|
+
* iOS 27.0: a double yields "Cannot get value with size 16. The type encoded as
|
|
10
|
+
* d is expected to be 8 bytes", and a dictionary yields
|
|
11
|
+
* "-[__NSDictionaryI CGPointValue]: unrecognized selector".
|
|
12
|
+
*/
|
|
13
|
+
export class AxPoint {
|
|
14
|
+
x;
|
|
15
|
+
y;
|
|
16
|
+
constructor(x, y) {
|
|
17
|
+
this.x = x;
|
|
18
|
+
this.y = y;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Builds the NSKeyedArchiver graph for an `NSValue` holding a `CGPoint`.
|
|
23
|
+
*
|
|
24
|
+
* `NS.special` discriminates the wrapped struct — 1 for a point. The device's
|
|
25
|
+
* own replies use 3 for rects (seen on `ElementRectValue_v1`), which is what
|
|
26
|
+
* corroborates the numbering.
|
|
27
|
+
*/
|
|
28
|
+
export function archiveAxPoint(point) {
|
|
29
|
+
return {
|
|
30
|
+
$version: 100000,
|
|
31
|
+
$archiver: 'NSKeyedArchiver',
|
|
32
|
+
$top: { root: new PlistUID(1) },
|
|
33
|
+
$objects: [
|
|
34
|
+
'$null',
|
|
35
|
+
{
|
|
36
|
+
'NS.special': 1,
|
|
37
|
+
'NS.pointval': `{${point.x}, ${point.y}}`,
|
|
38
|
+
$class: new PlistUID(2),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
$classes: ['NSValue', 'NSObject'],
|
|
42
|
+
$classname: 'NSValue',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ax-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ax-values.js","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/ax-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,OAAO;IAEP;IACA;IAFX,YACW,CAAS,EACT,CAAS;QADT,MAAC,GAAD,CAAC,CAAQ;QACT,MAAC,GAAD,CAAC,CAAQ;IACjB,CAAC;CACL;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,iBAAiB;QAC5B,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAC;QAC7B,QAAQ,EAAE;YACR,OAAO;YACP;gBACE,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG;gBACzC,MAAM,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC;aACxB;YACD;gBACE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;gBACjC,UAAU,EAAE,SAAS;aACtB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { BaseService } from '../base-service.js';
|
|
2
|
+
import { MessageAux } from '../dvt/dtx-message.js';
|
|
3
|
+
/** Options for {@link AxAuditDtxTransport.invoke}. */
|
|
4
|
+
export interface InvokeOptions {
|
|
5
|
+
/** How long to wait for the reply, in milliseconds. Defaults to 15000. */
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* DTX transport for the accessibility audit daemon
|
|
10
|
+
* (`com.apple.accessibility.axAuditDaemon.remoteserver.shim.remote`).
|
|
11
|
+
*
|
|
12
|
+
* This service is a DTX endpoint like the DVT instruments hub, but its RSD shim
|
|
13
|
+
* needs a different opening than {@link DVTSecureSocketProxyService}: a single
|
|
14
|
+
* `RSDCheckin` is answered by **two** framed plists — `{RSDCheckin}` then
|
|
15
|
+
* `{StartService}` — and only then does the raw DTX stream begin. Consuming both
|
|
16
|
+
* is the whole difference; reading just one leaves the second plist's bytes in
|
|
17
|
+
* front of the DTX stream and every later frame misparses. This was verified by
|
|
18
|
+
* packet-capturing Xcode's own Accessibility Inspector session.
|
|
19
|
+
*
|
|
20
|
+
* The exchange is also bidirectional: the device sends its own
|
|
21
|
+
* `_notifyOfPublishedCapabilities:` and a `hostApiVersion` request (neither must
|
|
22
|
+
* be answered for the read calls to work, verified live), and it delivers some
|
|
23
|
+
* results as calls back to the host rather than as replies — e.g. an audit's
|
|
24
|
+
* issues. Inbound calls are routed to {@link waitForInbound} waiters by selector
|
|
25
|
+
* and otherwise dropped.
|
|
26
|
+
*
|
|
27
|
+
* Reuses the DTX primitives from `../dvt/` unchanged — frame headers, the
|
|
28
|
+
* auxiliary `DTXPrimitiveArray` encoding, fragment reassembly, and
|
|
29
|
+
* NSKeyedArchiver coding — so this only owns the connection lifecycle and the
|
|
30
|
+
* request/reply dispatch.
|
|
31
|
+
*/
|
|
32
|
+
export declare class AxAuditDtxTransport extends BaseService {
|
|
33
|
+
static readonly RSD_SERVICE_NAME = "com.apple.accessibility.axAuditDaemon.remoteserver.shim.remote";
|
|
34
|
+
private socket;
|
|
35
|
+
private readBuffer;
|
|
36
|
+
private readWaiter;
|
|
37
|
+
private closed;
|
|
38
|
+
private closeError;
|
|
39
|
+
private nextMessageId;
|
|
40
|
+
private readonly fragmenters;
|
|
41
|
+
private readonly pendingReplies;
|
|
42
|
+
private readonly inboundWaiters;
|
|
43
|
+
private readonly inboundListeners;
|
|
44
|
+
private constructor();
|
|
45
|
+
/**
|
|
46
|
+
* Connects to the daemon, performs the checkin + StartService handshake,
|
|
47
|
+
* reaches the DTX phase, and publishes host capabilities.
|
|
48
|
+
*
|
|
49
|
+
* @param udid Target device UDID.
|
|
50
|
+
*/
|
|
51
|
+
static connect(udid: string): Promise<AxAuditDtxTransport>;
|
|
52
|
+
private open;
|
|
53
|
+
private onData;
|
|
54
|
+
private onClose;
|
|
55
|
+
/** Waits until at least `length` bytes are buffered, then returns them without consuming. */
|
|
56
|
+
private peek;
|
|
57
|
+
/** Reads and consumes exactly `length` bytes. */
|
|
58
|
+
private readExact;
|
|
59
|
+
private write;
|
|
60
|
+
/**
|
|
61
|
+
* Sends `RSDCheckin` and consumes every framed plist the daemon returns until
|
|
62
|
+
* the DTX stream begins. On iOS 27 that is `{RSDCheckin}` then `{StartService}`.
|
|
63
|
+
*/
|
|
64
|
+
private performCheckin;
|
|
65
|
+
/**
|
|
66
|
+
* Reassembles one complete DTX message from the socket, handling multi-fragment
|
|
67
|
+
* messages the same way {@link DVTSecureSocketProxyService} does.
|
|
68
|
+
*/
|
|
69
|
+
private recvMessage;
|
|
70
|
+
/**
|
|
71
|
+
* Splits a reassembled payload into its object (the return value on a reply,
|
|
72
|
+
* or the selector on an inbound call) and its decoded auxiliary arguments.
|
|
73
|
+
*/
|
|
74
|
+
private decodePayload;
|
|
75
|
+
/**
|
|
76
|
+
* The single read loop; dispatches replies to callers and inbound calls to
|
|
77
|
+
* waiters. It runs until {@link recvMessage} throws, which happens when the
|
|
78
|
+
* socket closes — that is the only exit.
|
|
79
|
+
*/
|
|
80
|
+
private readLoop;
|
|
81
|
+
/** Routes one decoded message to its reply promise, listeners, or waiters. */
|
|
82
|
+
private dispatch;
|
|
83
|
+
/**
|
|
84
|
+
* Subscribes to every inbound call with the given selector.
|
|
85
|
+
*
|
|
86
|
+
* Unlike {@link waitForInbound}, which resolves once, this stays registered —
|
|
87
|
+
* the device streams some results as a sequence of calls (an audit reports each
|
|
88
|
+
* issue via its own `hostFoundAuditIssue:`).
|
|
89
|
+
*
|
|
90
|
+
* @param selector The inbound selector to listen for.
|
|
91
|
+
* @param listener Receives the call's decoded arguments.
|
|
92
|
+
* @returns A function that removes the listener.
|
|
93
|
+
*/
|
|
94
|
+
onInbound(selector: string, listener: (args: unknown[]) => void): () => void;
|
|
95
|
+
/**
|
|
96
|
+
* Resolves with the arguments of the next inbound call whose selector matches.
|
|
97
|
+
*
|
|
98
|
+
* The device delivers some results as calls back to the host rather than as
|
|
99
|
+
* replies — e.g. an audit's issues arrive as
|
|
100
|
+
* `hostDeviceDidCompleteAuditCategoriesWithAuditIssues:`.
|
|
101
|
+
*
|
|
102
|
+
* @param selector The inbound selector to wait for.
|
|
103
|
+
* @param timeoutMs How long to wait before rejecting. Defaults to 60000.
|
|
104
|
+
*/
|
|
105
|
+
waitForInbound(selector: string, timeoutMs?: number): Promise<unknown[]>;
|
|
106
|
+
private buildFrame;
|
|
107
|
+
/** Publishes host capabilities and starts the read loop, matching Xcode's opening. */
|
|
108
|
+
private publishCapabilities;
|
|
109
|
+
/**
|
|
110
|
+
* Invokes a daemon selector and resolves with its decoded return value.
|
|
111
|
+
*
|
|
112
|
+
* @param selector The Objective-C selector, e.g. `deviceCapabilities`.
|
|
113
|
+
* @param aux Encoded arguments, or `null` for a no-argument selector.
|
|
114
|
+
* @param options Reply timeout.
|
|
115
|
+
*/
|
|
116
|
+
invoke(selector: string, aux?: MessageAux | null, options?: InvokeOptions): Promise<unknown>;
|
|
117
|
+
/** Sends a selector without waiting for a reply. */
|
|
118
|
+
invokeOneway(selector: string, aux?: MessageAux | null): void;
|
|
119
|
+
/** Closes the connection. */
|
|
120
|
+
close(): void;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=dtx-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtx-transport.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/accessibility-audit/dtx-transport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,WAAW,EAAW,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAA4B,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAkC5E,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,oEAAoE;IAEpG,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAoB;IAEtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG3B;IACJ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG3B;IACJ,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;IAExF,OAAO;IAKP;;;;;OAKG;WACU,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAMlD,IAAI;IAqClB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,OAAO;IA0Bf,6FAA6F;YAC/E,IAAI;IAYlB,iDAAiD;YACnC,SAAS;IAOvB,OAAO,CAAC,KAAK;IAOb;;;OAGG;YACW,cAAc;IAgC5B;;;OAGG;YACW,WAAW;IAmCzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;OAIG;YACW,QAAQ;IAiBtB,8EAA8E;IAC9E,OAAO,CAAC,QAAQ;IAoChB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAY5E;;;;;;;;;OASG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA4BvE,OAAO,CAAC,UAAU;IAgClB,sFAAsF;YACxE,mBAAmB;IAYjC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,UAAU,GAAG,IAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BtG,oDAAoD;IACpD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,UAAU,GAAG,IAAW,GAAG,IAAI;IAInE,6BAA6B;IAC7B,KAAK,IAAI,IAAI;CAKd"}
|