appium-xcuitest-driver 12.13.0 → 12.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/device/log/helpers.d.ts.map +1 -1
  3. package/build/lib/device/log/helpers.js +1 -0
  4. package/build/lib/device/log/helpers.js.map +1 -1
  5. package/build/lib/device/wda-host-ops.js +8 -5
  6. package/build/lib/device/wda-host-ops.js.map +1 -1
  7. package/lib/device/log/helpers.ts +1 -0
  8. package/lib/device/wda-host-ops.ts +8 -5
  9. package/node_modules/@appium/coresim/CHANGELOG.md +18 -0
  10. package/node_modules/@appium/coresim/README.md +14 -0
  11. package/node_modules/@appium/coresim/binding.gyp +14 -1
  12. package/node_modules/@appium/coresim/lib/src/commands/video-recording.d.ts +66 -0
  13. package/node_modules/@appium/coresim/lib/src/commands/video-recording.d.ts.map +1 -0
  14. package/node_modules/@appium/coresim/lib/src/commands/video-recording.js +137 -0
  15. package/node_modules/@appium/coresim/lib/src/commands/video-recording.js.map +1 -0
  16. package/node_modules/@appium/coresim/lib/src/commands/video-stream.d.ts +92 -0
  17. package/node_modules/@appium/coresim/lib/src/commands/video-stream.d.ts.map +1 -0
  18. package/node_modules/@appium/coresim/lib/src/commands/video-stream.js +242 -0
  19. package/node_modules/@appium/coresim/lib/src/commands/video-stream.js.map +1 -0
  20. package/node_modules/@appium/coresim/lib/src/index.d.ts +2 -1
  21. package/node_modules/@appium/coresim/lib/src/index.d.ts.map +1 -1
  22. package/node_modules/@appium/coresim/lib/src/index.js +1 -0
  23. package/node_modules/@appium/coresim/lib/src/index.js.map +1 -1
  24. package/node_modules/@appium/coresim/lib/src/native-simctl.d.ts +4 -0
  25. package/node_modules/@appium/coresim/lib/src/native-simctl.d.ts.map +1 -1
  26. package/node_modules/@appium/coresim/lib/src/native-simctl.js +21 -1
  27. package/node_modules/@appium/coresim/lib/src/native-simctl.js.map +1 -1
  28. package/node_modules/@appium/coresim/lib/src/types.d.ts +144 -0
  29. package/node_modules/@appium/coresim/lib/src/types.d.ts.map +1 -1
  30. package/node_modules/@appium/coresim/lib/src/utils/index.d.ts +1 -1
  31. package/node_modules/@appium/coresim/lib/src/utils/index.d.ts.map +1 -1
  32. package/node_modules/@appium/coresim/lib/src/utils/index.js +1 -1
  33. package/node_modules/@appium/coresim/lib/src/utils/index.js.map +1 -1
  34. package/node_modules/@appium/coresim/lib/src/utils/run-catching.d.ts +4 -0
  35. package/node_modules/@appium/coresim/lib/src/utils/run-catching.d.ts.map +1 -1
  36. package/node_modules/@appium/coresim/lib/src/utils/run-catching.js +11 -0
  37. package/node_modules/@appium/coresim/lib/src/utils/run-catching.js.map +1 -1
  38. package/node_modules/@appium/coresim/package.json +1 -1
  39. package/node_modules/@appium/coresim/prebuilds/darwin-arm64/@appium+coresim.node +0 -0
  40. package/node_modules/@appium/coresim/src/commands/video-recording.ts +178 -0
  41. package/node_modules/@appium/coresim/src/commands/video-stream.ts +283 -0
  42. package/node_modules/@appium/coresim/src/coresim.mm +708 -1
  43. package/node_modules/@appium/coresim/src/index.ts +5 -0
  44. package/node_modules/@appium/coresim/src/native/audio_encoder.h +65 -0
  45. package/node_modules/@appium/coresim/src/native/audio_encoder.mm +270 -0
  46. package/node_modules/@appium/coresim/src/native/av_recording.h +52 -0
  47. package/node_modules/@appium/coresim/src/native/av_recording.mm +424 -0
  48. package/node_modules/@appium/coresim/src/native/av_stream.h +70 -0
  49. package/node_modules/@appium/coresim/src/native/av_stream.mm +217 -0
  50. package/node_modules/@appium/coresim/src/native/monotonic_clock.h +20 -0
  51. package/node_modules/@appium/coresim/src/native/sim_audio_tap.h +67 -0
  52. package/node_modules/@appium/coresim/src/native/sim_audio_tap.mm +350 -0
  53. package/node_modules/@appium/coresim/src/native/sim_process.h +10 -0
  54. package/node_modules/@appium/coresim/src/native/sim_process.mm +81 -18
  55. package/node_modules/@appium/coresim/src/native/sim_screenshot.h +10 -0
  56. package/node_modules/@appium/coresim/src/native/sim_screenshot.mm +11 -6
  57. package/node_modules/@appium/coresim/src/native/sim_video_recording.h +27 -0
  58. package/node_modules/@appium/coresim/src/native/sim_video_recording.mm +87 -0
  59. package/node_modules/@appium/coresim/src/native/sim_video_stream.h +64 -0
  60. package/node_modules/@appium/coresim/src/native/sim_video_stream.mm +71 -0
  61. package/node_modules/@appium/coresim/src/native/video_encoder.h +76 -0
  62. package/node_modules/@appium/coresim/src/native/video_encoder.mm +417 -0
  63. package/node_modules/@appium/coresim/src/native-simctl.ts +22 -1
  64. package/node_modules/@appium/coresim/src/types.ts +160 -0
  65. package/node_modules/@appium/coresim/src/utils/index.ts +1 -1
  66. package/node_modules/@appium/coresim/src/utils/run-catching.ts +11 -0
  67. package/node_modules/appium-ios-remotexpc/CHANGELOG.md +12 -0
  68. package/node_modules/appium-ios-remotexpc/build/src/lib/plist/binary-plist-creator.d.ts.map +1 -1
  69. package/node_modules/appium-ios-remotexpc/build/src/lib/plist/binary-plist-creator.js +6 -11
  70. package/node_modules/appium-ios-remotexpc/build/src/lib/plist/binary-plist-creator.js.map +1 -1
  71. package/node_modules/appium-ios-remotexpc/build/src/lib/plist/binary-plist-parser.js +4 -4
  72. package/node_modules/appium-ios-remotexpc/build/src/lib/plist/binary-plist-parser.js.map +1 -1
  73. package/node_modules/appium-ios-remotexpc/build/src/services.d.ts +5 -0
  74. package/node_modules/appium-ios-remotexpc/build/src/services.d.ts.map +1 -1
  75. package/node_modules/appium-ios-remotexpc/build/src/services.js +8 -0
  76. package/node_modules/appium-ios-remotexpc/build/src/services.js.map +1 -1
  77. package/node_modules/appium-ios-remotexpc/package.json +2 -1
  78. package/node_modules/appium-ios-remotexpc/src/lib/plist/binary-plist-creator.ts +6 -10
  79. package/node_modules/appium-ios-remotexpc/src/lib/plist/binary-plist-parser.ts +4 -4
  80. package/node_modules/appium-ios-remotexpc/src/services.ts +9 -0
  81. package/node_modules/appium-ios-simulator/CHANGELOG.md +6 -0
  82. package/node_modules/appium-ios-simulator/build/lib/extensions/ui-client.d.ts.map +1 -1
  83. package/node_modules/appium-ios-simulator/build/lib/extensions/ui-client.js +20 -2
  84. package/node_modules/appium-ios-simulator/build/lib/extensions/ui-client.js.map +1 -1
  85. package/node_modules/appium-ios-simulator/lib/extensions/ui-client.ts +64 -42
  86. package/node_modules/appium-ios-simulator/package.json +2 -2
  87. package/node_modules/appium-ios-tuntap/CHANGELOG.md +6 -0
  88. package/node_modules/appium-ios-tuntap/package.json +1 -1
  89. package/node_modules/appium-ios-tuntap/prebuilds/darwin-arm64/appium-ios-tuntap.node +0 -0
  90. package/node_modules/appium-ios-tuntap/prebuilds/linux-arm64/appium-ios-tuntap.node +0 -0
  91. package/node_modules/appium-ios-tuntap/prebuilds/linux-x64/appium-ios-tuntap.node +0 -0
  92. package/node_modules/appium-ios-tuntap/prebuilds/win32-x64/appium-ios-tuntap.node +0 -0
  93. package/node_modules/appium-ios-tuntap/src/native/tunnel_ssl.cc +22 -9
  94. package/node_modules/appium-remote-debugger/CHANGELOG.md +6 -0
  95. package/node_modules/appium-remote-debugger/package.json +2 -3
  96. package/node_modules/appium-remote-debugger/scripts/get-web-inspector-socket.mjs +3 -3
  97. package/node_modules/appium-remote-debugger/scripts/web_inspector_proxy.mjs +3 -3
  98. package/node_modules/appium-webdriveragent/CHANGELOG.md +6 -0
  99. package/node_modules/appium-webdriveragent/WebDriverAgentLib/Info.plist +2 -2
  100. package/node_modules/appium-webdriveragent/package.json +2 -3
  101. package/package.json +5 -5
  102. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/CHANGELOG.md +0 -673
  103. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/LICENSE +0 -13
  104. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/README.md +0 -62
  105. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/applications.d.ts +0 -57
  106. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/applications.d.ts.map +0 -1
  107. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/applications.js +0 -147
  108. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/applications.js.map +0 -1
  109. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/biometric.d.ts +0 -25
  110. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/biometric.d.ts.map +0 -1
  111. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/biometric.js +0 -54
  112. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/biometric.js.map +0 -1
  113. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/geolocation.d.ts +0 -12
  114. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/geolocation.d.ts.map +0 -1
  115. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/geolocation.js +0 -12
  116. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/geolocation.js.map +0 -1
  117. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/keychain.d.ts +0 -33
  118. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/keychain.d.ts.map +0 -1
  119. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/keychain.js +0 -116
  120. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/keychain.js.map +0 -1
  121. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/misc.d.ts +0 -38
  122. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/misc.d.ts.map +0 -1
  123. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/misc.js +0 -44
  124. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/misc.js.map +0 -1
  125. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/permissions.d.ts +0 -35
  126. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/permissions.d.ts.map +0 -1
  127. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/permissions.js +0 -297
  128. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/permissions.js.map +0 -1
  129. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/safari.d.ts +0 -40
  130. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/safari.d.ts.map +0 -1
  131. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/safari.js +0 -136
  132. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/safari.js.map +0 -1
  133. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/settings.d.ts +0 -142
  134. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/settings.d.ts.map +0 -1
  135. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/settings.js +0 -392
  136. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/extensions/settings.js.map +0 -1
  137. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/index.d.ts +0 -5
  138. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/index.d.ts.map +0 -1
  139. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/index.js +0 -4
  140. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/index.js.map +0 -1
  141. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/logger.d.ts +0 -2
  142. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/logger.d.ts.map +0 -1
  143. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/logger.js +0 -3
  144. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/logger.js.map +0 -1
  145. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-14.d.ts +0 -258
  146. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-14.d.ts.map +0 -1
  147. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-14.js +0 -557
  148. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-14.js.map +0 -1
  149. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-15.d.ts +0 -80
  150. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-15.d.ts.map +0 -1
  151. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-15.js +0 -114
  152. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-15.js.map +0 -1
  153. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-27.d.ts +0 -6
  154. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-27.d.ts.map +0 -1
  155. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-27.js +0 -9
  156. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator-xcode-27.js.map +0 -1
  157. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator.d.ts +0 -13
  158. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator.d.ts.map +0 -1
  159. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator.js +0 -47
  160. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/simulator.js.map +0 -1
  161. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/types.d.ts +0 -263
  162. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/types.d.ts.map +0 -1
  163. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/types.js +0 -2
  164. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/types.js.map +0 -1
  165. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/constants.d.ts +0 -7
  166. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/constants.d.ts.map +0 -1
  167. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/constants.js +0 -7
  168. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/constants.js.map +0 -1
  169. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/defaults.d.ts +0 -53
  170. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/defaults.d.ts.map +0 -1
  171. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/defaults.js +0 -165
  172. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/defaults.js.map +0 -1
  173. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/devices.d.ts +0 -13
  174. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/devices.d.ts.map +0 -1
  175. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/devices.js +0 -20
  176. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/devices.js.map +0 -1
  177. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/get-devices.d.ts +0 -7
  178. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/get-devices.d.ts.map +0 -1
  179. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/get-devices.js +0 -9
  180. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/get-devices.js.map +0 -1
  181. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/index.d.ts +0 -9
  182. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/index.d.ts.map +0 -1
  183. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/index.js +0 -8
  184. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/index.js.map +0 -1
  185. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/lifecycle.d.ts +0 -6
  186. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/lifecycle.d.ts.map +0 -1
  187. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/lifecycle.js +0 -61
  188. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/lifecycle.js.map +0 -1
  189. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/process.d.ts +0 -11
  190. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/process.d.ts.map +0 -1
  191. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/process.js +0 -32
  192. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/process.js.map +0 -1
  193. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/types.d.ts +0 -4
  194. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/types.d.ts.map +0 -1
  195. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/types.js +0 -2
  196. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/types.js.map +0 -1
  197. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/xcode.d.ts +0 -23
  198. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/xcode.d.ts.map +0 -1
  199. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/xcode.js +0 -61
  200. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/build/lib/utils/xcode.js.map +0 -1
  201. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/applications.ts +0 -171
  202. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/biometric.ts +0 -72
  203. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/geolocation.ts +0 -19
  204. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/keychain.ts +0 -132
  205. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/misc.ts +0 -55
  206. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/permissions.ts +0 -372
  207. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/safari.ts +0 -156
  208. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/extensions/settings.ts +0 -482
  209. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/index.ts +0 -6
  210. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/logger.ts +0 -3
  211. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/simulator-xcode-14.ts +0 -654
  212. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/simulator-xcode-15.ts +0 -126
  213. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/simulator-xcode-27.ts +0 -9
  214. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/simulator.ts +0 -59
  215. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/types.ts +0 -301
  216. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/constants.ts +0 -6
  217. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/defaults.ts +0 -167
  218. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/devices.ts +0 -22
  219. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/get-devices.ts +0 -10
  220. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/index.ts +0 -15
  221. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/lifecycle.ts +0 -70
  222. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/process.ts +0 -32
  223. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/types.ts +0 -3
  224. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/lib/utils/xcode.ts +0 -73
  225. package/node_modules/appium-webdriveragent/node_modules/appium-ios-simulator/package.json +0 -77
  226. package/node_modules/node-simctl/CHANGELOG.md +0 -542
  227. package/node_modules/node-simctl/LICENSE +0 -201
  228. package/node_modules/node-simctl/README.md +0 -200
  229. package/node_modules/node-simctl/build/lib/helpers.d.ts +0 -24
  230. package/node_modules/node-simctl/build/lib/helpers.d.ts.map +0 -1
  231. package/node_modules/node-simctl/build/lib/helpers.js +0 -72
  232. package/node_modules/node-simctl/build/lib/helpers.js.map +0 -1
  233. package/node_modules/node-simctl/build/lib/index.d.ts +0 -5
  234. package/node_modules/node-simctl/build/lib/index.d.ts.map +0 -1
  235. package/node_modules/node-simctl/build/lib/index.js +0 -4
  236. package/node_modules/node-simctl/build/lib/index.js.map +0 -1
  237. package/node_modules/node-simctl/build/lib/logger.d.ts +0 -3
  238. package/node_modules/node-simctl/build/lib/logger.d.ts.map +0 -1
  239. package/node_modules/node-simctl/build/lib/logger.js +0 -4
  240. package/node_modules/node-simctl/build/lib/logger.js.map +0 -1
  241. package/node_modules/node-simctl/build/lib/simctl.d.ts +0 -102
  242. package/node_modules/node-simctl/build/lib/simctl.d.ts.map +0 -1
  243. package/node_modules/node-simctl/build/lib/simctl.js +0 -189
  244. package/node_modules/node-simctl/build/lib/simctl.js.map +0 -1
  245. package/node_modules/node-simctl/build/lib/subcommands/addmedia.d.ts +0 -15
  246. package/node_modules/node-simctl/build/lib/subcommands/addmedia.d.ts.map +0 -1
  247. package/node_modules/node-simctl/build/lib/subcommands/addmedia.js +0 -17
  248. package/node_modules/node-simctl/build/lib/subcommands/addmedia.js.map +0 -1
  249. package/node_modules/node-simctl/build/lib/subcommands/appinfo.d.ts +0 -14
  250. package/node_modules/node-simctl/build/lib/subcommands/appinfo.d.ts.map +0 -1
  251. package/node_modules/node-simctl/build/lib/subcommands/appinfo.js +0 -36
  252. package/node_modules/node-simctl/build/lib/subcommands/appinfo.js.map +0 -1
  253. package/node_modules/node-simctl/build/lib/subcommands/boot.d.ts +0 -10
  254. package/node_modules/node-simctl/build/lib/subcommands/boot.d.ts.map +0 -1
  255. package/node_modules/node-simctl/build/lib/subcommands/boot.js +0 -22
  256. package/node_modules/node-simctl/build/lib/subcommands/boot.js.map +0 -1
  257. package/node_modules/node-simctl/build/lib/subcommands/bootstatus.d.ts +0 -17
  258. package/node_modules/node-simctl/build/lib/subcommands/bootstatus.d.ts.map +0 -1
  259. package/node_modules/node-simctl/build/lib/subcommands/bootstatus.js +0 -95
  260. package/node_modules/node-simctl/build/lib/subcommands/bootstatus.js.map +0 -1
  261. package/node_modules/node-simctl/build/lib/subcommands/create.d.ts +0 -16
  262. package/node_modules/node-simctl/build/lib/subcommands/create.d.ts.map +0 -1
  263. package/node_modules/node-simctl/build/lib/subcommands/create.js +0 -88
  264. package/node_modules/node-simctl/build/lib/subcommands/create.js.map +0 -1
  265. package/node_modules/node-simctl/build/lib/subcommands/delete.d.ts +0 -10
  266. package/node_modules/node-simctl/build/lib/subcommands/delete.d.ts.map +0 -1
  267. package/node_modules/node-simctl/build/lib/subcommands/delete.js +0 -13
  268. package/node_modules/node-simctl/build/lib/subcommands/delete.js.map +0 -1
  269. package/node_modules/node-simctl/build/lib/subcommands/erase.d.ts +0 -13
  270. package/node_modules/node-simctl/build/lib/subcommands/erase.d.ts.map +0 -1
  271. package/node_modules/node-simctl/build/lib/subcommands/erase.js +0 -19
  272. package/node_modules/node-simctl/build/lib/subcommands/erase.js.map +0 -1
  273. package/node_modules/node-simctl/build/lib/subcommands/get_app_container.d.ts +0 -20
  274. package/node_modules/node-simctl/build/lib/subcommands/get_app_container.d.ts.map +0 -1
  275. package/node_modules/node-simctl/build/lib/subcommands/get_app_container.js +0 -26
  276. package/node_modules/node-simctl/build/lib/subcommands/get_app_container.js.map +0 -1
  277. package/node_modules/node-simctl/build/lib/subcommands/getenv.d.ts +0 -12
  278. package/node_modules/node-simctl/build/lib/subcommands/getenv.d.ts.map +0 -1
  279. package/node_modules/node-simctl/build/lib/subcommands/getenv.js +0 -17
  280. package/node_modules/node-simctl/build/lib/subcommands/getenv.js.map +0 -1
  281. package/node_modules/node-simctl/build/lib/subcommands/install.d.ts +0 -13
  282. package/node_modules/node-simctl/build/lib/subcommands/install.d.ts.map +0 -1
  283. package/node_modules/node-simctl/build/lib/subcommands/install.js +0 -16
  284. package/node_modules/node-simctl/build/lib/subcommands/install.js.map +0 -1
  285. package/node_modules/node-simctl/build/lib/subcommands/io.d.ts +0 -13
  286. package/node_modules/node-simctl/build/lib/subcommands/io.d.ts.map +0 -1
  287. package/node_modules/node-simctl/build/lib/subcommands/io.js +0 -29
  288. package/node_modules/node-simctl/build/lib/subcommands/io.js.map +0 -1
  289. package/node_modules/node-simctl/build/lib/subcommands/keychain.d.ts +0 -38
  290. package/node_modules/node-simctl/build/lib/subcommands/keychain.d.ts.map +0 -1
  291. package/node_modules/node-simctl/build/lib/subcommands/keychain.js +0 -86
  292. package/node_modules/node-simctl/build/lib/subcommands/keychain.js.map +0 -1
  293. package/node_modules/node-simctl/build/lib/subcommands/launch.d.ts +0 -17
  294. package/node_modules/node-simctl/build/lib/subcommands/launch.d.ts.map +0 -1
  295. package/node_modules/node-simctl/build/lib/subcommands/launch.js +0 -25
  296. package/node_modules/node-simctl/build/lib/subcommands/launch.js.map +0 -1
  297. package/node_modules/node-simctl/build/lib/subcommands/list.d.ts +0 -95
  298. package/node_modules/node-simctl/build/lib/subcommands/list.d.ts.map +0 -1
  299. package/node_modules/node-simctl/build/lib/subcommands/list.js +0 -264
  300. package/node_modules/node-simctl/build/lib/subcommands/list.js.map +0 -1
  301. package/node_modules/node-simctl/build/lib/subcommands/location.d.ts +0 -19
  302. package/node_modules/node-simctl/build/lib/subcommands/location.d.ts.map +0 -1
  303. package/node_modules/node-simctl/build/lib/subcommands/location.js +0 -42
  304. package/node_modules/node-simctl/build/lib/subcommands/location.js.map +0 -1
  305. package/node_modules/node-simctl/build/lib/subcommands/openurl.d.ts +0 -16
  306. package/node_modules/node-simctl/build/lib/subcommands/openurl.d.ts.map +0 -1
  307. package/node_modules/node-simctl/build/lib/subcommands/openurl.js +0 -18
  308. package/node_modules/node-simctl/build/lib/subcommands/openurl.js.map +0 -1
  309. package/node_modules/node-simctl/build/lib/subcommands/pbcopy.d.ts +0 -15
  310. package/node_modules/node-simctl/build/lib/subcommands/pbcopy.d.ts.map +0 -1
  311. package/node_modules/node-simctl/build/lib/subcommands/pbcopy.js +0 -28
  312. package/node_modules/node-simctl/build/lib/subcommands/pbcopy.js.map +0 -1
  313. package/node_modules/node-simctl/build/lib/subcommands/pbpaste.d.ts +0 -15
  314. package/node_modules/node-simctl/build/lib/subcommands/pbpaste.d.ts.map +0 -1
  315. package/node_modules/node-simctl/build/lib/subcommands/pbpaste.js +0 -20
  316. package/node_modules/node-simctl/build/lib/subcommands/pbpaste.js.map +0 -1
  317. package/node_modules/node-simctl/build/lib/subcommands/privacy.d.ts +0 -53
  318. package/node_modules/node-simctl/build/lib/subcommands/privacy.d.ts.map +0 -1
  319. package/node_modules/node-simctl/build/lib/subcommands/privacy.js +0 -64
  320. package/node_modules/node-simctl/build/lib/subcommands/privacy.js.map +0 -1
  321. package/node_modules/node-simctl/build/lib/subcommands/push.d.ts +0 -23
  322. package/node_modules/node-simctl/build/lib/subcommands/push.d.ts.map +0 -1
  323. package/node_modules/node-simctl/build/lib/subcommands/push.js +0 -38
  324. package/node_modules/node-simctl/build/lib/subcommands/push.js.map +0 -1
  325. package/node_modules/node-simctl/build/lib/subcommands/shutdown.d.ts +0 -10
  326. package/node_modules/node-simctl/build/lib/subcommands/shutdown.d.ts.map +0 -1
  327. package/node_modules/node-simctl/build/lib/subcommands/shutdown.js +0 -22
  328. package/node_modules/node-simctl/build/lib/subcommands/shutdown.js.map +0 -1
  329. package/node_modules/node-simctl/build/lib/subcommands/spawn.d.ts +0 -25
  330. package/node_modules/node-simctl/build/lib/subcommands/spawn.d.ts.map +0 -1
  331. package/node_modules/node-simctl/build/lib/subcommands/spawn.js +0 -40
  332. package/node_modules/node-simctl/build/lib/subcommands/spawn.js.map +0 -1
  333. package/node_modules/node-simctl/build/lib/subcommands/terminate.d.ts +0 -13
  334. package/node_modules/node-simctl/build/lib/subcommands/terminate.d.ts.map +0 -1
  335. package/node_modules/node-simctl/build/lib/subcommands/terminate.js +0 -16
  336. package/node_modules/node-simctl/build/lib/subcommands/terminate.js.map +0 -1
  337. package/node_modules/node-simctl/build/lib/subcommands/ui.d.ts +0 -98
  338. package/node_modules/node-simctl/build/lib/subcommands/ui.d.ts.map +0 -1
  339. package/node_modules/node-simctl/build/lib/subcommands/ui.js +0 -124
  340. package/node_modules/node-simctl/build/lib/subcommands/ui.js.map +0 -1
  341. package/node_modules/node-simctl/build/lib/subcommands/uninstall.d.ts +0 -14
  342. package/node_modules/node-simctl/build/lib/subcommands/uninstall.d.ts.map +0 -1
  343. package/node_modules/node-simctl/build/lib/subcommands/uninstall.js +0 -17
  344. package/node_modules/node-simctl/build/lib/subcommands/uninstall.js.map +0 -1
  345. package/node_modules/node-simctl/build/lib/types.d.ts +0 -231
  346. package/node_modules/node-simctl/build/lib/types.d.ts.map +0 -1
  347. package/node_modules/node-simctl/build/lib/types.js +0 -2
  348. package/node_modules/node-simctl/build/lib/types.js.map +0 -1
  349. package/node_modules/node-simctl/lib/helpers.ts +0 -73
  350. package/node_modules/node-simctl/lib/index.ts +0 -13
  351. package/node_modules/node-simctl/lib/logger.ts +0 -5
  352. package/node_modules/node-simctl/lib/simctl.ts +0 -211
  353. package/node_modules/node-simctl/lib/subcommands/addmedia.ts +0 -20
  354. package/node_modules/node-simctl/lib/subcommands/appinfo.ts +0 -38
  355. package/node_modules/node-simctl/lib/subcommands/boot.ts +0 -22
  356. package/node_modules/node-simctl/lib/subcommands/bootstatus.ts +0 -101
  357. package/node_modules/node-simctl/lib/subcommands/create.ts +0 -112
  358. package/node_modules/node-simctl/lib/subcommands/delete.ts +0 -14
  359. package/node_modules/node-simctl/lib/subcommands/erase.ts +0 -26
  360. package/node_modules/node-simctl/lib/subcommands/get_app_container.ts +0 -31
  361. package/node_modules/node-simctl/lib/subcommands/getenv.ts +0 -18
  362. package/node_modules/node-simctl/lib/subcommands/install.ts +0 -17
  363. package/node_modules/node-simctl/lib/subcommands/io.ts +0 -31
  364. package/node_modules/node-simctl/lib/subcommands/keychain.ts +0 -94
  365. package/node_modules/node-simctl/lib/subcommands/launch.ts +0 -27
  366. package/node_modules/node-simctl/lib/subcommands/list.ts +0 -315
  367. package/node_modules/node-simctl/lib/subcommands/location.ts +0 -45
  368. package/node_modules/node-simctl/lib/subcommands/openurl.ts +0 -21
  369. package/node_modules/node-simctl/lib/subcommands/pbcopy.ts +0 -31
  370. package/node_modules/node-simctl/lib/subcommands/pbpaste.ts +0 -21
  371. package/node_modules/node-simctl/lib/subcommands/privacy.ts +0 -67
  372. package/node_modules/node-simctl/lib/subcommands/push.ts +0 -40
  373. package/node_modules/node-simctl/lib/subcommands/shutdown.ts +0 -22
  374. package/node_modules/node-simctl/lib/subcommands/spawn.ts +0 -54
  375. package/node_modules/node-simctl/lib/subcommands/terminate.ts +0 -17
  376. package/node_modules/node-simctl/lib/subcommands/ui.ts +0 -130
  377. package/node_modules/node-simctl/lib/subcommands/uninstall.ts +0 -18
  378. package/node_modules/node-simctl/lib/types.ts +0 -240
  379. package/node_modules/node-simctl/package.json +0 -75
  380. package/node_modules/package-json-from-dist/LICENSE.md +0 -63
  381. package/node_modules/package-json-from-dist/README.md +0 -110
  382. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +0 -89
  383. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +0 -1
  384. package/node_modules/package-json-from-dist/dist/commonjs/index.js +0 -134
  385. package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +0 -1
  386. package/node_modules/package-json-from-dist/dist/commonjs/package.json +0 -3
  387. package/node_modules/package-json-from-dist/dist/esm/index.d.ts +0 -89
  388. package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +0 -1
  389. package/node_modules/package-json-from-dist/dist/esm/index.js +0 -129
  390. package/node_modules/package-json-from-dist/dist/esm/index.js.map +0 -1
  391. package/node_modules/package-json-from-dist/dist/esm/package.json +0 -3
  392. package/node_modules/package-json-from-dist/package.json +0 -68
  393. package/node_modules/rimraf/LICENSE.md +0 -55
  394. package/node_modules/rimraf/README.md +0 -255
  395. package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts +0 -3
  396. package/node_modules/rimraf/dist/commonjs/default-tmp.d.ts.map +0 -1
  397. package/node_modules/rimraf/dist/commonjs/default-tmp.js +0 -58
  398. package/node_modules/rimraf/dist/commonjs/default-tmp.js.map +0 -1
  399. package/node_modules/rimraf/dist/commonjs/error.d.ts +0 -6
  400. package/node_modules/rimraf/dist/commonjs/error.d.ts.map +0 -1
  401. package/node_modules/rimraf/dist/commonjs/error.js +0 -10
  402. package/node_modules/rimraf/dist/commonjs/error.js.map +0 -1
  403. package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts +0 -3
  404. package/node_modules/rimraf/dist/commonjs/fix-eperm.d.ts.map +0 -1
  405. package/node_modules/rimraf/dist/commonjs/fix-eperm.js +0 -38
  406. package/node_modules/rimraf/dist/commonjs/fix-eperm.js.map +0 -1
  407. package/node_modules/rimraf/dist/commonjs/fs.d.ts +0 -16
  408. package/node_modules/rimraf/dist/commonjs/fs.d.ts.map +0 -1
  409. package/node_modules/rimraf/dist/commonjs/fs.js +0 -33
  410. package/node_modules/rimraf/dist/commonjs/fs.js.map +0 -1
  411. package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts +0 -3
  412. package/node_modules/rimraf/dist/commonjs/ignore-enoent.d.ts.map +0 -1
  413. package/node_modules/rimraf/dist/commonjs/ignore-enoent.js +0 -24
  414. package/node_modules/rimraf/dist/commonjs/ignore-enoent.js.map +0 -1
  415. package/node_modules/rimraf/dist/commonjs/index.d.ts +0 -50
  416. package/node_modules/rimraf/dist/commonjs/index.d.ts.map +0 -1
  417. package/node_modules/rimraf/dist/commonjs/index.js +0 -84
  418. package/node_modules/rimraf/dist/commonjs/index.js.map +0 -1
  419. package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts +0 -34
  420. package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts.map +0 -1
  421. package/node_modules/rimraf/dist/commonjs/opt-arg.js +0 -54
  422. package/node_modules/rimraf/dist/commonjs/opt-arg.js.map +0 -1
  423. package/node_modules/rimraf/dist/commonjs/package.json +0 -3
  424. package/node_modules/rimraf/dist/commonjs/path-arg.d.ts +0 -4
  425. package/node_modules/rimraf/dist/commonjs/path-arg.d.ts.map +0 -1
  426. package/node_modules/rimraf/dist/commonjs/path-arg.js +0 -49
  427. package/node_modules/rimraf/dist/commonjs/path-arg.js.map +0 -1
  428. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts +0 -3
  429. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts.map +0 -1
  430. package/node_modules/rimraf/dist/commonjs/readdir-or-error.js +0 -19
  431. package/node_modules/rimraf/dist/commonjs/readdir-or-error.js.map +0 -1
  432. package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts +0 -8
  433. package/node_modules/rimraf/dist/commonjs/retry-busy.d.ts.map +0 -1
  434. package/node_modules/rimraf/dist/commonjs/retry-busy.js +0 -65
  435. package/node_modules/rimraf/dist/commonjs/retry-busy.js.map +0 -1
  436. package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts +0 -3
  437. package/node_modules/rimraf/dist/commonjs/rimraf-manual.d.ts.map +0 -1
  438. package/node_modules/rimraf/dist/commonjs/rimraf-manual.js +0 -8
  439. package/node_modules/rimraf/dist/commonjs/rimraf-manual.js.map +0 -1
  440. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts +0 -4
  441. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts.map +0 -1
  442. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js +0 -138
  443. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js.map +0 -1
  444. package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts +0 -4
  445. package/node_modules/rimraf/dist/commonjs/rimraf-native.d.ts.map +0 -1
  446. package/node_modules/rimraf/dist/commonjs/rimraf-native.js +0 -24
  447. package/node_modules/rimraf/dist/commonjs/rimraf-native.js.map +0 -1
  448. package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts +0 -4
  449. package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts.map +0 -1
  450. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js +0 -102
  451. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js.map +0 -1
  452. package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts +0 -4
  453. package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts.map +0 -1
  454. package/node_modules/rimraf/dist/commonjs/rimraf-windows.js +0 -159
  455. package/node_modules/rimraf/dist/commonjs/rimraf-windows.js.map +0 -1
  456. package/node_modules/rimraf/dist/commonjs/use-native.d.ts +0 -4
  457. package/node_modules/rimraf/dist/commonjs/use-native.d.ts.map +0 -1
  458. package/node_modules/rimraf/dist/commonjs/use-native.js +0 -18
  459. package/node_modules/rimraf/dist/commonjs/use-native.js.map +0 -1
  460. package/node_modules/rimraf/dist/esm/bin.d.mts +0 -3
  461. package/node_modules/rimraf/dist/esm/bin.d.mts.map +0 -1
  462. package/node_modules/rimraf/dist/esm/bin.mjs +0 -250
  463. package/node_modules/rimraf/dist/esm/bin.mjs.map +0 -1
  464. package/node_modules/rimraf/dist/esm/default-tmp.d.ts +0 -3
  465. package/node_modules/rimraf/dist/esm/default-tmp.d.ts.map +0 -1
  466. package/node_modules/rimraf/dist/esm/default-tmp.js +0 -55
  467. package/node_modules/rimraf/dist/esm/default-tmp.js.map +0 -1
  468. package/node_modules/rimraf/dist/esm/error.d.ts +0 -6
  469. package/node_modules/rimraf/dist/esm/error.d.ts.map +0 -1
  470. package/node_modules/rimraf/dist/esm/error.js +0 -5
  471. package/node_modules/rimraf/dist/esm/error.js.map +0 -1
  472. package/node_modules/rimraf/dist/esm/fix-eperm.d.ts +0 -3
  473. package/node_modules/rimraf/dist/esm/fix-eperm.d.ts.map +0 -1
  474. package/node_modules/rimraf/dist/esm/fix-eperm.js +0 -33
  475. package/node_modules/rimraf/dist/esm/fix-eperm.js.map +0 -1
  476. package/node_modules/rimraf/dist/esm/fs.d.ts +0 -16
  477. package/node_modules/rimraf/dist/esm/fs.d.ts.map +0 -1
  478. package/node_modules/rimraf/dist/esm/fs.js +0 -18
  479. package/node_modules/rimraf/dist/esm/fs.js.map +0 -1
  480. package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts +0 -3
  481. package/node_modules/rimraf/dist/esm/ignore-enoent.d.ts.map +0 -1
  482. package/node_modules/rimraf/dist/esm/ignore-enoent.js +0 -19
  483. package/node_modules/rimraf/dist/esm/ignore-enoent.js.map +0 -1
  484. package/node_modules/rimraf/dist/esm/index.d.ts +0 -50
  485. package/node_modules/rimraf/dist/esm/index.d.ts.map +0 -1
  486. package/node_modules/rimraf/dist/esm/index.js +0 -76
  487. package/node_modules/rimraf/dist/esm/index.js.map +0 -1
  488. package/node_modules/rimraf/dist/esm/opt-arg.d.ts +0 -34
  489. package/node_modules/rimraf/dist/esm/opt-arg.d.ts.map +0 -1
  490. package/node_modules/rimraf/dist/esm/opt-arg.js +0 -47
  491. package/node_modules/rimraf/dist/esm/opt-arg.js.map +0 -1
  492. package/node_modules/rimraf/dist/esm/package.json +0 -3
  493. package/node_modules/rimraf/dist/esm/path-arg.d.ts +0 -4
  494. package/node_modules/rimraf/dist/esm/path-arg.d.ts.map +0 -1
  495. package/node_modules/rimraf/dist/esm/path-arg.js +0 -47
  496. package/node_modules/rimraf/dist/esm/path-arg.js.map +0 -1
  497. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts +0 -3
  498. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts.map +0 -1
  499. package/node_modules/rimraf/dist/esm/readdir-or-error.js +0 -14
  500. package/node_modules/rimraf/dist/esm/readdir-or-error.js.map +0 -1
  501. package/node_modules/rimraf/dist/esm/retry-busy.d.ts +0 -8
  502. package/node_modules/rimraf/dist/esm/retry-busy.d.ts.map +0 -1
  503. package/node_modules/rimraf/dist/esm/retry-busy.js +0 -60
  504. package/node_modules/rimraf/dist/esm/retry-busy.js.map +0 -1
  505. package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts +0 -3
  506. package/node_modules/rimraf/dist/esm/rimraf-manual.d.ts.map +0 -1
  507. package/node_modules/rimraf/dist/esm/rimraf-manual.js +0 -5
  508. package/node_modules/rimraf/dist/esm/rimraf-manual.js.map +0 -1
  509. package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts +0 -4
  510. package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts.map +0 -1
  511. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js +0 -133
  512. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js.map +0 -1
  513. package/node_modules/rimraf/dist/esm/rimraf-native.d.ts +0 -4
  514. package/node_modules/rimraf/dist/esm/rimraf-native.d.ts.map +0 -1
  515. package/node_modules/rimraf/dist/esm/rimraf-native.js +0 -19
  516. package/node_modules/rimraf/dist/esm/rimraf-native.js.map +0 -1
  517. package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts +0 -4
  518. package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts.map +0 -1
  519. package/node_modules/rimraf/dist/esm/rimraf-posix.js +0 -97
  520. package/node_modules/rimraf/dist/esm/rimraf-posix.js.map +0 -1
  521. package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts +0 -4
  522. package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts.map +0 -1
  523. package/node_modules/rimraf/dist/esm/rimraf-windows.js +0 -154
  524. package/node_modules/rimraf/dist/esm/rimraf-windows.js.map +0 -1
  525. package/node_modules/rimraf/dist/esm/use-native.d.ts +0 -4
  526. package/node_modules/rimraf/dist/esm/use-native.d.ts.map +0 -1
  527. package/node_modules/rimraf/dist/esm/use-native.js +0 -15
  528. package/node_modules/rimraf/dist/esm/use-native.js.map +0 -1
  529. package/node_modules/rimraf/package.json +0 -77
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [12.13.2](https://github.com/appium/appium-xcuitest-driver/compare/v12.13.1...v12.13.2) (2026-09-23)
2
+
3
+ ### Bug Fixes
4
+
5
+ * grepFile error handling ([#2989](https://github.com/appium/appium-xcuitest-driver/issues/2989)) ([79b387b](https://github.com/appium/appium-xcuitest-driver/commit/79b387bbd9c8e265851fae91d555b798b528eb3e))
6
+
7
+ ## [12.13.1](https://github.com/appium/appium-xcuitest-driver/compare/v12.13.0...v12.13.1) (2026-09-20)
8
+
9
+ ### Bug Fixes
10
+
11
+ * **opts:** pass `ActivateSuspended: true` to host opts for backgrounding WDA ([#2980](https://github.com/appium/appium-xcuitest-driver/issues/2980)) ([78361a2](https://github.com/appium/appium-xcuitest-driver/commit/78361a2cad2e66a34f64272113f519a35ce24407))
12
+
1
13
  ## [12.13.0](https://github.com/appium/appium-xcuitest-driver/compare/v12.12.6...v12.13.0) (2026-09-20)
2
14
 
3
15
  ### Features
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAA0B,GAAG,QAAQ,CAM1G;AAED,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBtG"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../lib/device/log/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAA0B,GAAG,QAAQ,CAM1G;AAED,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBtG"}
@@ -17,6 +17,7 @@ export async function grepFile(fullPath, str, opts = {}) {
17
17
  const rl = createInterface({ input });
18
18
  return await new Promise((resolve, reject) => {
19
19
  input.once('error', reject);
20
+ rl.once('error', reject);
20
21
  rl.on('line', (line) => {
21
22
  if ((opts.caseInsensitive && line.toLowerCase().includes(String(str).toLowerCase())) ||
22
23
  (!opts.caseInsensitive && line.includes(str))) {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../lib/device/log/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AAIrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAM9C,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,SAAiB,EAAE,QAAgB,iBAAiB;IAC9F,OAAO;QACL,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,GAAW,EAAE,OAAoB,EAAE;IAClF,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;IACpC,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChF,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7C,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../lib/device/log/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AAIrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAM9C,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,SAAiB,EAAE,QAAgB,iBAAiB;IAC9F,OAAO;QACL,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,GAAW,EAAE,OAAoB,EAAE;IAClF,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;IACpC,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChF,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7C,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -105,11 +105,13 @@ function createSimulatorHostOps(driver) {
105
105
  };
106
106
  }
107
107
  /**
108
- * `devicectl device process launch` starts the XCTest runner as a plain app process, without the
109
- * testmanagerd/DVT test-session handshake that RemoteXPC's process control provides. Starting with
110
- * the iOS/tvOS 27 DDI/XCTest stack, the runner launched that way fails to background itself and
111
- * never starts its HTTP server, so devicectl is no longer a reliable launch fallback there (see
112
- * appium/appium#22636). It remains a reasonable fallback for older platforms.
108
+ * An XCTest runner started in the foreground has to press the Home button to background itself
109
+ * before running UI tests. With the Xcode 27 DDI/XCTest stack that synthesized press is ignored on
110
+ * older iOS versions, so the runner exits with "Failed to background test runner" and never starts
111
+ * its HTTP server (see appium/appium#22636 and #2978). RemoteXPC's process control launches the
112
+ * runner directly in the background, like Xcode does, which skips that step. `devicectl` always
113
+ * brings the runner to the foreground, so it is no longer a reliable launch fallback on
114
+ * iOS/tvOS 27+. It remains a reasonable fallback for older platforms.
113
115
  */
114
116
  function createRealDevicePreinstalledHostOps(driver) {
115
117
  return {
@@ -121,6 +123,7 @@ function createRealDevicePreinstalledHostOps(driver) {
121
123
  bundleId,
122
124
  environment: stringifyLaunchEnvironment(env),
123
125
  killExisting: true,
126
+ extraOptions: { ActivateSuspended: true },
124
127
  });
125
128
  }
126
129
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"wda-host-ops.js","sourceRoot":"","sources":["../../../lib/device/wda-host-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wda-host-ops.js","sourceRoot":"","sources":["../../../lib/device/wda-host-ops.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export async function grepFile(fullPath: string, str: string, opts: GrepOptions
27
27
  const rl = createInterface({input});
28
28
  return await new Promise((resolve, reject) => {
29
29
  input.once('error', reject);
30
+ rl.once('error', reject);
30
31
  rl.on('line', (line) => {
31
32
  if (
32
33
  (opts.caseInsensitive && line.toLowerCase().includes(String(str).toLowerCase())) ||
@@ -161,11 +161,13 @@ function createSimulatorHostOps(driver: XCUITestDriver): SimulatorHostOps {
161
161
  }
162
162
 
163
163
  /**
164
- * `devicectl device process launch` starts the XCTest runner as a plain app process, without the
165
- * testmanagerd/DVT test-session handshake that RemoteXPC's process control provides. Starting with
166
- * the iOS/tvOS 27 DDI/XCTest stack, the runner launched that way fails to background itself and
167
- * never starts its HTTP server, so devicectl is no longer a reliable launch fallback there (see
168
- * appium/appium#22636). It remains a reasonable fallback for older platforms.
164
+ * An XCTest runner started in the foreground has to press the Home button to background itself
165
+ * before running UI tests. With the Xcode 27 DDI/XCTest stack that synthesized press is ignored on
166
+ * older iOS versions, so the runner exits with "Failed to background test runner" and never starts
167
+ * its HTTP server (see appium/appium#22636 and #2978). RemoteXPC's process control launches the
168
+ * runner directly in the background, like Xcode does, which skips that step. `devicectl` always
169
+ * brings the runner to the foreground, so it is no longer a reliable launch fallback on
170
+ * iOS/tvOS 27+. It remains a reasonable fallback for older platforms.
169
171
  */
170
172
  function createRealDevicePreinstalledHostOps(driver: XCUITestDriver): RealDevicePreinstalledHostOps {
171
173
  return {
@@ -179,6 +181,7 @@ function createRealDevicePreinstalledHostOps(driver: XCUITestDriver): RealDevice
179
181
  bundleId,
180
182
  environment: stringifyLaunchEnvironment(env),
181
183
  killExisting: true,
184
+ extraOptions: {ActivateSuspended: true},
182
185
  });
183
186
  } finally {
184
187
  await dvt.dvtService.close();
@@ -1,3 +1,21 @@
1
+ ## [1.7.0](https://github.com/appium/coresim/compare/v1.6.0...v1.7.0) (2026-09-23)
2
+
3
+ ### Features
4
+
5
+ * add force option to stopVideoRecording ([#19](https://github.com/appium/coresim/issues/19)) ([1b756ce](https://github.com/appium/coresim/commit/1b756ce3d41ad35dca0f7448de82715570e6ce60))
6
+
7
+ ## [1.6.0](https://github.com/appium/coresim/compare/v1.5.0...v1.6.0) (2026-09-23)
8
+
9
+ ### Features
10
+
11
+ * add optional audio capture to video recording and streaming ([#18](https://github.com/appium/coresim/issues/18)) ([e634078](https://github.com/appium/coresim/commit/e634078669db724a676bf95fa074a89d3ac5a9c8))
12
+
13
+ ## [1.5.0](https://github.com/appium/coresim/compare/v1.4.0...v1.5.0) (2026-09-22)
14
+
15
+ ### Features
16
+
17
+ * Add video recording API ([#17](https://github.com/appium/coresim/issues/17)) ([d399403](https://github.com/appium/coresim/commit/d399403c1d329f303ab51726fa382313cf09ad0f))
18
+
1
19
  ## [1.4.0](https://github.com/appium/coresim/compare/v1.3.0...v1.4.0) (2026-09-19)
2
20
 
3
21
  ### Features
@@ -54,6 +54,20 @@ await sim.deleteDevice(device.udid);
54
54
  readiness with `getBootStatus()`/`waitForBoot()`.
55
55
  - **Apps** — install, remove, launch, terminate, and inspect apps.
56
56
  - **Processes** — spawn a process on the simulator and stream its stdout/stderr live.
57
+ - **Screen capture** — screenshots, video recording to a file, and a real-time encoded video
58
+ stream — optionally with the device's own audio, muxed into the recording or interleaved into
59
+ the stream (`audio: true` on `startVideoRecording`/`startVideoStream`). Audio capture requires:
60
+ - **macOS 14.2+** on the host (Core Audio process taps).
61
+ - The host's **"System Audio Recording Only"** privacy permission (System Settings > Privacy &
62
+ Security > Screen & System Audio Recording). This can't be granted programmatically, and a
63
+ denial isn't a thrown error — it silently produces an audio-less/near-silent track.
64
+ - A default audio output device on the host, and a booted simulator that has produced audio at
65
+ least once (e.g. a foreground app that plays sound) — an empty guest process set throws.
66
+ - Uses a host-side Core Audio API, not anything iOS-version-specific, so it's expected to work
67
+ on any simulator runtime; only Xcode 26.x has actually been exercised so far.
68
+
69
+ On some CI/headless hosts, starting an audio capture can block for a while before failing —
70
+ see [`CLAUDE.md`](./CLAUDE.md) for the known root cause and current workaround.
57
71
  - **Simulator settings** — appearance (light/dark), accessibility (increase contrast, content
58
72
  size), location, and permissions.
59
73
  - **Extras** — keychain certificates, push notifications, and Darwin notifications.
@@ -13,7 +13,14 @@
13
13
  "src/native/tcc_privacy.mm",
14
14
  "src/native/sim_pasteboard.mm",
15
15
  "src/native/sim_process.mm",
16
- "src/native/sim_screenshot.mm"
16
+ "src/native/sim_audio_tap.mm",
17
+ "src/native/audio_encoder.mm",
18
+ "src/native/av_recording.mm",
19
+ "src/native/av_stream.mm",
20
+ "src/native/sim_screenshot.mm",
21
+ "src/native/sim_video_recording.mm",
22
+ "src/native/video_encoder.mm",
23
+ "src/native/sim_video_stream.mm"
17
24
  ],
18
25
  "include_dirs": [
19
26
  "<!@(node -p \"require('node-addon-api').include\")"
@@ -42,9 +49,15 @@
42
49
  "OTHER_LDFLAGS": [
43
50
  "-framework", "Foundation",
44
51
  "-framework", "AppKit",
52
+ "-framework", "AudioToolbox",
53
+ "-framework", "AVFoundation",
54
+ "-framework", "CoreAudio",
45
55
  "-framework", "CoreImage",
56
+ "-framework", "CoreMedia",
57
+ "-framework", "CoreVideo",
46
58
  "-framework", "ImageIO",
47
59
  "-framework", "IOSurface",
60
+ "-framework", "VideoToolbox",
48
61
  "-lsqlite3"
49
62
  ]
50
63
  }
@@ -0,0 +1,66 @@
1
+ import type { NativeSimctl } from '../native-simctl.js';
2
+ import type { StopVideoRecordingOptions, VideoRecordingOptions } from '../types.js';
3
+ declare module '../native-simctl.js' {
4
+ interface NativeSimctl {
5
+ startVideoRecording(udid: string, outputFile: string, options?: VideoRecordingOptions): Promise<void>;
6
+ stopVideoRecording(udid: string, options?: StopVideoRecordingOptions): Promise<void>;
7
+ isVideoRecording(udid: string): Promise<boolean>;
8
+ }
9
+ }
10
+ /**
11
+ * Starts recording the device's display (and, with `options.audio`, its audio too, muxed as a
12
+ * second track) to `outputFile` — the native equivalent of `simctl io <udid> recordVideo` when
13
+ * both `audio` and `fps` are unset. Resolves once the first frame has actually been recorded, so
14
+ * it's always safe to call {@link stopVideoRecording} immediately after. Only one recording may be
15
+ * active per device at a time; starting a second one while the first is still running rejects.
16
+ *
17
+ * Without `audio`/`fps`, rejects with `NativeSimUnavailableError` if this CoreSimulator predates
18
+ * the private capture API — confirmed missing on Xcode 16.4's, present on Xcode 26.5+ (Apple
19
+ * documents no exact version floor). With either set, see {@link VideoRecordingOptions.audio}'s
20
+ * own doc comment for the host-permission requirement that applies specifically to `audio`; a
21
+ * failure *after* this call has already resolved (e.g. the audio tap's guest process set vanishing
22
+ * mid-recording) doesn't reject it — it's logged here instead — call {@link stopVideoRecording} to
23
+ * observe it as a rejection and release the recording's resources.
24
+ *
25
+ * @param udid — UDID of the device to record; must be booted
26
+ * @param outputFile — filesystem path to write the video to; resolved against `process.cwd()` if
27
+ * relative, since the native layer requires an absolute path
28
+ * @param options — `displayId`, `codec`, `mask`, `audio`, `fps`, `bitrate` — see {@link VideoRecordingOptions}
29
+ * @throws {Error} if a recording is already in progress for this device
30
+ */
31
+ export declare function startVideoRecording(this: NativeSimctl, udid: string, outputFile: string, options?: VideoRecordingOptions): Promise<void>;
32
+ /**
33
+ * Stops a recording previously started by {@link startVideoRecording} on the same device.
34
+ * Resolves once the video file has been finalized on disk and is safe to read. If `start` is still
35
+ * in flight (e.g. a concurrent caller stopping as soon as {@link isVideoRecording} turns `true`),
36
+ * waits for it to settle first — issuing the native stop call any earlier is a silent CoreSimulator
37
+ * race (see CLAUDE.md).
38
+ *
39
+ * Safe to call concurrently or to retry after a failure: every concurrent call for the same
40
+ * recording shares a single in-flight native stop call rather than each issuing its own (which
41
+ * could otherwise stop whatever *new* recording has since started on this device instead), and a
42
+ * failed stop — even one that failed before ever reaching the native recorder, e.g. a transient
43
+ * device-lookup error — leaves the recording tracked as still active so a retry can reach the
44
+ * native call rather than the caller losing the ability to stop it at all.
45
+ *
46
+ * That retryability is a liability if nothing ever *does* retry — e.g. a best-effort teardown path
47
+ * that must not throw, so it logs a failed stop and moves on — since without `options.force` there
48
+ * is no other way to release the entry, permanently blocking a new `startVideoRecording` for this
49
+ * device. Pass `options.force: true` in that situation: it still attempts the native stop (so the
50
+ * encoder/file gets a chance to finalize cleanly) but releases the entry unconditionally afterward
51
+ * and never rejects, even if that attempt failed — understand that this can leave a native
52
+ * resource dangling if the stop genuinely never lands.
53
+ *
54
+ * @param udid — UDID of the device to stop recording
55
+ * @param options — `force` (see above)
56
+ * @throws {Error} if no recording is currently in progress for this device
57
+ */
58
+ export declare function stopVideoRecording(this: NativeSimctl, udid: string, options?: StopVideoRecordingOptions): Promise<void>;
59
+ /**
60
+ * Whether a recording started by {@link startVideoRecording} is currently active for this device.
61
+ * Pure local state — no CoreSimulator dispatch — so this never rejects with a native error.
62
+ *
63
+ * @param udid — UDID of the device to check
64
+ */
65
+ export declare function isVideoRecording(this: NativeSimctl, udid: string): Promise<boolean>;
66
+ //# sourceMappingURL=video-recording.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-recording.d.ts","sourceRoot":"","sources":["../../../src/commands/video-recording.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAA6B,yBAAyB,EAAE,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAG9G,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrF,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAClD;CACF;AAqBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEzF"}
@@ -0,0 +1,137 @@
1
+ import path from 'node:path';
2
+ import { logger } from '@appium/support';
3
+ import { runCatchingAsync, toTypedError } from '../utils/index.js';
4
+ const log = logger.getLogger('CoreSim');
5
+ // Tracks which devices currently have an active recording — module-level since the constraint (at
6
+ // most one per device) is CoreSimulator's own, not per-NativeSimctl-instance.
7
+ const activeRecordings = new Map();
8
+ /**
9
+ * Starts recording the device's display (and, with `options.audio`, its audio too, muxed as a
10
+ * second track) to `outputFile` — the native equivalent of `simctl io <udid> recordVideo` when
11
+ * both `audio` and `fps` are unset. Resolves once the first frame has actually been recorded, so
12
+ * it's always safe to call {@link stopVideoRecording} immediately after. Only one recording may be
13
+ * active per device at a time; starting a second one while the first is still running rejects.
14
+ *
15
+ * Without `audio`/`fps`, rejects with `NativeSimUnavailableError` if this CoreSimulator predates
16
+ * the private capture API — confirmed missing on Xcode 16.4's, present on Xcode 26.5+ (Apple
17
+ * documents no exact version floor). With either set, see {@link VideoRecordingOptions.audio}'s
18
+ * own doc comment for the host-permission requirement that applies specifically to `audio`; a
19
+ * failure *after* this call has already resolved (e.g. the audio tap's guest process set vanishing
20
+ * mid-recording) doesn't reject it — it's logged here instead — call {@link stopVideoRecording} to
21
+ * observe it as a rejection and release the recording's resources.
22
+ *
23
+ * @param udid — UDID of the device to record; must be booted
24
+ * @param outputFile — filesystem path to write the video to; resolved against `process.cwd()` if
25
+ * relative, since the native layer requires an absolute path
26
+ * @param options — `displayId`, `codec`, `mask`, `audio`, `fps`, `bitrate` — see {@link VideoRecordingOptions}
27
+ * @throws {Error} if a recording is already in progress for this device
28
+ */
29
+ export async function startVideoRecording(udid, outputFile, options = {}) {
30
+ // Mirrors startVideoStream's identical validation — both reach the same native encoder path,
31
+ // which otherwise silently truncates an out-of-range value instead of rejecting it.
32
+ if (options.fps !== undefined && (!Number.isFinite(options.fps) || options.fps < 1)) {
33
+ throw new RangeError(`fps must be a finite number >= 1, got ${options.fps}`);
34
+ }
35
+ if (options.bitrate !== undefined &&
36
+ (!Number.isFinite(options.bitrate) || options.bitrate <= 0 || options.bitrate > 2 ** 31 - 1)) {
37
+ throw new RangeError(`bitrate must be a positive number no greater than ${2 ** 31 - 1}, got ${options.bitrate}`);
38
+ }
39
+ const key = udid.toLowerCase();
40
+ if (activeRecordings.has(key)) {
41
+ throw new Error(`A video recording is already in progress for device '${udid}'`);
42
+ }
43
+ const absoluteOutputFile = path.resolve(outputFile);
44
+ const startPromise = runCatchingAsync(async () => (await this._findDevice(udid)).startVideoRecording(absoluteOutputFile, options, (err) => {
45
+ // Only ever invoked on the `audio`/`fps` (own-encoder) path — see its own doc comment above.
46
+ // No live consumer to report to (this call already resolved), so logged instead of lost.
47
+ log.error(`Unhandled video recording error for device '${udid}': ${toTypedError(err).stack ?? err}`);
48
+ }));
49
+ // Marked before the native call resolves, not after, so a concurrent startVideoRecording for the
50
+ // same device is rejected immediately instead of racing this one — rolled back below on failure.
51
+ const state = { start: startPromise };
52
+ activeRecordings.set(key, state);
53
+ try {
54
+ await startPromise;
55
+ }
56
+ catch (e) {
57
+ // Only clear our own entry — a concurrent stopVideoRecording (see below) may already have.
58
+ if (activeRecordings.get(key) === state) {
59
+ activeRecordings.delete(key);
60
+ }
61
+ throw e;
62
+ }
63
+ }
64
+ /**
65
+ * Stops a recording previously started by {@link startVideoRecording} on the same device.
66
+ * Resolves once the video file has been finalized on disk and is safe to read. If `start` is still
67
+ * in flight (e.g. a concurrent caller stopping as soon as {@link isVideoRecording} turns `true`),
68
+ * waits for it to settle first — issuing the native stop call any earlier is a silent CoreSimulator
69
+ * race (see CLAUDE.md).
70
+ *
71
+ * Safe to call concurrently or to retry after a failure: every concurrent call for the same
72
+ * recording shares a single in-flight native stop call rather than each issuing its own (which
73
+ * could otherwise stop whatever *new* recording has since started on this device instead), and a
74
+ * failed stop — even one that failed before ever reaching the native recorder, e.g. a transient
75
+ * device-lookup error — leaves the recording tracked as still active so a retry can reach the
76
+ * native call rather than the caller losing the ability to stop it at all.
77
+ *
78
+ * That retryability is a liability if nothing ever *does* retry — e.g. a best-effort teardown path
79
+ * that must not throw, so it logs a failed stop and moves on — since without `options.force` there
80
+ * is no other way to release the entry, permanently blocking a new `startVideoRecording` for this
81
+ * device. Pass `options.force: true` in that situation: it still attempts the native stop (so the
82
+ * encoder/file gets a chance to finalize cleanly) but releases the entry unconditionally afterward
83
+ * and never rejects, even if that attempt failed — understand that this can leave a native
84
+ * resource dangling if the stop genuinely never lands.
85
+ *
86
+ * @param udid — UDID of the device to stop recording
87
+ * @param options — `force` (see above)
88
+ * @throws {Error} if no recording is currently in progress for this device
89
+ */
90
+ export async function stopVideoRecording(udid, options = {}) {
91
+ const key = udid.toLowerCase();
92
+ const state = activeRecordings.get(key);
93
+ if (!state) {
94
+ throw new Error(`No video recording is in progress for device '${udid}'`);
95
+ }
96
+ let handle;
97
+ try {
98
+ handle = await state.start;
99
+ }
100
+ catch {
101
+ // start itself failed — its own catch already cleaned up activeRecordings; nothing to stop.
102
+ throw new Error(`No video recording is in progress for device '${udid}'`);
103
+ }
104
+ const stopPromise = (state.stop ??= runCatchingAsync(async () => {
105
+ await handle.stop();
106
+ }));
107
+ try {
108
+ await stopPromise;
109
+ }
110
+ catch (e) {
111
+ // Only clear our own attempt, and only if it's still the current one — a future (non-forced)
112
+ // call must be able to retry the native stop rather than replaying this same rejection
113
+ // forever, but must not clobber a newer attempt another concurrent caller may have already
114
+ // started instead.
115
+ if (state.stop === stopPromise) {
116
+ state.stop = undefined;
117
+ }
118
+ if (!options.force) {
119
+ throw e;
120
+ }
121
+ log.warn(`Force-releasing video recording bookkeeping for device '${udid}' despite a failed native stop: ` +
122
+ `${toTypedError(e).stack ?? e}`);
123
+ }
124
+ if (activeRecordings.get(key) === state) {
125
+ activeRecordings.delete(key);
126
+ }
127
+ }
128
+ /**
129
+ * Whether a recording started by {@link startVideoRecording} is currently active for this device.
130
+ * Pure local state — no CoreSimulator dispatch — so this never rejects with a native error.
131
+ *
132
+ * @param udid — UDID of the device to check
133
+ */
134
+ export async function isVideoRecording(udid) {
135
+ return activeRecordings.has(udid.toLowerCase());
136
+ }
137
+ //# sourceMappingURL=video-recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-recording.js","sourceRoot":"","sources":["../../../src/commands/video-recording.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { NativeSimctl } from '../native-simctl.js';
3
+ import type { VideoAccessUnit, VideoStreamOptions } from '../types.js';
4
+ declare module '../native-simctl.js' {
5
+ interface NativeSimctl {
6
+ startVideoStream(udid: string, options?: VideoStreamOptions): Promise<VideoStream>;
7
+ }
8
+ }
9
+ export declare const MAX_BUFFERED_UNITS = 60;
10
+ /**
11
+ * Single-consumer FIFO between native's per-frame callback and `accessUnits()`. Unlike routing
12
+ * through `EventEmitter`, a unit pushed before any consumer has started iterating is retained
13
+ * (fixing the encoder's own first-frame/keyframe otherwise being lost to a startup race) rather
14
+ * than silently dropped.
15
+ *
16
+ * Bounded at `MAX_BUFFERED_UNITS`, but resync-aware about *how* it sheds load once a slow consumer
17
+ * falls behind: since interframes only reference earlier frames they were encoded against (no
18
+ * `AllowFrameReordering`), dropping an arbitrary one would orphan every later one from its
19
+ * reference chain, corrupting decode from that point on even though delivery looks unbroken.
20
+ * Overflow instead clears the backlog entirely and enters a resync state — `dropsDuringResync`
21
+ * decides which further units to discard (not buffer) until `endsResync` sees a self-decodable
22
+ * point to resume clean delivery from. Generic (not hardcoded to video's own reference-chain
23
+ * concern) so `VideoStream` can reuse this same machinery when it's carrying interleaved audio
24
+ * too (`VideoStreamOptions.audio`) — an audio unit is always independently decodable, so it's
25
+ * configured to never be dropped and never itself end a resync; only video interframes are.
26
+ */
27
+ export declare class AccessUnitQueue<T> {
28
+ private readonly opts;
29
+ private readonly buffer;
30
+ private waiter;
31
+ private ended;
32
+ private error;
33
+ private resyncing;
34
+ constructor(opts: {
35
+ /** Whether `unit` should be discarded (not buffered) while resyncing. */
36
+ dropsDuringResync: (unit: T) => boolean;
37
+ /** Whether `unit` is a self-decodable point resync can resume clean delivery from. */
38
+ endsResync: (unit: T) => boolean;
39
+ /** Called once when overflow first forces a resync, e.g. to request a fresh keyframe. */
40
+ onOverflow?: () => void;
41
+ });
42
+ push(unit: T): void;
43
+ /** Ends the queue with an error — any pending or future `next()` rejects with it. */
44
+ fail(err: unknown): void;
45
+ /** Ends the queue cleanly — any pending or future `next()` resolves `done`. */
46
+ end(): void;
47
+ /**
48
+ * Resolves `done` (not rejects) if `signal` aborts while waiting, mirroring `events.on()`.
49
+ * Checks cancellation/end *before* dequeuing, so an already-aborted signal or an already-ended
50
+ * queue never hands out a stale buffered unit — an aborted consumer, or a fresh iterator started
51
+ * after `stop()`, must see the boundary immediately rather than draining leftovers first.
52
+ */
53
+ next(signal: AbortSignal): Promise<IteratorResult<T>>;
54
+ }
55
+ /**
56
+ * A live video stream from `NativeSimctl.startVideoStream` — encodes the device's display (and,
57
+ * with `options.audio`, its audio too — see {@link VideoStreamOptions}) in real time via
58
+ * VideoToolbox/Core Audio, unlike `startVideoRecording`, which drives CoreSimulator's own private,
59
+ * file-only recorder. Mirrors `appium-ios-remotexpc`'s `ScreenStreamCapture` shape
60
+ * (`accessUnits()`/`stop()`) for API consistency; the transport is otherwise unrelated.
61
+ */
62
+ export declare class VideoStream extends EventEmitter {
63
+ readonly codec: 'h264' | 'hevc';
64
+ private handle;
65
+ private readonly stopController;
66
+ private stopPromise;
67
+ private readonly queue;
68
+ private activeConsumers;
69
+ /**
70
+ * Yields each encoded access unit as it's produced, until {@link stop} is called or the stream
71
+ * errors (in which case the error is thrown out of the loop). Pass `signal` to stop iterating
72
+ * without treating that as an error. Mirrors `ScreenStreamCapture.accessUnits()`'s shape.
73
+ *
74
+ * Only one active consumer is supported at a time — a second concurrent call rejects rather
75
+ * than silently sharing (and corrupting) the first one's single internal waiter slot.
76
+ */
77
+ accessUnits(signal?: AbortSignal): AsyncGenerator<VideoAccessUnit>;
78
+ /** Stops the stream and releases the underlying encoder. Idempotent, including concurrently. */
79
+ stop(): Promise<void>;
80
+ }
81
+ /**
82
+ * Starts encoding the device's display (and, with `options.audio`, its audio) in real time.
83
+ * Resolves once the encoder(s) have actually started; the returned {@link VideoStream}'s
84
+ * `accessUnits()` then yields each unit as it arrives. Independent of
85
+ * `startVideoRecording`/`stopVideoRecording` — both, and any number of concurrent streams, can
86
+ * run on the same device at once.
87
+ *
88
+ * @param udid — UDID of the device to stream; must be booted
89
+ * @param options — `displayId`, `codec`, `fps`, `bitrate`, `audio` — see {@link VideoStreamOptions}
90
+ */
91
+ export declare function startVideoStream(this: NativeSimctl, udid: string, options?: VideoStreamOptions): Promise<VideoStream>;
92
+ //# sourceMappingURL=video-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-stream.d.ts","sourceRoot":"","sources":["../../../src/commands/video-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAIzC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAA0B,eAAe,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAG9F,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;KACpF;CACF;AASD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAKrC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe,CAAC,CAAC;IAQ1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,MAAM,CAA6F;IAC3G,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAS;gBAGP,IAAI,EAAE;QACrB,yEAAyE;QACzE,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;QACxC,sFAAsF;QACtF,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;QACjC,yFAAyF;QACzF,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;KACzB;IAGH,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IA0BnB,qFAAqF;IACrF,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAcxB,+EAA+E;IAC/E,GAAG,IAAI,IAAI;IAaX;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CA6BtD;AAED;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,YAAY;aAiBf,KAAK,EAAE,MAAM,GAAG,MAAM;IAhBlD,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,WAAW,CAA4B;IAM/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAInB;IACH,OAAO,CAAC,eAAe,CAAK;IAiC5B;;;;;;;OAOG;IACI,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC;IAmBzE,gGAAgG;IAC1F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAuBtB"}