@corellium/corellium-cli 1.0.3 → 1.0.6

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 (490) hide show
  1. package/README.md +5 -17
  2. package/docs/OVERVIEW.md +1 -1
  3. package/jenkinsbuild/build.sh +1 -1
  4. package/package.json +3 -3
  5. package/src/TrialAccount.js +76 -0
  6. package/src/commands/Client.js +2 -2
  7. package/src/commands/agent/Agent.js +10 -19
  8. package/src/commands/agent/apps.js +2 -1
  9. package/src/commands/agent/file.js +2 -1
  10. package/src/commands/agent/index.js +1 -0
  11. package/src/commands/agent/ready.js +43 -0
  12. package/src/commands/extensions/delete.js +2 -1
  13. package/src/commands/extensions/list.js +2 -1
  14. package/src/commands/extensions/load.js +2 -1
  15. package/src/commands/extensions/validate.js +2 -1
  16. package/src/commands/firmware/list.js +2 -1
  17. package/src/commands/firmware/load.js +2 -1
  18. package/src/commands/images/create.js +2 -1
  19. package/src/commands/images/delete.js +2 -1
  20. package/src/commands/images/list.js +2 -1
  21. package/src/commands/instances/Instance.js +27 -0
  22. package/src/commands/instances/create.js +11 -4
  23. package/src/commands/instances/delete.js +20 -5
  24. package/src/commands/instances/index.js +2 -1
  25. package/src/commands/instances/list.js +11 -5
  26. package/src/commands/instances/start.js +2 -1
  27. package/src/commands/instances/stop.js +2 -1
  28. package/src/commands/instances/upgrade.js +90 -0
  29. package/src/commands/login.js +14 -2
  30. package/src/commands/logout.js +2 -1
  31. package/src/commands/projects/create.js +2 -1
  32. package/src/commands/projects/delete.js +2 -1
  33. package/src/commands/projects/list.js +2 -1
  34. package/src/commands/signup.js +14 -5
  35. package/src/commands/webplayer/WebPlayer.js +2 -1
  36. package/src/commands/webplayer/create.js +8 -1
  37. package/src/commands/webplayer/destroy.js +2 -1
  38. package/src/commands/webplayer/list.js +19 -17
  39. package/src/commands/webplayer/login.js +2 -1
  40. package/src/error.js +14 -1
  41. package/src/logging.js +1 -1
  42. package/src/profile.js +12 -9
  43. package/src/resumable.js +1314 -0
  44. package/src/table.js +7 -2
  45. package/src/upload.js +64 -2
  46. package/src/utils.js +11 -4
  47. package/test/test.js +89 -0
  48. package/example/WebPlayerSample.js +0 -263
  49. package/node_modules/@corellium/corellium-api/README.md +0 -1210
  50. package/node_modules/@corellium/corellium-api/node_modules/form-data/License +0 -19
  51. package/node_modules/@corellium/corellium-api/node_modules/form-data/README.md.bak +0 -356
  52. package/node_modules/@corellium/corellium-api/node_modules/form-data/Readme.md +0 -356
  53. package/node_modules/@corellium/corellium-api/node_modules/form-data/index.d.ts +0 -62
  54. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/browser.js +0 -2
  55. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/form_data.js +0 -498
  56. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/populate.js +0 -10
  57. package/node_modules/@corellium/corellium-api/node_modules/form-data/package.json +0 -104
  58. package/node_modules/@corellium/corellium-api/node_modules/uuid/AUTHORS +0 -5
  59. package/node_modules/@corellium/corellium-api/node_modules/uuid/CHANGELOG.md +0 -119
  60. package/node_modules/@corellium/corellium-api/node_modules/uuid/LICENSE.md +0 -21
  61. package/node_modules/@corellium/corellium-api/node_modules/uuid/README.md +0 -276
  62. package/node_modules/@corellium/corellium-api/node_modules/uuid/bin/uuid +0 -65
  63. package/node_modules/@corellium/corellium-api/node_modules/uuid/index.js +0 -8
  64. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/bytesToUuid.js +0 -26
  65. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5-browser.js +0 -216
  66. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5.js +0 -25
  67. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng-browser.js +0 -34
  68. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng.js +0 -8
  69. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1-browser.js +0 -89
  70. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1.js +0 -25
  71. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/v35.js +0 -57
  72. package/node_modules/@corellium/corellium-api/node_modules/uuid/package.json +0 -103
  73. package/node_modules/@corellium/corellium-api/node_modules/uuid/v1.js +0 -109
  74. package/node_modules/@corellium/corellium-api/node_modules/uuid/v3.js +0 -4
  75. package/node_modules/@corellium/corellium-api/node_modules/uuid/v4.js +0 -29
  76. package/node_modules/@corellium/corellium-api/node_modules/uuid/v5.js +0 -3
  77. package/node_modules/@corellium/corellium-api/package.json +0 -106
  78. package/node_modules/@corellium/corellium-api/resumable.js +0 -1312
  79. package/node_modules/@corellium/corellium-api/src/agent.js +0 -962
  80. package/node_modules/@corellium/corellium-api/src/corellium.js +0 -444
  81. package/node_modules/@corellium/corellium-api/src/images.js +0 -131
  82. package/node_modules/@corellium/corellium-api/src/input.js +0 -178
  83. package/node_modules/@corellium/corellium-api/src/instance-updater.js +0 -56
  84. package/node_modules/@corellium/corellium-api/src/instance.js +0 -1031
  85. package/node_modules/@corellium/corellium-api/src/netmon.js +0 -308
  86. package/node_modules/@corellium/corellium-api/src/project.js +0 -393
  87. package/node_modules/@corellium/corellium-api/src/role.js +0 -65
  88. package/node_modules/@corellium/corellium-api/src/snapshot.js +0 -77
  89. package/node_modules/@corellium/corellium-api/src/team.js +0 -29
  90. package/node_modules/@corellium/corellium-api/src/user.js +0 -51
  91. package/node_modules/@corellium/corellium-api/src/util/fetch.js +0 -62
  92. package/node_modules/@corellium/corellium-api/src/util/sleep.js +0 -7
  93. package/node_modules/@corellium/corellium-api/test/integration-tests.js +0 -1292
  94. package/node_modules/@corellium/corellium-api/test/root-hook-set-flag-if-test-failed.js +0 -7
  95. package/node_modules/async-limiter/.eslintignore +0 -2
  96. package/node_modules/async-limiter/.nycrc +0 -10
  97. package/node_modules/async-limiter/.travis.yml +0 -9
  98. package/node_modules/async-limiter/LICENSE +0 -8
  99. package/node_modules/async-limiter/index.js +0 -67
  100. package/node_modules/async-limiter/package.json +0 -72
  101. package/node_modules/async-limiter/readme.md +0 -132
  102. package/node_modules/buffer-crc32/LICENSE +0 -19
  103. package/node_modules/buffer-crc32/README.md +0 -47
  104. package/node_modules/buffer-crc32/index.js +0 -111
  105. package/node_modules/buffer-crc32/package.json +0 -72
  106. package/node_modules/cross-fetch/LICENSE +0 -21
  107. package/node_modules/cross-fetch/README.md +0 -169
  108. package/node_modules/cross-fetch/dist/browser-polyfill.js +0 -532
  109. package/node_modules/cross-fetch/dist/browser-ponyfill.js +0 -554
  110. package/node_modules/cross-fetch/dist/cross-fetch.js +0 -2
  111. package/node_modules/cross-fetch/dist/cross-fetch.js.map +0 -1
  112. package/node_modules/cross-fetch/dist/node-polyfill.js +0 -11
  113. package/node_modules/cross-fetch/dist/node-ponyfill.js +0 -22
  114. package/node_modules/cross-fetch/dist/react-native-polyfill.js +0 -12
  115. package/node_modules/cross-fetch/dist/react-native-ponyfill.js +0 -6
  116. package/node_modules/cross-fetch/index.d.ts +0 -14
  117. package/node_modules/cross-fetch/package.json +0 -160
  118. package/node_modules/cross-fetch/polyfill/package.json +0 -8
  119. package/node_modules/duplexify/.travis.yml +0 -6
  120. package/node_modules/duplexify/LICENSE +0 -21
  121. package/node_modules/duplexify/README.md +0 -97
  122. package/node_modules/duplexify/example.js +0 -21
  123. package/node_modules/duplexify/index.js +0 -234
  124. package/node_modules/duplexify/package.json +0 -69
  125. package/node_modules/duplexify/test.js +0 -295
  126. package/node_modules/end-of-stream/LICENSE +0 -21
  127. package/node_modules/end-of-stream/README.md +0 -54
  128. package/node_modules/end-of-stream/index.js +0 -94
  129. package/node_modules/end-of-stream/package.json +0 -69
  130. package/node_modules/fast-stable-stringify/.npmignore +0 -4
  131. package/node_modules/fast-stable-stringify/.travis.yml +0 -10
  132. package/node_modules/fast-stable-stringify/LICENSE +0 -21
  133. package/node_modules/fast-stable-stringify/README.md +0 -81
  134. package/node_modules/fast-stable-stringify/cli/files-to-comparison-results.js +0 -67
  135. package/node_modules/fast-stable-stringify/cli/format-table.js +0 -70
  136. package/node_modules/fast-stable-stringify/cli/index.js +0 -19
  137. package/node_modules/fast-stable-stringify/fixtures/index.js +0 -5
  138. package/node_modules/fast-stable-stringify/fixtures/input-data-types.js +0 -191
  139. package/node_modules/fast-stable-stringify/fixtures/log-result.json +0 -22
  140. package/node_modules/fast-stable-stringify/fixtures/log.txt +0 -24
  141. package/node_modules/fast-stable-stringify/index.js +0 -73
  142. package/node_modules/fast-stable-stringify/karma.conf.js +0 -124
  143. package/node_modules/fast-stable-stringify/karma.conf.travis.js +0 -95
  144. package/node_modules/fast-stable-stringify/package.json +0 -77
  145. package/node_modules/fast-stable-stringify/results/escape-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
  146. package/node_modules/fast-stable-stringify/results/escape-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
  147. package/node_modules/fast-stable-stringify/results/escape-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
  148. package/node_modules/fast-stable-stringify/results/escape-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
  149. package/node_modules/fast-stable-stringify/results/escape-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
  150. package/node_modules/fast-stable-stringify/results/escape-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
  151. package/node_modules/fast-stable-stringify/results/escape-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
  152. package/node_modules/fast-stable-stringify/results/escape-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
  153. package/node_modules/fast-stable-stringify/results/escape-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
  154. package/node_modules/fast-stable-stringify/results/escape-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
  155. package/node_modules/fast-stable-stringify/results/escape-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
  156. package/node_modules/fast-stable-stringify/results/escape-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
  157. package/node_modules/fast-stable-stringify/results/escape-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
  158. package/node_modules/fast-stable-stringify/results/escape-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
  159. package/node_modules/fast-stable-stringify/results/escape-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
  160. package/node_modules/fast-stable-stringify/results/escape-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
  161. package/node_modules/fast-stable-stringify/results/escape-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
  162. package/node_modules/fast-stable-stringify/results/escape-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
  163. package/node_modules/fast-stable-stringify/results/escape.md +0 -20
  164. package/node_modules/fast-stable-stringify/results/itar-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  165. package/node_modules/fast-stable-stringify/results/itar-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  166. package/node_modules/fast-stable-stringify/results/itar-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  167. package/node_modules/fast-stable-stringify/results/itar-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  168. package/node_modules/fast-stable-stringify/results/itar-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  169. package/node_modules/fast-stable-stringify/results/itar-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  170. package/node_modules/fast-stable-stringify/results/itar-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  171. package/node_modules/fast-stable-stringify/results/itar-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  172. package/node_modules/fast-stable-stringify/results/itar-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  173. package/node_modules/fast-stable-stringify/results/itar-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  174. package/node_modules/fast-stable-stringify/results/itar-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  175. package/node_modules/fast-stable-stringify/results/itar-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  176. package/node_modules/fast-stable-stringify/results/itar-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  177. package/node_modules/fast-stable-stringify/results/itar-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  178. package/node_modules/fast-stable-stringify/results/itar-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  179. package/node_modules/fast-stable-stringify/results/itar-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  180. package/node_modules/fast-stable-stringify/results/itar-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  181. package/node_modules/fast-stable-stringify/results/itar-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  182. package/node_modules/fast-stable-stringify/results/itar.md +0 -20
  183. package/node_modules/fast-stable-stringify/results/iter/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  184. package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 39.0.0 (Android 5.1.1).json +0 -35
  185. package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  186. package/node_modules/fast-stable-stringify/results/iter/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  187. package/node_modules/fast-stable-stringify/results/iter/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  188. package/node_modules/fast-stable-stringify/results/iter/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  189. package/node_modules/fast-stable-stringify/results/iter/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  190. package/node_modules/fast-stable-stringify/results/iter/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  191. package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  192. package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 9.0.0 (iOS 9.2.0).json +0 -35
  193. package/node_modules/fast-stable-stringify/results/iter/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  194. package/node_modules/fast-stable-stringify/results/iter/Safari 9.1.2 (Mac OS X 10.11.6).json +0 -35
  195. package/node_modules/fast-stable-stringify/results/iter.md +0 -14
  196. package/node_modules/fast-stable-stringify/results/libs/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -46
  197. package/node_modules/fast-stable-stringify/results/libs/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -46
  198. package/node_modules/fast-stable-stringify/results/libs/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -46
  199. package/node_modules/fast-stable-stringify/results/libs/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -46
  200. package/node_modules/fast-stable-stringify/results/libs/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  201. package/node_modules/fast-stable-stringify/results/libs/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  202. package/node_modules/fast-stable-stringify/results/libs/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  203. package/node_modules/fast-stable-stringify/results/libs/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -46
  204. package/node_modules/fast-stable-stringify/results/libs/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -46
  205. package/node_modules/fast-stable-stringify/results/libs.md +0 -15
  206. package/node_modules/fast-stable-stringify/test/escape-long.js +0 -147
  207. package/node_modules/fast-stable-stringify/test/escape-short.js +0 -147
  208. package/node_modules/fast-stable-stringify/test/index.js +0 -6
  209. package/node_modules/fast-stable-stringify/test/itar-long.js +0 -52
  210. package/node_modules/fast-stable-stringify/test/itar-short.js +0 -52
  211. package/node_modules/fast-stable-stringify/test/iter.js +0 -84
  212. package/node_modules/fast-stable-stringify/test/libs.js +0 -57
  213. package/node_modules/fast-stable-stringify/test/travis.js +0 -43
  214. package/node_modules/fast-stable-stringify/test/validate.js +0 -24
  215. package/node_modules/fast-stable-stringify/util/eachRecursive.js +0 -9
  216. package/node_modules/fast-stable-stringify/util/get-git-hash-sync.js +0 -21
  217. package/node_modules/fast-stable-stringify/util/get-lib-info.js +0 -22
  218. package/node_modules/fast-stable-stringify/util/object-path.js +0 -47
  219. package/node_modules/fast-stable-stringify/v8-profile/bench.js +0 -8
  220. package/node_modules/fast-stable-stringify/v8-profile/run.sh +0 -2
  221. package/node_modules/fast-stable-stringify/zuul-local.sh +0 -2
  222. package/node_modules/hkdf/.npmignore +0 -2
  223. package/node_modules/hkdf/README.md +0 -23
  224. package/node_modules/hkdf/hkdf.py +0 -171
  225. package/node_modules/hkdf/hkdf.pyc +0 -0
  226. package/node_modules/hkdf/index.js +0 -1
  227. package/node_modules/hkdf/lib/hkdf.js +0 -55
  228. package/node_modules/hkdf/package.json +0 -55
  229. package/node_modules/hkdf/scripts/run_all_tests.sh +0 -19
  230. package/node_modules/hkdf/test/all-test.js +0 -79
  231. package/node_modules/hkdf/test.py +0 -11
  232. package/node_modules/immediate/LICENSE.txt +0 -20
  233. package/node_modules/immediate/README.md +0 -93
  234. package/node_modules/immediate/dist/immediate.js +0 -75
  235. package/node_modules/immediate/dist/immediate.min.js +0 -1
  236. package/node_modules/immediate/lib/browser.js +0 -69
  237. package/node_modules/immediate/lib/index.js +0 -73
  238. package/node_modules/immediate/package.json +0 -86
  239. package/node_modules/isarray/.npmignore +0 -1
  240. package/node_modules/isarray/.travis.yml +0 -4
  241. package/node_modules/isarray/Makefile +0 -6
  242. package/node_modules/isarray/README.md +0 -60
  243. package/node_modules/isarray/component.json +0 -19
  244. package/node_modules/isarray/index.js +0 -5
  245. package/node_modules/isarray/package.json +0 -77
  246. package/node_modules/isarray/test.js +0 -20
  247. package/node_modules/jszip/.codeclimate.yml +0 -16
  248. package/node_modules/jszip/.editorconfig +0 -8
  249. package/node_modules/jszip/.github/workflows/pr.yaml +0 -41
  250. package/node_modules/jszip/.jshintignore +0 -1
  251. package/node_modules/jszip/.jshintrc +0 -21
  252. package/node_modules/jszip/.travis.yml +0 -17
  253. package/node_modules/jszip/CHANGES.md +0 -192
  254. package/node_modules/jszip/LICENSE.markdown +0 -651
  255. package/node_modules/jszip/README.markdown +0 -33
  256. package/node_modules/jszip/dist/jszip.js +0 -11583
  257. package/node_modules/jszip/dist/jszip.min.js +0 -13
  258. package/node_modules/jszip/index.d.ts +0 -335
  259. package/node_modules/jszip/lib/base64.js +0 -106
  260. package/node_modules/jszip/lib/compressedObject.js +0 -74
  261. package/node_modules/jszip/lib/compressions.js +0 -14
  262. package/node_modules/jszip/lib/crc32.js +0 -77
  263. package/node_modules/jszip/lib/defaults.js +0 -11
  264. package/node_modules/jszip/lib/external.js +0 -19
  265. package/node_modules/jszip/lib/flate.js +0 -85
  266. package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -540
  267. package/node_modules/jszip/lib/generate/index.js +0 -57
  268. package/node_modules/jszip/lib/index.js +0 -55
  269. package/node_modules/jszip/lib/license_header.js +0 -11
  270. package/node_modules/jszip/lib/load.js +0 -88
  271. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
  272. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
  273. package/node_modules/jszip/lib/nodejsUtils.js +0 -57
  274. package/node_modules/jszip/lib/object.js +0 -389
  275. package/node_modules/jszip/lib/readable-stream-browser.js +0 -9
  276. package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
  277. package/node_modules/jszip/lib/reader/DataReader.js +0 -116
  278. package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
  279. package/node_modules/jszip/lib/reader/StringReader.js +0 -38
  280. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
  281. package/node_modules/jszip/lib/reader/readerFor.js +0 -28
  282. package/node_modules/jszip/lib/signature.js +0 -7
  283. package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
  284. package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
  285. package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
  286. package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
  287. package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
  288. package/node_modules/jszip/lib/stream/StreamHelper.js +0 -212
  289. package/node_modules/jszip/lib/support.js +0 -38
  290. package/node_modules/jszip/lib/utf8.js +0 -275
  291. package/node_modules/jszip/lib/utils.js +0 -501
  292. package/node_modules/jszip/lib/zipEntries.js +0 -262
  293. package/node_modules/jszip/lib/zipEntry.js +0 -294
  294. package/node_modules/jszip/lib/zipObject.js +0 -133
  295. package/node_modules/jszip/package.json +0 -99
  296. package/node_modules/jszip/tsconfig.json +0 -101
  297. package/node_modules/jszip/vendor/FileSaver.js +0 -247
  298. package/node_modules/lie/README.md +0 -62
  299. package/node_modules/lie/dist/lie.js +0 -350
  300. package/node_modules/lie/dist/lie.min.js +0 -1
  301. package/node_modules/lie/dist/lie.polyfill.js +0 -358
  302. package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
  303. package/node_modules/lie/lib/browser.js +0 -273
  304. package/node_modules/lie/lib/index.js +0 -298
  305. package/node_modules/lie/license.md +0 -7
  306. package/node_modules/lie/lie.d.ts +0 -244
  307. package/node_modules/lie/package.json +0 -98
  308. package/node_modules/lie/polyfill.js +0 -4
  309. package/node_modules/p-finally/index.js +0 -15
  310. package/node_modules/p-finally/license +0 -21
  311. package/node_modules/p-finally/package.json +0 -77
  312. package/node_modules/p-finally/readme.md +0 -47
  313. package/node_modules/p-retry/index.js +0 -52
  314. package/node_modules/p-retry/license +0 -9
  315. package/node_modules/p-retry/package.json +0 -83
  316. package/node_modules/p-retry/readme.md +0 -109
  317. package/node_modules/p-timeout/index.d.ts +0 -72
  318. package/node_modules/p-timeout/index.js +0 -57
  319. package/node_modules/p-timeout/license +0 -9
  320. package/node_modules/p-timeout/package.json +0 -80
  321. package/node_modules/p-timeout/readme.md +0 -87
  322. package/node_modules/pako/CHANGELOG.md +0 -164
  323. package/node_modules/pako/LICENSE +0 -21
  324. package/node_modules/pako/README.md +0 -191
  325. package/node_modules/pako/dist/pako.js +0 -6818
  326. package/node_modules/pako/dist/pako.min.js +0 -1
  327. package/node_modules/pako/dist/pako_deflate.js +0 -3997
  328. package/node_modules/pako/dist/pako_deflate.min.js +0 -1
  329. package/node_modules/pako/dist/pako_inflate.js +0 -3300
  330. package/node_modules/pako/dist/pako_inflate.min.js +0 -1
  331. package/node_modules/pako/index.js +0 -14
  332. package/node_modules/pako/lib/deflate.js +0 -400
  333. package/node_modules/pako/lib/inflate.js +0 -423
  334. package/node_modules/pako/lib/utils/common.js +0 -105
  335. package/node_modules/pako/lib/utils/strings.js +0 -187
  336. package/node_modules/pako/lib/zlib/README +0 -59
  337. package/node_modules/pako/lib/zlib/adler32.js +0 -51
  338. package/node_modules/pako/lib/zlib/constants.js +0 -68
  339. package/node_modules/pako/lib/zlib/crc32.js +0 -59
  340. package/node_modules/pako/lib/zlib/deflate.js +0 -1874
  341. package/node_modules/pako/lib/zlib/gzheader.js +0 -58
  342. package/node_modules/pako/lib/zlib/inffast.js +0 -345
  343. package/node_modules/pako/lib/zlib/inflate.js +0 -1556
  344. package/node_modules/pako/lib/zlib/inftrees.js +0 -343
  345. package/node_modules/pako/lib/zlib/messages.js +0 -32
  346. package/node_modules/pako/lib/zlib/trees.js +0 -1222
  347. package/node_modules/pako/lib/zlib/zstream.js +0 -47
  348. package/node_modules/pako/package.json +0 -94
  349. package/node_modules/process-nextick-args/index.js +0 -45
  350. package/node_modules/process-nextick-args/license.md +0 -19
  351. package/node_modules/process-nextick-args/package.json +0 -53
  352. package/node_modules/process-nextick-args/readme.md +0 -18
  353. package/node_modules/readable-stream/.travis.yml +0 -34
  354. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  355. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  356. package/node_modules/readable-stream/LICENSE +0 -47
  357. package/node_modules/readable-stream/README.md +0 -58
  358. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  359. package/node_modules/readable-stream/duplex-browser.js +0 -1
  360. package/node_modules/readable-stream/duplex.js +0 -1
  361. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  362. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  363. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  364. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  365. package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  366. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  367. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  368. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  369. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  370. package/node_modules/readable-stream/package.json +0 -86
  371. package/node_modules/readable-stream/passthrough.js +0 -1
  372. package/node_modules/readable-stream/readable-browser.js +0 -7
  373. package/node_modules/readable-stream/readable.js +0 -19
  374. package/node_modules/readable-stream/transform.js +0 -1
  375. package/node_modules/readable-stream/writable-browser.js +0 -1
  376. package/node_modules/readable-stream/writable.js +0 -8
  377. package/node_modules/retry/.npmignore +0 -3
  378. package/node_modules/retry/.travis.yml +0 -15
  379. package/node_modules/retry/License +0 -21
  380. package/node_modules/retry/Makefile +0 -18
  381. package/node_modules/retry/README.md +0 -227
  382. package/node_modules/retry/equation.gif +0 -0
  383. package/node_modules/retry/example/dns.js +0 -31
  384. package/node_modules/retry/example/stop.js +0 -40
  385. package/node_modules/retry/index.js +0 -1
  386. package/node_modules/retry/lib/retry.js +0 -100
  387. package/node_modules/retry/lib/retry_operation.js +0 -158
  388. package/node_modules/retry/package.json +0 -67
  389. package/node_modules/retry/test/common.js +0 -10
  390. package/node_modules/retry/test/integration/test-forever.js +0 -24
  391. package/node_modules/retry/test/integration/test-retry-operation.js +0 -258
  392. package/node_modules/retry/test/integration/test-retry-wrap.js +0 -101
  393. package/node_modules/retry/test/integration/test-timeouts.js +0 -69
  394. package/node_modules/setimmediate/LICENSE.txt +0 -20
  395. package/node_modules/setimmediate/package.json +0 -77
  396. package/node_modules/setimmediate/setImmediate.js +0 -186
  397. package/node_modules/split/.npmignore +0 -3
  398. package/node_modules/split/.travis.yml +0 -3
  399. package/node_modules/split/LICENCE +0 -22
  400. package/node_modules/split/examples/pretty.js +0 -26
  401. package/node_modules/split/index.js +0 -63
  402. package/node_modules/split/package.json +0 -65
  403. package/node_modules/split/readme.markdown +0 -72
  404. package/node_modules/split/test/options.asynct.js +0 -46
  405. package/node_modules/split/test/partitioned_unicode.js +0 -34
  406. package/node_modules/split/test/split.asynct.js +0 -137
  407. package/node_modules/split/test/try_catch.asynct.js +0 -51
  408. package/node_modules/stream-shift/.travis.yml +0 -6
  409. package/node_modules/stream-shift/LICENSE +0 -21
  410. package/node_modules/stream-shift/README.md +0 -25
  411. package/node_modules/stream-shift/index.js +0 -20
  412. package/node_modules/stream-shift/package.json +0 -56
  413. package/node_modules/stream-shift/test.js +0 -48
  414. package/node_modules/ultron/LICENSE +0 -22
  415. package/node_modules/ultron/README.md +0 -113
  416. package/node_modules/ultron/index.js +0 -136
  417. package/node_modules/ultron/package.json +0 -71
  418. package/node_modules/websocket-stream/LICENSE +0 -8
  419. package/node_modules/websocket-stream/collaborators.md +0 -11
  420. package/node_modules/websocket-stream/echo-server.js +0 -51
  421. package/node_modules/websocket-stream/index.d.ts +0 -27
  422. package/node_modules/websocket-stream/index.js +0 -6
  423. package/node_modules/websocket-stream/package.json +0 -82
  424. package/node_modules/websocket-stream/readme.md +0 -148
  425. package/node_modules/websocket-stream/server.js +0 -29
  426. package/node_modules/websocket-stream/stream.js +0 -189
  427. package/node_modules/websocket-stream/test-client.js +0 -74
  428. package/node_modules/websocket-stream/test-server.js +0 -56
  429. package/node_modules/websocket-stream/test.js +0 -338
  430. package/node_modules/websocket-stream/ts-tests.ts +0 -69
  431. package/node_modules/websocket-stream/ws-fallback.js +0 -12
  432. package/node_modules/ws/LICENSE +0 -21
  433. package/node_modules/ws/README.md +0 -341
  434. package/node_modules/ws/index.js +0 -15
  435. package/node_modules/ws/lib/.DS_Store +0 -0
  436. package/node_modules/ws/lib/BufferUtil.js +0 -71
  437. package/node_modules/ws/lib/Constants.js +0 -10
  438. package/node_modules/ws/lib/ErrorCodes.js +0 -28
  439. package/node_modules/ws/lib/EventTarget.js +0 -151
  440. package/node_modules/ws/lib/Extensions.js +0 -203
  441. package/node_modules/ws/lib/PerMessageDeflate.js +0 -507
  442. package/node_modules/ws/lib/Receiver.js +0 -553
  443. package/node_modules/ws/lib/Sender.js +0 -412
  444. package/node_modules/ws/lib/Validation.js +0 -17
  445. package/node_modules/ws/lib/WebSocket.js +0 -717
  446. package/node_modules/ws/lib/WebSocketServer.js +0 -326
  447. package/node_modules/ws/package.json +0 -83
  448. package/node_modules/xhr2/CONTRIBUTING.md +0 -33
  449. package/node_modules/xhr2/Cakefile +0 -131
  450. package/node_modules/xhr2/LICENSE.txt +0 -19
  451. package/node_modules/xhr2/README.md +0 -142
  452. package/node_modules/xhr2/lib/browser.js +0 -1
  453. package/node_modules/xhr2/lib/xhr2.js +0 -1244
  454. package/node_modules/xhr2/package.json +0 -103
  455. package/node_modules/xhr2/src/000-xml_http_request_event_target.coffee +0 -89
  456. package/node_modules/xhr2/src/001-xml_http_request.coffee +0 -781
  457. package/node_modules/xhr2/src/errors.coffee +0 -31
  458. package/node_modules/xhr2/src/progress_event.coffee +0 -39
  459. package/node_modules/xhr2/src/xml_http_request_upload.coffee +0 -95
  460. package/node_modules/xhr2/test/fixtures/hello.json +0 -1
  461. package/node_modules/xhr2/test/fixtures/hello.txt +0 -1
  462. package/node_modules/xhr2/test/fixtures/xhr2.png +0 -0
  463. package/node_modules/xhr2/test/html/browser_test.html +0 -30
  464. package/node_modules/xhr2/test/src/event_target_test.coffee +0 -85
  465. package/node_modules/xhr2/test/src/events_test.coffee +0 -204
  466. package/node_modules/xhr2/test/src/headers_test.coffee +0 -168
  467. package/node_modules/xhr2/test/src/helpers/browser_mocha_runner.coffee +0 -10
  468. package/node_modules/xhr2/test/src/helpers/browser_mocha_setup.coffee +0 -1
  469. package/node_modules/xhr2/test/src/helpers/setup.coffee +0 -38
  470. package/node_modules/xhr2/test/src/helpers/xhr_server.coffee +0 -156
  471. package/node_modules/xhr2/test/src/nodejs_set_test.coffee +0 -162
  472. package/node_modules/xhr2/test/src/redirect_test.coffee +0 -57
  473. package/node_modules/xhr2/test/src/response_type_test.coffee +0 -88
  474. package/node_modules/xhr2/test/src/responseurl_test.coffee +0 -18
  475. package/node_modules/xhr2/test/src/send_test.coffee +0 -89
  476. package/node_modules/xhr2/test/src/status_test.coffee +0 -47
  477. package/node_modules/xhr2/test/src/xhr_test.coffee +0 -102
  478. package/node_modules/xtend/.jshintrc +0 -30
  479. package/node_modules/xtend/LICENSE +0 -20
  480. package/node_modules/xtend/README.md +0 -32
  481. package/node_modules/xtend/immutable.js +0 -19
  482. package/node_modules/xtend/mutable.js +0 -17
  483. package/node_modules/xtend/package.json +0 -89
  484. package/node_modules/xtend/test.js +0 -103
  485. package/node_modules/yazl/LICENSE +0 -21
  486. package/node_modules/yazl/README.md +0 -389
  487. package/node_modules/yazl/index.js +0 -749
  488. package/node_modules/yazl/package.json +0 -69
  489. package/src/commands/CorelliumAPI.js +0 -76
  490. package/src/subscriberInvite.js +0 -140
@@ -1,1031 +0,0 @@
1
- "use strict";
2
-
3
- const { fetchApi } = require("./util/fetch");
4
- const EventEmitter = require("events");
5
- const wsstream = require("websocket-stream");
6
- const Snapshot = require("./snapshot");
7
- const Agent = require("./agent");
8
- const pTimeout = require("p-timeout");
9
- const NetworkMonitor = require("./netmon");
10
- const { sleep } = require("./util/sleep");
11
- const util = require("util");
12
- const fs = require("fs");
13
- const { compress, uploadFile } = require("./images");
14
- const uuidv4 = require("uuid/v4");
15
- const split = require("split");
16
-
17
- /**
18
- * @typedef {object} ThreadInfo
19
- * @property {string} pid - process PID
20
- * @property {string} kernelId - process ID in kernel
21
- * @property {string} name - process name
22
- * @property {object[]} threads - process threads
23
- * @property {string} threads[].tid - thread ID
24
- * @property {string} threads[].kernelId - thread ID in kernel
25
- */
26
-
27
- /**
28
- * @typedef {object} PanicInfo
29
- * @property {integer} flags
30
- * @property {string} panic
31
- * @property {string} stackshot
32
- * @property {string} other
33
- * @property {integer} ts
34
- */
35
-
36
- /**
37
- * @typedef {object} PeripheralData
38
- * @property {string} gpsToffs - GPS time offset
39
- * @property {string} gpsLat - GPS latitude
40
- * @property {string} gpsLon - GPS longitude
41
- * @property {string} gpsAlt - GPS altitude
42
- * @property {string} acOnline - Is AC charger present, options ['0' , '1']
43
- * @property {string} batteryPresent - Is battery present, options ['0' , '1']
44
- * @property {string} batteryStatus - Battery charging status, options ['charging', 'discharging', 'not-charging']
45
- * @property {string} batteryHealth - Battery health, options ['good', 'overheat', 'dead', 'overvolt', 'failure']
46
- * @property {string} batteryCapacity - Battery capacity, options 0-100
47
- * @property {string} acceleration - Acceleration sensor
48
- * @property {string} gyroscope - Gyroscope sensor
49
- * @property {string} magnetic - Magnetic sensor
50
- * @property {string} orientation - Orientation sensor
51
- * @property {string} temperature - Temperator sensor
52
- * @property {string} proximity - Proximity sensor
53
- * @property {string} light - Light sensor
54
- * @property {string} pressure - Pressure sensor
55
- * @property {string} humidity - Humidity sensor
56
- */
57
-
58
- /**
59
- * @typedef {object} RateInfo
60
- * Convert microcents to USD using rate / 1000000 / 100 * seconds where rate is rateInfo.onRateMicrocents or rateInfo.offRateMicrocents and seconds is the number of seconds the instance is running.
61
- * @property {integer} onRateMicrocents - The amount per second, in microcents (USD), that this instance charges to be running.
62
- * @property {integer} offRateMicrocents - The amount per second, in microcents (USD), that this instance charges to be stored.
63
- */
64
-
65
- /**
66
- * Instances of this class are returned from {@link Project#instances}, {@link
67
- * Project#getInstance}, and {@link Project#createInstance}. They should not be
68
- * created using the constructor.
69
- * @hideconstructor
70
- */
71
- class Instance extends EventEmitter {
72
- constructor(project, info) {
73
- super();
74
-
75
- this.project = project;
76
- this.info = info;
77
- this.infoDate = new Date();
78
- this.id = info.id;
79
- this.updating = false;
80
-
81
- this.hash = null;
82
- this.hypervisorStream = null;
83
- this._agent = null;
84
- this._netmon = null;
85
- this.lastPanicLength = null;
86
- this.volumeId = null;
87
-
88
- this.on("newListener", (event) => {
89
- if (event === "change") {
90
- this.project.updater.add(this);
91
- }
92
- });
93
- this.on("removeListener", (event) => {
94
- if (event === "change" && this.listenerCount("change") == 0) {
95
- this.project.updater.remove(this);
96
- }
97
- });
98
- }
99
-
100
- /**
101
- * The instance name.
102
- */
103
- get name() {
104
- return this.info.name;
105
- }
106
-
107
- /**
108
- * The instance state. Possible values include:
109
- *
110
- * State|Description
111
- * -|-
112
- * `on`|The instance is powered on.
113
- * `off`|The instance is powered off.
114
- * `creating`|The instance is in the process of creating.
115
- * `deleting`|The instance is in the process of deleting.
116
- * `deleted`|The instance is deleted, instance will set to undefined.
117
- * `paused`|The instance is paused.
118
- *
119
- * A full list of possible values is available in the API documentation.
120
- */
121
- get state() {
122
- return this.info.state;
123
- }
124
-
125
- /**
126
- * The timestamp when the state last changed.
127
- */
128
- get stateChanged() {
129
- return this.info.stateChanged;
130
- }
131
-
132
- /**
133
- * The instance flavor, such as `iphone6`.
134
- */
135
- get flavor() {
136
- return this.info.flavor;
137
- }
138
-
139
- /**
140
- * The instance type, such as `ios`.
141
- */
142
- get type() {
143
- return this.info.type;
144
- }
145
-
146
- /**
147
- * The pending task that is being requested by the user and is being executed by the backend.
148
- * This field is null when no tasks are pending. The returned object has two fields: name and options.
149
- *
150
- * Current options for name are start, stop, pause, unpause, snapshot, revert.
151
- * For start and revert, options.bootOptions contains the boot options the instance is to be started with.
152
- *
153
- */
154
- get userTask() {
155
- return this.info.userTask;
156
- }
157
-
158
- /**
159
- * Return the current task state.
160
- */
161
- get taskState() {
162
- return this.info.taskState;
163
- }
164
-
165
- /**
166
- * Rename an instance.
167
- * @param {string} name - The new name of the instance.
168
- * @example <caption>Renaming the first instance named `foo` to `bar`</caption>
169
- * const instances = await project.instances();
170
- * const instance = instances.find(instance => instance.name == 'foo');
171
- * await instance.rename('bar');
172
- */
173
- async rename(name) {
174
- await this._fetch("", {
175
- method: "PATCH",
176
- json: { name },
177
- });
178
- }
179
-
180
- /**
181
- * The instance boot options.
182
- */
183
- get bootOptions() {
184
- return this.info.bootOptions;
185
- }
186
-
187
- /**
188
- * Change boot options for an instance.
189
- * @param {Object} bootOptions - The new boot options for the instance.
190
- * @example <caption>Changing the boot arguments for the instance.</caption>
191
- * const instances = await project.instances();
192
- * const instance = instances.find(instance => instance.name == 'foo');
193
- * await instance.modifyBootOptions(Object.assign({}, instance.bootOptions, {bootArgs: 'new-boot-args'}));
194
- */
195
- async modifyBootOptions(bootOptions) {
196
- await this._fetch("", {
197
- method: "PATCH",
198
- json: { bootOptions },
199
- });
200
- }
201
-
202
- /**
203
- * Change device peripheral/sensor values.
204
- *
205
- * Currently available for Android only.
206
- * @param {PeripheralData} peripheralData - The new peripheral options for the instance.
207
- * @example <caption>Changing the sensor values for the instance.</caption>
208
- * const instances = await project.instances();
209
- * const instance = instances.find(instance => instance.name == 'foo');
210
- * await instance.modifyPeripherals({
211
- * "gpsToffs": "0.000000",
212
- * "gpsLat": "37.414300",
213
- * "gpsLon": "-122.077400",
214
- * "gpsAlt": "45.000000",
215
- * "acOnline": "1",
216
- * "batteryPresent": "1",
217
- * "batteryStatus": "discharging",
218
- * "batteryHealth": "overheat",
219
- * "batteryCapacity": "99.000000",
220
- * "acceleration": "0.000000,9.810000,0.000000",
221
- * "gyroscope": "0.000000,0.000000,0.000000",
222
- * "magnetic": "0.000000,45.000000,0.000000",
223
- * "orientation": "0.000000,0.000000,0.000000",
224
- * "temperature": "25.000000",
225
- * "proximity": "50.000000",
226
- * "light": "20.000000",
227
- * "pressure": "1013.250000",
228
- * "humidity": "55.000000"
229
- * }));
230
- */
231
- async modifyPeripherals(peripheralData) {
232
- await this._fetch("", {
233
- method: "PATCH",
234
- json: { peripherals: peripheralData },
235
- });
236
- }
237
-
238
- /**
239
- * Get peripheral/sensor data
240
- * @return {Promise<PeripheralData>}
241
- * @example
242
- * let peripherals = await instance.getPeripherals();
243
- */
244
- async getPeripherals() {
245
- return await this._fetch("/peripherals", { method: "GET" });
246
- }
247
-
248
- /**
249
- * Return an array of this instance's {@link Snapshot}s.
250
- * @returns {Snapshot[]} This instance's snapshots
251
- * @example
252
- * const instances = await project.instances();
253
- * const instance = instances.find(instance => instance.name == 'foo');
254
- * await instance.snapshots();
255
- */
256
- async snapshots() {
257
- const snapshots = await this._fetch("/snapshots");
258
- return snapshots.map((snap) => new Snapshot(this, snap));
259
- }
260
-
261
- /**
262
- * Take a new snapshot of this instance.
263
- * @param {string} name - The name for the new snapshot.
264
- * @returns {Snapshot} The new snapshot
265
- * @example
266
- * const instances = await project.instances();
267
- * const instance = instances.find(instance => instance.name == 'foo');
268
- * await instance.takeSnapshot("TestSnapshot");
269
- */
270
- async takeSnapshot(name) {
271
- const snapshot = await this._fetch("/snapshots", {
272
- method: "POST",
273
- json: { name },
274
- });
275
- await this.update();
276
- await this.waitForUserTask(null);
277
-
278
- return new Snapshot(this, snapshot);
279
- }
280
-
281
- /**
282
- * Returns a dump of this instance's serial port log.
283
- * @return {string}
284
- * @example
285
- * const instances = await project.instances();
286
- * const instance = instances.find(instance => instance.name == 'foo');
287
- * console.log(await instance.consoleLog());
288
- */
289
- async consoleLog() {
290
- const response = await this._fetch("/consoleLog", { response: "raw" });
291
- return await response.text();
292
- }
293
-
294
- /**
295
- * Return an array of recorded kernel panics.
296
- * @return {Promise<PanicInfo[]>}
297
- * @example
298
- * const instances = await project.instances();
299
- * const instance = instances.find(instance => instance.name == 'foo');
300
- * console.log(await instance.panics());
301
- */
302
- async panics() {
303
- return await this._fetch("/panics");
304
- }
305
-
306
- /**
307
- * Clear the recorded kernel panics of this instance.
308
- * @example
309
- * const instances = await project.instances();
310
- * const instance = instances.find(instance => instance.name == 'foo');
311
- * await instance.clearPanics();
312
- */
313
- async clearPanics() {
314
- await this._fetch("/panics", { method: "DELETE" });
315
- }
316
-
317
- /**
318
- * Return an {@link Agent} connected to this instance. Calling this
319
- * method multiple times will reuse the same agent connection.
320
- * @returns {Agent}
321
- * @example
322
- * let agent = await instance.agent();
323
- * await agent.ready();
324
- */
325
- async agent() {
326
- if (this._agent && !this._agent.connected && !this._agent.pendingConnect) {
327
- this._agent.disconnect();
328
- delete this._agent;
329
- }
330
-
331
- if (!this._agent) {
332
- this._agent = await this.newAgent();
333
- }
334
-
335
- return this._agent;
336
- }
337
-
338
- async agentEndpoint() {
339
- // Extra while loop to avoid races where info.agent gets unset again before we wake back up.
340
- while (!this.info.agent) await this._waitFor(() => !!this.info.agent);
341
-
342
- // We want to avoid a situation where we were not listening for updates, and the info we have is stale (from last boot),
343
- // and the instance has started again but this time with no agent info yet or new agent info. Therefore, we can use
344
- // cached if only if it's recent.
345
- if (
346
- new Date().getTime() - this.infoDate.getTime() >
347
- 2 * this.project.updater.updateInterval
348
- ) {
349
- try {
350
- await this.update();
351
- } catch (err) {
352
- if (err.stack.includes("500 Internal Server Error")) {
353
- return undefined;
354
- }
355
- }
356
- }
357
-
358
- return this.project.api + "/agent/" + this.info.agent.info;
359
- }
360
-
361
- async waitForAgentReady() {
362
- let agentObtained;
363
- do {
364
- try {
365
- const endpoint = await this.agentEndpoint();
366
- if (!endpoint) throw new Error("Instance likely does not exist");
367
-
368
- const agent = await this.agent();
369
-
370
- agentObtained = await pTimeout(
371
- (async () => {
372
- try {
373
- await agent.ready();
374
- return true;
375
- } catch (e) {
376
- // If the websocket threw an error, lets wait for the end of
377
- // the timeout to give it some breathing room
378
- await sleep(2 * 1000);
379
- } finally {
380
- agent.disconnect();
381
- }
382
- })(),
383
- 20 * 1000,
384
- async () => {
385
- // When this times out, it is likely that the instance isn't fully up yet
386
- await sleep(5 * 1000);
387
- return false;
388
- },
389
- );
390
- } catch (e) {
391
- console.log(`Caught error waiting for agent to be ready ${e}`);
392
- if (e.stack.includes("Instance likely does not exist")) {
393
- throw e;
394
- }
395
- }
396
- } while (!agentObtained);
397
- }
398
-
399
- /**
400
- * Create a new {@link Agent} connection to this instance. This is
401
- * useful for agent tasks that don't finish and thus consume the
402
- * connection, such as {@link Agent#crashes}.
403
- * @returns {Agent}
404
- * @example
405
- * let crashListener = await instance.newAgent();
406
- * crashListener.crashes('com.corellium.demoapp', (err, crashReport) => {
407
- * if (err) {
408
- * console.error(err);
409
- * return;
410
- * }
411
- * console.log(crashReport);
412
- * });
413
- */
414
- async newAgent() {
415
- return new Agent(this);
416
- }
417
-
418
- /**
419
- * Return an {@link NetworkMonitor} connected to this instance. Calling this
420
- * method multiple times will reuse the same agent connection.
421
- * @returns {NetworkMonitor}
422
- */
423
- async networkMonitor() {
424
- if (!this._netmon) this._netmon = await this.newNetworkMonitor();
425
- return this._netmon;
426
- }
427
-
428
- async netmonEndpoint() {
429
- // Extra while loop to avoid races where info.netmon gets unset again before we wake back up.
430
- while (!this.info.netmon) await this._waitFor(() => !!this.info.netmon);
431
-
432
- // We want to avoid a situation where we were not listening for updates, and the info we have is stale (from last boot),
433
- // and the instance has started again but this time with no agent info yet or new agent info. Therefore, we can use
434
- // cached if only if it's recent.
435
- if (
436
- new Date().getTime() - this.infoDate.getTime() >
437
- 2 * this.project.updater.updateInterval
438
- ) {
439
- try {
440
- await this.update();
441
- } catch (err) {
442
- if (err.stack.includes("500 Internal Server Error")) {
443
- return undefined;
444
- }
445
- }
446
- }
447
-
448
- return this.project.api + "/agent/" + this.info.netmon.info;
449
- }
450
-
451
- /**
452
- * Create a new {@link NetworkMonitor} connection to this instance.
453
- * @returns {NetworkMonitor}
454
- */
455
- async newNetworkMonitor() {
456
- return new NetworkMonitor(this);
457
- }
458
-
459
- /**
460
- * Returns a bidirectional node stream for this instance's serial console.
461
- * @return {WebSocket-Stream}
462
- * @example
463
- * const consoleStream = await instance.console();
464
- * consoleStream.pipe(process.stdout);
465
- */
466
- async console() {
467
- const { url } = await this._fetch("/console");
468
- return wsstream(url, ["binary"]);
469
- }
470
-
471
- /**
472
- * Waits for a specified line on console.
473
- * @example
474
- * await instance.waitForLineOnConsole(line)
475
- */
476
- async waitForLineOnConsole(line) {
477
- const stream = await this.console();
478
- await stream
479
- .pipe(split())
480
- .on("data", (l) => {
481
- if (l === line) {
482
- stream.destroy();
483
- return;
484
- }
485
- })
486
- .on("end", () => {
487
- return;
488
- });
489
- }
490
-
491
- /**
492
- * Returns the cost, in microcents, for the instance in the on and off state. Instances are charged $0.25 / day for storage (off) and $0.25 per core per hour (on).
493
- * @returns {RateInfo}
494
- * @example
495
- * const rateInfo = await instance.rate();
496
- */
497
- async rate() {
498
- return await this._fetch("/rate");
499
- }
500
-
501
- /**
502
- * Send an input to this instance.
503
- * @param {Input} input - The input to send.
504
- * @see Input
505
- * @example
506
- * await instance.sendInput(I.pressRelease('home'));
507
- */
508
- async sendInput(input) {
509
- await this._fetch("/input", { method: "POST", json: input.points });
510
- }
511
-
512
- /**
513
- * Start this instance.
514
- * @example
515
- * await instance.start();
516
- */
517
- async start() {
518
- await this._fetch("/start", { method: "POST" });
519
- }
520
-
521
- /**
522
- * Stop this instance.
523
- * @example
524
- * await instance.stop();
525
- */
526
- async stop() {
527
- await this._fetch("/stop", { method: "POST" });
528
- }
529
-
530
- /**
531
- * Pause this instance
532
- * @example
533
- * await instance.pause();
534
- */
535
- async pause() {
536
- await this._fetch("/pause", { method: "POST" });
537
- }
538
-
539
- /**
540
- * Unpause this instance
541
- * @example
542
- * await instance.unpause();
543
- */
544
- async unpause() {
545
- await this._fetch("/unpause", { method: "POST" });
546
- }
547
-
548
- /**
549
- * Reboot this instance.
550
- * @example
551
- * await instance.reboot();
552
- */
553
- async reboot() {
554
- await this._fetch("/reboot", { method: "POST" });
555
- await this.waitForTaskState("rebooting");
556
- await this.waitForTaskState("none");
557
- }
558
-
559
- /**
560
- * Destroy this instance.
561
- * @example <caption>delete all instances of the project</caption>
562
- * let instances = await project.instances();
563
- * instances.forEach(instance => {
564
- * instance.destroy();
565
- * });
566
- */
567
- async destroy() {
568
- await this._fetch("", { method: "DELETE" });
569
- }
570
-
571
- /**
572
- * Send a message to an jailbroken iOS device
573
- * @example
574
- * await instance.message('123','321');
575
- *
576
- * @param {string} number - phone number to receive the message from
577
- * @param {string} message - message to receive
578
- */
579
- async message(sender, message) {
580
- await this._fetch("/message", {
581
- method: "POST",
582
- json: { number: sender, message: message },
583
- });
584
- }
585
-
586
- /**
587
- * Send a raw message to an jailbroken iOS device
588
- * @example
589
- * await instance.messageRaw('AAAAAAAAAAAAAAAAA');
590
- *
591
- * @param {string} data - hex encoded data to send
592
- */
593
- async messageRaw(data) {
594
- await this._fetch("/message", { method: "POST", json: { raw: data } });
595
- }
596
-
597
- /**
598
- * Get CoreTrace Thread List
599
- * @return {Promise<ThreadInfo[]>}
600
- * @example
601
- * let procList = await instance.getCoreTraceThreadList();
602
- * for (let p of procList) {
603
- * console.log(p.pid, p.kernelId, p.name);
604
- * for (let t of p.threads) {
605
- * console.log(t.tid, t.kernelId);
606
- * }
607
- * }
608
- */
609
- async getCoreTraceThreadList() {
610
- return await this._fetch("/strace/thread-list", { method: "GET" });
611
- }
612
-
613
- /**
614
- * Add List of PIDs/Names/TIDs to CoreTrace filter
615
- * @param {integer[]} pids - array of process IDs to filter
616
- * @param {string[]} names - array of process names to filter
617
- * @param {integer[]} tids - array of thread IDs to filter
618
- * @example
619
- * await instance.setCoreTraceFilter([111, 222], ["proc_name"], [333]);
620
- */
621
- async setCoreTraceFilter(pids, names, tids) {
622
- let filter = [];
623
- if (pids.length)
624
- filter = filter.concat(
625
- pids.map((pid) => {
626
- return { trait: "pid", value: pid.toString() };
627
- }),
628
- );
629
- if (names.length)
630
- filter = filter.concat(
631
- names.map((name) => {
632
- return { trait: "name", value: name };
633
- }),
634
- );
635
- if (tids.length)
636
- filter = filter.concat(
637
- tids.map((tid) => {
638
- return { trait: "tid", value: tid.toString() };
639
- }),
640
- );
641
- await this._fetch("", { method: "PATCH", json: { straceFilter: filter } });
642
- }
643
-
644
- /**
645
- * Clear CoreTrace filter
646
- * @example
647
- * await instance.clearCoreTraceFilter();
648
- */
649
- async clearCoreTraceFilter() {
650
- await this._fetch("", { method: "PATCH", json: { straceFilter: [] } });
651
- }
652
-
653
- /**
654
- * Start CoreTrace
655
- * @example
656
- * await instance.startCoreTrace();
657
- */
658
- async startCoreTrace() {
659
- await this._fetch("/strace/enable", { method: "POST" });
660
- if (this.info.coreTrace) {
661
- await this._waitFor(() => this.info.coreTrace.enabled === true);
662
- }
663
- }
664
-
665
- /**
666
- * Stop CoreTrace
667
- * @example
668
- * await instance.stopCoreTrace();
669
- */
670
- async stopCoreTrace() {
671
- await this._fetch("/strace/disable", { method: "POST" });
672
- if (this.info.coreTrace) {
673
- await this._waitFor(() => this.info.coreTrace.enabled === false);
674
- }
675
- }
676
-
677
- /**
678
- * Download CoreTrace Log
679
- * @example
680
- * let trace = await instance.downloadCoreTraceLog();
681
- * console.log(trace.toString());
682
- */
683
- async downloadCoreTraceLog() {
684
- const token = await this._fetch("/strace-authorize", { method: "GET" });
685
- const response = await fetchApi(
686
- this.project,
687
- `/preauthed/` + token.token + `/coretrace.log`,
688
- { response: "raw" },
689
- );
690
- return await response.buffer();
691
- }
692
-
693
- /**
694
- * Clean CoreTrace log
695
- * @example
696
- * await instance.clearCoreTraceLog();
697
- */
698
- async clearCoreTraceLog() {
699
- await this._fetch("/strace", { method: "DELETE" });
700
- }
701
-
702
- /**
703
- * Returns a bidirectional node stream for this instance's frida console.
704
- * @return {WebSocket-Stream}
705
- * @example
706
- * const consoleStream = await instance.fridaConsole();
707
- * consoleStream.pipe(process.stdout);
708
- */
709
- async fridaConsole() {
710
- const { url } = await this._fetch("/console?type=frida");
711
- var fridaConsole = wsstream(url, ["binary"]);
712
-
713
- await new Promise((resolve) => {
714
- fridaConsole.socket.on("open", () => {
715
- resolve();
716
- });
717
- });
718
-
719
- return fridaConsole;
720
- }
721
-
722
- /**
723
- * Execute FRIDA script by name
724
- * @param {string} filePath - path to FRIDA script
725
- * @example
726
- * await instance.executeFridaScript("/data/corellium/frida/scripts/script.js");
727
- */
728
- async executeFridaScript(filePath) {
729
- const fridaConsoleStream = await this.fridaConsole();
730
- fridaConsoleStream.socket.on("close", function () {
731
- fridaConsoleStream.destroy();
732
- });
733
-
734
- fridaConsoleStream.socket.send("%load " + filePath + "\n", null, () =>
735
- fridaConsoleStream.socket.close(),
736
- );
737
-
738
- fridaConsoleStream.socket.close();
739
- }
740
-
741
- /**
742
- * Takes a screenshot of this instance's screen. Returns a Buffer containing image data.
743
- * @param {Object} options
744
- * @param {string} [options.format=png] - Either `png` or `jpg`.
745
- * @param {int} [options.scale=1] - The image scale. Specifying 2 would result
746
- * in an image with half the instance's native resolution. This is useful
747
- * because smaller images are quicker to capture and transmit over the
748
- * network.
749
- * @example
750
- * const screenshot = await instance.takeScreenshot();
751
- * fs.writeFileSync('screenshot.png', screenshot);
752
- */
753
- async takeScreenshot(options) {
754
- const { format = "png", scale = 1 } = options || {};
755
- const res = await this._fetch(`/screenshot.${format}?scale=${scale}`, {
756
- response: "raw",
757
- });
758
- if (res.buffer) return await res.buffer();
759
- // node
760
- else return await res.blob(); // browser
761
- }
762
-
763
- /**
764
- * Enable exposing a port for connecting to VM.
765
- * For iOS, this would mean ssh, for Android, adb access.
766
- */
767
- async enableExposedPort() {
768
- await this._fetch("/exposeport/enable", { method: "POST" });
769
- }
770
-
771
- /**
772
- * Disable exposing a port for connecting to VM.
773
- * For iOS, this would mean ssh, for Android, adb access.
774
- */
775
- async disableExposedPort() {
776
- await this._fetch("/exposeport/disable", { method: "POST" });
777
- }
778
-
779
- async update() {
780
- this.receiveUpdate(await this._fetch(""));
781
- }
782
-
783
- receiveUpdate(info) {
784
- this.infoDate = new Date();
785
- // one way of checking object equality
786
- if (JSON.stringify(info) != JSON.stringify(this.info)) {
787
- this.info = info;
788
- /**
789
- * Fired when a property of an instance changes, such as its name or its state.
790
- * @event Instance#change
791
- * @example
792
- * instance.on('change', () => {
793
- * console.log(instance.id, instance.name, instance.state);
794
- * });
795
- */
796
- this.emit("change");
797
- if (info.panicked)
798
- /**
799
- * Fired when an instance panics. The panic information can be retrieved with {@link Instance#panics}.
800
- * @event Instance#panic
801
- * @example
802
- * instance.on('panic', async () => {
803
- * try {
804
- * console.log('Panic detected!');
805
- * // get the panic log(s)
806
- * console.log(await instance.panics());
807
- * // Download the console log.
808
- * console.log(await instance.consoleLog());
809
- * // Clear the panic log.
810
- * await instance.clearPanics();
811
- * // Reboot the instance.
812
- * await instance.reboot();
813
- * } catch (e) {
814
- * // handle the error somehow to avoid an unhandled promise rejection
815
- * }
816
- * });
817
- */
818
- this.emit("panic");
819
- }
820
- }
821
-
822
- async _waitFor(callback) {
823
- await this.update();
824
- return new Promise((resolve) => {
825
- const change = () => {
826
- let done;
827
- try {
828
- done = callback();
829
- } catch (e) {
830
- done = false;
831
- }
832
- if (done) {
833
- this.removeListener("change", change);
834
- resolve();
835
- }
836
- };
837
-
838
- this.on("change", change);
839
- change();
840
- });
841
- }
842
-
843
- /**
844
- * Wait for the instance to finish restoring and start its first boot.
845
- * @example <caption>Wait for VM to finish restore</caption>
846
- * instance.finishRestore();
847
- */
848
- async finishRestore() {
849
- await this._waitFor(() => this.state !== "creating");
850
- }
851
-
852
- /**
853
- * Wait for the instance to enter the given state.
854
- * @param {string} state - state to wait
855
- * @example <caption>Wait for VM to be ON</caption>
856
- * instance.waitForState('on');
857
- */
858
- async waitForState(state) {
859
- await this._waitFor(() => this.state === state);
860
- }
861
-
862
- /**
863
- * Wait for the instance task to enter the given state.
864
- * @param {string} taskName
865
- */
866
- async waitForTaskState(taskName) {
867
- await this._waitFor(() => this.taskState === taskName);
868
- }
869
-
870
- /**
871
- * Wait for the instance user task name to be a given state.
872
- * @param {string} userTaskName
873
- */
874
- async waitForUserTask(userTaskName) {
875
- await this._waitFor(() => {
876
- if (!userTaskName) {
877
- return !this.userTask;
878
- } else {
879
- return this.userTask.name === userTaskName;
880
- }
881
- });
882
- }
883
-
884
- async _fetch(endpoint = "", options = {}) {
885
- return await fetchApi(this.project, `/instances/${this.id}${endpoint}`, options);
886
- }
887
-
888
- /**
889
- * Delete Iot Firmware that is attached to an instance
890
- * @param {FirmwareImage} firmwareImage
891
- */
892
- async deleteIotFirmware(firmwareImage) {
893
- return await this.deleteImage(firmwareImage);
894
- }
895
-
896
- /**
897
- * Delete kernel that is attached to an instance
898
- * @param {KernelImage} kernelImage
899
- */
900
- async deleteKernel(kernelImage) {
901
- return await this.deleteImage(kernelImage);
902
- }
903
-
904
- /**
905
- * Delete an image that is attached to an instance
906
- * @param {Image | KernelImage | FirmwareImage} kernelImage
907
- */
908
- async deleteImage(image) {
909
- return await fetchApi(this, `/images/${image.id}`, {
910
- method: "DELETE",
911
- });
912
- }
913
-
914
- /**
915
- * Upload a partition (e.g. flash) to an instance.
916
- *
917
- * @param {string} filePath - The path on the local file system to get the firmware file.
918
- * @param {string} name - The name of the partition to load this file to.
919
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
920
- *
921
- * @returns {Promise<PartitionImage>}
922
- */
923
- async uploadPartition(filePath, name, progress) {
924
- return await this.compressAndUploadImage("partition", filePath, name, progress);
925
- }
926
-
927
- /**
928
- * Add a custom IoT firmware image to a project for use in creating new instances.
929
- *
930
- * @param {string} filePath - The path on the local file system to get the firmware file.
931
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
932
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
933
- *
934
- * @returns {Promise<FirmwareImage>}
935
- */
936
- async uploadIotFirmware(filePath, name, progress) {
937
- return await this.uploadKernel(filePath, name, progress);
938
- }
939
-
940
- /**
941
- * compress an image and upload it to an instance
942
- *
943
- * @param {string} type - the type of image being uploaded ie. kernel, ramdisk, or devicetree
944
- * @param {string} filePath - The path on the local file system to get the file.
945
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
946
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
947
- *
948
- * @returns {Promise<Image>}
949
- */
950
- async compressAndUploadImage(type, filePath, name, progress) {
951
- let tmpfile = null;
952
- const data = await util.promisify(fs.readFile)(filePath);
953
-
954
- tmpfile = await compress(data, name);
955
-
956
- let uploadedImage = await this.uploadImage(type, tmpfile, name, progress);
957
-
958
- if (tmpfile) {
959
- fs.unlinkSync(tmpfile);
960
- }
961
-
962
- return { id: uploadedImage.id, name: uploadedImage.name };
963
- }
964
-
965
- /**
966
- * Add a kernel image to an instance
967
- *
968
- * @param {string} filePath - The path on the local file system to get the kernel file.
969
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
970
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
971
- *
972
- * @returns {Promise<KernelImage>}
973
- */
974
- async uploadKernel(filePath, name, progress) {
975
- await this.compressAndUploadImage("kernel", filePath, name, progress);
976
- }
977
-
978
- /**
979
- * Add a ram disk image to an instance
980
- *
981
- * @param {string} filePath - The path on the local file system to get the ram disk file.
982
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
983
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
984
- *
985
- * @returns {Promise<RamDiskImage>}
986
- */
987
- async uploadRamDisk(filePath, name, progress) {
988
- await this.compressAndUploadImage("ramdisk", filePath, name, progress);
989
- }
990
-
991
- /**
992
- * Add a device tree image to an instance.
993
- *
994
- * @param {string} filePath - The path on the local file system to get the device tree file.
995
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
996
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
997
- *
998
- * @returns {Promise<DeviceTreeImage>}
999
- */
1000
- async uploadDeviceTree(filePath, name, progress) {
1001
- await this.compressAndUploadImage("devicetree", filePath, name, progress);
1002
- }
1003
-
1004
- /**
1005
- * Add an image to the instance. These images may be removed at any time and are meant to facilitate creating a new Instance with images.
1006
- *
1007
- * @param {string} type - E.g. fw for the main firmware image.
1008
- * @param {string} filePath - The path on the local file system to get the file.
1009
- * @param {string} name - The name of the file to identify the file on the server. Usually the basename of the path.
1010
- * @param {Project~progressCallback} [progress] - The callback for file upload progress information.
1011
- *
1012
- * @returns {Promise<Image>}
1013
- */
1014
- async uploadImage(type, filePath, name, progress) {
1015
- const token = await this.project.getToken();
1016
- const url =
1017
- this.project.api +
1018
- "/instances/" +
1019
- encodeURIComponent(this.id) +
1020
- "/image-upload/" +
1021
- encodeURIComponent(type) +
1022
- "/" +
1023
- encodeURIComponent(uuidv4()) +
1024
- "/" +
1025
- encodeURIComponent(name);
1026
-
1027
- return await uploadFile(token, url, filePath, progress);
1028
- }
1029
- }
1030
-
1031
- module.exports = Instance;