@corellium/corellium-cli 1.0.3 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
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;