appium-ios-remotexpc 0.12.0 → 0.13.1

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.
Files changed (90) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/src/constants.d.ts +2 -0
  3. package/build/src/constants.d.ts.map +1 -0
  4. package/build/src/constants.js +3 -0
  5. package/build/src/index.d.ts +2 -1
  6. package/build/src/index.d.ts.map +1 -1
  7. package/build/src/index.js +2 -1
  8. package/build/src/lib/apple-tv/constants.d.ts +0 -1
  9. package/build/src/lib/apple-tv/constants.d.ts.map +1 -1
  10. package/build/src/lib/apple-tv/constants.js +0 -1
  11. package/build/src/lib/apple-tv/discovery/device-discovery.d.ts +10 -0
  12. package/build/src/lib/apple-tv/discovery/device-discovery.d.ts.map +1 -0
  13. package/build/src/lib/apple-tv/discovery/device-discovery.js +22 -0
  14. package/build/src/lib/apple-tv/discovery/index.d.ts +2 -0
  15. package/build/src/lib/apple-tv/discovery/index.d.ts.map +1 -0
  16. package/build/src/lib/apple-tv/discovery/index.js +1 -0
  17. package/build/src/lib/apple-tv/index.d.ts +5 -0
  18. package/build/src/lib/apple-tv/index.d.ts.map +1 -1
  19. package/build/src/lib/apple-tv/index.js +5 -0
  20. package/build/src/lib/apple-tv/network/constants.d.ts +10 -0
  21. package/build/src/lib/apple-tv/network/constants.d.ts.map +1 -0
  22. package/build/src/lib/apple-tv/network/constants.js +9 -0
  23. package/build/src/lib/apple-tv/network/index.d.ts +4 -0
  24. package/build/src/lib/apple-tv/network/index.d.ts.map +1 -0
  25. package/build/src/lib/apple-tv/network/index.js +2 -0
  26. package/build/src/lib/apple-tv/network/network-client.d.ts +16 -0
  27. package/build/src/lib/apple-tv/network/network-client.d.ts.map +1 -0
  28. package/build/src/lib/apple-tv/network/network-client.js +169 -0
  29. package/build/src/lib/apple-tv/network/types.d.ts +8 -0
  30. package/build/src/lib/apple-tv/network/types.d.ts.map +1 -0
  31. package/build/src/lib/apple-tv/network/types.js +1 -0
  32. package/build/src/lib/apple-tv/pairing/index.d.ts +3 -0
  33. package/build/src/lib/apple-tv/pairing/index.d.ts.map +1 -0
  34. package/build/src/lib/apple-tv/pairing/index.js +2 -0
  35. package/build/src/lib/apple-tv/pairing/pairing-service.d.ts +15 -0
  36. package/build/src/lib/apple-tv/pairing/pairing-service.d.ts.map +1 -0
  37. package/build/src/lib/apple-tv/pairing/pairing-service.js +112 -0
  38. package/build/src/lib/apple-tv/pairing/user-input-service.d.ts +8 -0
  39. package/build/src/lib/apple-tv/pairing/user-input-service.d.ts.map +1 -0
  40. package/build/src/lib/apple-tv/pairing/user-input-service.js +61 -0
  41. package/build/src/lib/apple-tv/pairing-protocol/constants.d.ts +18 -0
  42. package/build/src/lib/apple-tv/pairing-protocol/constants.d.ts.map +1 -0
  43. package/build/src/lib/apple-tv/pairing-protocol/constants.js +17 -0
  44. package/build/src/lib/apple-tv/pairing-protocol/index.d.ts +4 -0
  45. package/build/src/lib/apple-tv/pairing-protocol/index.d.ts.map +1 -0
  46. package/build/src/lib/apple-tv/pairing-protocol/index.js +2 -0
  47. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts +159 -0
  48. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.d.ts.map +1 -0
  49. package/build/src/lib/apple-tv/pairing-protocol/pairing-protocol.js +494 -0
  50. package/build/src/lib/apple-tv/pairing-protocol/types.d.ts +57 -0
  51. package/build/src/lib/apple-tv/pairing-protocol/types.d.ts.map +1 -0
  52. package/build/src/lib/apple-tv/pairing-protocol/types.js +1 -0
  53. package/build/src/lib/apple-tv/storage/index.d.ts +3 -0
  54. package/build/src/lib/apple-tv/storage/index.d.ts.map +1 -0
  55. package/build/src/lib/apple-tv/storage/index.js +1 -0
  56. package/build/src/lib/apple-tv/storage/pairing-storage.d.ts +12 -0
  57. package/build/src/lib/apple-tv/storage/pairing-storage.d.ts.map +1 -0
  58. package/build/src/lib/apple-tv/storage/pairing-storage.js +36 -0
  59. package/build/src/lib/apple-tv/storage/types.d.ts +5 -0
  60. package/build/src/lib/apple-tv/storage/types.d.ts.map +1 -0
  61. package/build/src/lib/apple-tv/storage/types.js +1 -0
  62. package/build/src/lib/apple-tv/types.d.ts +0 -1
  63. package/build/src/lib/apple-tv/types.d.ts.map +1 -1
  64. package/build/src/lib/bonjour/bonjour-discovery.d.ts.map +1 -1
  65. package/build/src/lib/bonjour/bonjour-discovery.js +2 -0
  66. package/package.json +5 -3
  67. package/scripts/pair-appletv.ts +79 -0
  68. package/scripts/test-tunnel-creation.ts +1 -1
  69. package/src/constants.ts +4 -0
  70. package/src/index.ts +2 -0
  71. package/src/lib/apple-tv/constants.ts +0 -1
  72. package/src/lib/apple-tv/discovery/device-discovery.ts +34 -0
  73. package/src/lib/apple-tv/discovery/index.ts +1 -0
  74. package/src/lib/apple-tv/index.ts +5 -0
  75. package/src/lib/apple-tv/network/constants.ts +9 -0
  76. package/src/lib/apple-tv/network/index.ts +3 -0
  77. package/src/lib/apple-tv/network/network-client.ts +214 -0
  78. package/src/lib/apple-tv/network/types.ts +7 -0
  79. package/src/lib/apple-tv/pairing/index.ts +2 -0
  80. package/src/lib/apple-tv/pairing/pairing-service.ts +175 -0
  81. package/src/lib/apple-tv/pairing/user-input-service.ts +71 -0
  82. package/src/lib/apple-tv/pairing-protocol/constants.ts +19 -0
  83. package/src/lib/apple-tv/pairing-protocol/index.ts +8 -0
  84. package/src/lib/apple-tv/pairing-protocol/pairing-protocol.ts +636 -0
  85. package/src/lib/apple-tv/pairing-protocol/types.ts +60 -0
  86. package/src/lib/apple-tv/storage/index.ts +2 -0
  87. package/src/lib/apple-tv/storage/pairing-storage.ts +60 -0
  88. package/src/lib/apple-tv/storage/types.ts +9 -0
  89. package/src/lib/apple-tv/types.ts +0 -1
  90. package/src/lib/bonjour/bonjour-discovery.ts +2 -0
@@ -0,0 +1,71 @@
1
+ import { logger } from '@appium/support';
2
+ import { createInterface } from 'node:readline';
3
+
4
+ import { PairingError } from '../errors.js';
5
+ import { NETWORK_CONSTANTS } from '../network/constants.js';
6
+ import type { UserInputInterface } from '../pairing-protocol/types.js';
7
+
8
+ /** Handles user interaction for PIN input during pairing */
9
+ export class UserInputService implements UserInputInterface {
10
+ private readonly log = logger.getLogger('UserInputService');
11
+
12
+ async promptForPIN(): Promise<string> {
13
+ const rl = createInterface({
14
+ input: process.stdin,
15
+ output: process.stdout,
16
+ });
17
+
18
+ let timeoutId: NodeJS.Timeout | null = null;
19
+
20
+ try {
21
+ const pin = await new Promise<string>((resolve, reject) => {
22
+ timeoutId = setTimeout(() => {
23
+ reject(new PairingError('PIN input timeout', 'INPUT_TIMEOUT'));
24
+ }, NETWORK_CONSTANTS.PIN_INPUT_TIMEOUT_MS);
25
+
26
+ rl.question('Enter PIN from Apple TV screen: ', (answer) => {
27
+ // Clear timeout since we got the PIN
28
+ if (timeoutId) {
29
+ clearTimeout(timeoutId);
30
+ timeoutId = null;
31
+ }
32
+ resolve(answer);
33
+ });
34
+ });
35
+
36
+ const cleanPin = pin.trim();
37
+ if (!/^\d+$/.test(cleanPin)) {
38
+ this.log.error('Invalid PIN format');
39
+ throw new PairingError('PIN must contain only digits', 'INVALID_PIN');
40
+ }
41
+
42
+ this.log.debug('PIN received successfully');
43
+ return cleanPin;
44
+ } finally {
45
+ // Clean up timeout if error occurred before clearing
46
+ if (timeoutId) {
47
+ clearTimeout(timeoutId);
48
+ }
49
+ rl.close();
50
+ }
51
+ }
52
+
53
+ async promptForInput(prompt: string): Promise<string> {
54
+ const rl = createInterface({
55
+ input: process.stdin,
56
+ output: process.stdout,
57
+ });
58
+
59
+ try {
60
+ const input = await new Promise<string>((resolve) => {
61
+ rl.question(prompt, (answer) => {
62
+ resolve(answer);
63
+ });
64
+ });
65
+
66
+ return input.trim();
67
+ } finally {
68
+ rl.close();
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,19 @@
1
+ /** Constants for pairing protocol states */
2
+ export const PAIRING_STATES = {
3
+ M3: 0x03,
4
+ M5: 0x05,
5
+ M6: 0x06,
6
+ } as const;
7
+
8
+ /** Constants for pairing protocol messages */
9
+ export const PAIRING_MESSAGES = {
10
+ ENCRYPT_SALT: 'Pair-Setup-Encrypt-Salt',
11
+ ENCRYPT_INFO: 'Pair-Setup-Encrypt-Info',
12
+ SIGN_SALT: 'Pair-Setup-Controller-Sign-Salt',
13
+ SIGN_INFO: 'Pair-Setup-Controller-Sign-Info',
14
+ M5_NONCE: 'PS-Msg05',
15
+ M6_NONCE: 'PS-Msg06',
16
+ } as const;
17
+
18
+ /** TLV type for device info */
19
+ export const INFO_TYPE = 0x11;
@@ -0,0 +1,8 @@
1
+ export { PairingProtocol } from './pairing-protocol.js';
2
+ export { PAIRING_STATES, PAIRING_MESSAGES, INFO_TYPE } from './constants.js';
3
+ export type {
4
+ EncryptionKeys,
5
+ PairingRequest,
6
+ UserInputInterface,
7
+ PairingProtocolInterface,
8
+ } from './types.js';