agent-device 0.20.9 → 0.21.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.
Files changed (492) hide show
  1. package/README.md +2 -2
  2. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.20.9.apk → agent-device-android-ime-helper-0.21.0.apk} +0 -0
  3. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.0.apk.sha256 +1 -0
  4. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.20.9.manifest.json → agent-device-android-ime-helper-0.21.0.manifest.json} +4 -4
  5. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.0.apk +0 -0
  6. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.0.apk.sha256 +1 -0
  7. package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.20.9.manifest.json → agent-device-android-snapshot-helper-0.21.0.manifest.json} +6 -6
  8. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/AudioProbe.swift +35 -33
  9. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/main.swift +6 -1
  10. package/apple/snapshot-bridge/LICENSE.idb +23 -0
  11. package/apple/snapshot-bridge/README.md +49 -0
  12. package/apple/snapshot-bridge/SnapshotBridge.m +280 -0
  13. package/apple/snapshot-bridge/SnapshotBridgeRuntime.h +33 -0
  14. package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +382 -0
  15. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/AgentDeviceRunnerApp.m +58 -0
  16. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner.xcodeproj/project.pbxproj +19 -0
  17. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAlertVerification.swift +36 -0
  18. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerStringNormalization.swift +8 -0
  19. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.h +12 -1
  20. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.m +100 -6
  21. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTapPointPolicy.swift +2 -2
  22. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +21 -12
  23. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Alert.swift +21 -88
  24. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AlertObservation.swift +124 -0
  25. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +110 -107
  26. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +6 -14
  27. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +85 -114
  28. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +13 -6
  29. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +72 -175
  30. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Navigation.swift +10 -11
  31. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXElementTypes.swift +12 -0
  32. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +78 -64
  33. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScreenRecorder.swift +17 -9
  34. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollGesture.swift +47 -13
  35. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +232 -438
  36. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotBackendCapabilities.swift +98 -0
  37. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +229 -168
  38. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotPresentationInvariant.swift +19 -0
  39. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTiming.swift +110 -0
  40. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedCommitDeadline.swift +206 -0
  41. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift +147 -25
  42. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +21 -18
  43. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +24 -307
  44. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +206 -0
  45. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryReadiness.swift +158 -0
  46. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextInputCandidatePolicy.swift +19 -0
  47. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +49 -16
  48. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +2 -11
  49. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TvRemote.swift +4 -19
  50. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +16 -20
  51. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/RecordingExportSupport.swift +111 -0
  52. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-overlay.swift +42 -81
  53. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-trim.swift +35 -82
  54. package/dist/apple/snapshot-presentation/Package.swift +21 -0
  55. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotGeometry.swift +56 -0
  56. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotModels.swift +259 -0
  57. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentation.swift +153 -0
  58. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationFailure.swift +27 -0
  59. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationInvariant.swift +91 -0
  60. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationProjection.swift +161 -0
  61. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotScopePolicy.swift +53 -0
  62. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFold.swift +242 -0
  63. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFoldProjection.swift +97 -0
  64. package/dist/src/adapter.js +1 -0
  65. package/dist/src/adb-executor.js +2 -0
  66. package/dist/src/adb-failure.js +1 -0
  67. package/dist/src/adb-host.js +1 -0
  68. package/dist/src/adb.js +1 -0
  69. package/dist/src/agent-browser-lifecycle.js +1 -0
  70. package/dist/src/agent-browser-process-record.js +1 -0
  71. package/dist/src/agent-browser-provider.js +1 -0
  72. package/dist/src/agent-browser-tool.js +1 -1
  73. package/dist/src/agent-device-client.js +2 -2
  74. package/dist/src/ai-sdk.d.ts +61 -0
  75. package/dist/src/ai-sdk.js +1 -0
  76. package/dist/src/alert-contract.js +1 -0
  77. package/dist/src/alert-runtime.js +1 -0
  78. package/dist/src/android-adb.d.ts +27 -19
  79. package/dist/src/android-adb.js +1 -1
  80. package/dist/src/android-input-ownership.js +1 -0
  81. package/dist/src/android-system-chrome.js +1 -0
  82. package/dist/src/android.js +1 -1
  83. package/dist/src/api.js +11 -0
  84. package/dist/src/app-catalog.js +1 -0
  85. package/dist/src/app-deployment-resolution.js +2 -0
  86. package/dist/src/app-helpers.js +1 -1
  87. package/dist/src/app-inventory-contract.js +1 -0
  88. package/dist/src/app-inventory.js +1 -0
  89. package/dist/src/app-launch.js +2 -0
  90. package/dist/src/app-lifecycle-facade.js +1 -0
  91. package/dist/src/app-lifecycle.js +3 -6
  92. package/dist/src/app-lifecycle2.js +2 -2
  93. package/dist/src/app-lifecycle3.js +1 -0
  94. package/dist/src/app-log-files.js +1 -1
  95. package/dist/src/app-log-reconnect.js +1 -1
  96. package/dist/src/app-log-runtime.js +1 -4
  97. package/dist/src/app-log-runtime2.js +4 -0
  98. package/dist/src/app-parsers.js +4 -0
  99. package/dist/src/app-resolution-cache.js +1 -0
  100. package/dist/src/app-resolution-facade.js +1 -0
  101. package/dist/src/app-resolution.js +2 -2
  102. package/dist/src/app-state.js +1 -2
  103. package/dist/src/application-lifecycle-interaction.js +1 -0
  104. package/dist/src/application-lifecycle-runtime.js +1 -0
  105. package/dist/src/apps-simctl.js +1 -0
  106. package/dist/src/archive.js +4 -0
  107. package/dist/src/artifact-download.js +1 -0
  108. package/dist/src/artifacts.d.ts +6 -2
  109. package/dist/src/artifacts.js +1 -1
  110. package/dist/src/async-lifecycle.js +1 -0
  111. package/dist/src/audio-probe-result.js +1 -0
  112. package/dist/src/audio-probe-runtime.js +1 -0
  113. package/dist/src/audio-probe-support.js +1 -0
  114. package/dist/src/auth-session.js +1 -1
  115. package/dist/src/auth.js +1 -1
  116. package/dist/src/back-mode.js +1 -0
  117. package/dist/src/{url.js → base-url.js} +1 -1
  118. package/dist/src/boot-diagnostics.js +2 -2
  119. package/dist/src/byte-limit-stream.js +1 -1
  120. package/dist/src/capabilities.js +1 -0
  121. package/dist/src/capture.js +1 -0
  122. package/dist/src/catalog.js +1 -0
  123. package/dist/src/cli-command-aliases.js +1 -0
  124. package/dist/src/cli-config.js +1 -1
  125. package/dist/src/cli-help.js +77 -51
  126. package/dist/src/cli-output.js +1 -1
  127. package/dist/src/cli-runner.js +1 -1
  128. package/dist/src/cli.js +5 -7
  129. package/dist/src/click-button.js +1 -0
  130. package/dist/src/client-metro-companion.js +1 -0
  131. package/dist/src/client-metro.js +1 -1
  132. package/dist/src/client-types.d.ts +1606 -0
  133. package/dist/src/clipboard.js +1 -0
  134. package/dist/src/code-signature-cache.js +1 -0
  135. package/dist/src/code-signature.js +1 -0
  136. package/dist/src/color.js +1 -0
  137. package/dist/src/command-metadata.js +1 -1
  138. package/dist/src/command-schema.js +3 -3
  139. package/dist/src/command-surface.js +1 -1
  140. package/dist/src/command-tools.js +2 -0
  141. package/dist/src/command.js +1 -0
  142. package/dist/src/{selector-vocabulary.js → compatibility-policy.js} +1 -1
  143. package/dist/src/config.js +1 -1
  144. package/dist/src/config2.js +1 -0
  145. package/dist/src/connection-runtime.js +1 -1
  146. package/dist/src/connection.js +5 -5
  147. package/dist/src/contracts.d.ts +1 -1
  148. package/dist/src/contracts.js +1 -1
  149. package/dist/src/daemon-client-lifecycle.js +1 -0
  150. package/dist/src/daemon-process.js +1 -0
  151. package/dist/src/daemon-registration.js +1 -0
  152. package/dist/src/daemon-shutdown-report.js +1 -1
  153. package/dist/src/daemon.js +2 -2
  154. package/dist/src/debug-symbols-facade.js +5 -0
  155. package/dist/src/deploy-result-target.js +1 -0
  156. package/dist/src/device-claim-inspection.js +1 -1
  157. package/dist/src/device-claim-rule.js +1 -0
  158. package/dist/src/device-input-state.d.ts +190 -3
  159. package/dist/src/device-inventory-context.js +1 -0
  160. package/dist/src/device-isolation.js +1 -0
  161. package/dist/src/device-release.js +1 -0
  162. package/dist/src/device-rotation.js +1 -0
  163. package/dist/src/device-selection-resolver.js +1 -0
  164. package/dist/src/device-session.js +1 -0
  165. package/dist/src/device.js +1 -1
  166. package/dist/src/device2.js +3 -2
  167. package/dist/src/diagnostics.js +3 -0
  168. package/dist/src/diagnostics2.js +1 -0
  169. package/dist/src/dispatch-resolve.js +1 -0
  170. package/dist/src/doctor-facade.js +1 -0
  171. package/dist/src/doctor-output.js +1 -0
  172. package/dist/src/doctor.js +1 -0
  173. package/dist/src/doctor2.js +1 -0
  174. package/dist/src/doctor3.js +1 -0
  175. package/dist/src/durable-resource.js +1 -0
  176. package/dist/src/entities.js +1 -1
  177. package/dist/src/error.js +2 -0
  178. package/dist/src/exec.js +1 -0
  179. package/dist/src/file.js +1 -0
  180. package/dist/src/find.js +1 -1
  181. package/dist/src/finders.js +1 -1
  182. package/dist/src/format.js +2 -0
  183. package/dist/src/generic-settle.js +1 -1
  184. package/dist/src/generic.js +1 -1
  185. package/dist/src/gesture-admission.js +1 -0
  186. package/dist/src/gesture-plan-types.js +1 -0
  187. package/dist/src/gesture-plan.js +1 -0
  188. package/dist/src/gesture-runtime.js +1 -0
  189. package/dist/src/harmonyos.js +1 -1
  190. package/dist/src/hdc.js +1 -1
  191. package/dist/src/helper.js +2 -2
  192. package/dist/src/host-file.js +1 -0
  193. package/dist/src/human-control-contract.js +1 -0
  194. package/dist/src/human-control.js +1 -0
  195. package/dist/src/index.d.ts +2 -1578
  196. package/dist/src/index.js +1 -1
  197. package/dist/src/input-actions.js +1 -4
  198. package/dist/src/input-actions2.js +2 -1
  199. package/dist/src/install-artifact-facade.js +1 -0
  200. package/dist/src/install-source-network-transport.js +1 -0
  201. package/dist/src/install-source.d.ts +3 -10
  202. package/dist/src/install-source2.js +1 -1
  203. package/dist/src/interaction-positionals.js +1 -0
  204. package/dist/src/interaction-ref-policy.js +1 -0
  205. package/dist/src/interaction.js +1 -1
  206. package/dist/src/interaction2.js +1 -1
  207. package/dist/src/interactor-operation-catalog.js +1 -0
  208. package/dist/src/interactor-types.js +1 -0
  209. package/dist/src/interactor.js +6 -2
  210. package/dist/src/interactor2.js +1 -1
  211. package/dist/src/interactors.js +1 -1
  212. package/dist/src/internal/bin.d.ts +1 -1
  213. package/dist/src/internal/bin.js +1 -2
  214. package/dist/src/internal/companion-tunnel.d.ts +1 -1
  215. package/dist/src/internal/companion-tunnel.js +1 -1
  216. package/dist/src/internal/daemon.d.ts +1 -1
  217. package/dist/src/internal/daemon.js +2 -4
  218. package/dist/src/internal/png-worker.d.ts +4 -4
  219. package/dist/src/internal/png-worker.js +1 -1
  220. package/dist/src/internal/run-script-http-child.d.ts +4 -0
  221. package/dist/src/internal/run-script-http-child.js +1 -0
  222. package/dist/src/internal/update-check-entry.d.ts +1 -1
  223. package/dist/src/inventory.js +4 -4
  224. package/dist/src/inventory2.js +1 -1
  225. package/dist/src/inventory3.js +1 -1
  226. package/dist/src/inventory5.js +1 -1
  227. package/dist/src/inventory6.js +1 -1
  228. package/dist/src/ios-client.js +16 -0
  229. package/dist/src/ios-snapshot-acquisition.js +1 -0
  230. package/dist/src/ios-snapshot-adapter.js +1 -0
  231. package/dist/src/ios-snapshot-planning.js +1 -0
  232. package/dist/src/ios-snapshot-runtime.js +1 -0
  233. package/dist/src/json.js +1 -0
  234. package/dist/src/keyboard-actions.js +1 -0
  235. package/dist/src/launch-console.js +1 -0
  236. package/dist/src/lease-context.js +1 -1
  237. package/dist/src/lease-scope.js +1 -0
  238. package/dist/src/lease.js +1 -1
  239. package/dist/src/limrun-runtime-dependencies.js +1 -1
  240. package/dist/src/limrun.d.ts +1618 -7
  241. package/dist/src/limrun.js +1 -1
  242. package/dist/src/linux.js +1 -1
  243. package/dist/src/local-interactor-operation-set.js +1 -0
  244. package/dist/src/location-coordinates.js +1 -1
  245. package/dist/src/logcat.js +1 -1
  246. package/dist/src/macos-facade.js +1 -0
  247. package/dist/src/managed-device-scope.js +1 -0
  248. package/dist/src/mechanics.js +19 -0
  249. package/dist/src/metro.d.ts +4 -2
  250. package/dist/src/metro.js +1 -1
  251. package/dist/src/metro2.js +1 -1
  252. package/dist/src/mobile-snapshot-semantics.js +1 -0
  253. package/dist/src/multitouch-support.js +1 -0
  254. package/dist/src/numeric.js +1 -0
  255. package/dist/src/observability.js +1 -1
  256. package/dist/src/observation.js +2 -0
  257. package/dist/src/output-path.js +1 -1
  258. package/dist/src/owner-identity.js +3 -1
  259. package/dist/src/parameterized-recorded-fill.js +1 -0
  260. package/dist/src/parser.js +1 -1
  261. package/dist/src/perf-facade.js +2 -0
  262. package/dist/src/perf-runtime-operation-builder.js +1 -0
  263. package/dist/src/perf-runtime-plan.js +1 -0
  264. package/dist/src/perf-runtime.js +1 -0
  265. package/dist/src/perf.js +1 -4
  266. package/dist/src/physical-device-control.js +1 -1
  267. package/dist/src/physical-device-facade.js +1 -0
  268. package/dist/src/platform-request-scope.js +1 -0
  269. package/dist/src/platform-runtime-android-adb-host.js +1 -0
  270. package/dist/src/platform-runtime-android-mechanics.js +1 -0
  271. package/dist/src/platform-runtime-app-log-android-transport.js +1 -1
  272. package/dist/src/platform-runtime-app-log-process.js +1 -1
  273. package/dist/src/platform-runtime-apple-resources.js +1 -0
  274. package/dist/src/platform-runtime-host.js +1 -1
  275. package/dist/src/platform-runtime-managed-owner.js +1 -0
  276. package/dist/src/platform-runtime-network-web-transport.js +1 -1
  277. package/dist/src/platform-runtime-open-target.js +1 -1
  278. package/dist/src/platform-runtime-operation-host.js +4 -4
  279. package/dist/src/platform-runtime-runtime-hints.js +2 -2
  280. package/dist/src/platform-runtime-screen-recording-android-host.js +1 -1
  281. package/dist/src/platform-runtime-screen-recording-apple-runner-host.js +1 -1
  282. package/dist/src/platform-runtime-screen-recording-apple-runner-transport.js +1 -1
  283. package/dist/src/platform-runtime-screen-recording-apple-simulator-host.js +1 -1
  284. package/dist/src/platform-runtime-screen-recording-apple-transport.js +1 -1
  285. package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
  286. package/dist/src/platform-runtime-screen-recording-harmony-host.js +1 -1
  287. package/dist/src/platform-runtime-screen-recording-process-host.js +1 -0
  288. package/dist/src/platform-runtime-screen-recording-web-host.js +1 -1
  289. package/dist/src/platform-runtime-unavailable.js +1 -0
  290. package/dist/src/platform-runtime.js +1 -1
  291. package/dist/src/platform-runtime2.js +1 -1
  292. package/dist/src/plist.js +1 -1
  293. package/dist/src/png-worker-contract.js +1 -1
  294. package/dist/src/prepare-kind.js +1 -15
  295. package/dist/src/process-exit.js +1 -1
  296. package/dist/src/process.js +1 -0
  297. package/dist/src/provider-device-runtime.js +1 -0
  298. package/dist/src/provider-session-ownership.js +2 -0
  299. package/dist/src/provider-webdriver.js +1 -1
  300. package/dist/src/provider.js +1 -1
  301. package/dist/src/providers.js +1 -0
  302. package/dist/src/proxy.js +2 -2
  303. package/dist/src/react-native-overlay.js +1 -0
  304. package/dist/src/react-native.js +1 -1
  305. package/dist/src/record-runtime.js +1 -1
  306. package/dist/src/record-trace.js +1 -1
  307. package/dist/src/rect-center.js +1 -0
  308. package/dist/src/register-builtins.js +1 -0
  309. package/dist/src/registry.js +39 -28
  310. package/dist/src/remote-config2.js +1 -1
  311. package/dist/src/replay-divergence.js +2 -0
  312. package/dist/src/replay.js +2 -2
  313. package/dist/src/reporting.js +8 -8
  314. package/dist/src/request-admission.js +1 -0
  315. package/dist/src/request-cancel.js +1 -0
  316. package/dist/src/request-cancellation.js +1 -0
  317. package/dist/src/request-progress-protocol.js +1 -0
  318. package/dist/src/request-providers.js +1 -0
  319. package/dist/src/request-runtime-binding.js +1 -0
  320. package/dist/src/request.js +1 -0
  321. package/dist/src/result-serialization.js +1 -0
  322. package/dist/src/retry.js +1 -0
  323. package/dist/src/rolldown-runtime.js +1 -1
  324. package/dist/src/runner-cache-metadata.js +2 -0
  325. package/dist/src/runner-client.js +1 -1
  326. package/dist/src/runner-disposal.js +1 -1
  327. package/dist/src/runner-operations-facade.js +1 -0
  328. package/dist/src/runner-owner-facade.js +1 -0
  329. package/dist/src/runner-owner-state.js +1 -0
  330. package/dist/src/runner-presentation.js +1 -0
  331. package/dist/src/runner-selector-query.js +1 -0
  332. package/dist/src/runner.js +1 -0
  333. package/dist/src/{runtime-transport.js → runtime-transport-hints.js} +1 -1
  334. package/dist/src/runtime.js +3 -3
  335. package/dist/src/runtime2.js +4 -4
  336. package/dist/src/runtime3.js +1 -1
  337. package/dist/src/runtime4.js +4 -3
  338. package/dist/src/runtime5.js +1 -1
  339. package/dist/src/runtime6.js +1 -1
  340. package/dist/src/runtime7.js +1 -1
  341. package/dist/src/runtime8.js +1 -1
  342. package/dist/src/runtime9.js +1 -1
  343. package/dist/src/scoped-provider.js +1 -1
  344. package/dist/src/screen-recording-completion.js +1 -0
  345. package/dist/src/screen-recording-live-handle.js +1 -0
  346. package/dist/src/screen-recording-options.js +1 -0
  347. package/dist/src/screen-recording-resource-recovery.js +1 -0
  348. package/dist/src/screen-recording-runtime.js +1 -0
  349. package/dist/src/screenshot-density.js +1 -1
  350. package/dist/src/screenshot-result.js +1 -6
  351. package/dist/src/screenshot-runtime.js +1 -0
  352. package/dist/src/screenshot.js +1 -1
  353. package/dist/src/screenshot2.js +1 -0
  354. package/dist/src/screenshot3.js +5 -0
  355. package/dist/src/script.js +1 -0
  356. package/dist/src/scroll-command.js +1 -0
  357. package/dist/src/scroll-gesture.js +1 -0
  358. package/dist/src/scroll-indicator.js +1 -0
  359. package/dist/src/sdk-batch-runner.d.ts +23 -6
  360. package/dist/src/sdk-batch-runner.js +2 -3
  361. package/dist/src/sdk-batch.js +2 -0
  362. package/dist/src/sdk-contracts.d.ts +222 -99
  363. package/dist/src/sdk-contracts.js +2 -2
  364. package/dist/src/sdk-device.js +1 -1
  365. package/dist/src/sdk-finders.d.ts +1 -1
  366. package/dist/src/sdk-finders.js +1 -1
  367. package/dist/src/sdk-io.js +1 -1
  368. package/dist/src/sdk-remote-config.d.ts +1 -1
  369. package/dist/src/sdk-remote-config.js +1 -1
  370. package/dist/src/sdk-selectors.d.ts +539 -199
  371. package/dist/src/sdk-selectors.js +1 -1
  372. package/dist/src/selection.js +1 -0
  373. package/dist/src/selector-runtime.js +1 -1
  374. package/dist/src/selectors.js +1 -1
  375. package/dist/src/semantic-index.js +1 -0
  376. package/dist/src/server.js +10 -3
  377. package/dist/src/session-allocation.js +1 -0
  378. package/dist/src/session-artifact-paths.js +1 -0
  379. package/dist/src/session-paths.js +1 -0
  380. package/dist/src/session-repair-tombstone.js +1 -0
  381. package/dist/src/session-routing.js +1 -0
  382. package/dist/src/session-runtime-admission.js +1 -0
  383. package/dist/src/session-snapshot.js +1 -0
  384. package/dist/src/session-store.js +4 -0
  385. package/dist/src/session-target-evidence.js +1 -1
  386. package/dist/src/session2.js +5 -28
  387. package/dist/src/settings.js +1 -0
  388. package/dist/src/shared.js +2 -2
  389. package/dist/src/simctl-facade.js +1 -0
  390. package/dist/src/simctl.js +1 -1
  391. package/dist/src/simulator-facade.js +1 -0
  392. package/dist/src/simulator.js +1 -1
  393. package/dist/src/snapshot-capture-annotations.js +1 -0
  394. package/dist/src/snapshot-desktop-projection.js +1 -0
  395. package/dist/src/snapshot-diagnostics.js +1 -0
  396. package/dist/src/snapshot-process.js +1 -0
  397. package/dist/src/snapshot-quality-backend-capabilities.js +1 -0
  398. package/dist/src/snapshot-quality-verdict.js +1 -0
  399. package/dist/src/snapshot-runtime-binding.js +1 -0
  400. package/dist/src/snapshot-runtime.js +1 -1
  401. package/dist/src/snapshot-scope.js +1 -0
  402. package/dist/src/snapshot-state.js +1 -0
  403. package/dist/src/snapshot.js +1 -8
  404. package/dist/src/snapshot2.js +1 -1
  405. package/dist/src/snapshot3.js +1 -1
  406. package/dist/src/snapshot4.js +1 -0
  407. package/dist/src/src.js +1 -1
  408. package/dist/src/src2.js +1 -1
  409. package/dist/src/src3.js +1 -2
  410. package/dist/src/src4.js +1 -0
  411. package/dist/src/src5.js +1 -0
  412. package/dist/src/src6.js +1 -0
  413. package/dist/src/src7.js +2 -0
  414. package/dist/src/src8.js +115 -0
  415. package/dist/src/startup-recovery-fence.js +1 -0
  416. package/dist/src/status-markers.js +1 -0
  417. package/dist/src/string-enum.js +1 -1
  418. package/dist/src/success-text.js +1 -0
  419. package/dist/src/surface-snapshot.js +1 -0
  420. package/dist/src/surface-snapshot2.js +1 -0
  421. package/dist/src/takeover.js +5 -0
  422. package/dist/src/tool-provider-facade.js +1 -0
  423. package/dist/src/tool-provider.js +4 -3
  424. package/dist/src/tool-provider2.js +1 -1
  425. package/dist/src/tool-provider3.js +1 -0
  426. package/dist/src/toolchain-probe.js +2 -0
  427. package/dist/src/touch-runtime.js +1 -0
  428. package/dist/src/transport.js +3 -0
  429. package/dist/src/tree.js +1 -0
  430. package/dist/src/ttl-memo.js +1 -0
  431. package/dist/src/tv-remote.js +1 -0
  432. package/dist/src/type-text-runtime.js +1 -0
  433. package/dist/src/undici.js +99 -0
  434. package/dist/src/update-check.js +1 -1
  435. package/dist/src/verified-file.js +1 -1
  436. package/dist/src/version.js +1 -1
  437. package/dist/src/video.js +2 -2
  438. package/dist/src/web.js +2 -1
  439. package/dist/src/web2.js +1 -0
  440. package/dist/src/webdriver-ios-snapshot.js +1 -0
  441. package/dist/src/webdriver-source.js +1 -0
  442. package/linux/atspi-dump.py +54 -9
  443. package/package.json +73 -38
  444. package/server.json +9 -3
  445. package/android/ime-helper/dist/agent-device-android-ime-helper-0.20.9.apk.sha256 +0 -1
  446. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.20.9.apk +0 -0
  447. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.20.9.apk.sha256 +0 -1
  448. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CoordinateTextEntryTests.swift +0 -4
  449. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+FlatSnapshotFiltering.swift +0 -75
  450. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+LifecycleCacheTests.swift +0 -6
  451. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+RecordingTests.swift +0 -4
  452. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SelectorMatchPolicyTests.swift +0 -4
  453. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTraversalIdentityTests.swift +0 -4
  454. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryPolicyTests.swift +0 -4
  455. package/dist/src/appearance.js +0 -1
  456. package/dist/src/apps.js +0 -5
  457. package/dist/src/audio-probe.js +0 -1
  458. package/dist/src/cancel.js +0 -1
  459. package/dist/src/cli-grammar.js +0 -1
  460. package/dist/src/command-catalog.js +0 -1
  461. package/dist/src/debug-symbols.js +0 -5
  462. package/dist/src/device-input-state.js +0 -2
  463. package/dist/src/device-ready.js +0 -1
  464. package/dist/src/dispatch.js +0 -1
  465. package/dist/src/handler-utils.js +0 -1
  466. package/dist/src/helper-package-install.js +0 -1
  467. package/dist/src/host-process.js +0 -3
  468. package/dist/src/ime-lifecycle.js +0 -2
  469. package/dist/src/ime-recovery-marker.js +0 -1
  470. package/dist/src/input-actions3.js +0 -1
  471. package/dist/src/install-artifact.js +0 -1
  472. package/dist/src/install-artifact2.js +0 -1
  473. package/dist/src/interaction-common.js +0 -1
  474. package/dist/src/interaction-runtime.js +0 -1
  475. package/dist/src/interaction-snapshot.js +0 -1
  476. package/dist/src/manifest.js +0 -1
  477. package/dist/src/method-scope.js +0 -1
  478. package/dist/src/png-resize.js +0 -1
  479. package/dist/src/process-lock.js +0 -1
  480. package/dist/src/runner-lease.js +0 -1
  481. package/dist/src/runner-sequence.js +0 -1
  482. package/dist/src/screenshot-geometry.js +0 -1
  483. package/dist/src/sdk-android-adb.d.ts +0 -245
  484. package/dist/src/sdk-android-adb.js +0 -4
  485. package/dist/src/sdk.js +0 -1
  486. package/dist/src/setting-state.js +0 -1
  487. package/dist/src/shell-quote.js +0 -1
  488. package/dist/src/snapshot-session.js +0 -1
  489. package/dist/src/timing-safe-equal.js +0 -1
  490. package/dist/src/unsupported-interactor.js +0 -1
  491. package/dist/src/verdict.js +0 -1
  492. /package/dist/src/{recording-telemetry.js → telemetry.js} +0 -0
@@ -1 +1 @@
1
- import{t as e}from"./shell-quote.js";import{t}from"./video.js";import n from"node:path";const r={medium:8e6,high:2e7};async function i(i){let{resolveAndroidAdbExecutor:o,resolveScopedAndroidAdbBackgroundTransport:s}=await import(`./sdk-android-adb.js`).then(e=>e.t),c=o(i),l=s(i),u=async(e,t)=>await c([`shell`,e],{allowFailure:!0,timeoutMs:5e3,signal:t});return Object.freeze({mode:l.mode,start:async({remotePath:t,quality:n=`medium`},i)=>{let o=(await u(`screenrecord --bit-rate ${r[n]} ${e(t)} >/dev/null 2>&1 & echo $!`,i)).stdout.split(/\s+/).find(e=>/^\d+$/.test(e));if(!o)throw Error(`Android screenrecord did not return a process id`);let s=await a(u,{pid:o,remotePath:t,startTime:``},i);if(s.status!==`owned-alive`||!s.process)throw Error(`Android screenrecord did not expose a complete process identity`);return Object.freeze({process:s.process})},inspect:async(e,t)=>(await a(u,e,t)).status,stop:async(e,t,n)=>{let r=await a(u,e,n);return r.status===`missing`?`already-missing`:r.status===`owned-alive`?(await u(`kill ${t?.force?`-9 `:`-2 `}${e.pid}`,n)).exitCode===0?`stopped`:`uncertain`:r.status},exists:async(t,n)=>(await u(`test -e ${e(t)}`,n)).exitCode===0,size:async(t,n)=>{let r=await u(`test -e ${e(t)}`,n);if(r.exitCode!==0)return r.stderr.trim()===``?void 0:`uncertain`;let i=await u(`stat -c %s ${e(t)}`,n);if(i.exitCode!==0)return`uncertain`;let a=Number(i.stdout.trim());return Number.isSafeInteger(a)&&a>=0?a:`uncertain`},findRunning:async(e,t)=>{let n=await u(`ps -A -o pid=`,t);if(n.exitCode!==0)throw Error(`failed to enumerate Android screenrecord processes`);let r=n.stdout.split(/\s+/).filter(e=>/^\d+$/.test(e));return(await Promise.all(r.map(async n=>await a(u,{pid:n,remotePath:e,startTime:``},t)))).flatMap(e=>e.status===`owned-alive`&&e.process?[e.process]:[])},pullPlayable:async({remotePath:e,outputPath:n},r)=>{let i=await c([`pull`,e,n],{allowFailure:!0,signal:r});return{...i,playable:i.exitCode===0&&await t(n)}},remove:async(t,n)=>(await u(`rm -f ${e(t)}`,n)).exitCode===0,manifestPathFor:e=>`${n.posix.dirname(e)}/agent-device-recording-active.json`,readManifest:async(t,n)=>{let r=await u(`test -e ${e(t)}`,n);if(r.exitCode!==0)return r.exitCode===1&&r.stderr.trim()===``?{status:`missing`}:{status:`unavailable`,message:r.stderr.trim()||`Android recording manifest probe failed`};let i=await u(`cat ${e(t)}`,n);return i.exitCode===0?{status:`read`,contents:i.stdout}:{status:`unavailable`,message:i.stderr.trim()||`Android recording manifest could not be read`}},writeManifest:async({manifestPath:t,contents:n},r)=>{let i=`${t}.tmp`;if((await u(`printf %s ${e(n)} > ${e(i)} && mv -f ${e(i)} ${e(t)}`,r)).exitCode!==0)throw Error(`failed to write Android recording manifest`)},removeManifest:async(t,n)=>(await u(`rm -f ${e(t)}`,n)).exitCode===0})}async function a(e,t,n){let r=await o(e,t.pid,n);if(r!==`present`)return{status:r};let i=await e(`cat /proc/${t.pid}/stat`,n);if(i.exitCode!==0)return{status:`uncertain`};let a=c(i.stdout);if(!a)return{status:`uncertain`};let l=await e(`cat /proc/${t.pid}/cmdline`,n);return l.exitCode===0?!s(l.stdout,t.remotePath)||t.startTime.length>0&&t.startTime!==a?{status:`ownership-lost`}:{status:`owned-alive`,process:Object.freeze({pid:t.pid,remotePath:t.remotePath,startTime:a})}:{status:`uncertain`}}async function o(e,t,n){let r=await e(`test -d /proc/${t}`,n);return r.exitCode===0?`present`:r.exitCode===1&&r.stderr.trim()===``?`missing`:`uncertain`}function s(e,t){let r=e.split(`\0`).filter(e=>e.length>0),i=r[0];return i!==void 0&&n.posix.basename(i)===`screenrecord`&&r.at(-1)===t}function c(e){let t=e.lastIndexOf(`)`);if(t<0)return;let n=e.slice(t+1).trim().split(/\s+/)[19];return n&&/^\d+$/.test(n)?n:void 0}export{i as createAndroidScreenRecordingTransport};
1
+ import{n as e}from"./command.js";import{t}from"./platform-runtime-android-mechanics.js";import{t as n}from"./video.js";import r from"node:path";const i={medium:8e6,high:2e7};async function a(a){let{resolveAndroidAdbExecutor:s,resolveScopedAndroidAdbBackgroundTransport:c}=await t(),l=s(a),u=c(a),d=async(e,t)=>await l([`shell`,e],{allowFailure:!0,timeoutMs:5e3,signal:t});return Object.freeze({mode:u.mode,start:async({remotePath:t,quality:n=`medium`},r)=>{let a=(await d(`screenrecord --bit-rate ${i[n]} ${e(t)} >/dev/null 2>&1 & echo $!`,r)).stdout.split(/\s+/).find(e=>/^\d+$/.test(e));if(!a)throw Error(`Android screenrecord did not return a process id`);let s=await o(d,{pid:a,remotePath:t,startTime:``},r);if(s.status!==`owned-alive`||!s.process)throw Error(`Android screenrecord did not expose a complete process identity`);return Object.freeze({process:s.process})},inspect:async(e,t)=>(await o(d,e,t)).status,stop:async(e,t,n)=>{let r=await o(d,e,n);return r.status===`missing`?`already-missing`:r.status===`owned-alive`?(await d(`kill ${t?.force?`-9 `:`-2 `}${e.pid}`,n)).exitCode===0?`stopped`:`uncertain`:r.status},exists:async(t,n)=>(await d(`test -e ${e(t)}`,n)).exitCode===0,size:async(t,n)=>{let r=await d(`test -e ${e(t)}`,n);if(r.exitCode!==0)return r.stderr.trim()===``?void 0:`uncertain`;let i=await d(`stat -c %s ${e(t)}`,n);if(i.exitCode!==0)return`uncertain`;let a=Number(i.stdout.trim());return Number.isSafeInteger(a)&&a>=0?a:`uncertain`},findRunning:async(e,t)=>{let n=await d(`ps -A -o pid=`,t);if(n.exitCode!==0)throw Error(`failed to enumerate Android screenrecord processes`);let r=n.stdout.split(/\s+/).filter(e=>/^\d+$/.test(e));return(await Promise.all(r.map(async n=>await o(d,{pid:n,remotePath:e,startTime:``},t)))).flatMap(e=>e.status===`owned-alive`&&e.process?[e.process]:[])},pullPlayable:async({remotePath:e,outputPath:t},r)=>{let i=await l([`pull`,e,t],{allowFailure:!0,signal:r});return{...i,playable:i.exitCode===0&&await n(t)}},remove:async(t,n)=>(await d(`rm -f ${e(t)}`,n)).exitCode===0,manifestPathFor:e=>`${r.posix.dirname(e)}/agent-device-recording-active.json`,readManifest:async(t,n)=>{let r=await d(`test -e ${e(t)}`,n);if(r.exitCode!==0)return r.exitCode===1&&r.stderr.trim()===``?{status:`missing`}:{status:`unavailable`,message:r.stderr.trim()||`Android recording manifest probe failed`};let i=await d(`cat ${e(t)}`,n);return i.exitCode===0?{status:`read`,contents:i.stdout}:{status:`unavailable`,message:i.stderr.trim()||`Android recording manifest could not be read`}},writeManifest:async({manifestPath:t,contents:n},r)=>{let i=`${t}.tmp`;if((await d(`printf %s ${e(n)} > ${e(i)} && mv -f ${e(i)} ${e(t)}`,r)).exitCode!==0)throw Error(`failed to write Android recording manifest`)},removeManifest:async(t,n)=>(await d(`rm -f ${e(t)}`,n)).exitCode===0})}async function o(e,t,n){let r=await s(e,t.pid,n);if(r!==`present`)return{status:r};let i=await e(`cat /proc/${t.pid}/stat`,n);if(i.exitCode!==0)return{status:`uncertain`};let a=l(i.stdout);if(!a)return{status:`uncertain`};let o=await e(`cat /proc/${t.pid}/cmdline`,n);return o.exitCode===0?!c(o.stdout,t.remotePath)||t.startTime.length>0&&t.startTime!==a?{status:`ownership-lost`}:{status:`owned-alive`,process:Object.freeze({pid:t.pid,remotePath:t.remotePath,startTime:a})}:{status:`uncertain`}}async function s(e,t,n){let r=await e(`test -d /proc/${t}`,n);return r.exitCode===0?`present`:r.exitCode===1&&r.stderr.trim()===``?`missing`:`uncertain`}function c(e,t){let n=e.split(`\0`).filter(e=>e.length>0),i=n[0];return i!==void 0&&r.posix.basename(i)===`screenrecord`&&n.at(-1)===t}function l(e){let t=e.lastIndexOf(`)`);if(t<0)return;let n=e.slice(t+1).trim().split(/\s+/)[19];return n&&/^\d+$/.test(n)?n:void 0}export{a as createAndroidScreenRecordingTransport};
@@ -1 +1 @@
1
- async function e(e,t,n){let{resolveAppleRunnerScreenRecordingTransport:r}=await import(`./platform-runtime-screen-recording-apple-runner-transport.js`),i=r();if(t.kind===`stop`){if(i.authority!==t.runnerAuthority)throw Error(`Apple runner recording ownership changed before cleanup`);return await i.stop({device:e,runnerSessionId:t.runnerSessionId,appBundleId:t.appBundleId,signal:n}),{}}let a=await i.start({device:e,appBundleId:t.appBundleId,outputPath:t.outputPath,fps:t.fps,signal:n});return Object.freeze({runnerSessionId:a.runnerSessionId,runnerAuthority:i.authority,...a.remotePath===void 0?{}:{remotePath:a.remotePath},...typeof a.recorderStartUptimeMs==`number`?{recorderStartUptimeMs:a.recorderStartUptimeMs}:{},...typeof a.targetAppReadyUptimeMs==`number`?{targetAppReadyUptimeMs:a.targetAppReadyUptimeMs}:{}})}async function t(e,t,n){let{resolveAppleRunnerScreenRecordingTransport:r}=await import(`./platform-runtime-screen-recording-apple-runner-transport.js`),i=r();return i.authority===n?await i.inspect(e,t):`ownership-lost`}async function n(e,t,n,r){r?.throwIfAborted();let{resolveIosPhysicalDeviceControl:i}=await import(`./physical-device-control.js`).then(e=>e.t);await i(e).copyRunnerFile(e,t,n),r?.throwIfAborted()}async function r(e,t,n){try{let[r,i]=await Promise.all([import(`./platform-runtime-screen-recording-apple-transport.js`).then(e=>e.resolveAppleSimulatorScreenRecordingTransport()),import(`./platform-runtime-screen-recording-apple-runner-transport.js`).then(e=>e.resolveAppleRunnerScreenRecordingTransport())]);if(r.mode===`transport-composed`&&i.authority!==`scoped-provider`)return;let{runAppleRunnerCommand:a}=await import(`./runner-client.js`).then(e=>e.r),o=await a(e,{command:`snapshot`,appBundleId:t,interactiveOnly:!0,depth:1},{signal:n}),s=Date.now();return typeof o.currentUptimeMs==`number`&&Number.isFinite(o.currentUptimeMs)&&o.currentUptimeMs>0?{wallClockAtMs:s,uptimeMs:o.currentUptimeMs}:void 0}catch{n?.throwIfAborted();return}}async function i(e){let{IOS_RUNNER_CONTAINER_BUNDLE_IDS:t}=await import(`./runner-client.js`).then(e=>e.r);return t.includes(e)}export{r as captureAppleClockAnchor,t as inspectAppleRunnerOwnership,i as isAppleRunnerBundleId,n as retrieveAppleRunnerRecording,e as runAppleRecordingRunner};
1
+ async function e(e,t,n){let{resolveAppleRunnerScreenRecordingTransport:r}=await import(`./platform-runtime-screen-recording-apple-runner-transport.js`),i=r();if(t.kind===`stop`){if(i.authority!==t.runnerAuthority)throw Error(`Apple runner recording ownership changed before cleanup`);return await i.stop({device:e,runnerSessionId:t.runnerSessionId,appBundleId:t.appBundleId,signal:n}),{}}let a=await i.start({device:e,appBundleId:t.appBundleId,outputPath:t.outputPath,fps:t.fps,signal:n});return Object.freeze({runnerSessionId:a.runnerSessionId,runnerAuthority:i.authority,...a.remotePath===void 0?{}:{remotePath:a.remotePath},...typeof a.recorderStartUptimeMs==`number`?{recorderStartUptimeMs:a.recorderStartUptimeMs}:{},...typeof a.targetAppReadyUptimeMs==`number`?{targetAppReadyUptimeMs:a.targetAppReadyUptimeMs}:{}})}async function t(e,t,n){let{resolveAppleRunnerScreenRecordingTransport:r}=await import(`./platform-runtime-screen-recording-apple-runner-transport.js`),i=r();return i.authority===n?await i.inspect(e,t):`ownership-lost`}async function n(e,t,n,r){r?.throwIfAborted();let{resolveIosPhysicalDeviceControl:i}=await import(`./physical-device-facade.js`);await i(e).copyRunnerFile(e,t,n),r?.throwIfAborted()}async function r(e,t,n){try{let[r,i]=await Promise.all([import(`./platform-runtime-screen-recording-apple-transport.js`).then(e=>e.resolveAppleSimulatorScreenRecordingTransport()),import(`./platform-runtime-screen-recording-apple-runner-transport.js`).then(e=>e.resolveAppleRunnerScreenRecordingTransport())]);if(r.mode===`transport-composed`&&i.authority!==`scoped-provider`)return;let{runAppleRunnerCommand:a}=await import(`./runner-operations-facade.js`),o=await a(e,{command:`snapshot`,appBundleId:t,interactiveOnly:!0,depth:1},{signal:n}),s=Date.now();return typeof o.currentUptimeMs==`number`&&Number.isFinite(o.currentUptimeMs)&&o.currentUptimeMs>0?{wallClockAtMs:s,uptimeMs:o.currentUptimeMs}:void 0}catch{n?.throwIfAborted();return}}async function i(e){let{IOS_RUNNER_CONTAINER_BUNDLE_IDS:t}=await import(`./runner.js`).then(e=>e.t);return t.includes(e)}export{r as captureAppleClockAnchor,t as inspectAppleRunnerOwnership,i as isAppleRunnerBundleId,n as retrieveAppleRunnerRecording,e as runAppleRecordingRunner};
@@ -1 +1 @@
1
- import{n as e}from"./host-process.js";import{t}from"./scoped-provider.js";import n from"node:path";const r=Object.freeze({authority:`local-lease`,available:!0,start:i,inspect:async(e,t)=>await d(e,t),stop:async({device:e,runnerSessionId:t,appBundleId:n,signal:r})=>{let{runAppleRunnerCommand:i}=await import(`./runner-client.js`).then(e=>e.r);await i(e,{command:`recordStop`,appBundleId:n},{signal:r,expectedRunnerSessionId:t})}});async function i({device:e,appBundleId:t,outputPath:n,fps:r,signal:i}){let{getRunnerSessionSnapshot:s,runAppleRunnerCommand:c}=await import(`./runner-client.js`).then(e=>e.r),l=`agent-device-recording-${Date.now()}.mp4`,u=e.appleOs===`macos`||e.kind!==`device`?void 0:`tmp/${l}`,d=await c(e,{command:`recordStart`,outPath:a(e,n,l,u),...r===void 0?{}:{fps:r},appBundleId:t},{signal:i}),f=s(e.id);if(!f?.alive)throw Error(`Apple runner recording did not expose a durable runner session identity`);try{i?.throwIfAborted()}catch(n){throw await c(e,{command:`recordStop`,appBundleId:t},{expectedRunnerSessionId:f.sessionId}).catch(()=>{}),n}return o(f.sessionId,u,d)}function a(e,t,r,i){return e.appleOs===`macos`?t:i===void 0?n.basename(t):r}function o(e,t,n){return Object.freeze({runnerSessionId:e,...t===void 0?{}:{remotePath:t},...typeof n.recorderStartUptimeMs==`number`?{recorderStartUptimeMs:n.recorderStartUptimeMs}:{},...typeof n.targetAppReadyUptimeMs==`number`?{targetAppReadyUptimeMs:n.targetAppReadyUptimeMs}:{}})}const s=Object.freeze({authority:`scoped-provider`,available:!1,start:async()=>{throw Error(`Scoped Apple runner provider does not expose durable recording authority`)},inspect:async()=>`ownership-lost`,stop:async()=>{throw Error(`Scoped Apple runner recording authority is unavailable`)}}),c=t(r);function l(){return c.resolve()}async function u(e,t){return await c.run(e??s,t)}async function d(t,n){let[{getRunnerSessionSnapshot:r},{readStaleRunnerLease:i,verifyLeaseRunnerPidIdentity:a}]=await Promise.all([import(`./runner-client.js`).then(e=>e.r),import(`./runner-lease.js`).then(e=>e.c)]),o=r(t.id);if(o)return o.alive?o.sessionId===n?`owned-alive`:`ownership-lost`:`missing`;let s=i(t.id);return s?s.sessionId===n?s.runnerPid===null||!e(s.runnerPid)?`missing`:a(s,s.runnerPid)?`owned-alive`:`ownership-lost`:`ownership-lost`:`missing`}export{l as resolveAppleRunnerScreenRecordingTransport,u as withAppleRunnerScreenRecordingTransport};
1
+ import{p as e}from"./owner-identity.js";import"./process.js";import{t}from"./scoped-provider.js";import n from"node:path";const r=Object.freeze({authority:`local-lease`,available:!0,start:i,inspect:async(e,t)=>await d(e,t),stop:async({device:e,runnerSessionId:t,appBundleId:n,signal:r})=>{let{runAppleRunnerCommand:i}=await import(`./runner-operations-facade.js`);await i(e,{command:`recordStop`,appBundleId:n},{signal:r,expectedRunnerSessionId:t})}});async function i({device:e,appBundleId:t,outputPath:n,fps:r,signal:i}){let{getRunnerSessionSnapshot:s,runAppleRunnerCommand:c}=await import(`./runner-operations-facade.js`),l=`agent-device-recording-${Date.now()}.mp4`,u=e.appleOs===`macos`||e.kind!==`device`?void 0:`tmp/${l}`,d=await c(e,{command:`recordStart`,outPath:a(e,n,l,u),...r===void 0?{}:{fps:r},appBundleId:t},{signal:i}),f=await s(e.id);if(!f?.alive)throw Error(`Apple runner recording did not expose a durable runner session identity`);try{i?.throwIfAborted()}catch(n){throw await c(e,{command:`recordStop`,appBundleId:t},{expectedRunnerSessionId:f.sessionId}).catch(()=>{}),n}return o(f.sessionId,u,d)}function a(e,t,r,i){return e.appleOs===`macos`?t:i===void 0?n.basename(t):r}function o(e,t,n){return Object.freeze({runnerSessionId:e,...t===void 0?{}:{remotePath:t},...typeof n.recorderStartUptimeMs==`number`?{recorderStartUptimeMs:n.recorderStartUptimeMs}:{},...typeof n.targetAppReadyUptimeMs==`number`?{targetAppReadyUptimeMs:n.targetAppReadyUptimeMs}:{}})}const s=Object.freeze({authority:`scoped-provider`,available:!1,start:async()=>{throw Error(`Scoped Apple runner provider does not expose durable recording authority`)},inspect:async()=>`ownership-lost`,stop:async()=>{throw Error(`Scoped Apple runner recording authority is unavailable`)}}),c=t(r);function l(){return c.resolve()}async function u(e,t){return await c.run(e??s,t)}async function d(t,n){let{getRunnerSessionSnapshot:r,readStaleRunnerLease:i,verifyLeaseRunnerPidIdentity:a}=await import(`./runner-operations-facade.js`),o=await r(t.id);if(o)return o.alive?o.sessionId===n?`owned-alive`:`ownership-lost`:`missing`;let s=await i(t.id);return s?s.sessionId===n?s.runnerPid===null||!e(s.runnerPid)?`missing`:await a(s,s.runnerPid)?`owned-alive`:`ownership-lost`:`ownership-lost`:`missing`}export{l as resolveAppleRunnerScreenRecordingTransport,u as withAppleRunnerScreenRecordingTransport};
@@ -1 +1 @@
1
- import{a as e,c as t,d as n,i as r,l as i,n as a,s as o,t as s}from"./host-process.js";import c from"node:fs";const l=2e3,u=(e,t)=>e===t;async function d(e){if(e===void 0)return;let[n,r]=await Promise.all([Promise.resolve(t(e)),Promise.resolve(o(e))]);return n&&r?Object.freeze({pid:e,startTime:n,command:r}):void 0}async function f(t){let n=await e({timeoutMs:1e3}),r=s([t.pid],n),i=(await Promise.all(r.map(async e=>await d(e.pid)))).filter(e=>e!==void 0);return Object.freeze([t,...i.filter(e=>e.pid!==t.pid)])}function p(e,t=u){return!a(e.pid)||r(e.pid)?`missing`:v(e,t)?`owned-alive`:`ownership-lost`}async function m(e,t,n=u){let r=e.map(e=>({marker:e,ownership:p(e,n)}));if(r.some(({ownership:e})=>e===`ownership-lost`))return`ownership-lost`;let i=r.filter(({ownership:e})=>e===`owned-alive`).map(({marker:e})=>e);if(i.length===0)return`already-missing`;let a=e[0],o=a&&p(a,n)===`owned-alive`?await f(a):[],s=_([...i,...o]);if(s.some(e=>p(e,n)===`ownership-lost`))return`ownership-lost`;for(let[e,r]of[[`SIGINT`,5e3],[`SIGTERM`,l],[`SIGKILL`,l]])if(h(s,e,t),await g(s,r,t?.wait,n))return`terminated`;return`ownership-lost`}function h(e,t,n){let r=n?.child.pid;i(e.map(({pid:e})=>e).filter(e=>e!==r),t),r!==void 0&&e.some(({pid:e})=>e===r)&&n?.child.kill(t)}async function g(e,t,r,i=u){let a=e[0]?.pid,o=r?await y(r,t):!1;return await Promise.all(e.filter(({pid:e})=>!o||e!==a).map(async({pid:e})=>await n(e,t))),e.every(e=>o&&e.pid===a||p(e,i)===`missing`)}function _(e){return[...new Map(e.map(e=>[e.pid,e])).values()]}function v(e,n){let r=o(e.pid);return e.startTime.length>0&&e.command.length>0&&t(e.pid)===e.startTime&&r!==null&&n(e.command,r)}async function y(e,t){return await Promise.race([e.then(()=>!0,()=>!0),new Promise(e=>setTimeout(()=>e(!1),t))])}const b=(e,t)=>{if(e===t)return!0;let n=/^(?:\S*\/)?xcrun simctl (.+)$/.exec(e)?.[1],r=/^(?:\S*\/)?simctl (.+)$/.exec(t)?.[1];return n!==void 0&&n===r&&/^(?:--set .+ )?io \S+ recordVideo .+$/.test(n)};async function x(e,t,n){let{resolveAppleSimulatorScreenRecordingTransport:r}=await import(`./platform-runtime-screen-recording-apple-transport.js`);n?.throwIfAborted();let i;try{i=await C(r().start({device:e,outputPath:t,signal:n}),n),n?.throwIfAborted()}catch(e){throw i&&await T(i),c.rmSync(t,{force:!0}),n?.throwIfAborted(),e}if(!i)throw Error(`simctl recordVideo acquisition did not return a process`);let a;try{if(a=await S(i.child.pid,n),!a)throw Error(`simctl recordVideo did not expose a complete process identity`)}catch(e){throw i.child.kill(`SIGKILL`),await i.wait.catch(()=>void 0),n?.throwIfAborted(),e}try{await k(t,i.wait,n);let e=await f(a);return E(i,e)}catch(e){throw await m([a],i,b).catch(()=>{}),await i.wait.catch(()=>void 0),c.rmSync(t,{force:!0}),n?.throwIfAborted(),e}}async function S(e,t){if(e!==void 0)for(let n=0;n<=80;n+=1){t?.throwIfAborted();let r=await d(e);if(r)return r;n<80&&await j(25,t)}}async function C(e,t){let n=Promise.resolve(e);if(!t)return await n;if(t.aborted)throw w(e)?await T(e):n.then(T),t.reason;let r=()=>{},i=new Promise((e,n)=>{let i=()=>n(t.reason);t.addEventListener(`abort`,i,{once:!0}),r=()=>t.removeEventListener(`abort`,i),t.aborted&&i()});try{return await Promise.race([n,i])}catch(e){throw t.aborted?(n.then(T),t.reason):e}finally{r()}}function w(e){return`child`in e}async function T(e){e.child.kill(`SIGKILL`),await e.wait.catch(()=>void 0)}function E(e,t){let n,r=!1,i=()=>n??=m(t,e,b).then(e=>{if(e===`ownership-lost`)throw Error(`simctl recordVideo process ownership changed before cleanup`);if(e!==`terminated`&&e!==`already-missing`)throw Error(`simctl recordVideo cleanup was not confirmed`);r=e===`terminated`}),a=e.wait.then(async e=>{let t=n;return t&&await t.catch(()=>void 0),r&&e.exitCode!==0?{...e,exitCode:0}:e});return Object.freeze({markers:Object.freeze([...t]),wait:a,terminate:i})}function D(e){return p(e,b)}async function O(e){return await m([e],void 0,b)}async function k(e,t,n){let r=t.then(e=>({kind:`exited`,result:e}),e=>({kind:`failed`,error:e})),i;r.then(e=>{i=e}),await Promise.resolve();for(let t=0;t<=60;t+=1){if(n?.throwIfAborted(),i)throw A(i);if(c.existsSync(e)){let e=await Promise.race([r,j(50,n).then(()=>void 0)]);if(e)throw A(e);return}if(t===60)throw Error(`simctl recordVideo did not create its output within 15000ms`);let a=await Promise.race([r,j(250,n).then(()=>void 0)]);if(a)throw A(a)}}function A(e){return e.kind===`failed`?e.error instanceof Error?e.error:Error(String(e.error)):Error(`simctl recordVideo exited with code ${e.result.exitCode}`)}function j(e,t){return t?.throwIfAborted(),new Promise((n,r)=>{let i=e=>{clearTimeout(a),t?.removeEventListener(`abort`,o),e===void 0?n():r(e)},a=setTimeout(()=>i(),e);if(!t)return;let o=()=>i(t.reason);t.addEventListener(`abort`,o,{once:!0}),t.aborted&&o()})}export{D as inspectAppleSimulatorRecordingProcess,x as startAppleSimulatorRecording,O as terminateAppleSimulatorRecordingProcess};
1
+ import{i as e,n as t,r as n,t as r}from"./platform-runtime-screen-recording-process-host.js";import i from"node:fs";const a=(e,t)=>{if(e===t)return!0;let n=/^(?:\S*\/)?xcrun simctl (.+)$/.exec(e)?.[1],r=/^(?:\S*\/)?simctl (.+)$/.exec(t)?.[1];return n!==void 0&&n===r&&/^(?:--set .+ )?io \S+ recordVideo .+$/.test(n)};async function o(r,o,l){let{resolveAppleSimulatorScreenRecordingTransport:f}=await import(`./platform-runtime-screen-recording-apple-transport.js`);l?.throwIfAborted();let p;try{p=await c(f().start({device:r,outputPath:o,signal:l}),l),l?.throwIfAborted()}catch(e){throw p&&await u(p),i.rmSync(o,{force:!0}),l?.throwIfAborted(),e}if(!p)throw Error(`simctl recordVideo acquisition did not return a process`);let h;try{if(h=await s(p.child.pid,l),!h)throw Error(`simctl recordVideo did not expose a complete process identity`)}catch(e){throw p.child.kill(`SIGKILL`),await p.wait.catch(()=>void 0),l?.throwIfAborted(),e}try{await m(o,p.wait,l);let e=await t(h.pid)??h,r=await n(e);return d(p,r)}catch(t){throw await e([h],p,a).catch(()=>{}),await p.wait.catch(()=>void 0),i.rmSync(o,{force:!0}),l?.throwIfAborted(),t}}async function s(e,n){if(e!==void 0)for(let r=0;r<=80;r+=1){n?.throwIfAborted();let i=await t(e);if(i)return i;r<80&&await g(25,n)}}async function c(e,t){let n=Promise.resolve(e);if(!t)return await n;if(t.aborted)throw l(e)?await u(e):n.then(u),t.reason;let r=()=>{},i=new Promise((e,n)=>{let i=()=>n(t.reason);t.addEventListener(`abort`,i,{once:!0}),r=()=>t.removeEventListener(`abort`,i),t.aborted&&i()});try{return await Promise.race([n,i])}catch(e){throw t.aborted?(n.then(u),t.reason):e}finally{r()}}function l(e){return`child`in e}async function u(e){e.child.kill(`SIGKILL`),await e.wait.catch(()=>void 0)}function d(t,n){let r,i=!1,o=()=>r??=e(n,t,a).then(e=>{if(e===`ownership-lost`)throw Error(`simctl recordVideo process ownership changed before cleanup`);if(e!==`terminated`&&e!==`already-missing`)throw Error(`simctl recordVideo cleanup was not confirmed`);i=e===`terminated`}),s=t.wait.then(async e=>{let t=r;return t&&await t.catch(()=>void 0),i&&e.exitCode!==0?{...e,exitCode:0}:e});return Object.freeze({markers:Object.freeze([...n]),wait:s,terminate:o})}function f(e){return r(e,a)}async function p(t){return await e([t],void 0,a)}async function m(e,t,n){let r=t.then(e=>({kind:`exited`,result:e}),e=>({kind:`failed`,error:e})),a;r.then(e=>{a=e}),await Promise.resolve();for(let t=0;t<=60;t+=1){if(n?.throwIfAborted(),a)throw h(a);if(i.existsSync(e)){let e=await Promise.race([r,g(50,n).then(()=>void 0)]);if(e)throw h(e);return}if(t===60)throw Error(`simctl recordVideo did not create its output within 15000ms`);let o=await Promise.race([r,g(250,n).then(()=>void 0)]);if(o)throw h(o)}}function h(e){return e.kind===`failed`?e.error instanceof Error?e.error:Error(String(e.error)):Error(`simctl recordVideo exited with code ${e.result.exitCode}`)}function g(e,t){return t?.throwIfAborted(),new Promise((n,r)=>{let i=e=>{clearTimeout(a),t?.removeEventListener(`abort`,o),e===void 0?n():r(e)},a=setTimeout(()=>i(),e);if(!t)return;let o=()=>i(t.reason);t.addEventListener(`abort`,o,{once:!0}),t.aborted&&o()})}export{f as inspectAppleSimulatorRecordingProcess,o as startAppleSimulatorRecording,p as terminateAppleSimulatorRecordingProcess};
@@ -1 +1 @@
1
- import{t as e}from"./scoped-provider.js";const t=Object.freeze({available:!0,mode:`local`,async start({device:e,outputPath:t,signal:n}){let[{buildSimctlArgsForDevice:r},{runCmdBackground:i}]=await Promise.all([import(`./simctl.js`).then(e=>e.i),import(`./sdk-android-adb.js`).then(e=>e.p)]);return n?.throwIfAborted(),i(`xcrun`,r(e,[`io`,e.id,`recordVideo`,t]),{allowFailure:!0})}}),n=Object.freeze({available:!1,mode:`transport-composed`,start:async()=>{throw Error(`Scoped Apple provider does not expose an Apple simulator screen-recording transport`)}}),r=e(t);function i(){return r.resolve()}async function a(e,t){return await r.run(e??n,t)}export{i as resolveAppleSimulatorScreenRecordingTransport,a as withAppleSimulatorScreenRecordingTransport};
1
+ import"./command.js";import{t as e}from"./scoped-provider.js";const t=Object.freeze({available:!0,mode:`local`,async start({device:e,outputPath:t,signal:n}){let[{buildSimctlArgsForDevice:r},{runCmdBackground:i}]=await Promise.all([import(`./simctl-facade.js`),import(`./command.js`).then(e=>e.t)]);return n?.throwIfAborted(),i(`xcrun`,r(e,[`io`,e.id,`recordVideo`,t]),{allowFailure:!0})}}),n=Object.freeze({available:!1,mode:`transport-composed`,start:async()=>{throw Error(`Scoped Apple provider does not expose an Apple simulator screen-recording transport`)}}),r=e(t);function i(){return r.resolve()}async function a(e,t){return await r.run(e??n,t)}export{i as resolveAppleSimulatorScreenRecordingTransport,a as withAppleSimulatorScreenRecordingTransport};
@@ -1 +1 @@
1
- import{_ as e}from"./sdk-contracts.js";import{t}from"./recording-export-quality.js";import{_ as n}from"./sdk-android-adb.js";import{t as r}from"./version.js";import{n as i}from"./recording-telemetry.js";import{a,i as o,n as s,r as c,t as l}from"./video.js";import u from"node:path";import d from"node:fs";import{fileURLToPath as f}from"node:url";function p(e,t,n,r){let i=`apple/runner/AgentDeviceRunner/RecordingScripts/${e}`,a=`dist/${i}`;return[u.resolve(t,e),u.resolve(n,i),u.resolve(t,`../${i}`),u.resolve(t,`../../${i}`),u.resolve(t,`../../../${i}`),u.resolve(n,a),u.resolve(r,i)]}function m(t){let n=p(t,u.dirname(f(import.meta.url)),r(),process.cwd());for(let e of n)if(d.existsSync(e))return e;throw new e(`COMMAND_FAILED`,`Missing recording helper script: ${t}`,{hint:`Ensure apple/runner/AgentDeviceRunner/RecordingScripts is present in this checkout or bundled under dist/apple/runner in the package.`,scriptName:t,searchedPaths:n})}let h,g;function _(e=process.platform){if(e!==`darwin`)return`touch overlay burn-in is only available on macOS hosts; returning raw video plus gesture telemetry`}function v(){return h??=m(`recording-overlay.swift`),h}function y(){return g??=m(`recording-trim.swift`),g}async function b(t){let{videoPath:r,scriptPath:i,scriptArgs:l,commandDescription:u}=t;await c(r),await s(r);let f=x(r);try{await n(await a({sourcePath:i}),[`--input`,r,`--output`,f,...l],{timeoutMs:12e4,env:o()}),await s(f),d.renameSync(f,r)}catch(t){let n=t instanceof e?t:new e(`COMMAND_FAILED`,String(t),void 0,t instanceof Error?t:void 0);throw new e(`COMMAND_FAILED`,u,{...n.details,videoPath:r,script:i},n)}finally{d.rmSync(f,{force:!0})}}function x(e){let t=u.parse(e),n=`${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;return u.join(t.dir,`.${t.name}.agent-device-${n}${t.ext||`.mp4`}`)}async function S(e){let{videoPath:t,trimStartMs:n}=e;n>0&&await b({videoPath:t,scriptPath:y(),scriptArgs:[`--trim-start-ms`,String(n)],commandDescription:`Failed to trim the start of the iOS recording`})}async function C(e){let{videoPath:n,telemetryPath:r,exportQuality:i=t,targetLabel:a=`recording`}=e;await b({videoPath:n,scriptPath:v(),scriptArgs:[`--events`,r,`--quality`,i],commandDescription:`Failed to add touch overlays to the ${a}`})}function w(){return Object.freeze({complete:T})}async function T(e){if(await c(e.outputPath),await s(e.outputPath),!await l(e.outputPath))throw Error(`recording was not finalized into a playable video: ${e.outputPath}`);e.trimStartMs&&e.trimStartMs>0&&await S({videoPath:e.outputPath,trimStartMs:e.trimStartMs});let t=i({recording:{outPath:e.outputPath,gestureEvents:[...e.gestureEvents]},...e.trimStartMs===void 0?{}:{trimStartMs:e.trimStartMs}});return!e.showTouches||e.gestureEvents.length===0?{telemetryPath:t}:await E(e,t)}async function E(e,t){let n=_();if(n)return{telemetryPath:t,overlayWarning:n};try{if(await C({videoPath:e.outputPath,telemetryPath:t,exportQuality:e.exportQuality,targetLabel:e.targetLabel}),!await l(e.outputPath))throw Error(`recording post-processing produced an unplayable video`);return{telemetryPath:t}}catch(e){return{telemetryPath:t,overlayWarning:`failed to overlay recording touches: ${e instanceof Error?e.message:String(e)}`}}}export{w as createScreenRecordingFinalizer};
1
+ import{y as e}from"./sdk-contracts.js";import{t}from"./recording-export-quality.js";import{s as n}from"./exec.js";import"./command.js";import{n as r}from"./version.js";import{n as i}from"./telemetry.js";import{a,i as o,n as s,r as c,t as l}from"./video.js";import u from"node:path";import d from"node:fs";import{fileURLToPath as f}from"node:url";function p(e,t,n,r){let i=`apple/runner/AgentDeviceRunner/RecordingScripts/${e}`,a=`dist/${i}`;return[u.resolve(t,e),u.resolve(n,i),u.resolve(t,`../${i}`),u.resolve(t,`../../${i}`),u.resolve(t,`../../../${i}`),u.resolve(n,a),u.resolve(r,i)]}function m(t){let n=p(t,u.dirname(f(import.meta.url)),r(),process.cwd());for(let e of n)if(d.existsSync(e))return e;throw new e(`COMMAND_FAILED`,`Missing recording helper script: ${t}`,{hint:`Ensure apple/runner/AgentDeviceRunner/RecordingScripts is present in this checkout or bundled under dist/apple/runner in the package.`,scriptName:t,searchedPaths:n})}let h,g,_;function v(e=process.platform){if(e!==`darwin`)return`touch overlay burn-in is only available on macOS hosts; returning raw video plus gesture telemetry`}function y(){return h??=m(`recording-overlay.swift`),h}function b(){return g??=m(`recording-trim.swift`),g}function x(){return _??=m(`RecordingExportSupport.swift`),_}async function S(t){let{videoPath:r,scriptPath:i,scriptArgs:l,commandDescription:u}=t;await c(r),await s(r);let f=C(r);try{let e=await a({sourcePath:i,extraSourcePaths:[x()]});await n(e,[`--input`,r,`--output`,f,...l],{timeoutMs:12e4,env:o()}),await s(f),d.renameSync(f,r)}catch(t){let n=t instanceof e?t:new e(`COMMAND_FAILED`,String(t),void 0,t instanceof Error?t:void 0);throw new e(`COMMAND_FAILED`,u,{...n.details,videoPath:r,script:i},n)}finally{d.rmSync(f,{force:!0})}}function C(e){let t=u.parse(e),n=`${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;return u.join(t.dir,`.${t.name}.agent-device-${n}${t.ext||`.mp4`}`)}async function w(e){let{videoPath:t,trimStartMs:n}=e;n>0&&await S({videoPath:t,scriptPath:b(),scriptArgs:[`--trim-start-ms`,String(n)],commandDescription:`Failed to trim the start of the iOS recording`})}async function T(e){let{videoPath:n,telemetryPath:r,exportQuality:i=t,targetLabel:a=`recording`}=e;await S({videoPath:n,scriptPath:y(),scriptArgs:[`--events`,r,`--quality`,i],commandDescription:`Failed to add touch overlays to the ${a}`})}function E(){return Object.freeze({complete:D})}async function D(e){if(await c(e.outputPath),await s(e.outputPath),!await l(e.outputPath))throw Error(`recording was not finalized into a playable video: ${e.outputPath}`);e.trimStartMs&&e.trimStartMs>0&&await w({videoPath:e.outputPath,trimStartMs:e.trimStartMs});let t=i({recording:{outPath:e.outputPath,gestureEvents:[...e.gestureEvents]},...e.trimStartMs===void 0?{}:{trimStartMs:e.trimStartMs}});return!e.showTouches||e.gestureEvents.length===0?{telemetryPath:t}:await O(e,t)}async function O(e,t){let n=v();if(n)return{telemetryPath:t,overlayWarning:n};try{if(await T({videoPath:e.outputPath,telemetryPath:t,exportQuality:e.exportQuality,targetLabel:e.targetLabel}),!await l(e.outputPath))throw Error(`recording post-processing produced an unplayable video`);return{telemetryPath:t}}catch(e){return{telemetryPath:t,overlayWarning:`failed to overlay recording touches: ${e instanceof Error?e.message:String(e)}`}}}export{E as createScreenRecordingFinalizer};
@@ -1 +1 @@
1
- function e(){return Object.freeze({start:async(e,n,r)=>await t(e,[`shell`,`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`,`--ps`,`CustomizedFileName`,n],r),stop:async(e,n)=>await t(e,[`shell`,`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`],n),findMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`query`,n,`-u`],r)).stdout.match(/file:\/\/[^\s"']+/)?.[0],stageMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`recv`,n.mediaUri,n.remotePath],r)).exitCode===0,stagedFileSize:async(e,n,r)=>{let i=await t(e,[`shell`,`stat`,`-c`,`%s`,n],r);if(i.exitCode!==0)return;let a=Number(i.stdout.trim());return Number.isSafeInteger(a)&&a>0?a:void 0},pull:async(e,n,r)=>await t(e,[`file`,`recv`,n.remotePath,n.outputPath],r),remove:async(e,n,r)=>(await t(e,[`shell`,`rm`,`-f`,n],r)).exitCode===0,removeMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`delete`,n],r)).exitCode===0})}async function t(e,t,n){let{runHarmonyHdc:r}=await import(`./hdc.js`).then(e=>e.t);return await r(e,t,{allowFailure:!0,signal:n})}export{e as createHarmonyScreenRecordingHost};
1
+ function e(){return Object.freeze({start:async(e,n,r)=>await t(e,[`shell`,`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`,`--ps`,`CustomizedFileName`,n],r),stop:async(e,n)=>await t(e,[`shell`,`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`],n),findMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`query`,n,`-u`],r)).stdout.match(/file:\/\/[^\s"']+/)?.[0],stageMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`recv`,n.mediaUri,n.remotePath],r)).exitCode===0,stagedFileSize:async(e,n,r)=>{let i=await t(e,[`shell`,`stat`,`-c`,`%s`,n],r);if(i.exitCode!==0)return;let a=Number(i.stdout.trim());return Number.isSafeInteger(a)&&a>0?a:void 0},pull:async(e,n,r)=>await t(e,[`file`,`recv`,n.remotePath,n.outputPath],r),remove:async(e,n,r)=>(await t(e,[`shell`,`rm`,`-f`,n],r)).exitCode===0,removeMedia:async(e,n,r)=>(await t(e,[`shell`,`mediatool`,`delete`,n],r)).exitCode===0})}async function t(e,t,n){let{runHarmonyHdc:r}=await import(`./src3.js`).then(e=>e.b);return await r(e,t,{allowFailure:!0,signal:n})}export{e as createHarmonyScreenRecordingHost};
@@ -0,0 +1 @@
1
+ import{b as e,g as t,h as n,o as r,p as i,w as a,x as o,y as s}from"./owner-identity.js";import"./process.js";const c=2e3,l=(e,t)=>e===t;async function u(t){if(t===void 0)return;let[n,r]=await Promise.all([Promise.resolve(e(t)),Promise.resolve(s(t))]);return n&&r?Object.freeze({pid:t,startTime:n,command:r}):void 0}async function d(e){let n=await t({timeoutMs:1e3}),i=r([e.pid],n),a=(await Promise.all(i.map(async e=>await u(e.pid)))).filter(e=>e!==void 0);return Object.freeze([e,...a.filter(t=>t.pid!==e.pid)])}function f(e,t=l){return!i(e.pid)||n(e.pid)?`missing`:_(e,t)?`owned-alive`:`ownership-lost`}async function p(e,t,n=l){let r=e.map(e=>({marker:e,ownership:f(e,n)}));if(r.some(({ownership:e})=>e===`ownership-lost`))return`ownership-lost`;let i=r.filter(({ownership:e})=>e===`owned-alive`).map(({marker:e})=>e);if(i.length===0)return`already-missing`;let a=e[0],o=a&&f(a,n)===`owned-alive`?await d(a):[],s=g([...i,...o]);if(s.some(e=>f(e,n)===`ownership-lost`))return`ownership-lost`;for(let[e,r]of[[`SIGINT`,5e3],[`SIGTERM`,c],[`SIGKILL`,c]])if(m(s,e,t),await h(s,r,t?.wait,n))return`terminated`;return`ownership-lost`}function m(e,t,n){let r=n?.child.pid;o(e.map(({pid:e})=>e).filter(e=>e!==r),t),r!==void 0&&e.some(({pid:e})=>e===r)&&n?.child.kill(t)}async function h(e,t,n,r=l){let i=e[0]?.pid,o=n?await v(n,t):!1;return await Promise.all(e.filter(({pid:e})=>!o||e!==i).map(async({pid:e})=>await a(e,t))),e.every(e=>o&&e.pid===i||f(e,r)===`missing`)}function g(e){return[...new Map(e.map(e=>[e.pid,e])).values()]}function _(t,n){let r=s(t.pid);return t.startTime.length>0&&t.command.length>0&&e(t.pid)===t.startTime&&r!==null&&n(t.command,r)}async function v(e,t){return await Promise.race([e.then(()=>!0,()=>!0),new Promise(e=>setTimeout(()=>e(!1),t))])}export{p as i,u as n,d as r,f as t};
@@ -1 +1 @@
1
- async function e(e){if(e.platform!==`web`)return;let{hasScopedWebProvider:t,resolveWebProvider:n}=await import(`./provider.js`).then(e=>e.t);if(!t())return;let r=n();if(!(!r.startRecording||!r.stopRecording))return Object.freeze({start:async e=>await r.startRecording(e),stop:async()=>await r.stopRecording()})}export{e as resolveWebScreenRecordingTransport};
1
+ async function e(e){if(e.platform!==`web`)return;let{hasScopedWebProvider:t,resolveWebProvider:n}=await import(`./src6.js`).then(e=>e.i);if(!await t())return;let r=await n();if(!(!r.startRecording||!r.stopRecording))return Object.freeze({start:async e=>await r.startRecording(e),stop:async()=>await r.stopRecording()})}export{e as resolveWebScreenRecordingTransport};
@@ -0,0 +1 @@
1
+ import{E as e}from"./sdk-device.js";import{t}from"./application-lifecycle-runtime.js";import{i as n}from"./touch-runtime.js";import{A as r,D as i,G as a,H as o,I as s,L as c,N as l,R as u,a as d,b as f,d as p,g as m,i as h,m as g,s as _,t as v,v as y,w as b,x}from"./alert-runtime.js";import{n as S}from"./audio-probe-runtime.js";import{n as C}from"./perf-runtime.js";const w={appLog:!0,apps:!0,appDeployment:!0,appState:!0,network:!0,screenRecording:!0,screenshot:!0,snapshot:!0,viewport:!0,focus:!0,gesture:!0,scroll:!0,typeText:!0,touch:!0,elementText:!0,back:!0,home:!0,orientation:!0,tvRemote:!0,keyboardStatus:!0,keyboardDismiss:!0,keyboardEnter:!0,readClipboard:!0,writeClipboard:!0,appSwitcher:!0,triggerAppEvent:!0,setSetting:!0,readAlert:!0,awaitAlert:!0,acceptAlert:!0,dismissAlert:!0,audioProbeCapture:!0,audioProbeQuery:!0,perf:!0,readiness:!0,shutdown:!0};function T(e){let t={};for(let n of Object.keys(w))t[n]=e(n);return t}function E(e){return Object.freeze({...T(()=>e),lifecycle:t({resolveOpenTarget:e,prepareApplicationOpen:e,openApplication:e,applyRuntimeHints:e,clearRuntimeHints:e,closeApplication:e,finalizeApplicationClose:e,prepareAppleRunner:e,configureProviderPortReverse:e})})}function D(e,t,n){return Object.freeze({device:e,owner:t,facts:O(e,t,n),operations:Object.freeze({}),[Symbol.asyncDispose]:async()=>void 0})}function O(t,w,T){let E=A(T);return Object.freeze({device:{...e(t),providerMode:k(w)},operations:{appLogInspect:E.appLog,appLogDoctor:E.appLog,appLogStart:E.appLog,appLogReattach:E.appLog,appLogCleanup:E.appLog,listApps:E.apps,deployApp:E.appDeployment,materializeAppSource:E.appDeployment,deployMaterializedApp:E.appDeployment,sendPushNotification:E.appDeployment,appState:E.appState,networkDump:E.network,screenRecordingStart:E.screenRecording,screenRecordingReattach:E.screenRecording,screenRecordingCleanup:E.screenRecording,...a({capture:E.screenshot}),...o({capture:E.snapshot,customActions:E.snapshot,withoutActiveApp:E.snapshot}),...u({findText:E.snapshot,findSelector:E.snapshot}),...c({setViewport:E.viewport}),...s({focus:E.focus}),...l({plan:E.gesture,directionalFling:E.gesture,multiTouch:E.gesture,targetAuthoredDrag:E.gesture,viewport:E.gesture}),...r({scroll:E.scroll}),...i({type:E.typeText}),...n({tap:E.touch,tapRef:E.touch,longPress:E.touch,hover:E.touch,hoverRef:E.touch,fill:E.touch,fillRef:E.touch,tapElementSelector:E.touch}),...b({readTextAtPoint:E.elementText}),...x({back:E.back}),...f({home:E.home}),...y({orientation:E.orientation}),...m({tvRemote:E.tvRemote}),...g({status:E.keyboardStatus,dismiss:E.keyboardDismiss,enter:E.keyboardEnter}),...p({read:E.readClipboard,write:E.writeClipboard}),..._({appSwitcher:E.appSwitcher}),...d({triggerAppEvent:E.triggerAppEvent}),...h({setSetting:E.setSetting}),...v({read:E.readAlert,wait:E.awaitAlert,accept:E.acceptAlert,dismiss:E.dismissAlert}),...S({capture:E.audioProbeCapture,query:E.audioProbeQuery}),...C({frames:E.perf,memorySample:E.perf,memorySnapshot:E.perf,nativeCapture:E.perf,profileReport:E.perf}),ensureReady:E.readiness,bootTarget:E.readiness,bootTargetHeadless:E.readiness,shutdownTarget:E.shutdown,...E.lifecycle}})}function k(e){switch(e.kind){case`local-family`:case`managed-local`:return`local`;case`provider-runtime`:return`provider-runtime`}}function A(e){return Object.freeze({...T(t=>Object.freeze({...e[t]??e.network})),lifecycle:t(e.lifecycle)})}export{D as n,O as r,E as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime.js";import{_ as t}from"./sdk-contracts.js";import{C as n,Ct as r,St as i,at as a,ct as o,it as s,rt as c,wt as l}from"./sdk-batch-runner.js";import{C as u,D as d,E as f,T as p,s as m}from"./sdk-device.js";import{l as h,o as g,u as ee}from"./device.js";const _=Object.freeze({family:`apple`}),v=Object.freeze({..._,loadRuntime:async e=>{let{createApplePlatformRuntime:t}=await import(`./runtime4.js`);return t(e)}}),te=Object.freeze({..._,loadInventory:async e=>{let{createAppleInventorySource:t}=await import(`./inventory2.js`);return t(e)}});async function ne(e){let{createAppleShutdownRuntime:t}=await import(`./runtime5.js`);return t(e)}const y=Object.freeze({family:`android`});async function re(e,t,n){let{readAndroidAppState:r}=await import(`./app-state.js`);return await r(e,t,n)}async function b(e){let{parseAndroidForegroundApp:t}=await import(`./app-state.js`);return t(e)}const x=Object.freeze({...y,loadRuntime:async e=>{let{createAndroidPlatformRuntime:t}=await import(`./runtime2.js`);return t(e)}});function S(e){let t=Object.freeze({sdkRoots:Object.freeze([...new Set(e.sdkRoots.map(e=>e.trim()).filter(Boolean))])});return Object.freeze({...y,loadInventory:async e=>{let{createAndroidInventory:n}=await import(`./inventory.js`);return n(e,t)}})}async function C(e){let{createAndroidShutdownRuntime:t}=await import(`./runtime3.js`);return t(e)}const w=Object.freeze({family:`harmonyos`}),T=Object.freeze({...w,loadRuntime:async e=>{let{createHarmonyPlatformRuntime:t}=await import(`./runtime6.js`);return t(e)}});function ie(e){let t=Object.freeze({hdcSdkPath:E(e.hdcSdkPath),devecoSdkHome:E(e.devecoSdkHome),commandLineToolsHome:E(e.commandLineToolsHome)});return Object.freeze({...w,loadInventory:async e=>{let{createHarmonyInventory:n}=await import(`./inventory3.js`);return n(e,t)}})}function E(e){return e?.trim()||void 0}const D=Object.freeze({family:`vega`}),ae=Object.freeze({...D,loadRuntime:async e=>{let{createVegaPlatformRuntime:t}=await import(`./runtime8.js`);return t(e)}}),oe=Object.freeze({...D,loadInventory:async e=>{let{createVegaInventory:t}=await import(`./inventory5.js`);return t(e)}}),O=Object.freeze({family:`linux`}),se=Object.freeze({...O,loadRuntime:async e=>{let{createLinuxPlatformRuntime:t}=await import(`./runtime7.js`);return t(e)}}),ce=Object.freeze({...O,loadInventory:async e=>{let{createLinuxInventory:t}=await import(`./inventory4.js`);return t(e)}}),k=Object.freeze({family:`web`}),A=Object.freeze({...k,loadRuntime:async e=>{let{createWebPlatformRuntime:t}=await import(`./runtime9.js`);return t(e)}}),j=Object.freeze({...k,loadInventory:async()=>{let{createWebInventory:e}=await import(`./inventory6.js`);return e()}});function M(e){let t=new Map,n=new Map;for(let i of e.providerModules??[]){let{runtime:e,module:a}=i,o=r(a.owner);if(a.owner.provider!==e.provider)throw K(`Provider platform runtime metadata is invalid: ${o}`);if(t.has(o))throw K(`Duplicate platform runtime owner: ${o}`);if(n.has(e))throw K(`Duplicate platform module registration for ${e.provider}`);t.set(o,i),n.set(e,a)}let i=new Map,a=new Map,s=new Map,c,u=async()=>{c??=e.loadHost();try{return await c}catch(e){throw c=void 0,e}},d,f,p=Object.freeze({recoverStartupResources:async e=>{await o(e.stateDir,async()=>{await(await u()).applicationResources.recoverStartupResources(e)})},detachForDaemonShutdown:async()=>{d??=u().then(async e=>await e.applicationResources.detachForDaemonShutdown()),await d},finalizeDaemonShutdown:async()=>{f??=u().then(async e=>await e.applicationResources.finalizeDaemonShutdown()),await f}}),m=e=>{let t=r(e.owner),n=s.get(t);if(n&&n!==e)throw K(`Duplicate platform runtime owner: ${t}`);return s.set(t,e),e},h=async t=>{let n=i.get(t);if(n)return await n;let r=e.modules.get(t);if(!r)throw K(`Missing platform runtime module for ${t}`);if(r.family!==t)throw K(`Platform runtime module registered for ${t} declares ${r.family}`);let a=u().then(async e=>{let n=await r.loadRuntime(e);if(n.owner.kind!==`local-family`||n.owner.family!==t)throw K(`Platform runtime module for ${t} returned a different local owner`);return m(n)});i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}},g=async e=>{let t=a.get(e);if(t)return await t;let n=u().then(async t=>{let n=await e.loadRuntime(t);if(!l(n.owner,e.owner))throw K(`Provider platform runtime returned a different advertised owner`);return m(n)});a.set(e,n);try{return await n}catch(t){throw a.get(e)===n&&a.delete(e),t}};return Object.freeze({applicationLifecycle:p,inspectFacts:async t=>{let r=N(e.providerRuntimes,t);if(r){let e=n.get(r);return e?await P(await g(e),t):U(r,t)}return await P(await h(t.platform),t)},bind:async r=>{if(r.intent.kind===`exact-owner`)return await F(await V(r.intent.owner,t,g,h),r);let i=N(e.providerRuntimes,r.device);if(i){let e=n.get(i);return e?await F(await g(e),r):H(i,r.device)}return await F(await h(r.device.platform),r)},shutdown:async()=>{await Promise.allSettled([...s.values()].map(async e=>await e.shutdown())),s.clear(),i.clear(),a.clear()}})}function N(e,t){let n=(e??[]).filter(e=>e.ownsDevice(t));if(n.length>1)throw K(`Multiple provider runtimes claim the selected device`);return n[0]}async function P(e,t){let n=await e.inspectFacts(t);if(!z(t,e.owner,n))throw K(`Platform runtime facts do not match the selected device and owner`);return n}async function F(e,t){let n=await e.bind(t),r=I(e,n,t);if(!r)return n;let i;try{await n[Symbol.asyncDispose]()}catch(e){i=e instanceof Error?e.message:String(e)}throw K(r,i)}function I(e,t,n){if(!l(t.owner,e.owner))return`Platform binding returned a different owner than the selected runtime`;if(!L(t.owner,n))return`Exact platform binding returned a different persisted owner`;if(!f(u(t.device),u(n.device)))return`Platform binding returned a different device identity`;if(!R(t))return`Platform binding facts do not match its device and owner`}function L(e,t){return t.intent.kind!==`exact-owner`||l(e,t.intent.owner)}function R(e){return z(e.device,e.owner,e.facts)}function z(e,t,n){return d(n.device,p(e))&&B(n.device.providerMode,t)}function B(e,t){return t.kind===`local-family`?e===`local`||e===`transport-composed`:e===`provider-runtime`}async function V(e,t,n,i){if(e.kind===`local-family`){let t=await i(e.family);if(l(t.owner,e))return t;throw G(e)}let a=t.get(r(e));if(a)return await n(a.module);throw G(e)}function H(e,t){let n=i(e.provider,`default`),r=Object.freeze({available:!1,reason:`unsupported-provider-mode`});return c(t,n,{appLog:r,appState:r,network:r,lifecycle:W(r)})}function U(e,t){let n=Object.freeze({available:!1,reason:`unsupported-provider-mode`});return s(t,i(e.provider,`default`),{appLog:n,appState:n,network:n,readiness:n,lifecycle:W(n)})}function W(e){return a({resolveOpenTarget:e,prepareApplicationOpen:e,openApplication:e,applyRuntimeHints:e,clearRuntimeHints:e,closeApplication:e,finalizeApplicationClose:e,prepareAppleRunner:e,configureProviderPortReverse:e})}function G(e){return new t(`UNSUPPORTED_OPERATION`,`The exact platform runtime owner is unavailable.`,{reason:`owner-unavailable`,owner:r(e)})}function K(e,n){return new t(`COMMAND_FAILED`,e,{reason:`runtime-contract-invalid`,...n?{cleanupError:n}:{}})}function le(e){let t=ue(e.registry,e.loadHost),n=e.provider,r=n?async(e,r)=>{r.signal.throwIfAborted();let i=await n.discover(ee(e),r.signal);return r.signal.throwIfAborted(),Y(i),i.kind===`inventory`?{devices:h(i.devices.map(e=>({...e})),e),source:`provider`}:{devices:await t.discover(e,r),source:`local`}}:async(e,n)=>({devices:await t.discover(e,n),source:`local`}),i=Object.freeze({discover:async(e,t)=>(await r(e,t)).devices,discoverWithSource:r});return Object.freeze({providerFirst:i,localOnly:t})}function ue(e,t){let n,r=async()=>{n??=t();try{return await n}catch(e){throw n=void 0,e}},i=new Map,a=async t=>{let n=i.get(t);if(n)return await n;let a=de(e.get(t),r);i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}};return Object.freeze({discover:async(e,t)=>{if(t.signal.throwIfAborted(),e.platform)return await q(a,J(e.platform),e,t);let n=await Promise.all(g.map(async n=>{try{let r=await q(a,J(n),{...e,platform:n},t);return Array.isArray(r)?r:[]}catch{return[]}}));return t.signal.throwIfAborted(),n.flat()}})}async function de(e,t){switch(e.family){case`apple`:return await e.loadInventory(fe(await t()));case`android`:return await e.loadInventory(pe(await t()));case`harmonyos`:return await e.loadInventory(me(await t()));case`vega`:return await e.loadInventory(he(await t()));case`linux`:return await e.loadInventory(ge(await t()));case`web`:return await e.loadInventory()}}function fe(e){return Object.freeze({appleTools:e.appleTools,files:e.files,hostName:e.hostName,hostOs:e.hostOs,observations:e.observations})}function pe(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory,toolchains:e.toolchains})}function me(e){return Object.freeze({commands:e.commands,files:e.files,toolchains:e.toolchains})}function he(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory})}function ge(e){return Object.freeze({hostName:e.hostName,hostOs:e.hostOs})}async function q(e,t,n,r){let i=await e(t);r.signal.throwIfAborted();let a=await i.discover(n,r);return r.signal.throwIfAborted(),_e(t,a),h(a,n)}function J(e){return m(e)?`apple`:e}function _e(e,n){let r=n.find(t=>t.platform!==e);if(r)throw new t(`COMMAND_FAILED`,`Platform inventory source ${e} returned a ${r.platform} device.`,{expectedFamily:e,actualFamily:r.platform,deviceId:r.id})}function Y(e){if(typeof e==`object`&&e){let t=e;if(t.kind===`declined`&&!(`devices`in t)||t.kind===`inventory`&&Array.isArray(t.devices))return}throw new t(`COMMAND_FAILED`,`Provider device inventory returned an invalid outcome.`,{reason:`provider_inventory_contract_violation`})}var ve=e({createPlatformDeviceInventoryGateways:()=>Z,createPlatformRuntimeGateway:()=>$,parseAndroidForegroundApp:()=>be,platformModuleRegistry:()=>X,platformRuntimeModules:()=>Q,readAndroidAppStateWithHost:()=>ye});async function ye(e,t,n){return await re(e,t,n)}async function be(e){return await b(e)}const xe=S({sdkRoots:Ce(process.env.ANDROID_SDK_ROOT,process.env.ANDROID_HOME)}),Se=Object.freeze({apple:async e=>await ne(e),android:async e=>await C(e)}),X=n([te,xe,ie({hdcSdkPath:process.env.HDC_SDK_PATH,devecoSdkHome:process.env.DEVECO_SDK_HOME,commandLineToolsHome:process.env.HARMONYOS_COMMAND_LINE_TOOLS}),oe,ce,j]);function Z(e){return le({registry:X,loadHost:async()=>{let{createDeviceInventoryHost:e}=await import(`./platform-runtime-host.js`);return e()},provider:e})}const Q=new Map([[`apple`,v],[`android`,x],[`harmonyos`,T],[`vega`,ae],[`linux`,se],[`web`,A]]);function $(e){return M({modules:Q,loadHost:async()=>{let{createPlatformRuntimeHost:t}=await import(`./platform-runtime-operation-host.js`);return t({sessionsDir:e.sessionsDir,resolveSessionArtifacts:e.resolveSessionArtifacts,shutdownLoaders:Se})},providerRuntimes:e.providerRuntimes,providerModules:e.providerModules})}function Ce(...e){return e.flatMap(e=>{let t=e?.trim();return t?[t]:[]})}export{$ as n,ve as r,Z as t};
1
+ import{r as e}from"./rolldown-runtime.js";import{y as t}from"./sdk-contracts.js";import{D as n,E as r,O as i,c as a,w as o}from"./sdk-device.js";import{Jt as s,O as c,Yt as l,qt as u}from"./sdk-batch.js";import{a as d,i as f,t as p}from"./device.js";import{t as ee}from"./startup-recovery-fence.js";import{i as m,n as h,r as g}from"./src2.js";import{i as _,m as v}from"./src3.js";import{n as te,t as ne}from"./src4.js";import{c as re,g as y,n as b}from"./src5.js";import{r as x,t as S}from"./src6.js";import{n as C,r as ie,t as w}from"./platform-runtime-unavailable.js";const T=Object.freeze({family:`android`});function ae(e){let t,n=()=>(t??=import(`./observation.js`).then(({createAndroidObservationAdapter:t})=>t(e)),t);return Object.freeze({readAppState:async(...e)=>await(await n()).readAppState(...e),readBlockingDialog:async(...e)=>await(await n()).readBlockingDialog(...e),readAppFocus:async(...e)=>await(await n()).readAppFocus(...e),readSnapshotNodes:async(...e)=>await(await n()).readSnapshotNodes(...e),tap:async(...e)=>await(await n()).tap(...e),openApp:async(...e)=>await(await n()).openApp(...e),readScreenSize:async(...e)=>await(await n()).readScreenSize(...e),isPermissionPackage:async(...e)=>await(await n()).isPermissionPackage(...e)})}async function oe(e,t){let{readAndroidAppStateWithExecutor:n}=await import(`./app-state.js`);return await n(e,t)}function se(e){return Object.freeze({...T,loadRuntime:async t=>{await e.bindAdbHost();let{createAndroidPlatformRuntime:n}=await import(`./runtime2.js`);return n(t)}})}function ce(e){let t=Object.freeze({sdkRoots:Object.freeze([...new Set(e.sdkRoots.map(e=>e.trim()).filter(Boolean))])});return Object.freeze({...T,loadInventory:async e=>{let{createAndroidInventory:n}=await import(`./inventory.js`);return n(e,t)}})}async function le(e){let{createAndroidShutdownRuntime:t}=await import(`./runtime3.js`);return t(e)}function ue(e){let t=new Map,n=new Map;for(let r of e.providerModules??[]){let{runtime:e,module:i}=r,a=s(i.owner);if(i.owner.provider!==e.provider)throw z(`Provider platform runtime metadata is invalid: ${a}`);if(t.has(a))throw z(`Duplicate platform runtime owner: ${a}`);if(n.has(e))throw z(`Duplicate platform module registration for ${e.provider}`);t.set(a,r),n.set(e,i)}let r=new Map;for(let t of e.managedOwners??[]){let e=s(t);if(r.has(e))throw z(`Duplicate platform runtime owner: ${e}`);r.set(e,t)}let i=new Map,a=new Map,o=new Map,c=new Map,u,d=async()=>{u??=e.loadHost();try{return await u}catch(e){throw u=void 0,e}},f,p,m=Object.freeze({recoverStartupResources:async e=>{await ee(e.stateDir,async()=>{await(await d()).applicationResources.recoverStartupResources(e)})},detachForDaemonShutdown:async()=>{f??=d().then(async e=>await e.applicationResources.detachForDaemonShutdown()),await f},finalizeDaemonShutdown:async()=>{p??=d().then(async e=>await e.applicationResources.finalizeDaemonShutdown()),await p}}),h=e=>{let t=s(e.owner),n=c.get(t);if(n&&n!==e)throw z(`Duplicate platform runtime owner: ${t}`);return c.set(t,e),e},g=async t=>{let n=i.get(t);if(n)return await n;let r=e.modules.get(t);if(!r)throw z(`Missing platform runtime module for ${t}`);if(r.family!==t)throw z(`Platform runtime module registered for ${t} declares ${r.family}`);let a=d().then(async e=>{let n=await r.loadRuntime(e);if(n.owner.kind!==`local-family`||n.owner.family!==t)throw z(`Platform runtime module for ${t} returned a different local owner`);return h(n)});i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}},_=async e=>{let t=a.get(e);if(t)return await t;let n=d().then(async t=>{let n=await e.loadRuntime(t);if(!l(n.owner,e.owner))throw z(`Provider platform runtime returned a different advertised owner`);return h(n)});a.set(e,n);try{return await n}catch(t){throw a.get(e)===n&&a.delete(e),t}},v=async e=>{let t=s(e),n=r.get(t);if(!n)throw R(e);let i=o.get(t);if(i)return i;let{createManagedLocalRuntimeOwner:a}=await import(`./platform-runtime-managed-owner.js`),c=h(a({owner:n,loadLocal:g}));return o.set(t,c),c};return Object.freeze({applicationLifecycle:m,inspectFacts:async t=>{let r=E(e.providerRuntimes,t);if(r){let e=n.get(r);return e?await D(await _(e),t):L(r,t)}return await D(await g(t.platform),t)},bind:async r=>{if(r.intent.kind===`exact-owner`)return await O(await P(r.intent.owner,t,_,g,v),r);let i=E(e.providerRuntimes,r.device);if(i){let e=n.get(i);return e?await O(await _(e),r):I(i,r.device)}return await O(await g(r.device.platform),r)},shutdown:async()=>{await Promise.allSettled([...c.values()].map(async e=>await e.shutdown())),c.clear(),i.clear(),a.clear(),o.clear()}})}function E(e,t){let n=(e??[]).filter(e=>e.ownsDevice(t));if(n.length>1)throw z(`Multiple provider runtimes claim the selected device`);return n[0]}async function D(e,t){let n=await e.inspectFacts(t);if(!M(t,e.owner,n))throw z(`Platform runtime facts do not match the selected device and owner`);return n}async function O(e,t){let n=await e.bind(t),r=k(e,n,t);if(!r)return n;let i;try{await n[Symbol.asyncDispose]()}catch(e){i=e instanceof Error?e.message:String(e)}throw z(r,i)}function k(e,t,r){if(!l(t.owner,e.owner))return`Platform binding returned a different owner than the selected runtime`;if(!A(t.owner,r))return`Exact platform binding returned a different persisted owner`;if(!n(o(t.device),o(r.device)))return`Platform binding returned a different device identity`;if(!j(t))return`Platform binding facts do not match its device and owner`}function A(e,t){return t.intent.kind!==`exact-owner`||l(e,t.intent.owner)}function j(e){return M(e.device,e.owner,e.facts)}function M(e,t,n){return i(n.device,r(e))&&N(n.device.providerMode,t)}function N(e,t){switch(t.kind){case`local-family`:return e===`local`||e===`transport-composed`;case`managed-local`:return e===`local`||e===`transport-composed`;case`provider-runtime`:return e===`provider-runtime`}}async function P(e,t,n,r,i){switch(e.kind){case`local-family`:{let t=await r(e.family);if(l(t.owner,e))return t;throw R(e)}case`managed-local`:return await i(e);case`provider-runtime`:{let r=t.get(s(e));if(r)return await n(r.module);throw R(e)}}}const F=Object.freeze({available:!1,reason:`unsupported-provider-mode`});function I(e,t){let n=u(e.provider,`default`);return C(t,n,w(F))}function L(e,t){return ie(t,u(e.provider,`default`),w(F))}function R(e){return new t(`UNSUPPORTED_OPERATION`,`The exact platform runtime owner is unavailable.`,{reason:`owner-unavailable`,owner:s(e)})}function z(e,n){return new t(`COMMAND_FAILED`,e,{reason:`runtime-contract-invalid`,...n?{cleanupError:n}:{}})}function B(e){let t=V(e.registry,e.loadHost),n=e.provider,r=n?async(e,r)=>{r.signal.throwIfAborted();let i=await n.discover(d(e),r.signal);return r.signal.throwIfAborted(),ge(i),i.kind===`inventory`?{devices:f(i.devices.map(e=>({...e})),e),source:`provider`}:{devices:await t.discover(e,r),source:`local`}}:async(e,n)=>({devices:await t.discover(e,n),source:`local`}),i=Object.freeze({discover:async(e,t)=>(await r(e,t)).devices,discoverWithSource:r});return Object.freeze({providerFirst:i,localOnly:t,findInstalledApp:async(e,t)=>{let{findIosSimulatorInstalledApp:n}=await import(`./app-resolution-facade.js`);return await n(e,t)}})}function V(e,t){let n,r=async()=>{n??=t();try{return await n}catch(e){throw n=void 0,e}},i=new Map,a=async t=>{let n=i.get(t);if(n)return await n;let a=H(e.get(t),r);i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}};return Object.freeze({discover:async(e,t)=>{if(t.signal.throwIfAborted(),e.platform)return await W(a,G(e.platform),e,t);let n=await Promise.all(p.map(async n=>{try{let r=await W(a,G(n),{...e,platform:n},t);return Array.isArray(r)?r:[]}catch{return[]}}));return t.signal.throwIfAborted(),n.flat()}})}async function H(e,t){switch(e.family){case`apple`:return await e.loadInventory(U(await t()));case`android`:return await e.loadInventory(de(await t()));case`harmonyos`:return await e.loadInventory(fe(await t()));case`vega`:return await e.loadInventory(pe(await t()));case`linux`:return await e.loadInventory(me(await t()));case`web`:return await e.loadInventory()}}function U(e){return Object.freeze({appleTools:e.appleTools,files:e.files,hostName:e.hostName,hostOs:e.hostOs,observations:e.observations})}function de(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory,toolchains:e.toolchains})}function fe(e){return Object.freeze({commands:e.commands,files:e.files,toolchains:e.toolchains})}function pe(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory})}function me(e){return Object.freeze({hostName:e.hostName,hostOs:e.hostOs})}async function W(e,t,n,r){let i=await e(t);r.signal.throwIfAborted();let a=await i.discover(n,r);return r.signal.throwIfAborted(),he(t,a),f(a,n)}function G(e){return a(e)?`apple`:e}function he(e,n){let r=n.find(t=>t.platform!==e);if(r)throw new t(`COMMAND_FAILED`,`Platform inventory source ${e} returned a ${r.platform} device.`,{expectedFamily:e,actualFamily:r.platform,deviceId:r.id})}function ge(e){if(typeof e==`object`&&e){let t=e;if(t.kind===`declined`&&!(`devices`in t)||t.kind===`inventory`&&Array.isArray(t.devices))return}throw new t(`COMMAND_FAILED`,`Provider device inventory returned an invalid outcome.`,{reason:`provider_inventory_contract_violation`})}function _e(){return Object.freeze({async runAdb(e,t,n){let{runAndroidAdb:r}=await K(),i=await r(e,[...t],n);return{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}},async readSnapshotNodes(e){let{snapshotAndroid:t,androidSnapshotPublicationInput:n}=await K(),{buildSnapshotState:r}=await import(`./snapshot-state.js`).then(e=>e.n);return r(n(await t(e,{interactiveOnly:!1})),void 0).nodes},async openApp(e,t){let{openAndroidApp:n}=await K();await n(e,t)}})}async function K(){let{loadAndroidMechanics:e}=await import(`./platform-runtime-android-mechanics.js`).then(e=>e.n);return await e()}var ve=e({androidObservation:()=>J,createPlatformDeviceInventoryGateways:()=>X,createPlatformRuntimeGateway:()=>Q,createRequestPlatformProviders:()=>$,getAndroidAppStateWithAdb:()=>ye,platformModuleRegistry:()=>Y,platformRuntimeModules:()=>Z});async function ye(e,t){return await oe(e,t)}const q=ce({sdkRoots:Ce(process.env.ANDROID_SDK_ROOT,process.env.ANDROID_HOME)}),J=ae(_e()),be=Object.freeze({apple:async e=>await g(e),android:async e=>await le(e)}),xe=_({hdcSdkPath:process.env.HDC_SDK_PATH,devecoSdkHome:process.env.DEVECO_SDK_HOME,commandLineToolsHome:process.env.HARMONYOS_COMMAND_LINE_TOOLS}),Y=c([h,q,xe,ne,re,S]);function X(e){return B({registry:Y,loadHost:async()=>{let{createDeviceInventoryHost:e}=await import(`./platform-runtime-host.js`);return e()},provider:e})}const Se=se({bindAdbHost:async()=>{await import(`./platform-runtime-android-adb-host.js`).then(e=>e.t)}}),Z=new Map([[`apple`,m],[`android`,Se],[`harmonyos`,v],[`vega`,te],[`linux`,y],[`web`,x]]);function Q(e){return ue({modules:Z,loadHost:async()=>{let{createPlatformRuntimeHost:t,createSnapshotRuntimeHost:n,loadMacOsSurfaceSnapshot:r}=await import(`./platform-runtime-operation-host.js`);return t({sessionsDir:e.sessionsDir,resolveSessionArtifacts:e.resolveSessionArtifacts,shutdownLoaders:be,snapshot:n({linux:b,macos:r}),ownedProcesses:e.ownedProcesses})},providerRuntimes:e.providerRuntimes,providerModules:e.providerModules})}function $(e={}){let t,n=()=>(t??=import(`./request-providers.js`).then(({createComposedRequestPlatformProviders:t})=>t(e)),t);return Object.freeze({hasConfiguredResolvers:Object.values(e.providers??{}).some(Boolean),run:async(e,t)=>await(await n()).run(e,t)})}function Ce(...e){return e.flatMap(e=>{let t=e?.trim();return t?[t]:[]})}export{ve as a,$ as i,X as n,Q as r,J as t};
@@ -1 +1 @@
1
- import{_ as e}from"./sdk-contracts.js";import{B as t,R as n,at as r,it as i,ot as a,wt as o}from"./sdk-batch-runner.js";import{n as s}from"./src3.js";function c(e){return n({owner:`WebDriver`,openTargetIdentity:`bundle-id`,closeBeforeRelaunch:!0,binding:t({device:e.device,signal:e.signal,resolveInteractor:t=>e.getInteractor(e.device,t)})})}const l=Object.freeze({available:!0}),u=Object.freeze({available:!1,reason:`unsupported-provider-mode`}),d=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose screen recording.`}),f=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Headless boot is unavailable for provider-owned devices.`}),p=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`WebDriver provider runtimes do not expose app inventory.`}),m=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app deployment.`}),h=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Push notifications are unavailable for WebDriver provider-owned devices.`}),g=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`The WebDriver provider session is no longer active for this device.`}),_=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose a foreground app-state operation.`}),v=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Apple runner preparation is unavailable for WebDriver-owned devices.`}),y=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver open is supported only for its owned iOS or Android mobile-device sessions.`}),b=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver close is supported only for its owned iOS or Android mobile-device sessions.`}),x=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Runtime hints are not applied to provider-owned devices.`}),S=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose port reverse.`});function C(e){let t=e.platform===`android`&&e.kind===`device`&&e.target===`mobile`||e.platform===`apple`&&e.kind===`device`&&e.target===`mobile`&&e.appleOs===`ios`,n=t?l:y,i=t?l:b;return r({resolveOpenTarget:n,prepareApplicationOpen:n,openApplication:n,applyRuntimeHints:x,clearRuntimeHints:x,closeApplication:i,finalizeApplicationClose:i,prepareAppleRunner:v,configureProviderPortReverse:S})}function w(t){return Object.freeze({owner:t.owner,ownsDevice:t.ownsDevice,inspectFacts:async e=>E(t,e),bind:async n=>{if(n.intent.kind===`exact-owner`&&!o(n.intent.owner,t.owner))throw new e(`UNSUPPORTED_OPERATION`,`WebDriver runtime owner identity does not match`);if(!t.ownsDevice(n.device))throw new e(`UNSUPPORTED_PLATFORM`,`WebDriver runtime does not own this device`);if(!D(t,n.device))throw new e(`UNSUPPORTED_OPERATION`,`The WebDriver provider session is no longer active for this device.`);return T(t,n.device,n.scope.signal)},shutdown:async()=>void 0})}function T(e,t,n){let r=t.platform===`apple`?`ios-device`:`android`,i=E(e,t),o=i.operations.deployApp,l=Object.freeze({ensureReady:async()=>({...t,booted:!0}),bootTarget:async()=>({...t,booted:!0}),...a(c({device:t,signal:n,getInteractor:(t,n)=>e.getInteractor?.(t,n)}),i.operations),networkDump:async t=>{let n=await e.host.appLogs.readRecent(t.sessionId,t.maxScanLines),i=s(n.text,{...t,path:n.path,exists:n.exists,lineNumberOffset:n.skippedLines,backend:r});return Object.freeze({source:`app-log`,backend:r,dump:i,notes:Object.freeze(i.entries.length===0?[`No HTTP(s) entries were found in recent session app logs.`]:[])})},...o.available&&e.deployment?{deployApp:async r=>await e.deployment.deployApp(t,r,n),materializeAppSource:async r=>await O(e.host,t,r,n),deployMaterializedApp:async r=>await e.deployment.deployMaterializedApp(t,r,n)}:{}});return Object.freeze({device:t,owner:e.owner,facts:i,operations:l,[Symbol.asyncDispose]:async()=>void 0})}function E(e,t){if(!D(e,t)){let n=i(t,e.owner,{appLog:g,appDeployment:g,network:g,screenRecording:g,lifecycle:r({resolveOpenTarget:g,prepareApplicationOpen:g,openApplication:g,applyRuntimeHints:g,clearRuntimeHints:g,closeApplication:g,finalizeApplicationClose:g,prepareAppleRunner:g,configureProviderPortReverse:g})});return Object.freeze({device:n.device,operations:{appLogInspect:g,appLogDoctor:g,appLogStart:g,appLogReattach:g,appLogCleanup:g,deployApp:g,materializeAppSource:g,deployMaterializedApp:g,sendPushNotification:g,appState:g,networkDump:g,screenRecordingStart:g,screenRecordingReattach:g,screenRecordingCleanup:g,ensureReady:g,bootTarget:g,bootTargetHeadless:g,listApps:g,shutdownTarget:g,...r({resolveOpenTarget:g,prepareApplicationOpen:g,openApplication:g,applyRuntimeHints:g,clearRuntimeHints:g,closeApplication:g,finalizeApplicationClose:g,prepareAppleRunner:g,configureProviderPortReverse:g})}})}let n=e.deployment?.fact(t)??m,a=i(t,e.owner,{appLog:u,appDeployment:m,network:u,screenRecording:d,lifecycle:C(t)});return Object.freeze({device:a.device,operations:{appLogInspect:u,appLogDoctor:u,appLogStart:u,appLogReattach:u,appLogCleanup:u,deployApp:n,materializeAppSource:n,deployMaterializedApp:n,sendPushNotification:h,appState:_,networkDump:l,screenRecordingStart:d,screenRecordingReattach:d,screenRecordingCleanup:d,ensureReady:l,bootTarget:l,bootTargetHeadless:f,listApps:p,shutdownTarget:{available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver owns the target lifecycle for provider-owned devices.`},...C(t)}})}function D(e,t){return e.isSessionActive?.(t)??e.ownsDevice(t)}async function O(e,t,n,r){return t.platform===`apple`?await e.appleDeployment.prepareArtifact(n,{signal:r}):await e.androidDeployment.prepareArtifact(n,{signal:r})}export{w as createWebDriverPlatformRuntimeOwner};
1
+ import{y as e}from"./sdk-contracts.js";import{Xt as t,Yt as n}from"./sdk-batch.js";import{n as r,t as i}from"./application-lifecycle-runtime.js";import{i as a,n as o}from"./touch-runtime.js";import{A as s,B as c,D as l,E as u,F as d,G as f,H as p,I as m,L as ee,M as te,N as ne,W as re,a as ie,b as ae,d as oe,g as se,i as h,k as g,m as _,s as v,t as y,v as b,x as ce}from"./alert-runtime.js";import{r as x}from"./platform-runtime-unavailable.js";import{r as le,t as ue}from"./capabilities.js";import{n as de}from"./src7.js";import{r as fe}from"./gesture-admission.js";import{n as pe}from"./interactor-operation-catalog.js";import{r as me,t as he}from"./application-lifecycle-interaction.js";function ge(e){return he({owner:`WebDriver`,openTargetIdentity:`bundle-id`,closeBeforeRelaunch:!0,binding:me({device:e.device,signal:e.signal,resolveInteractor:t=>e.getInteractor(e.device,t)})})}const S=Object.freeze({available:!0}),C=Object.freeze({available:!1,reason:`unsupported-provider-mode`}),w=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose screen recording.`}),T=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Headless boot is unavailable for provider-owned devices.`}),E=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`WebDriver provider runtimes do not expose app inventory.`}),D=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app deployment.`}),O=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Push notifications are unavailable for WebDriver provider-owned devices.`}),k=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`The WebDriver provider session is no longer active for this device.`}),A=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose snapshot capture for this device.`}),j=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose screenshot capture for this device.`}),M=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose iOS simulator custom snapshot actions.`}),N=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose viewport resizing.`}),P=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose focus for this device.`}),F=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose text entry for this device.`}),I=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose gestures for this device.`}),L=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose scrolling for this device.`}),_e=Object.freeze({available:!1,reason:`unsupported-device-kind`,hint:fe}),R=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes read element text from the captured tree only.`}),z=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose back for this device.`}),B=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose home for this device.`}),V=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose orientation for this device.`}),H=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose tv-remote.`}),U=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose keyboard actions.`}),W=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose clipboard access for this device.`}),G=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the app switcher for this device.`}),K=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose native alert handling.`}),q=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose device settings.`}),J=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app-event delivery for this device.`}),ve=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose a foreground app-state operation.`}),Y=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the audio probe.`}),ye=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Apple runner preparation is unavailable for WebDriver-owned devices.`}),be=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver open is supported only for its owned iOS or Android mobile-device sessions.`}),xe=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver close is supported only for its owned iOS or Android mobile-device sessions.`}),X=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Runtime hints are not applied to provider-owned devices.`}),Se=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose port reverse.`});function Ce(e){let t=e.platform===`android`&&e.kind===`device`&&e.target===`mobile`||e.platform===`apple`&&e.kind===`device`&&e.target===`mobile`&&e.appleOs===`ios`,n=t?S:be,r=t?S:xe;return i({resolveOpenTarget:n,prepareApplicationOpen:n,openApplication:n,applyRuntimeHints:X,clearRuntimeHints:X,closeApplication:r,finalizeApplicationClose:r,prepareAppleRunner:ye,configureProviderPortReverse:Se})}function we(t){return Object.freeze({owner:t.owner,ownsDevice:t.ownsDevice,inspectFacts:async e=>Q(t,e),bind:async r=>{if(r.intent.kind===`exact-owner`&&!n(r.intent.owner,t.owner))throw new e(`UNSUPPORTED_OPERATION`,`WebDriver runtime owner identity does not match`);if(!t.ownsDevice(r.device))throw new e(`UNSUPPORTED_PLATFORM`,`WebDriver runtime does not own this device`);if(!$(t,r.device))throw new e(`UNSUPPORTED_OPERATION`,`The WebDriver provider session is no longer active for this device.`);return Ee(t,r.device,r.scope.signal)},shutdown:async()=>void 0})}function Te(e,n,r,i){let a={device:n,signal:r,resolveInteractor:t=>e.getInteractor?.(n,t),presentIosAcquisition:e.host.snapshot.presentIosAcquisition};return{...i.operations.captureSnapshot.available?c(a):{},...i.operations.captureScreenshot.available?re(a):{},...i.operations.focusPoint.available?d(a):{},...i.operations.typeText.available?u(a):{},...te({...a,facts:i.operations}),...i.operations.scrollDirection.available?g(a):{},...pe({...a,facts:i.operations}),...t(i.operations.tapPoint,()=>o({...a,facts:i.operations,pause:async t=>await e.host.clock.sleep(t,r)}))}}function Ee(e,t,n){let i=t.platform===`apple`?`ios-device`:`android`,a=Q(e,t),o=a.operations.deployApp,s=Object.freeze({ensureReady:async()=>({...t,booted:!0}),bootTarget:async()=>({...t,booted:!0}),...r(ge({device:t,signal:n,getInteractor:(t,n)=>e.getInteractor?.(t,n)}),a.operations),...Te(e,t,n,a),networkDump:async t=>{let n=await e.host.appLogs.readRecent(t.sessionId,t.maxScanLines),r=de(n.text,{...t,path:n.path,exists:n.exists,lineNumberOffset:n.skippedLines,backend:i});return Object.freeze({source:`app-log`,backend:i,dump:r,notes:Object.freeze(r.entries.length===0?[`No HTTP(s) entries were found in recent session app logs.`]:[])})},...o.available&&e.deployment?{deployApp:async r=>await e.deployment.deployApp(t,r,n),materializeAppSource:async r=>await Ae(e.host,t,r,n),deployMaterializedApp:async r=>await e.deployment.deployMaterializedApp(t,r,n)}:{}});return Object.freeze({device:t,owner:e.owner,facts:a,operations:s,[Symbol.asyncDispose]:async()=>void 0})}function Z(e,t){return e?S:t}function De(e){return e.reachable?ue(e.capabilities,e.operation)?S:Object.freeze({available:!1,reason:`owner-capability-missing`,hint:le(e.capabilities,e.operation)}):e.whenUnreachable}function Q(e,t){if(!$(e,t))return x(t,e.owner,{appLog:k,appDeployment:k,network:k,screenRecording:k,screenshot:k,viewport:k,focus:k,gesture:k,scroll:k,typeText:k,touch:k,elementText:k,back:k,home:k,orientation:k,tvRemote:k,keyboardStatus:k,keyboardDismiss:k,keyboardEnter:k,readClipboard:k,writeClipboard:k,appSwitcher:k,triggerAppEvent:k,setSetting:k,readAlert:k,awaitAlert:k,acceptAlert:k,dismissAlert:k,audioProbeCapture:k,audioProbeQuery:k,perf:k,lifecycle:i({resolveOpenTarget:k,prepareApplicationOpen:k,openApplication:k,applyRuntimeHints:k,clearRuntimeHints:k,closeApplication:k,finalizeApplicationClose:k,prepareAppleRunner:k,configureProviderPortReverse:k})});let n=e.deployment?.fact(t)??D,r=x(t,e.owner,{appLog:C,appDeployment:D,network:C,screenRecording:w,screenshot:j,viewport:N,focus:P,gesture:I,scroll:L,typeText:F,touch:F,elementText:R,back:z,home:B,orientation:V,tvRemote:H,keyboardStatus:U,keyboardDismiss:U,keyboardEnter:U,readClipboard:W,writeClipboard:W,appSwitcher:G,triggerAppEvent:J,setSetting:q,readAlert:K,awaitAlert:K,acceptAlert:K,dismissAlert:K,audioProbeCapture:Y,audioProbeQuery:Y,perf:Y,lifecycle:Ce(t)}),o=e.getInteractor!==void 0&&ke(t),c=o&&e.snapshotAvailable!==!1?S:A,u=o&&e.screenshotAvailable!==!1?S:j,d=(t,n)=>De({reachable:o,capabilities:e.capabilities,operation:t,whenUnreachable:n});return Object.freeze({device:r.device,operations:{...r.operations,deployApp:n,materializeAppSource:n,deployMaterializedApp:n,sendPushNotification:O,appState:ve,networkDump:S,...p({capture:c,customActions:M,withoutActiveApp:c}),...f({capture:u}),...m({focus:Z(o,P)}),...l({type:d(`type`,F)}),...a({tap:d(`tap`,P),tapRef:P,longPress:d(`longPress`,P),hover:P,hoverRef:P,fill:d(`fill`,F),fillRef:F,tapElementSelector:P}),...ne({plan:Z(o,I),directionalFling:Z(o,I),multiTouch:Oe(t,o),targetAuthoredDrag:Z(o,I),viewport:Z(o,I)}),...s({scroll:d(`scroll`,L)}),...ce({back:d(`back`,z)}),...ae({home:d(`home`,B)}),...b({orientation:d(`orientation`,V)}),...se({tvRemote:H}),..._({status:U,dismiss:U,enter:U}),...oe({read:d(`clipboard.read`,W),write:d(`clipboard.write`,W)}),...v({appSwitcher:d(`appSwitcher`,G)}),...ie({triggerAppEvent:Z(o,J)}),...h({setSetting:q}),...y({read:K,wait:K,accept:K,dismiss:K}),...ee({setViewport:N}),ensureReady:S,bootTarget:S,bootTargetHeadless:T,listApps:E,shutdownTarget:{available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver owns the target lifecycle for provider-owned devices.`}}})}function Oe(e,t){return t?e.platform===`apple`?_e:S:I}function ke(e){return e.kind===`device`&&e.target===`mobile`&&(e.platform===`android`||e.platform===`apple`&&e.appleOs===`ios`)}function $(e,t){return e.isSessionActive?.(t)??e.ownsDevice(t)}async function Ae(e,t,n,r){return t.platform===`apple`?await e.appleDeployment.prepareArtifact(n,{signal:r}):await e.androidDeployment.prepareArtifact(n,{signal:r})}export{we as createWebDriverPlatformRuntimeOwner};
package/dist/src/plist.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./parser.js";import{i as t,n}from"./tool-provider.js";import{t as r}from"./plist-xml.js";import{promises as i}from"node:fs";async function a(e,r,a){try{let t=(await n(e,a))?.[r];if(typeof t==`string`&&t.length>0)return t}catch{a?.throwIfAborted()}try{let n=await t(`plutil`,[`-extract`,r,`raw`,`-o`,`-`,e],{allowFailure:!0,signal:a});if(n.exitCode===0){let e=n.stdout.trim();if(e.length>0)return e}}catch{a?.throwIfAborted()}try{return o(await i.readFile(e,{encoding:`utf8`,signal:a}),r)}catch{a?.throwIfAborted();return}}function o(t,n){let i;return r(e(t),(e,t)=>{i!==void 0||e!==n||t.name!==`string`||(i=t.text??void 0)}),i}export{a as t};
1
+ import{t as e}from"./parser.js";import{y as t}from"./host-file.js";import{a as n,r}from"./tool-provider.js";import{t as i}from"./plist-xml.js";async function a(e,i,a){try{let t=(await r(e,a))?.[i];if(typeof t==`string`&&t.length>0)return t}catch{a?.throwIfAborted()}try{let t=await n(`plutil`,[`-extract`,i,`raw`,`-o`,`-`,e],{allowFailure:!0,signal:a});if(t.exitCode===0){let e=t.stdout.trim();if(e.length>0)return e}}catch{a?.throwIfAborted()}try{return o(await t(e,{signal:a}),i)}catch{a?.throwIfAborted();return}}function o(t,n){let r;return i(e(t),(e,t)=>{r===void 0&&e===n&&t.name===`string`&&(r=t.text??void 0)}),r}export{a as t};
@@ -1 +1 @@
1
- import{r as e,t}from"./rolldown-runtime.js";import{_ as n}from"./sdk-contracts.js";var r=t(((t,n)=>{let r=e(`util`),i=e(`stream`),a=n.exports=function(){i.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};r.inherits(a,i),a.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},a.prototype.write=function(e,t){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let n;return n=Buffer.isBuffer(e)?e:Buffer.from(e,t||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},a.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},a.prototype.destroySoon=a.prototype.end,a.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},a.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},a.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))},a.prototype._processRead=function(e){this._reads.shift();let t=0,n=0,r=Buffer.alloc(e.length);for(;t<e.length;){let i=this._buffers[n++],a=Math.min(i.length,e.length-t);i.copy(r,t,0,a),t+=a,a!==i.length&&(this._buffers[--n]=i.slice(a))}n>0&&this._buffers.splice(0,n),this._buffered-=e.length,e.func.call(this,r)},a.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit(`error`,e)}}})),i=t((e=>{let t=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];e.getImagePasses=function(e,n){let r=[],i=e%8,a=n%8,o=(e-i)/8,s=(n-a)/8;for(let e=0;e<t.length;e++){let n=t[e],c=o*n.x.length,l=s*n.y.length;for(let e=0;e<n.x.length&&n.x[e]<i;e++)c++;for(let e=0;e<n.y.length&&n.y[e]<a;e++)l++;c>0&&l>0&&r.push({width:c,height:l,index:e})}return r},e.getInterlaceIterator=function(e){return function(n,r,i){let a=n%t[i].x.length,o=(n-a)/t[i].x.length*8+t[i].x[a],s=r%t[i].y.length,c=(r-s)/t[i].y.length*8+t[i].y[s];return o*4+c*e*4}}})),a=t(((e,t)=>{t.exports=function(e,t,n){let r=e+t-n,i=Math.abs(r-e),a=Math.abs(r-t),o=Math.abs(r-n);return i<=a&&i<=o?e:a<=o?t:n}})),o=t(((e,t)=>{let n=i(),r=a();function o(e,t,n){let r=e*t;return n!==8&&(r=Math.ceil(r/(8/n))),r}let s=t.exports=function(e,t){let r=e.width,i=e.height,a=e.interlace,s=e.bpp,c=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],a){let e=n.getImagePasses(r,i);for(let t=0;t<e.length;t++)this._images.push({byteWidth:o(e[t].width,s,c),height:e[t].height,lineIndex:0})}else this._images.push({byteWidth:o(r,s,c),height:i,lineIndex:0});c===8?this._xComparison=s:c===16?this._xComparison=s*2:this._xComparison=1};s.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},s.prototype._unFilterType1=function(e,t,n){let r=this._xComparison,i=r-1;for(let a=0;a<n;a++)t[a]=e[1+a]+(a>i?t[a-r]:0)},s.prototype._unFilterType2=function(e,t,n){let r=this._lastLine;for(let i=0;i<n;i++)t[i]=e[1+i]+(r?r[i]:0)},s.prototype._unFilterType3=function(e,t,n){let r=this._xComparison,i=r-1,a=this._lastLine;for(let o=0;o<n;o++){let n=e[1+o],s=a?a[o]:0,c=o>i?t[o-r]:0;t[o]=n+Math.floor((c+s)/2)}},s.prototype._unFilterType4=function(e,t,n){let i=this._xComparison,a=i-1,o=this._lastLine;for(let s=0;s<n;s++){let n=e[1+s],c=o?o[s]:0,l=s>a?t[s-i]:0,u=s>a&&o?o[s-i]:0;t[s]=n+r(l,c,u)}},s.prototype._reverseFilterLine=function(e){let t=e[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(t===0)n=e.slice(1,i+1);else switch(n=Buffer.alloc(i),t){case 1:this._unFilterType1(e,n,i);break;case 2:this._unFilterType2(e,n,i);break;case 3:this._unFilterType3(e,n,i);break;case 4:this._unFilterType4(e,n,i);break;default:throw Error(`Unrecognised filter type - `+t)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),s=t(((t,n)=>{let i=e(`util`),a=r(),s=o(),c=n.exports=function(e){a.call(this);let t=[],n=this;this._filter=new s(e,{read:this.read.bind(this),write:function(e){t.push(e)},complete:function(){n.emit(`complete`,Buffer.concat(t))}}),this._filter.start()};i.inherits(c,a)})),c=t(((e,t)=>{t.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),l=t(((e,t)=>{let n=[];(function(){for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t&1?t=3988292384^t>>>1:t>>>=1;n[e]=t}})();let r=t.exports=function(){this._crc=-1};r.prototype.write=function(e){for(let t=0;t<e.length;t++)this._crc=n[(this._crc^e[t])&255]^this._crc>>>8;return!0},r.prototype.crc32=function(){return this._crc^-1},r.crc32=function(e){let t=-1;for(let r=0;r<e.length;r++)t=n[(t^e[r])&255]^t>>>8;return t^-1}})),u=t(((e,t)=>{let n=c(),r=l(),i=t.exports=function(e,t){this._options=e,e.checkCRC=e.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[n.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[n.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[n.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[n.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[n.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[n.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};i.prototype.start=function(){this.read(n.PNG_SIGNATURE.length,this._parseSignature.bind(this))},i.prototype._parseSignature=function(e){let t=n.PNG_SIGNATURE;for(let n=0;n<t.length;n++)if(e[n]!==t[n]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},i.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),i=e.readUInt32BE(4),a=``;for(let t=4;t<8;t++)a+=String.fromCharCode(e[t]);let o=!!(e[4]&32);if(!this._hasIHDR&&i!==n.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new r,this._crc.write(Buffer.from(a)),this._chunks[i])return this._chunks[i](t);if(!o){this.error(Error(`Unsupported critical chunk type `+a));return}this.read(t+4,this._skipChunk.bind(this))},i.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},i.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==t){this.error(Error(`Crc error - `+t+` - `+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))},i.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i=e[8],a=e[9],o=e[10],s=e[11],c=e[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(Error(`Unsupported bit depth `+i));return}if(!(a in n.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(o!==0){this.error(Error(`Unsupported compression method`));return}if(s!==0){this.error(Error(`Unsupported filter method`));return}if(c!==0&&c!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=a;let l=n.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:i,interlace:!!c,palette:!!(a&n.COLORTYPE_PALETTE),color:!!(a&n.COLORTYPE_COLOR),alpha:!!(a&n.COLORTYPE_ALPHA),bpp:l,colorType:a}),this._handleChunkEnd()},i.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))},i.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let n=0;n<t;n++)this._palette.push([e[n*3],e[n*3+1],e[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},i.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))},i.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===n.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(e.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===n.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===n.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()},i.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))},i.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/n.GAMMA_DIVISION),this._handleChunkEnd()},i.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))},i.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===n.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},i.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))},i.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),d=t((e=>{let t=i(),n=[function(){},function(e,t,n,r){if(r===t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=255},function(e,t,n,r){if(r+1>=t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=t[r+1]},function(e,t,n,r){if(r+2>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=255},function(e,t,n,r){if(r+3>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=t[r+3]}],r=[function(){},function(e,t,n,r){let i=t[0];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=r},function(e,t,n){let r=t[0];e[n]=r,e[n+1]=r,e[n+2]=r,e[n+3]=t[1]},function(e,t,n,r){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=r},function(e,t,n){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=t[3]}];function a(e,t){let n=[],r=0;function i(){if(r===e.length)throw Error(`Ran out of data`);let i=e[r];r++;let a,o,s,c,l,u,d,f;switch(t){default:throw Error(`unrecognised depth`);case 16:d=e[r],r++,n.push((i<<8)+d);break;case 4:d=i&15,f=i>>4,n.push(f,d);break;case 2:l=i&3,u=i>>2&3,d=i>>4&3,f=i>>6&3,n.push(f,d,u,l);break;case 1:a=i&1,o=i>>1&1,s=i>>2&1,c=i>>3&1,l=i>>4&1,u=i>>5&1,d=i>>6&1,f=i>>7&1,n.push(f,d,u,l,c,s,o,a);break}}return{get:function(e){for(;n.length<e;)i();let t=n.slice(0,e);return n=n.slice(e),t},resetAfterLine:function(){n.length=0},end:function(){if(r!==e.length)throw Error(`extra data found`)}}}function o(e,t,r,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++)for(let c=0;c<s;c++){let s=r(c,e,l);n[i](t,a,s,o),o+=i}return o}function s(e,t,n,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++){for(let c=0;c<s;c++){let s=a.get(i),u=n(c,e,l);r[i](t,s,u,o)}a.resetAfterLine()}}e.dataToBitMap=function(e,n){let r=n.width,i=n.height,c=n.depth,l=n.bpp,u=n.interlace,d;c!==8&&(d=a(e,c));let f;f=c<=8?Buffer.alloc(r*i*4):new Uint16Array(r*i*4);let p=2**c-1,m=0,h,g;if(u)h=t.getImagePasses(r,i),g=t.getInterlaceIterator(r,i);else{let e=0;g=function(){let t=e;return e+=4,t},h=[{width:r,height:i}]}for(let t=0;t<h.length;t++)c===8?m=o(h[t],f,g,l,e,m):s(h[t],f,g,l,d,p);if(c===8){if(m!==e.length)throw Error(`extra data found`)}else d.end();return f}})),f=t(((e,t)=>{function n(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=i[e[a]];if(!n)throw Error(`index `+e[a]+` not in palette`);for(let e=0;e<4;e++)t[a+e]=n[e];a+=4}}function r(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=!1;if(i.length===1?i[0]===e[a]&&(n=!0):i[0]===e[a]&&i[1]===e[a+1]&&i[2]===e[a+2]&&(n=!0),n)for(let e=0;e<4;e++)t[a+e]=0;a+=4}}function i(e,t,n,r,i){let a=2**i-1,o=0;for(let i=0;i<r;i++)for(let r=0;r<n;r++){for(let n=0;n<4;n++)t[o+n]=Math.floor(e[o+n]*255/a+.5);o+=4}}t.exports=function(e,t,a=!1){let o=t.depth,s=t.width,c=t.height,l=t.colorType,u=t.transColor,d=t.palette,f=e;return l===3?n(e,f,s,c,d):(u&&r(e,f,s,c,u),o!==8&&!a&&(o===16&&(f=Buffer.alloc(s*c*4)),i(e,f,s,c,o))),f}})),p=t(((t,n)=>{let i=e(`util`),a=e(`zlib`),o=r(),c=s(),l=u(),p=d(),m=f(),h=n.exports=function(e){o.call(this),this._parser=new l(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};i.inherits(h,o),h.prototype._handleError=function(e){this.emit(`error`,e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},h.prototype._inflateData=function(e){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=a.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let e=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(e,a.Z_MIN_CHUNK);this._inflate=a.createInflate({chunkSize:t});let n=e,r=this.emit.bind(this,`error`);this._inflate.on(`error`,function(e){n&&r(e)}),this._filter.on(`complete`,this._complete.bind(this));let i=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(e){n&&(e.length>n&&(e=e.slice(0,n)),n-=e.length,i(e))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}this._inflate.write(e)},h.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new c(this._bitmapInfo)},h.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e},h.prototype._handlePalette=function(e){this._bitmapInfo.palette=e},h.prototype._simpleTransparency=function(){this._metaData.alpha=!0},h.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},h.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},h.prototype._complete=function(e){if(this.errord)return;let t;try{let n=p.dataToBitMap(e,this._bitmapInfo);t=m(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(e){this._handleError(e);return}this.emit(`parsed`,t)}})),m=t(((e,t)=>{let n=c();t.exports=function(e,t,r,i){let a=[n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let t=(function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&t)return e}let o=i.bitDepth===16?new Uint16Array(e.buffer):e,s=255,c=n.COLORTYPE_TO_BPP_MAP[i.inputColorType];c===4&&!i.inputHasAlpha&&(c=3);let l=n.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(s=65535,l*=2);let u=Buffer.alloc(t*r*l),d=0,f=0,p=i.bgColor||{};p.red===void 0&&(p.red=s),p.green===void 0&&(p.green=s),p.blue===void 0&&(p.blue=s);function m(){let e,t,r,c=s;switch(i.inputColorType){case n.COLORTYPE_COLOR_ALPHA:c=o[d+3],e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_COLOR:e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_ALPHA:c=o[d+1],e=o[d],t=e,r=e;break;case n.COLORTYPE_GRAYSCALE:e=o[d],t=e,r=e;break;default:throw Error(`input color type:`+i.inputColorType+` is not supported at present`)}return i.inputHasAlpha&&(a||(c/=s,e=Math.min(Math.max(Math.round((1-c)*p.red+c*e),0),s),t=Math.min(Math.max(Math.round((1-c)*p.green+c*t),0),s),r=Math.min(Math.max(Math.round((1-c)*p.blue+c*r),0),s))),{red:e,green:t,blue:r,alpha:c}}for(let e=0;e<r;e++)for(let e=0;e<t;e++){let e=m(o,d);switch(i.colorType){case n.COLORTYPE_COLOR_ALPHA:case n.COLORTYPE_COLOR:i.bitDepth===8?(u[f]=e.red,u[f+1]=e.green,u[f+2]=e.blue,a&&(u[f+3]=e.alpha)):(u.writeUInt16BE(e.red,f),u.writeUInt16BE(e.green,f+2),u.writeUInt16BE(e.blue,f+4),a&&u.writeUInt16BE(e.alpha,f+6));break;case n.COLORTYPE_ALPHA:case n.COLORTYPE_GRAYSCALE:{let t=(e.red+e.green+e.blue)/3;i.bitDepth===8?(u[f]=t,a&&(u[f+1]=e.alpha)):(u.writeUInt16BE(t,f),a&&u.writeUInt16BE(e.alpha,f+2));break}default:throw Error(`unrecognised color Type `+i.colorType)}d+=c,f+=l}return u}})),h=t(((e,t)=>{let n=a();function r(e,t,n,r,i){for(let a=0;a<n;a++)r[i+a]=e[t+a]}function i(e,t,n){let r=0,i=t+n;for(let n=t;n<i;n++)r+=Math.abs(e[n]);return r}function o(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=o>=a?e[t+o-a]:0,s=e[t+o]-n;r[i+o]=s}}function s(e,t,n,r){let i=0;for(let a=0;a<n;a++){let n=a>=r?e[t+a-r]:0,o=e[t+a]-n;i+=Math.abs(o)}return i}function c(e,t,n,r,i){for(let a=0;a<n;a++){let o=t>0?e[t+a-n]:0,s=e[t+a]-o;r[i+a]=s}}function l(e,t,n){let r=0,i=t+n;for(let a=t;a<i;a++){let i=t>0?e[a-n]:0,o=e[a]-i;r+=Math.abs(o)}return r}function u(e,t,n,r,i,a){for(let o=0;o<n;o++){let s=o>=a?e[t+o-a]:0,c=t>0?e[t+o-n]:0,l=e[t+o]-(s+c>>1);r[i+o]=l}}function d(e,t,n,r){let i=0;for(let a=0;a<n;a++){let o=a>=r?e[t+a-r]:0,s=t>0?e[t+a-n]:0,c=e[t+a]-(o+s>>1);i+=Math.abs(c)}return i}function f(e,t,r,i,a,o){for(let s=0;s<r;s++){let c=s>=o?e[t+s-o]:0,l=t>0?e[t+s-r]:0,u=t>0&&s>=o?e[t+s-(r+o)]:0,d=e[t+s]-n(c,l,u);i[a+s]=d}}function p(e,t,r,i){let a=0;for(let o=0;o<r;o++){let s=o>=i?e[t+o-i]:0,c=t>0?e[t+o-r]:0,l=t>0&&o>=i?e[t+o-(r+i)]:0,u=e[t+o]-n(s,c,l);a+=Math.abs(u)}return a}let m={0:r,1:o,2:c,3:u,4:f},h={0:i,1:s,2:l,3:d,4:p};t.exports=function(e,t,n,r,i){let a;if(!(`filterType`in r)||r.filterType===-1)a=[0,1,2,3,4];else if(typeof r.filterType==`number`)a=[r.filterType];else throw Error(`unrecognised filter types`);r.bitDepth===16&&(i*=2);let o=t*i,s=0,c=0,l=Buffer.alloc((o+1)*n),u=a[0];for(let t=0;t<n;t++){if(a.length>1){let t=1/0;for(let n=0;n<a.length;n++){let r=h[a[n]](e,c,o,i);r<t&&(u=a[n],t=r)}}l[s]=u,s++,m[u](e,c,o,l,s,i),s+=o,c+=o}return l}})),g=t(((t,n)=>{let r=c(),i=l(),a=m(),o=h(),s=e(`zlib`),u=n.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32*1024,e.deflateLevel=e.deflateLevel==null?9:e.deflateLevel,e.deflateStrategy=e.deflateStrategy==null?3:e.deflateStrategy,e.inputHasAlpha=e.inputHasAlpha==null?!0:e.inputHasAlpha,e.deflateFactory=e.deflateFactory||s.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType=typeof e.colorType==`number`?e.colorType:r.COLORTYPE_COLOR_ALPHA,e.inputColorType=typeof e.inputColorType==`number`?e.inputColorType:r.COLORTYPE_COLOR_ALPHA,[r.COLORTYPE_GRAYSCALE,r.COLORTYPE_COLOR,r.COLORTYPE_COLOR_ALPHA,r.COLORTYPE_ALPHA].indexOf(e.colorType)===-1)throw Error(`option color type:`+e.colorType+` is not supported at present`);if([r.COLORTYPE_GRAYSCALE,r.COLORTYPE_COLOR,r.COLORTYPE_COLOR_ALPHA,r.COLORTYPE_ALPHA].indexOf(e.inputColorType)===-1)throw Error(`option input color type:`+e.inputColorType+` is not supported at present`);if(e.bitDepth!==8&&e.bitDepth!==16)throw Error(`option bit depth:`+e.bitDepth+` is not supported at present`)};u.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},u.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},u.prototype.filterData=function(e,t,n){let i=a(e,t,n,this._options),s=r.COLORTYPE_TO_BPP_MAP[this._options.colorType];return o(i,t,n,this._options,s)},u.prototype._packChunk=function(e,t){let n=t?t.length:0,r=Buffer.alloc(n+12);return r.writeUInt32BE(n,0),r.writeUInt32BE(e,4),t&&t.copy(r,8),r.writeInt32BE(i.crc32(r.slice(4,r.length-4)),r.length-4),r},u.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*r.GAMMA_DIVISION),0),this._packChunk(r.TYPE_gAMA,t)},u.prototype.packIHDR=function(e,t){let n=Buffer.alloc(13);return n.writeUInt32BE(e,0),n.writeUInt32BE(t,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(r.TYPE_IHDR,n)},u.prototype.packIDAT=function(e){return this._packChunk(r.TYPE_IDAT,e)},u.prototype.packIEND=function(){return this._packChunk(r.TYPE_IEND,null)}})),_=t(((t,n)=>{let r=e(`util`),i=e(`stream`),a=c(),o=g(),s=n.exports=function(e){i.call(this);let t=e||{};this._packer=new o(t),this._deflate=this._packer.createDeflate(),this.readable=!0};r.inherits(s,i),s.prototype.pack=function(e,t,n,r){this.emit(`data`,Buffer.from(a.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(t,n)),r&&this.emit(`data`,this._packer.packGAMA(r));let i=this._packer.filterData(e,t,n);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(e){this.emit(`data`,this._packer.packIDAT(e))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(i)}})),v=t(((t,n)=>{let r=e(`assert`).ok,i=e(`zlib`),a=e(`util`),o=e(`buffer`).kMaxLength;function s(e){if(!(this instanceof s))return new s(e);e&&e.chunkSize<i.Z_MIN_CHUNK&&(e.chunkSize=i.Z_MIN_CHUNK),i.Inflate.call(this,e),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&e.maxLength!=null&&(this._maxLength=e.maxLength)}function c(e){return new s(e)}function l(e,t){t&&process.nextTick(t),e._handle&&=(e._handle.close(),null)}s.prototype._processChunk=function(e,t,n){if(typeof n==`function`)return i.Inflate._processChunk.call(this,e,t,n);let a=this,s=e&&e.length,c=this._chunkSize-this._offset,u=this._maxLength,d=0,f=[],p=0,m;this.on(`error`,function(e){m=e});function h(e,t){if(a._hadError)return;let n=c-t;if(r(n>=0,`have should not go down`),n>0){let e=a._buffer.slice(a._offset,a._offset+n);if(a._offset+=n,e.length>u&&(e=e.slice(0,u)),f.push(e),p+=e.length,u-=e.length,u===0)return!1}return(t===0||a._offset>=a._chunkSize)&&(c=a._chunkSize,a._offset=0,a._buffer=Buffer.allocUnsafe(a._chunkSize)),t===0?(d+=s-e,s=e,!0):!1}r(this._handle,`zlib binding closed`);let g;do g=this._handle.writeSync(t,e,d,s,this._buffer,this._offset,c),g||=this._writeState;while(!this._hadError&&h(g[0],g[1]));if(this._hadError)throw m;if(p>=o)throw l(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+o.toString(16)+` bytes`);let _=Buffer.concat(f,p);return l(this),_},a.inherits(s,i.Inflate);function u(e,t){if(typeof t==`string`&&(t=Buffer.from(t)),!(t instanceof Buffer))throw TypeError(`Not a string or buffer`);let n=e._finishFlushFlag;return n??=i.Z_FINISH,e._processChunk(t,n)}function d(e,t){return u(new s(t),e)}n.exports=t=d,t.Inflate=s,t.createInflate=c,t.inflateSync=d})),y=t(((e,t)=>{let n=t.exports=function(e){this._buffer=e,this._reads=[]};n.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})},n.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),b=t((e=>{let t=y(),n=o();e.process=function(e,r){let i=[],a=new t(e);return new n(r,{read:a.read.bind(a),write:function(e){i.push(e)},complete:function(){}}).start(),a.process(),Buffer.concat(i)}})),x=t(((t,n)=>{let r=!0,i=e(`zlib`),a=v();i.deflateSync||(r=!1);let o=y(),s=b(),c=u(),l=d(),p=f();n.exports=function(e,t){if(!r)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let n;function u(e){n=e}let d;function f(e){d=e}function m(e){d.transColor=e}function h(e){d.palette=e}function g(){d.alpha=!0}let _;function v(e){_=e}let y=[];function b(e){y.push(e)}let x=new o(e);if(new c(t,{read:x.read.bind(x),error:u,metadata:f,gamma:v,palette:h,transColor:m,inflateData:b,simpleTransparency:g}).start(),x.process(),n)throw n;let S=Buffer.concat(y);y.length=0;let C;if(d.interlace)C=i.inflateSync(S);else{let e=((d.width*d.bpp*d.depth+7>>3)+1)*d.height;C=a(S,{chunkSize:e,maxLength:e})}if(S=null,!C||!C.length)throw Error(`bad png - invalid inflate data response`);let w=s.process(C,d);S=null;let T=l.dataToBitMap(w,d);w=null;let E=p(T,d,t.skipRescale);return d.data=E,d.gamma=_||0,d}})),S=t(((t,n)=>{let r=!0,i=e(`zlib`);i.deflateSync||(r=!1);let a=c(),o=g();n.exports=function(e,t){if(!r)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let n=new o(t||{}),s=[];s.push(Buffer.from(a.PNG_SIGNATURE)),s.push(n.packIHDR(e.width,e.height)),e.gamma&&s.push(n.packGAMA(e.gamma));let c=n.filterData(e.data,e.width,e.height),l=i.deflateSync(c,n.getDeflateOptions());if(c=null,!l||!l.length)throw Error(`bad png - invalid compressed data response`);return s.push(n.packIDAT(l)),s.push(n.packIEND()),Buffer.concat(s)}})),C=t((e=>{let t=x(),n=S();e.read=function(e,n){return t(e,n||{})},e.write=function(e,t){return n(e,t)}})),w=t((t=>{let n=e(`util`),r=e(`stream`),i=p(),a=_(),o=C(),s=t.PNG=function(e){r.call(this),e||={},this.width=e.width|0,this.height=e.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new i(e),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(e){this.data=e,this.emit(`parsed`,e)}.bind(this)),this._packer=new a(e),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};n.inherits(s,r),s.sync=o,s.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},s.prototype.parse=function(e,t){if(t){let e,n;e=function(e){this.removeListener(`error`,n),this.data=e,t(null,this)}.bind(this),n=function(n){this.removeListener(`parsed`,e),t(n,null)}.bind(this),this.once(`parsed`,e),this.once(`error`,n)}return this.end(e),this},s.prototype.write=function(e){return this._parser.write(e),!0},s.prototype.end=function(e){this._parser.end(e)},s.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit(`metadata`,e)},s.prototype._gamma=function(e){this.gamma=e},s.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},s.bitblt=function(e,t,n,r,i,a,o,s){if(n|=0,r|=0,i|=0,a|=0,o|=0,s|=0,n>e.width||r>e.height||n+i>e.width||r+a>e.height)throw Error(`bitblt reading outside image`);if(o>t.width||s>t.height||o+i>t.width||s+a>t.height)throw Error(`bitblt writing outside image`);for(let c=0;c<a;c++)e.data.copy(t.data,(s+c)*t.width+o<<2,(r+c)*e.width+n<<2,(r+c)*e.width+n+i<<2)},s.prototype.bitblt=function(e,t,n,r,i,a,o){return s.bitblt(this,e,t,n,r,i,a,o),this},s.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++){let r=e.width*t+n<<2;for(let t=0;t<3;t++){let n=e.data[r+t]/255;n**=1/2.2/e.gamma,e.data[r+t]=Math.round(n*255)}}e.gamma=0}},s.prototype.adjustGamma=function(){s.adjustGamma(this)}}))();function T(e,t){try{return w.PNG.sync.read(e)}catch(e){throw new n(`COMMAND_FAILED`,`Failed to decode ${t} as PNG`,{label:t,reason:e instanceof Error?e.message:String(e)})}}const E=.78,D={r:220,g:0,b:0};function O(e){let{baselineData:t,currentData:n,maxColorDistance:r}=e,i=e.width*e.height,a=Buffer.alloc(i*4),o=new Uint8Array(i),s=0;for(let e=0,i=0;e<t.length;e+=4,i+=1){let c=t[e]-n[e],l=t[e+1]-n[e+1],u=t[e+2]-n[e+2];if(Math.sqrt(c**2+l**2+u**2)>r){s+=1,o[i]=1;let t=k(n,e);a[e]=A(t,D.r,E),a[e+1]=A(t,D.g,E),a[e+2]=A(t,D.b,E),a[e+3]=255;continue}let d=k(n,e);a[e]=d,a[e+1]=d,a[e+2]=d,a[e+3]=255}return{diffData:a,diffMask:o,differentPixels:s}}function k(e,t){return A(Math.round(e[t]*.299+e[t+1]*.587+e[t+2]*.114),255,.72)}function A(e,t,n){return Math.round(e*(1-n)+t*n)}function j(e,t){let n={first:{width:e.width,height:e.height,dataLength:e.data.length},second:{width:t.width,height:t.height,dataLength:t.data.length}};if(e.width!==t.width||e.height!==t.height)return{...n,status:`dimension_mismatch`};let r=e.width*e.height;if(e.data.length!==t.data.length||e.data.length!==r*4)return{...n,status:`data_length_mismatch`};let i=0;for(let n=0;n<e.data.length;n+=4)i+=Math.abs(e.data[n]-t.data[n]),i+=Math.abs(e.data[n+1]-t.data[n+1]),i+=Math.abs(e.data[n+2]-t.data[n+2]);return{...n,status:`compared`,differencePercent:100*i/(765*r)}}function M(e){return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}export{w as a,T as i,j as n,O as r,M as t};
1
+ import{i as e,t}from"./rolldown-runtime.js";import{y as n}from"./sdk-contracts.js";var r=t(((t,n)=>{let r=e(`util`),i=e(`stream`),a=n.exports=function(){i.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};r.inherits(a,i),a.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},a.prototype.write=function(e,t){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let n;return n=Buffer.isBuffer(e)?e:Buffer.from(e,t||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},a.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},a.prototype.destroySoon=a.prototype.end,a.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},a.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},a.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))},a.prototype._processRead=function(e){this._reads.shift();let t=0,n=0,r=Buffer.alloc(e.length);for(;t<e.length;){let i=this._buffers[n++],a=Math.min(i.length,e.length-t);i.copy(r,t,0,a),t+=a,a!==i.length&&(this._buffers[--n]=i.slice(a))}n>0&&this._buffers.splice(0,n),this._buffered-=e.length,e.func.call(this,r)},a.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit(`error`,e)}}})),i=t((e=>{let t=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];e.getImagePasses=function(e,n){let r=[],i=e%8,a=n%8,o=(e-i)/8,s=(n-a)/8;for(let e=0;e<t.length;e++){let n=t[e],c=o*n.x.length,l=s*n.y.length;for(let e=0;e<n.x.length&&n.x[e]<i;e++)c++;for(let e=0;e<n.y.length&&n.y[e]<a;e++)l++;c>0&&l>0&&r.push({width:c,height:l,index:e})}return r},e.getInterlaceIterator=function(e){return function(n,r,i){let a=n%t[i].x.length,o=(n-a)/t[i].x.length*8+t[i].x[a],s=r%t[i].y.length,c=(r-s)/t[i].y.length*8+t[i].y[s];return o*4+c*e*4}}})),a=t(((e,t)=>{t.exports=function(e,t,n){let r=e+t-n,i=Math.abs(r-e),a=Math.abs(r-t),o=Math.abs(r-n);return i<=a&&i<=o?e:a<=o?t:n}})),o=t(((e,t)=>{let n=i(),r=a();function o(e,t,n){let r=e*t;return n!==8&&(r=Math.ceil(r/(8/n))),r}let s=t.exports=function(e,t){let r=e.width,i=e.height,a=e.interlace,s=e.bpp,c=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],a){let e=n.getImagePasses(r,i);for(let t=0;t<e.length;t++)this._images.push({byteWidth:o(e[t].width,s,c),height:e[t].height,lineIndex:0})}else this._images.push({byteWidth:o(r,s,c),height:i,lineIndex:0});this._xComparison=c===8?s:c===16?s*2:1};s.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},s.prototype._unFilterType1=function(e,t,n){let r=this._xComparison,i=r-1;for(let a=0;a<n;a++){let n=e[1+a],o=a>i?t[a-r]:0;t[a]=n+o}},s.prototype._unFilterType2=function(e,t,n){let r=this._lastLine;for(let i=0;i<n;i++){let n=e[1+i],a=r?r[i]:0;t[i]=n+a}},s.prototype._unFilterType3=function(e,t,n){let r=this._xComparison,i=r-1,a=this._lastLine;for(let o=0;o<n;o++){let n=e[1+o],s=a?a[o]:0,c=o>i?t[o-r]:0,l=Math.floor((c+s)/2);t[o]=n+l}},s.prototype._unFilterType4=function(e,t,n){let i=this._xComparison,a=i-1,o=this._lastLine;for(let s=0;s<n;s++){let n=e[1+s],c=o?o[s]:0,l=s>a?t[s-i]:0,u=s>a&&o?o[s-i]:0,d=r(l,c,u);t[s]=n+d}},s.prototype._reverseFilterLine=function(e){let t=e[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(t===0)n=e.slice(1,i+1);else switch(n=Buffer.alloc(i),t){case 1:this._unFilterType1(e,n,i);break;case 2:this._unFilterType2(e,n,i);break;case 3:this._unFilterType3(e,n,i);break;case 4:this._unFilterType4(e,n,i);break;default:throw Error(`Unrecognised filter type - `+t)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),s=t(((t,n)=>{let i=e(`util`),a=r(),s=o(),c=n.exports=function(e){a.call(this);let t=[],n=this;this._filter=new s(e,{read:this.read.bind(this),write:function(e){t.push(e)},complete:function(){n.emit(`complete`,Buffer.concat(t))}}),this._filter.start()};i.inherits(c,a)})),c=t(((e,t)=>{t.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),l=t(((e,t)=>{let n=[];(function(){for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t&1?t=3988292384^t>>>1:t>>>=1;n[e]=t}})();let r=t.exports=function(){this._crc=-1};r.prototype.write=function(e){for(let t=0;t<e.length;t++)this._crc=n[(this._crc^e[t])&255]^this._crc>>>8;return!0},r.prototype.crc32=function(){return this._crc^-1},r.crc32=function(e){let t=-1;for(let r=0;r<e.length;r++)t=n[(t^e[r])&255]^t>>>8;return t^-1}})),u=t(((e,t)=>{let n=c(),r=l(),i=t.exports=function(e,t){this._options=e,e.checkCRC=e.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[n.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[n.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[n.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[n.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[n.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[n.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};i.prototype.start=function(){this.read(n.PNG_SIGNATURE.length,this._parseSignature.bind(this))},i.prototype._parseSignature=function(e){let t=n.PNG_SIGNATURE;for(let n=0;n<t.length;n++)if(e[n]!==t[n]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},i.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),i=e.readUInt32BE(4),a=``;for(let t=4;t<8;t++)a+=String.fromCharCode(e[t]);let o=!!(e[4]&32);if(!this._hasIHDR&&i!==n.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new r,this._crc.write(Buffer.from(a)),this._chunks[i])return this._chunks[i](t);if(!o){this.error(Error(`Unsupported critical chunk type `+a));return}this.read(t+4,this._skipChunk.bind(this))},i.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},i.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==t){this.error(Error(`Crc error - `+t+` - `+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))},i.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i=e[8],a=e[9],o=e[10],s=e[11],c=e[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(Error(`Unsupported bit depth `+i));return}if(!(a in n.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(o!==0){this.error(Error(`Unsupported compression method`));return}if(s!==0){this.error(Error(`Unsupported filter method`));return}if(c!==0&&c!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=a;let l=n.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:i,interlace:!!c,palette:!!(a&n.COLORTYPE_PALETTE),color:!!(a&n.COLORTYPE_COLOR),alpha:!!(a&n.COLORTYPE_ALPHA),bpp:l,colorType:a}),this._handleChunkEnd()},i.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))},i.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let n=0;n<t;n++)this._palette.push([e[n*3],e[n*3+1],e[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},i.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))},i.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===n.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(e.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===n.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===n.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()},i.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))},i.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/n.GAMMA_DIVISION),this._handleChunkEnd()},i.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))},i.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===n.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},i.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))},i.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),d=t((e=>{let t=i(),n=[function(){},function(e,t,n,r){if(r===t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=255},function(e,t,n,r){if(r+1>=t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=t[r+1]},function(e,t,n,r){if(r+2>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=255},function(e,t,n,r){if(r+3>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=t[r+3]}],r=[function(){},function(e,t,n,r){let i=t[0];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=r},function(e,t,n){let r=t[0];e[n]=r,e[n+1]=r,e[n+2]=r,e[n+3]=t[1]},function(e,t,n,r){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=r},function(e,t,n){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=t[3]}];function a(e,t){let n=[],r=0;function i(){if(r===e.length)throw Error(`Ran out of data`);let i=e[r];r++;let a,o,s,c,l,u,d,f;switch(t){default:throw Error(`unrecognised depth`);case 16:d=e[r],r++,n.push((i<<8)+d);break;case 4:d=i&15,f=i>>4,n.push(f,d);break;case 2:l=i&3,u=i>>2&3,d=i>>4&3,f=i>>6&3,n.push(f,d,u,l);break;case 1:a=i&1,o=i>>1&1,s=i>>2&1,c=i>>3&1,l=i>>4&1,u=i>>5&1,d=i>>6&1,f=i>>7&1,n.push(f,d,u,l,c,s,o,a)}}return{get:function(e){for(;n.length<e;)i();let t=n.slice(0,e);return n=n.slice(e),t},resetAfterLine:function(){n.length=0},end:function(){if(r!==e.length)throw Error(`extra data found`)}}}function o(e,t,r,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++)for(let c=0;c<s;c++){let s=r(c,e,l);n[i](t,a,s,o),o+=i}return o}function s(e,t,n,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++){for(let c=0;c<s;c++){let s=a.get(i),u=n(c,e,l);r[i](t,s,u,o)}a.resetAfterLine()}}e.dataToBitMap=function(e,n){let r=n.width,i=n.height,c=n.depth,l=n.bpp,u=n.interlace,d;c!==8&&(d=a(e,c));let f;f=c<=8?Buffer.alloc(r*i*4):new Uint16Array(r*i*4);let p=2**c-1,m=0,h,g;if(u)h=t.getImagePasses(r,i),g=t.getInterlaceIterator(r,i);else{let e=0;g=function(){let t=e;return e+=4,t},h=[{width:r,height:i}]}for(let t=0;t<h.length;t++)c===8?m=o(h[t],f,g,l,e,m):s(h[t],f,g,l,d,p);if(c===8){if(m!==e.length)throw Error(`extra data found`)}else d.end();return f}})),f=t(((e,t)=>{function n(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=i[e[a]];if(!n)throw Error(`index `+e[a]+` not in palette`);for(let e=0;e<4;e++)t[a+e]=n[e];a+=4}}function r(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=!1;if(i.length===1?i[0]===e[a]&&(n=!0):i[0]===e[a]&&i[1]===e[a+1]&&i[2]===e[a+2]&&(n=!0),n)for(let e=0;e<4;e++)t[a+e]=0;a+=4}}function i(e,t,n,r,i){let a=2**i-1,o=0;for(let i=0;i<r;i++)for(let r=0;r<n;r++){for(let n=0;n<4;n++)t[o+n]=Math.floor(e[o+n]*255/a+.5);o+=4}}t.exports=function(e,t,a=!1){let o=t.depth,s=t.width,c=t.height,l=t.colorType,u=t.transColor,d=t.palette,f=e;return l===3?n(e,f,s,c,d):(u&&r(e,f,s,c,u),o!==8&&!a&&(o===16&&(f=Buffer.alloc(s*c*4)),i(e,f,s,c,o))),f}})),p=t(((t,n)=>{let i=e(`util`),a=e(`zlib`),o=r(),c=s(),l=u(),p=d(),m=f(),h=n.exports=function(e){o.call(this),this._parser=new l(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};i.inherits(h,o),h.prototype._handleError=function(e){this.emit(`error`,e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},h.prototype._inflateData=function(e){if(!this._inflate){if(this._bitmapInfo.interlace)this._inflate=a.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let e=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(e,a.Z_MIN_CHUNK);this._inflate=a.createInflate({chunkSize:t});let n=e,r=this.emit.bind(this,`error`);this._inflate.on(`error`,function(e){n&&r(e)}),this._filter.on(`complete`,this._complete.bind(this));let i=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(e){n&&(e.length>n&&(e=e.slice(0,n)),n-=e.length,i(e))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}}this._inflate.write(e)},h.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new c(this._bitmapInfo)},h.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e},h.prototype._handlePalette=function(e){this._bitmapInfo.palette=e},h.prototype._simpleTransparency=function(){this._metaData.alpha=!0},h.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},h.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},h.prototype._complete=function(e){if(this.errord)return;let t;try{let n=p.dataToBitMap(e,this._bitmapInfo);t=m(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(e){this._handleError(e);return}this.emit(`parsed`,t)}})),m=t(((e,t)=>{let n=c();t.exports=function(e,t,r,i){let a=[n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let t=(function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&t)return e}let o=i.bitDepth===16?new Uint16Array(e.buffer):e,s=255,c=n.COLORTYPE_TO_BPP_MAP[i.inputColorType];c===4&&!i.inputHasAlpha&&(c=3);let l=n.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(s=65535,l*=2);let u=Buffer.alloc(t*r*l),d=0,f=0,p=i.bgColor||{};p.red===void 0&&(p.red=s),p.green===void 0&&(p.green=s),p.blue===void 0&&(p.blue=s);function m(){let e,t,r,c=s;switch(i.inputColorType){case n.COLORTYPE_COLOR_ALPHA:c=o[d+3],e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_COLOR:e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_ALPHA:c=o[d+1],e=o[d],t=e,r=e;break;case n.COLORTYPE_GRAYSCALE:e=o[d],t=e,r=e;break;default:throw Error(`input color type:`+i.inputColorType+` is not supported at present`)}return i.inputHasAlpha&&(a||(c/=s,e=Math.min(Math.max(Math.round((1-c)*p.red+c*e),0),s),t=Math.min(Math.max(Math.round((1-c)*p.green+c*t),0),s),r=Math.min(Math.max(Math.round((1-c)*p.blue+c*r),0),s))),{red:e,green:t,blue:r,alpha:c}}for(let e=0;e<r;e++)for(let e=0;e<t;e++){let e=m(o,d);switch(i.colorType){case n.COLORTYPE_COLOR_ALPHA:case n.COLORTYPE_COLOR:i.bitDepth===8?(u[f]=e.red,u[f+1]=e.green,u[f+2]=e.blue,a&&(u[f+3]=e.alpha)):(u.writeUInt16BE(e.red,f),u.writeUInt16BE(e.green,f+2),u.writeUInt16BE(e.blue,f+4),a&&u.writeUInt16BE(e.alpha,f+6));break;case n.COLORTYPE_ALPHA:case n.COLORTYPE_GRAYSCALE:{let t=(e.red+e.green+e.blue)/3;i.bitDepth===8?(u[f]=t,a&&(u[f+1]=e.alpha)):(u.writeUInt16BE(t,f),a&&u.writeUInt16BE(e.alpha,f+2));break}default:throw Error(`unrecognised color Type `+i.colorType)}d+=c,f+=l}return u}})),h=t(((e,t)=>{let n=a();function r(e,t,n,r,i){for(let a=0;a<n;a++)r[i+a]=e[t+a]}function i(e,t,n){let r=0,i=t+n;for(let n=t;n<i;n++)r+=Math.abs(e[n]);return r}function o(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=o>=a?e[t+o-a]:0,s=e[t+o]-n;r[i+o]=s}}function s(e,t,n,r){let i=0;for(let a=0;a<n;a++){let n=a>=r?e[t+a-r]:0,o=e[t+a]-n;i+=Math.abs(o)}return i}function c(e,t,n,r,i){for(let a=0;a<n;a++){let o=t>0?e[t+a-n]:0,s=e[t+a]-o;r[i+a]=s}}function l(e,t,n){let r=0,i=t+n;for(let a=t;a<i;a++){let i=t>0?e[a-n]:0,o=e[a]-i;r+=Math.abs(o)}return r}function u(e,t,n,r,i,a){for(let o=0;o<n;o++){let s=o>=a?e[t+o-a]:0,c=t>0?e[t+o-n]:0,l=e[t+o]-(s+c>>1);r[i+o]=l}}function d(e,t,n,r){let i=0;for(let a=0;a<n;a++){let o=a>=r?e[t+a-r]:0,s=t>0?e[t+a-n]:0,c=e[t+a]-(o+s>>1);i+=Math.abs(c)}return i}function f(e,t,r,i,a,o){for(let s=0;s<r;s++){let c=s>=o?e[t+s-o]:0,l=t>0?e[t+s-r]:0,u=t>0&&s>=o?e[t+s-(r+o)]:0,d=e[t+s]-n(c,l,u);i[a+s]=d}}function p(e,t,r,i){let a=0;for(let o=0;o<r;o++){let s=o>=i?e[t+o-i]:0,c=t>0?e[t+o-r]:0,l=t>0&&o>=i?e[t+o-(r+i)]:0,u=e[t+o]-n(s,c,l);a+=Math.abs(u)}return a}let m={0:r,1:o,2:c,3:u,4:f},h={0:i,1:s,2:l,3:d,4:p};t.exports=function(e,t,n,r,i){let a;if(!(`filterType`in r)||r.filterType===-1)a=[0,1,2,3,4];else if(typeof r.filterType==`number`)a=[r.filterType];else throw Error(`unrecognised filter types`);r.bitDepth===16&&(i*=2);let o=t*i,s=0,c=0,l=Buffer.alloc((o+1)*n),u=a[0];for(let t=0;t<n;t++){if(a.length>1){let t=1/0;for(let n=0;n<a.length;n++){let r=h[a[n]](e,c,o,i);r<t&&(u=a[n],t=r)}}l[s]=u,s++,m[u](e,c,o,l,s,i),s+=o,c+=o}return l}})),g=t(((t,n)=>{let r=c(),i=l(),a=m(),o=h(),s=e(`zlib`),u=n.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32768,e.deflateLevel=e.deflateLevel==null?9:e.deflateLevel,e.deflateStrategy=e.deflateStrategy==null?3:e.deflateStrategy,e.inputHasAlpha=e.inputHasAlpha==null||e.inputHasAlpha,e.deflateFactory=e.deflateFactory||s.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType=typeof e.colorType==`number`?e.colorType:r.COLORTYPE_COLOR_ALPHA,e.inputColorType=typeof e.inputColorType==`number`?e.inputColorType:r.COLORTYPE_COLOR_ALPHA,[r.COLORTYPE_GRAYSCALE,r.COLORTYPE_COLOR,r.COLORTYPE_COLOR_ALPHA,r.COLORTYPE_ALPHA].indexOf(e.colorType)===-1)throw Error(`option color type:`+e.colorType+` is not supported at present`);if([r.COLORTYPE_GRAYSCALE,r.COLORTYPE_COLOR,r.COLORTYPE_COLOR_ALPHA,r.COLORTYPE_ALPHA].indexOf(e.inputColorType)===-1)throw Error(`option input color type:`+e.inputColorType+` is not supported at present`);if(e.bitDepth!==8&&e.bitDepth!==16)throw Error(`option bit depth:`+e.bitDepth+` is not supported at present`)};u.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},u.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},u.prototype.filterData=function(e,t,n){let i=a(e,t,n,this._options),s=r.COLORTYPE_TO_BPP_MAP[this._options.colorType];return o(i,t,n,this._options,s)},u.prototype._packChunk=function(e,t){let n=t?t.length:0,r=Buffer.alloc(n+12);return r.writeUInt32BE(n,0),r.writeUInt32BE(e,4),t&&t.copy(r,8),r.writeInt32BE(i.crc32(r.slice(4,r.length-4)),r.length-4),r},u.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*r.GAMMA_DIVISION),0),this._packChunk(r.TYPE_gAMA,t)},u.prototype.packIHDR=function(e,t){let n=Buffer.alloc(13);return n.writeUInt32BE(e,0),n.writeUInt32BE(t,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(r.TYPE_IHDR,n)},u.prototype.packIDAT=function(e){return this._packChunk(r.TYPE_IDAT,e)},u.prototype.packIEND=function(){return this._packChunk(r.TYPE_IEND,null)}})),_=t(((t,n)=>{let r=e(`util`),i=e(`stream`),a=c(),o=g(),s=n.exports=function(e){i.call(this);let t=e||{};this._packer=new o(t),this._deflate=this._packer.createDeflate(),this.readable=!0};r.inherits(s,i),s.prototype.pack=function(e,t,n,r){this.emit(`data`,Buffer.from(a.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(t,n)),r&&this.emit(`data`,this._packer.packGAMA(r));let i=this._packer.filterData(e,t,n);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(e){this.emit(`data`,this._packer.packIDAT(e))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(i)}})),v=t(((t,n)=>{let r=e(`assert`).ok,i=e(`zlib`),a=e(`util`),o=e(`buffer`).kMaxLength;function s(e){if(!(this instanceof s))return new s(e);e&&e.chunkSize<i.Z_MIN_CHUNK&&(e.chunkSize=i.Z_MIN_CHUNK),i.Inflate.call(this,e),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&e.maxLength!=null&&(this._maxLength=e.maxLength)}function c(e){return new s(e)}function l(e,t){t&&process.nextTick(t),e._handle&&=(e._handle.close(),null)}s.prototype._processChunk=function(e,t,n){if(typeof n==`function`)return i.Inflate._processChunk.call(this,e,t,n);let a=this,s=e&&e.length,c=this._chunkSize-this._offset,u=this._maxLength,d=0,f=[],p=0,m;this.on(`error`,function(e){m=e});function h(e,t){if(a._hadError)return;let n=c-t;if(r(n>=0,`have should not go down`),n>0){let e=a._buffer.slice(a._offset,a._offset+n);if(a._offset+=n,e.length>u&&(e=e.slice(0,u)),f.push(e),p+=e.length,u-=e.length,u===0)return!1}return(t===0||a._offset>=a._chunkSize)&&(c=a._chunkSize,a._offset=0,a._buffer=Buffer.allocUnsafe(a._chunkSize)),t===0&&(d+=s-e,s=e,!0)}r(this._handle,`zlib binding closed`);let g;do g=this._handle.writeSync(t,e,d,s,this._buffer,this._offset,c),g||=this._writeState;while(!this._hadError&&h(g[0],g[1]));if(this._hadError)throw m;if(p>=o)throw l(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+o.toString(16)+` bytes`);let _=Buffer.concat(f,p);return l(this),_},a.inherits(s,i.Inflate);function u(e,t){if(typeof t==`string`&&(t=Buffer.from(t)),!(t instanceof Buffer))throw TypeError(`Not a string or buffer`);let n=e._finishFlushFlag;return n??=i.Z_FINISH,e._processChunk(t,n)}function d(e,t){return u(new s(t),e)}n.exports=t=d,t.Inflate=s,t.createInflate=c,t.inflateSync=d})),y=t(((e,t)=>{let n=t.exports=function(e){this._buffer=e,this._reads=[]};n.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})},n.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),b=t((e=>{let t=y(),n=o();e.process=function(e,r){let i=[],a=new t(e);return new n(r,{read:a.read.bind(a),write:function(e){i.push(e)},complete:function(){}}).start(),a.process(),Buffer.concat(i)}})),x=t(((t,n)=>{let r=!0,i=e(`zlib`),a=v();i.deflateSync||(r=!1);let o=y(),s=b(),c=u(),l=d(),p=f();n.exports=function(e,t){if(!r)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let n;function u(e){n=e}let d;function f(e){d=e}function m(e){d.transColor=e}function h(e){d.palette=e}function g(){d.alpha=!0}let _;function v(e){_=e}let y=[];function b(e){y.push(e)}let x=new o(e);if(new c(t,{read:x.read.bind(x),error:u,metadata:f,gamma:v,palette:h,transColor:m,inflateData:b,simpleTransparency:g}).start(),x.process(),n)throw n;let S=Buffer.concat(y);y.length=0;let C;if(d.interlace)C=i.inflateSync(S);else{let e=((d.width*d.bpp*d.depth+7>>3)+1)*d.height;C=a(S,{chunkSize:e,maxLength:e})}if(S=null,!C||!C.length)throw Error(`bad png - invalid inflate data response`);let w=s.process(C,d);S=null;let T=l.dataToBitMap(w,d);w=null;let E=p(T,d,t.skipRescale);return d.data=E,d.gamma=_||0,d}})),S=t(((t,n)=>{let r=!0,i=e(`zlib`);i.deflateSync||(r=!1);let a=c(),o=g();n.exports=function(e,t){if(!r)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let n=new o(t||{}),s=[];s.push(Buffer.from(a.PNG_SIGNATURE)),s.push(n.packIHDR(e.width,e.height)),e.gamma&&s.push(n.packGAMA(e.gamma));let c=n.filterData(e.data,e.width,e.height),l=i.deflateSync(c,n.getDeflateOptions());if(c=null,!l||!l.length)throw Error(`bad png - invalid compressed data response`);return s.push(n.packIDAT(l)),s.push(n.packIEND()),Buffer.concat(s)}})),C=t((e=>{let t=x(),n=S();e.read=function(e,n){return t(e,n||{})},e.write=function(e,t){return n(e,t)}})),w=t((t=>{let n=e(`util`),r=e(`stream`),i=p(),a=_(),o=C(),s=t.PNG=function(e){r.call(this),e||={},this.width=e.width|0,this.height=e.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new i(e),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(e){this.data=e,this.emit(`parsed`,e)}.bind(this)),this._packer=new a(e),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};n.inherits(s,r),s.sync=o,s.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},s.prototype.parse=function(e,t){if(t){let e,n;e=function(e){this.removeListener(`error`,n),this.data=e,t(null,this)}.bind(this),n=function(n){this.removeListener(`parsed`,e),t(n,null)}.bind(this),this.once(`parsed`,e),this.once(`error`,n)}return this.end(e),this},s.prototype.write=function(e){return this._parser.write(e),!0},s.prototype.end=function(e){this._parser.end(e)},s.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit(`metadata`,e)},s.prototype._gamma=function(e){this.gamma=e},s.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},s.bitblt=function(e,t,n,r,i,a,o,s){if(n|=0,r|=0,i|=0,a|=0,o|=0,s|=0,n>e.width||r>e.height||n+i>e.width||r+a>e.height)throw Error(`bitblt reading outside image`);if(o>t.width||s>t.height||o+i>t.width||s+a>t.height)throw Error(`bitblt writing outside image`);for(let c=0;c<a;c++)e.data.copy(t.data,(s+c)*t.width+o<<2,(r+c)*e.width+n<<2,(r+c)*e.width+n+i<<2)},s.prototype.bitblt=function(e,t,n,r,i,a,o){return s.bitblt(this,e,t,n,r,i,a,o),this},s.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++){let r=e.width*t+n<<2;for(let t=0;t<3;t++){let n=e.data[r+t]/255;n**=1/2.2/e.gamma,e.data[r+t]=Math.round(n*255)}}e.gamma=0}},s.prototype.adjustGamma=function(){s.adjustGamma(this)}}))();function T(e,t){try{return w.PNG.sync.read(e)}catch(e){throw new n(`COMMAND_FAILED`,`Failed to decode ${t} as PNG`,{label:t,reason:e instanceof Error?e.message:String(e)})}}const E=.78,D={r:220,g:0,b:0};function O(e){let{baselineData:t,currentData:n,maxColorDistance:r}=e,i=e.width*e.height,a=Buffer.alloc(i*4),o=new Uint8Array(i),s=0;for(let e=0,i=0;e<t.length;e+=4,i+=1){let c=t[e]-n[e],l=t[e+1]-n[e+1],u=t[e+2]-n[e+2];if(Math.sqrt(c**2+l**2+u**2)>r){s+=1,o[i]=1;let t=k(n,e);a[e]=A(t,D.r,E),a[e+1]=A(t,D.g,E),a[e+2]=A(t,D.b,E),a[e+3]=255;continue}let d=k(n,e);a[e]=d,a[e+1]=d,a[e+2]=d,a[e+3]=255}return{diffData:a,diffMask:o,differentPixels:s}}function k(e,t){return A(Math.round(e[t]*.299+e[t+1]*.587+e[t+2]*.114),255,.72)}function A(e,t,n){return Math.round(e*(1-n)+t*n)}function j(e,t){let n={first:{width:e.width,height:e.height,dataLength:e.data.length},second:{width:t.width,height:t.height,dataLength:t.data.length}};if(e.width!==t.width||e.height!==t.height)return{...n,status:`dimension_mismatch`};let r=e.width*e.height;if(e.data.length!==t.data.length||e.data.length!==r*4)return{...n,status:`data_length_mismatch`};let i=0;for(let n=0;n<e.data.length;n+=4)i+=Math.abs(e.data[n]-t.data[n]),i+=Math.abs(e.data[n+1]-t.data[n+1]),i+=Math.abs(e.data[n+2]-t.data[n+2]);return{...n,status:`compared`,differencePercent:100*i/(765*r)}}function M(e){return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}export{w as a,T as i,j as n,O as r,M as t};