@corellium/corellium-cli 1.0.2 → 1.0.4
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.
- package/README.md +4 -16
- package/docs/OVERVIEW.md +2 -2
- package/example/WebPlayerSample.js +93 -37
- package/jenkinsbuild/build.sh +1 -1
- package/node_modules/@babel/cli/node_modules/commander/package.json +27 -58
- package/node_modules/@babel/cli/node_modules/make-dir/package.json +62 -93
- package/node_modules/@babel/cli/node_modules/pify/package.json +54 -85
- package/node_modules/@babel/cli/node_modules/semver/package.json +20 -51
- package/node_modules/@babel/cli/node_modules/slash/package.json +37 -68
- package/node_modules/@babel/cli/package.json +37 -69
- package/node_modules/@corellium/client-api/package.json +15 -40
- package/node_modules/@jridgewell/resolve-uri/package.json +40 -75
- package/node_modules/@jridgewell/sourcemap-codec/package.json +43 -74
- package/node_modules/@jridgewell/trace-mapping/package.json +40 -72
- package/node_modules/@mapbox/node-pre-gyp/package.json +27 -61
- package/node_modules/@nicolo-ribaudo/chokidar-2/package.json +22 -55
- package/node_modules/abbrev/package.json +18 -52
- package/node_modules/agent-base/package.json +33 -62
- package/node_modules/ansi-regex/package.json +58 -89
- package/node_modules/ansi-styles/package.json +59 -95
- package/node_modules/anymatch/package.json +28 -56
- package/node_modules/aproba/package.json +23 -50
- package/node_modules/are-we-there-yet/node_modules/readable-stream/package.json +32 -60
- package/node_modules/are-we-there-yet/package.json +32 -62
- package/node_modules/ascii-art/package.json +51 -83
- package/node_modules/ascii-art-ansi/package.json +30 -61
- package/node_modules/ascii-art-braille/package.json +7 -32
- package/node_modules/ascii-art-font/package.json +17 -47
- package/node_modules/ascii-art-graph/package.json +10 -34
- package/node_modules/ascii-art-image/node_modules/ascii-art-braille/package.json +7 -32
- package/node_modules/ascii-art-image/package.json +11 -36
- package/node_modules/ascii-art-table/package.json +10 -35
- package/node_modules/ascii-art-utf/package.json +18 -47
- package/node_modules/async/package.json +29 -55
- package/node_modules/async-arrays/package.json +34 -62
- package/node_modules/asynckit/package.json +45 -74
- package/node_modules/axios/package.json +46 -72
- package/node_modules/balanced-match/package.json +22 -49
- package/node_modules/binary-extensions/package.json +41 -73
- package/node_modules/brace-expansion/package.json +23 -50
- package/node_modules/braces/package.json +30 -76
- package/node_modules/call-bind/package.json +83 -125
- package/node_modules/canvas/package.json +43 -86
- package/node_modules/chokidar/package.json +40 -74
- package/node_modules/chownr/package.json +24 -56
- package/node_modules/cli/package.json +23 -70
- package/node_modules/cliui/package.json +53 -87
- package/node_modules/color/node_modules/color-convert/package.json +26 -60
- package/node_modules/color/node_modules/color-name/package.json +18 -45
- package/node_modules/color/package.json +26 -57
- package/node_modules/color-convert/package.json +25 -59
- package/node_modules/color-difference/package.json +26 -52
- package/node_modules/color-model/package.json +17 -44
- package/node_modules/color-name/package.json +32 -60
- package/node_modules/color-string/package.json +26 -67
- package/node_modules/color-support/package.json +26 -60
- package/node_modules/combined-stream/package.json +19 -52
- package/node_modules/component-emitter/package.json +17 -45
- package/node_modules/concat-map/package.json +45 -89
- package/node_modules/console-control-strings/package.json +22 -55
- package/node_modules/convert-source-map/package.json +28 -55
- package/node_modules/cookiejar/package.json +16 -44
- package/node_modules/core-util-is/package.json +21 -51
- package/node_modules/d3/package.json +43 -70
- package/node_modules/d3-array/package.json +24 -55
- package/node_modules/d3-axis/package.json +27 -54
- package/node_modules/d3-brush/package.json +33 -60
- package/node_modules/d3-chord/package.json +28 -55
- package/node_modules/d3-collection/package.json +25 -54
- package/node_modules/d3-color/package.json +2 -2
- package/node_modules/d3-contour/package.json +27 -54
- package/node_modules/d3-dispatch/package.json +28 -60
- package/node_modules/d3-drag/package.json +32 -61
- package/node_modules/d3-dsv/node_modules/commander/package.json +25 -56
- package/node_modules/d3-dsv/package.json +36 -64
- package/node_modules/d3-ease/package.json +28 -56
- package/node_modules/d3-fetch/package.json +31 -58
- package/node_modules/d3-force/package.json +30 -57
- package/node_modules/d3-format/package.json +29 -57
- package/node_modules/d3-geo/package.json +35 -62
- package/node_modules/d3-hierarchy/package.json +33 -60
- package/node_modules/d3-interpolate/package.json +31 -63
- package/node_modules/d3-path/package.json +28 -57
- package/node_modules/d3-polygon/package.json +28 -55
- package/node_modules/d3-quadtree/package.json +29 -57
- package/node_modules/d3-random/package.json +26 -53
- package/node_modules/d3-scale/package.json +29 -56
- package/node_modules/d3-scale-chromatic/package.json +33 -60
- package/node_modules/d3-selection/package.json +29 -60
- package/node_modules/d3-shape/package.json +32 -59
- package/node_modules/d3-time/package.json +28 -57
- package/node_modules/d3-time-format/package.json +33 -61
- package/node_modules/d3-timer/package.json +28 -57
- package/node_modules/d3-transition/package.json +35 -64
- package/node_modules/d3-voronoi/package.json +24 -51
- package/node_modules/d3-zoom/package.json +34 -61
- package/node_modules/debug/package.json +37 -87
- package/node_modules/decompress-response/package.json +53 -84
- package/node_modules/delayed-stream/package.json +19 -53
- package/node_modules/delegates/package.json +11 -45
- package/node_modules/detect-libc/package.json +26 -60
- package/node_modules/dirname-shim/package.json +26 -60
- package/node_modules/dotenv/package.json +37 -64
- package/node_modules/duplexer/package.json +18 -49
- package/node_modules/emoji-regex/package.json +32 -58
- package/node_modules/escalade/package.json +28 -59
- package/node_modules/extended-emitter/package.json +37 -65
- package/node_modules/fast-safe-stringify/package.json +33 -73
- package/node_modules/fill-range/package.json +28 -72
- package/node_modules/follow-redirects/package.json +42 -77
- package/node_modules/form-data/package.json +42 -74
- package/node_modules/formidable/package.json +22 -52
- package/node_modules/fs-minipass/package.json +24 -52
- package/node_modules/fs-readdir-recursive/package.json +20 -50
- package/node_modules/fs.realpath/package.json +21 -53
- package/node_modules/fsevents/package.json +38 -63
- package/node_modules/ftp-response-parser/node_modules/isarray/package.json +22 -54
- package/node_modules/ftp-response-parser/node_modules/readable-stream/package.json +22 -55
- package/node_modules/ftp-response-parser/node_modules/string_decoder/package.json +17 -45
- package/node_modules/ftp-response-parser/package.json +23 -64
- package/node_modules/function-bind/package.json +28 -61
- package/node_modules/gauge/package.json +25 -52
- package/node_modules/generate-password/package.json +28 -54
- package/node_modules/get-caller-file/package.json +27 -53
- package/node_modules/get-intrinsic/package.json +91 -124
- package/node_modules/glob/package.json +34 -68
- package/node_modules/glob-parent/package.json +27 -70
- package/node_modules/has/package.json +26 -55
- package/node_modules/has-symbols/package.json +104 -133
- package/node_modules/has-unicode/package.json +25 -52
- package/node_modules/https-proxy-agent/package.json +30 -59
- package/node_modules/iconv-lite/package.json +48 -77
- package/node_modules/inflight/package.json +20 -48
- package/node_modules/inherits/package.json +17 -54
- package/node_modules/is-binary-path/package.json +43 -75
- package/node_modules/is-extglob/package.json +22 -52
- package/node_modules/is-fullwidth-code-point/package.json +45 -79
- package/node_modules/is-glob/package.json +26 -68
- package/node_modules/is-number/package.json +26 -65
- package/node_modules/jsftp/node_modules/debug/package.json +28 -67
- package/node_modules/jsftp/package.json +22 -59
- package/node_modules/json2csv/node_modules/commander/package.json +25 -56
- package/node_modules/json2csv/package.json +37 -64
- package/node_modules/jsonparse/package.json +18 -53
- package/node_modules/lodash/package.json +15 -61
- package/node_modules/lodash.get/package.json +16 -67
- package/node_modules/lru-cache/package.json +27 -61
- package/node_modules/make-dir/node_modules/semver/package.json +20 -51
- package/node_modules/make-dir/package.json +62 -93
- package/node_modules/maplex/package.json +22 -54
- package/node_modules/methods/package.json +22 -64
- package/node_modules/mime/package.json +20 -48
- package/node_modules/mime-db/package.json +25 -67
- package/node_modules/mime-types/package.json +20 -64
- package/node_modules/mimic-response/package.json +45 -76
- package/node_modules/minimatch/package.json +25 -61
- package/node_modules/minipass/package.json +30 -64
- package/node_modules/minizlib/package.json +27 -59
- package/node_modules/mkdirp/package.json +27 -57
- package/node_modules/ms/package.json +24 -58
- package/node_modules/multi-progress/package.json +20 -46
- package/node_modules/nan/package.json +27 -87
- package/node_modules/node-fetch/package.json +77 -104
- package/node_modules/nopt/package.json +22 -54
- package/node_modules/normalize-path/package.json +25 -63
- package/node_modules/npmlog/package.json +23 -55
- package/node_modules/object-assign/package.json +20 -51
- package/node_modules/object-inspect/package.json +53 -81
- package/node_modules/once/package.json +19 -56
- package/node_modules/parse-listing/package.json +27 -56
- package/node_modules/path-is-absolute/package.json +16 -47
- package/node_modules/picomatch/package.json +28 -60
- package/node_modules/progress/package.json +21 -65
- package/node_modules/qs/package.json +78 -105
- package/node_modules/readdirp/package.json +47 -83
- package/node_modules/require-directory/package.json +29 -57
- package/node_modules/rimraf/package.json +23 -61
- package/node_modules/rw/package.json +19 -46
- package/node_modules/safe-buffer/package.json +10 -38
- package/node_modules/safer-buffer/package.json +18 -43
- package/node_modules/semver/package.json +36 -70
- package/node_modules/set-blocking/package.json +29 -56
- package/node_modules/side-channel/package.json +70 -98
- package/node_modules/sift/package.json +30 -62
- package/node_modules/signal-exit/package.json +29 -58
- package/node_modules/simple-concat/package.json +22 -46
- package/node_modules/simple-get/package.json +9 -33
- package/node_modules/simple-swizzle/node_modules/is-arrayish/package.json +28 -59
- package/node_modules/simple-swizzle/package.json +23 -57
- package/node_modules/strangler/package.json +39 -67
- package/node_modules/stream-combiner/package.json +15 -48
- package/node_modules/string-tools/package.json +16 -50
- package/node_modules/string-width/package.json +59 -97
- package/node_modules/string_decoder/package.json +18 -47
- package/node_modules/strip-ansi/package.json +57 -94
- package/node_modules/superagent/node_modules/form-data/package.json +42 -74
- package/node_modules/superagent/node_modules/readable-stream/package.json +32 -60
- package/node_modules/superagent/package.json +13 -59
- package/node_modules/tar/package.json +27 -59
- package/node_modules/through/package.json +17 -50
- package/node_modules/to-regex-range/package.json +25 -61
- package/node_modules/tr46/package.json +24 -51
- package/node_modules/unorm/package.json +34 -75
- package/node_modules/util-deprecate/package.json +19 -49
- package/node_modules/uuid/package.json +74 -102
- package/node_modules/webidl-conversions/package.json +18 -53
- package/node_modules/whatwg-url/package.json +15 -49
- package/node_modules/wide-align/package.json +21 -53
- package/node_modules/wolfy87-eventemitter/package.json +25 -49
- package/node_modules/wrap-ansi/package.json +65 -97
- package/node_modules/wrappy/package.json +21 -50
- package/node_modules/y18n/package.json +43 -73
- package/node_modules/yallist/package.json +20 -55
- package/node_modules/yargs/package.json +72 -99
- package/node_modules/yargs-parser/package.json +52 -83
- package/package.json +2 -3
- package/src/TrialAccount.js +76 -0
- package/src/commands/agent/Agent.js +10 -19
- package/src/commands/agent/index.js +1 -0
- package/src/commands/agent/ready.js +42 -0
- package/src/commands/instances/list.js +8 -3
- package/src/commands/signup.js +14 -5
- package/src/commands/webplayer/WebPlayer.js +2 -1
- package/src/commands/webplayer/create.js +6 -0
- package/src/commands/webplayer/list.js +17 -16
- package/src/logging.js +1 -1
- package/src/profile.js +12 -9
- package/src/resumable.js +1314 -0
- package/src/table.js +7 -2
- package/src/upload.js +64 -2
- package/test/test.js +89 -0
- package/node_modules/@corellium/corellium-api/README.md +0 -1210
- package/node_modules/@corellium/corellium-api/node_modules/form-data/License +0 -19
- package/node_modules/@corellium/corellium-api/node_modules/form-data/README.md.bak +0 -356
- package/node_modules/@corellium/corellium-api/node_modules/form-data/Readme.md +0 -356
- package/node_modules/@corellium/corellium-api/node_modules/form-data/index.d.ts +0 -62
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/browser.js +0 -2
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/form_data.js +0 -498
- package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/populate.js +0 -10
- package/node_modules/@corellium/corellium-api/node_modules/form-data/package.json +0 -104
- package/node_modules/@corellium/corellium-api/node_modules/uuid/AUTHORS +0 -5
- package/node_modules/@corellium/corellium-api/node_modules/uuid/CHANGELOG.md +0 -119
- package/node_modules/@corellium/corellium-api/node_modules/uuid/LICENSE.md +0 -21
- package/node_modules/@corellium/corellium-api/node_modules/uuid/README.md +0 -276
- package/node_modules/@corellium/corellium-api/node_modules/uuid/bin/uuid +0 -65
- package/node_modules/@corellium/corellium-api/node_modules/uuid/index.js +0 -8
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/bytesToUuid.js +0 -26
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5-browser.js +0 -216
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5.js +0 -25
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng-browser.js +0 -34
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng.js +0 -8
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1-browser.js +0 -89
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1.js +0 -25
- package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/v35.js +0 -57
- package/node_modules/@corellium/corellium-api/node_modules/uuid/package.json +0 -103
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v1.js +0 -109
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v3.js +0 -4
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v4.js +0 -29
- package/node_modules/@corellium/corellium-api/node_modules/uuid/v5.js +0 -3
- package/node_modules/@corellium/corellium-api/package.json +0 -106
- package/node_modules/@corellium/corellium-api/resumable.js +0 -1312
- package/node_modules/@corellium/corellium-api/src/agent.js +0 -962
- package/node_modules/@corellium/corellium-api/src/corellium.js +0 -444
- package/node_modules/@corellium/corellium-api/src/images.js +0 -131
- package/node_modules/@corellium/corellium-api/src/input.js +0 -178
- package/node_modules/@corellium/corellium-api/src/instance-updater.js +0 -56
- package/node_modules/@corellium/corellium-api/src/instance.js +0 -1031
- package/node_modules/@corellium/corellium-api/src/netmon.js +0 -308
- package/node_modules/@corellium/corellium-api/src/project.js +0 -393
- package/node_modules/@corellium/corellium-api/src/role.js +0 -65
- package/node_modules/@corellium/corellium-api/src/snapshot.js +0 -77
- package/node_modules/@corellium/corellium-api/src/team.js +0 -29
- package/node_modules/@corellium/corellium-api/src/user.js +0 -51
- package/node_modules/@corellium/corellium-api/src/util/fetch.js +0 -62
- package/node_modules/@corellium/corellium-api/src/util/sleep.js +0 -7
- package/node_modules/@corellium/corellium-api/test/integration-tests.js +0 -1292
- package/node_modules/@corellium/corellium-api/test/root-hook-set-flag-if-test-failed.js +0 -7
- package/node_modules/async-limiter/.eslintignore +0 -2
- package/node_modules/async-limiter/.nycrc +0 -10
- package/node_modules/async-limiter/.travis.yml +0 -9
- package/node_modules/async-limiter/LICENSE +0 -8
- package/node_modules/async-limiter/index.js +0 -67
- package/node_modules/async-limiter/package.json +0 -72
- package/node_modules/async-limiter/readme.md +0 -132
- package/node_modules/buffer-crc32/LICENSE +0 -19
- package/node_modules/buffer-crc32/README.md +0 -47
- package/node_modules/buffer-crc32/index.js +0 -111
- package/node_modules/buffer-crc32/package.json +0 -72
- package/node_modules/cross-fetch/LICENSE +0 -21
- package/node_modules/cross-fetch/README.md +0 -169
- package/node_modules/cross-fetch/dist/browser-polyfill.js +0 -532
- package/node_modules/cross-fetch/dist/browser-ponyfill.js +0 -554
- package/node_modules/cross-fetch/dist/cross-fetch.js +0 -2
- package/node_modules/cross-fetch/dist/cross-fetch.js.map +0 -1
- package/node_modules/cross-fetch/dist/node-polyfill.js +0 -11
- package/node_modules/cross-fetch/dist/node-ponyfill.js +0 -22
- package/node_modules/cross-fetch/dist/react-native-polyfill.js +0 -12
- package/node_modules/cross-fetch/dist/react-native-ponyfill.js +0 -6
- package/node_modules/cross-fetch/index.d.ts +0 -14
- package/node_modules/cross-fetch/package.json +0 -160
- package/node_modules/cross-fetch/polyfill/package.json +0 -8
- package/node_modules/duplexify/.travis.yml +0 -6
- package/node_modules/duplexify/LICENSE +0 -21
- package/node_modules/duplexify/README.md +0 -97
- package/node_modules/duplexify/example.js +0 -21
- package/node_modules/duplexify/index.js +0 -234
- package/node_modules/duplexify/package.json +0 -69
- package/node_modules/duplexify/test.js +0 -295
- package/node_modules/end-of-stream/LICENSE +0 -21
- package/node_modules/end-of-stream/README.md +0 -54
- package/node_modules/end-of-stream/index.js +0 -94
- package/node_modules/end-of-stream/package.json +0 -69
- package/node_modules/fast-stable-stringify/.npmignore +0 -4
- package/node_modules/fast-stable-stringify/.travis.yml +0 -10
- package/node_modules/fast-stable-stringify/LICENSE +0 -21
- package/node_modules/fast-stable-stringify/README.md +0 -81
- package/node_modules/fast-stable-stringify/cli/files-to-comparison-results.js +0 -67
- package/node_modules/fast-stable-stringify/cli/format-table.js +0 -70
- package/node_modules/fast-stable-stringify/cli/index.js +0 -19
- package/node_modules/fast-stable-stringify/fixtures/index.js +0 -5
- package/node_modules/fast-stable-stringify/fixtures/input-data-types.js +0 -191
- package/node_modules/fast-stable-stringify/fixtures/log-result.json +0 -22
- package/node_modules/fast-stable-stringify/fixtures/log.txt +0 -24
- package/node_modules/fast-stable-stringify/index.js +0 -73
- package/node_modules/fast-stable-stringify/karma.conf.js +0 -124
- package/node_modules/fast-stable-stringify/karma.conf.travis.js +0 -95
- package/node_modules/fast-stable-stringify/package.json +0 -77
- package/node_modules/fast-stable-stringify/results/escape-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
- package/node_modules/fast-stable-stringify/results/escape.md +0 -20
- package/node_modules/fast-stable-stringify/results/itar-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/itar.md +0 -20
- package/node_modules/fast-stable-stringify/results/iter/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 39.0.0 (Android 5.1.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 9.0.0 (iOS 9.2.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter/Safari 9.1.2 (Mac OS X 10.11.6).json +0 -35
- package/node_modules/fast-stable-stringify/results/iter.md +0 -14
- package/node_modules/fast-stable-stringify/results/libs/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
- package/node_modules/fast-stable-stringify/results/libs/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -46
- package/node_modules/fast-stable-stringify/results/libs.md +0 -15
- package/node_modules/fast-stable-stringify/test/escape-long.js +0 -147
- package/node_modules/fast-stable-stringify/test/escape-short.js +0 -147
- package/node_modules/fast-stable-stringify/test/index.js +0 -6
- package/node_modules/fast-stable-stringify/test/itar-long.js +0 -52
- package/node_modules/fast-stable-stringify/test/itar-short.js +0 -52
- package/node_modules/fast-stable-stringify/test/iter.js +0 -84
- package/node_modules/fast-stable-stringify/test/libs.js +0 -57
- package/node_modules/fast-stable-stringify/test/travis.js +0 -43
- package/node_modules/fast-stable-stringify/test/validate.js +0 -24
- package/node_modules/fast-stable-stringify/util/eachRecursive.js +0 -9
- package/node_modules/fast-stable-stringify/util/get-git-hash-sync.js +0 -21
- package/node_modules/fast-stable-stringify/util/get-lib-info.js +0 -22
- package/node_modules/fast-stable-stringify/util/object-path.js +0 -47
- package/node_modules/fast-stable-stringify/v8-profile/bench.js +0 -8
- package/node_modules/fast-stable-stringify/v8-profile/run.sh +0 -2
- package/node_modules/fast-stable-stringify/zuul-local.sh +0 -2
- package/node_modules/hkdf/.npmignore +0 -2
- package/node_modules/hkdf/README.md +0 -23
- package/node_modules/hkdf/hkdf.py +0 -171
- package/node_modules/hkdf/hkdf.pyc +0 -0
- package/node_modules/hkdf/index.js +0 -1
- package/node_modules/hkdf/lib/hkdf.js +0 -55
- package/node_modules/hkdf/package.json +0 -55
- package/node_modules/hkdf/scripts/run_all_tests.sh +0 -19
- package/node_modules/hkdf/test/all-test.js +0 -79
- package/node_modules/hkdf/test.py +0 -11
- package/node_modules/immediate/LICENSE.txt +0 -20
- package/node_modules/immediate/README.md +0 -93
- package/node_modules/immediate/dist/immediate.js +0 -75
- package/node_modules/immediate/dist/immediate.min.js +0 -1
- package/node_modules/immediate/lib/browser.js +0 -69
- package/node_modules/immediate/lib/index.js +0 -73
- package/node_modules/immediate/package.json +0 -86
- package/node_modules/isarray/.npmignore +0 -1
- package/node_modules/isarray/.travis.yml +0 -4
- package/node_modules/isarray/Makefile +0 -6
- package/node_modules/isarray/README.md +0 -60
- package/node_modules/isarray/component.json +0 -19
- package/node_modules/isarray/index.js +0 -5
- package/node_modules/isarray/package.json +0 -77
- package/node_modules/isarray/test.js +0 -20
- package/node_modules/jszip/.codeclimate.yml +0 -16
- package/node_modules/jszip/.editorconfig +0 -8
- package/node_modules/jszip/.github/workflows/pr.yaml +0 -41
- package/node_modules/jszip/.jshintignore +0 -1
- package/node_modules/jszip/.jshintrc +0 -21
- package/node_modules/jszip/.travis.yml +0 -17
- package/node_modules/jszip/CHANGES.md +0 -192
- package/node_modules/jszip/LICENSE.markdown +0 -651
- package/node_modules/jszip/README.markdown +0 -33
- package/node_modules/jszip/dist/jszip.js +0 -11583
- package/node_modules/jszip/dist/jszip.min.js +0 -13
- package/node_modules/jszip/index.d.ts +0 -335
- package/node_modules/jszip/lib/base64.js +0 -106
- package/node_modules/jszip/lib/compressedObject.js +0 -74
- package/node_modules/jszip/lib/compressions.js +0 -14
- package/node_modules/jszip/lib/crc32.js +0 -77
- package/node_modules/jszip/lib/defaults.js +0 -11
- package/node_modules/jszip/lib/external.js +0 -19
- package/node_modules/jszip/lib/flate.js +0 -85
- package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -540
- package/node_modules/jszip/lib/generate/index.js +0 -57
- package/node_modules/jszip/lib/index.js +0 -55
- package/node_modules/jszip/lib/license_header.js +0 -11
- package/node_modules/jszip/lib/load.js +0 -88
- package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
- package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
- package/node_modules/jszip/lib/nodejsUtils.js +0 -57
- package/node_modules/jszip/lib/object.js +0 -389
- package/node_modules/jszip/lib/readable-stream-browser.js +0 -9
- package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
- package/node_modules/jszip/lib/reader/DataReader.js +0 -116
- package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
- package/node_modules/jszip/lib/reader/StringReader.js +0 -38
- package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
- package/node_modules/jszip/lib/reader/readerFor.js +0 -28
- package/node_modules/jszip/lib/signature.js +0 -7
- package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
- package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
- package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
- package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
- package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
- package/node_modules/jszip/lib/stream/StreamHelper.js +0 -212
- package/node_modules/jszip/lib/support.js +0 -38
- package/node_modules/jszip/lib/utf8.js +0 -275
- package/node_modules/jszip/lib/utils.js +0 -501
- package/node_modules/jszip/lib/zipEntries.js +0 -262
- package/node_modules/jszip/lib/zipEntry.js +0 -294
- package/node_modules/jszip/lib/zipObject.js +0 -133
- package/node_modules/jszip/package.json +0 -99
- package/node_modules/jszip/tsconfig.json +0 -101
- package/node_modules/jszip/vendor/FileSaver.js +0 -247
- package/node_modules/lie/README.md +0 -62
- package/node_modules/lie/dist/lie.js +0 -350
- package/node_modules/lie/dist/lie.min.js +0 -1
- package/node_modules/lie/dist/lie.polyfill.js +0 -358
- package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
- package/node_modules/lie/lib/browser.js +0 -273
- package/node_modules/lie/lib/index.js +0 -298
- package/node_modules/lie/license.md +0 -7
- package/node_modules/lie/lie.d.ts +0 -244
- package/node_modules/lie/package.json +0 -98
- package/node_modules/lie/polyfill.js +0 -4
- package/node_modules/p-finally/index.js +0 -15
- package/node_modules/p-finally/license +0 -21
- package/node_modules/p-finally/package.json +0 -77
- package/node_modules/p-finally/readme.md +0 -47
- package/node_modules/p-retry/index.js +0 -52
- package/node_modules/p-retry/license +0 -9
- package/node_modules/p-retry/package.json +0 -83
- package/node_modules/p-retry/readme.md +0 -109
- package/node_modules/p-timeout/index.d.ts +0 -72
- package/node_modules/p-timeout/index.js +0 -57
- package/node_modules/p-timeout/license +0 -9
- package/node_modules/p-timeout/package.json +0 -80
- package/node_modules/p-timeout/readme.md +0 -87
- package/node_modules/pako/CHANGELOG.md +0 -164
- package/node_modules/pako/LICENSE +0 -21
- package/node_modules/pako/README.md +0 -191
- package/node_modules/pako/dist/pako.js +0 -6818
- package/node_modules/pako/dist/pako.min.js +0 -1
- package/node_modules/pako/dist/pako_deflate.js +0 -3997
- package/node_modules/pako/dist/pako_deflate.min.js +0 -1
- package/node_modules/pako/dist/pako_inflate.js +0 -3300
- package/node_modules/pako/dist/pako_inflate.min.js +0 -1
- package/node_modules/pako/index.js +0 -14
- package/node_modules/pako/lib/deflate.js +0 -400
- package/node_modules/pako/lib/inflate.js +0 -423
- package/node_modules/pako/lib/utils/common.js +0 -105
- package/node_modules/pako/lib/utils/strings.js +0 -187
- package/node_modules/pako/lib/zlib/README +0 -59
- package/node_modules/pako/lib/zlib/adler32.js +0 -51
- package/node_modules/pako/lib/zlib/constants.js +0 -68
- package/node_modules/pako/lib/zlib/crc32.js +0 -59
- package/node_modules/pako/lib/zlib/deflate.js +0 -1874
- package/node_modules/pako/lib/zlib/gzheader.js +0 -58
- package/node_modules/pako/lib/zlib/inffast.js +0 -345
- package/node_modules/pako/lib/zlib/inflate.js +0 -1556
- package/node_modules/pako/lib/zlib/inftrees.js +0 -343
- package/node_modules/pako/lib/zlib/messages.js +0 -32
- package/node_modules/pako/lib/zlib/trees.js +0 -1222
- package/node_modules/pako/lib/zlib/zstream.js +0 -47
- package/node_modules/pako/package.json +0 -94
- package/node_modules/process-nextick-args/index.js +0 -45
- package/node_modules/process-nextick-args/license.md +0 -19
- package/node_modules/process-nextick-args/package.json +0 -53
- package/node_modules/process-nextick-args/readme.md +0 -18
- package/node_modules/readable-stream/.travis.yml +0 -34
- package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/readable-stream/README.md +0 -58
- package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
- package/node_modules/readable-stream/duplex-browser.js +0 -1
- package/node_modules/readable-stream/duplex.js +0 -1
- package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
- package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
- package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
- package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
- package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
- package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/node_modules/readable-stream/package.json +0 -86
- package/node_modules/readable-stream/passthrough.js +0 -1
- package/node_modules/readable-stream/readable-browser.js +0 -7
- package/node_modules/readable-stream/readable.js +0 -19
- package/node_modules/readable-stream/transform.js +0 -1
- package/node_modules/readable-stream/writable-browser.js +0 -1
- package/node_modules/readable-stream/writable.js +0 -8
- package/node_modules/retry/.npmignore +0 -3
- package/node_modules/retry/.travis.yml +0 -15
- package/node_modules/retry/License +0 -21
- package/node_modules/retry/Makefile +0 -18
- package/node_modules/retry/README.md +0 -227
- package/node_modules/retry/equation.gif +0 -0
- package/node_modules/retry/example/dns.js +0 -31
- package/node_modules/retry/example/stop.js +0 -40
- package/node_modules/retry/index.js +0 -1
- package/node_modules/retry/lib/retry.js +0 -100
- package/node_modules/retry/lib/retry_operation.js +0 -158
- package/node_modules/retry/package.json +0 -67
- package/node_modules/retry/test/common.js +0 -10
- package/node_modules/retry/test/integration/test-forever.js +0 -24
- package/node_modules/retry/test/integration/test-retry-operation.js +0 -258
- package/node_modules/retry/test/integration/test-retry-wrap.js +0 -101
- package/node_modules/retry/test/integration/test-timeouts.js +0 -69
- package/node_modules/setimmediate/LICENSE.txt +0 -20
- package/node_modules/setimmediate/package.json +0 -77
- package/node_modules/setimmediate/setImmediate.js +0 -186
- package/node_modules/split/.npmignore +0 -3
- package/node_modules/split/.travis.yml +0 -3
- package/node_modules/split/LICENCE +0 -22
- package/node_modules/split/examples/pretty.js +0 -26
- package/node_modules/split/index.js +0 -63
- package/node_modules/split/package.json +0 -65
- package/node_modules/split/readme.markdown +0 -72
- package/node_modules/split/test/options.asynct.js +0 -46
- package/node_modules/split/test/partitioned_unicode.js +0 -34
- package/node_modules/split/test/split.asynct.js +0 -137
- package/node_modules/split/test/try_catch.asynct.js +0 -51
- package/node_modules/stream-shift/.travis.yml +0 -6
- package/node_modules/stream-shift/LICENSE +0 -21
- package/node_modules/stream-shift/README.md +0 -25
- package/node_modules/stream-shift/index.js +0 -20
- package/node_modules/stream-shift/package.json +0 -56
- package/node_modules/stream-shift/test.js +0 -48
- package/node_modules/ultron/LICENSE +0 -22
- package/node_modules/ultron/README.md +0 -113
- package/node_modules/ultron/index.js +0 -136
- package/node_modules/ultron/package.json +0 -71
- package/node_modules/websocket-stream/LICENSE +0 -8
- package/node_modules/websocket-stream/collaborators.md +0 -11
- package/node_modules/websocket-stream/echo-server.js +0 -51
- package/node_modules/websocket-stream/index.d.ts +0 -27
- package/node_modules/websocket-stream/index.js +0 -6
- package/node_modules/websocket-stream/package.json +0 -82
- package/node_modules/websocket-stream/readme.md +0 -148
- package/node_modules/websocket-stream/server.js +0 -29
- package/node_modules/websocket-stream/stream.js +0 -189
- package/node_modules/websocket-stream/test-client.js +0 -74
- package/node_modules/websocket-stream/test-server.js +0 -56
- package/node_modules/websocket-stream/test.js +0 -338
- package/node_modules/websocket-stream/ts-tests.ts +0 -69
- package/node_modules/websocket-stream/ws-fallback.js +0 -12
- package/node_modules/ws/LICENSE +0 -21
- package/node_modules/ws/README.md +0 -341
- package/node_modules/ws/index.js +0 -15
- package/node_modules/ws/lib/.DS_Store +0 -0
- package/node_modules/ws/lib/BufferUtil.js +0 -71
- package/node_modules/ws/lib/Constants.js +0 -10
- package/node_modules/ws/lib/ErrorCodes.js +0 -28
- package/node_modules/ws/lib/EventTarget.js +0 -151
- package/node_modules/ws/lib/Extensions.js +0 -203
- package/node_modules/ws/lib/PerMessageDeflate.js +0 -507
- package/node_modules/ws/lib/Receiver.js +0 -553
- package/node_modules/ws/lib/Sender.js +0 -412
- package/node_modules/ws/lib/Validation.js +0 -17
- package/node_modules/ws/lib/WebSocket.js +0 -717
- package/node_modules/ws/lib/WebSocketServer.js +0 -326
- package/node_modules/ws/package.json +0 -83
- package/node_modules/xhr2/CONTRIBUTING.md +0 -33
- package/node_modules/xhr2/Cakefile +0 -131
- package/node_modules/xhr2/LICENSE.txt +0 -19
- package/node_modules/xhr2/README.md +0 -142
- package/node_modules/xhr2/lib/browser.js +0 -1
- package/node_modules/xhr2/lib/xhr2.js +0 -1244
- package/node_modules/xhr2/package.json +0 -103
- package/node_modules/xhr2/src/000-xml_http_request_event_target.coffee +0 -89
- package/node_modules/xhr2/src/001-xml_http_request.coffee +0 -781
- package/node_modules/xhr2/src/errors.coffee +0 -31
- package/node_modules/xhr2/src/progress_event.coffee +0 -39
- package/node_modules/xhr2/src/xml_http_request_upload.coffee +0 -95
- package/node_modules/xhr2/test/fixtures/hello.json +0 -1
- package/node_modules/xhr2/test/fixtures/hello.txt +0 -1
- package/node_modules/xhr2/test/fixtures/xhr2.png +0 -0
- package/node_modules/xhr2/test/html/browser_test.html +0 -30
- package/node_modules/xhr2/test/src/event_target_test.coffee +0 -85
- package/node_modules/xhr2/test/src/events_test.coffee +0 -204
- package/node_modules/xhr2/test/src/headers_test.coffee +0 -168
- package/node_modules/xhr2/test/src/helpers/browser_mocha_runner.coffee +0 -10
- package/node_modules/xhr2/test/src/helpers/browser_mocha_setup.coffee +0 -1
- package/node_modules/xhr2/test/src/helpers/setup.coffee +0 -38
- package/node_modules/xhr2/test/src/helpers/xhr_server.coffee +0 -156
- package/node_modules/xhr2/test/src/nodejs_set_test.coffee +0 -162
- package/node_modules/xhr2/test/src/redirect_test.coffee +0 -57
- package/node_modules/xhr2/test/src/response_type_test.coffee +0 -88
- package/node_modules/xhr2/test/src/responseurl_test.coffee +0 -18
- package/node_modules/xhr2/test/src/send_test.coffee +0 -89
- package/node_modules/xhr2/test/src/status_test.coffee +0 -47
- package/node_modules/xhr2/test/src/xhr_test.coffee +0 -102
- package/node_modules/xtend/.jshintrc +0 -30
- package/node_modules/xtend/LICENSE +0 -20
- package/node_modules/xtend/README.md +0 -32
- package/node_modules/xtend/immutable.js +0 -19
- package/node_modules/xtend/mutable.js +0 -17
- package/node_modules/xtend/package.json +0 -89
- package/node_modules/xtend/test.js +0 -103
- package/node_modules/yazl/LICENSE +0 -21
- package/node_modules/yazl/README.md +0 -389
- package/node_modules/yazl/index.js +0 -749
- package/node_modules/yazl/package.json +0 -69
- package/src/commands/CorelliumAPI.js +0 -76
- 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;
|