├── .eslintignore ├── .eslintrc ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── npm-shrinkwrap.json ├── osx-wifi-cli.js └── package.json /.eslintignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danyshaanan/osx-wifi-cli/17392b4ef402ebef09d11b1c84878b4b95d21c5e/.eslintignore -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "standard", 3 | "rules": { 4 | "arrow-parens": [0], 5 | "space-before-function-paren": [2, "never"], 6 | "quotes": [2, "single", { "allowTemplateLiterals": true }] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | os: 4 | - osx 5 | node_js: 6 | - "6" 7 | - "7" 8 | - "8" 9 | - "9" 10 | - "10" 11 | install: npm install 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Dany Shaanan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # osx-wifi-cli 2 | 3 | [![Build Status](https://travis-ci.org/danyshaanan/osx-wifi-cli.png)](https://travis-ci.org/danyshaanan/osx-wifi-cli) 4 | [![NPM Version](https://img.shields.io/npm/v/osx-wifi-cli.svg?style=flat)](https://npmjs.org/package/osx-wifi-cli) 5 | [![License](http://img.shields.io/npm/l/osx-wifi-cli.svg?style=flat)](LICENSE) 6 | [![Dependency Status](https://david-dm.org/danyshaanan/osx-wifi-cli.svg)](https://david-dm.org/danyshaanan/osx-wifi-cli) 7 | [![devDependency Status](https://david-dm.org/danyshaanan/osx-wifi-cli/dev-status.svg)](https://david-dm.org/danyshaanan/osx-wifi-cli#info=devDependencies) 8 | 9 | A command line tool for managing wifi connections on OSX 10 | 11 | * * * 12 | ### Installation 13 | ```bash 14 | $ npm install -g osx-wifi-cli 15 | ``` 16 | * * * 17 | ### Usage 18 | 19 | `osx-wifi-cli` shows name of current connected network. 20 | 21 | `osx-wifi-cli network` shows information about current connected network. 22 | 23 | `osx-wifi-cli pass` shows password for current connected network. 24 | 25 | `osx-wifi-cli scan` shows available networks. 26 | 27 | `osx-wifi-cli on`, `osx-wifi-cli off`, and `osx-wifi-cli restart` control the wifi device state. 28 | 29 | `osx-wifi-cli NETWORK PASSWORD` tries to connects to NETWORK with PASSWORD. 30 | 31 | * * * 32 | ### Notes 33 | * For easier use, add to your `.bashrc` file: `alias wifi='osx-wifi-cli'` 34 | * To connect to network without a password (bad idea!) use `osx-wifi-cli networkname " "` 35 | 36 | * * * 37 | ### Feedback 38 | * If you enjoyed this package, please star it [on Github](https://github.com/danyshaanan/osx-wifi-cli). 39 | * You are invited to [Open an issue on Github](https://github.com/danyshaanan/osx-wifi-cli/issues). 40 | * For other matters, my email address can be found on my [NpmJS page](https://www.npmjs.org/~danyshaanan), my [Github page](https://github.com/danyshaanan), or my [website](http://danyshaanan.com/). 41 | 42 | -------------------------------------------------------------------------------- /npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "osx-wifi-cli", 3 | "version": "2.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "acorn": { 8 | "version": "5.7.3", 9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", 10 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", 11 | "dev": true 12 | }, 13 | "acorn-jsx": { 14 | "version": "3.0.1", 15 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 16 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 17 | "dev": true, 18 | "requires": { 19 | "acorn": "^3.0.4" 20 | }, 21 | "dependencies": { 22 | "acorn": { 23 | "version": "3.3.0", 24 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 25 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 26 | "dev": true 27 | } 28 | } 29 | }, 30 | "ajv": { 31 | "version": "5.5.2", 32 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 33 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 34 | "dev": true, 35 | "requires": { 36 | "co": "^4.6.0", 37 | "fast-deep-equal": "^1.0.0", 38 | "fast-json-stable-stringify": "^2.0.0", 39 | "json-schema-traverse": "^0.3.0" 40 | } 41 | }, 42 | "ajv-keywords": { 43 | "version": "2.1.1", 44 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", 45 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", 46 | "dev": true 47 | }, 48 | "ansi-escapes": { 49 | "version": "3.2.0", 50 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 51 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 52 | "dev": true 53 | }, 54 | "ansi-regex": { 55 | "version": "2.1.1", 56 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 57 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 58 | "dev": true 59 | }, 60 | "ansi-styles": { 61 | "version": "2.2.1", 62 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 63 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 64 | "dev": true 65 | }, 66 | "argparse": { 67 | "version": "1.0.10", 68 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 69 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 70 | "dev": true, 71 | "requires": { 72 | "sprintf-js": "~1.0.2" 73 | } 74 | }, 75 | "babel-code-frame": { 76 | "version": "6.26.0", 77 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 78 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 79 | "dev": true, 80 | "requires": { 81 | "chalk": "^1.1.3", 82 | "esutils": "^2.0.2", 83 | "js-tokens": "^3.0.2" 84 | }, 85 | "dependencies": { 86 | "chalk": { 87 | "version": "1.1.3", 88 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 89 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 90 | "dev": true, 91 | "requires": { 92 | "ansi-styles": "^2.2.1", 93 | "escape-string-regexp": "^1.0.2", 94 | "has-ansi": "^2.0.0", 95 | "strip-ansi": "^3.0.0", 96 | "supports-color": "^2.0.0" 97 | } 98 | }, 99 | "strip-ansi": { 100 | "version": "3.0.1", 101 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 102 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 103 | "dev": true, 104 | "requires": { 105 | "ansi-regex": "^2.0.0" 106 | } 107 | } 108 | } 109 | }, 110 | "balanced-match": { 111 | "version": "1.0.0", 112 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 113 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 114 | "dev": true 115 | }, 116 | "brace-expansion": { 117 | "version": "1.1.11", 118 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 119 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 120 | "dev": true, 121 | "requires": { 122 | "balanced-match": "^1.0.0", 123 | "concat-map": "0.0.1" 124 | } 125 | }, 126 | "buffer-from": { 127 | "version": "1.1.1", 128 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 129 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 130 | "dev": true 131 | }, 132 | "builtin-modules": { 133 | "version": "1.1.1", 134 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 135 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 136 | "dev": true 137 | }, 138 | "caller-path": { 139 | "version": "0.1.0", 140 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 141 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 142 | "dev": true, 143 | "requires": { 144 | "callsites": "^0.2.0" 145 | } 146 | }, 147 | "callsites": { 148 | "version": "0.2.0", 149 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 150 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 151 | "dev": true 152 | }, 153 | "chalk": { 154 | "version": "2.4.2", 155 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 156 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 157 | "dev": true, 158 | "requires": { 159 | "ansi-styles": "^3.2.1", 160 | "escape-string-regexp": "^1.0.5", 161 | "supports-color": "^5.3.0" 162 | }, 163 | "dependencies": { 164 | "ansi-styles": { 165 | "version": "3.2.1", 166 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 167 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 168 | "dev": true, 169 | "requires": { 170 | "color-convert": "^1.9.0" 171 | } 172 | }, 173 | "supports-color": { 174 | "version": "5.5.0", 175 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 176 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 177 | "dev": true, 178 | "requires": { 179 | "has-flag": "^3.0.0" 180 | } 181 | } 182 | } 183 | }, 184 | "chardet": { 185 | "version": "0.4.2", 186 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 187 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", 188 | "dev": true 189 | }, 190 | "circular-json": { 191 | "version": "0.3.3", 192 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 193 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 194 | "dev": true 195 | }, 196 | "cli-cursor": { 197 | "version": "2.1.0", 198 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 199 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 200 | "dev": true, 201 | "requires": { 202 | "restore-cursor": "^2.0.0" 203 | } 204 | }, 205 | "cli-width": { 206 | "version": "2.2.0", 207 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 208 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 209 | "dev": true 210 | }, 211 | "co": { 212 | "version": "4.6.0", 213 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 214 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 215 | "dev": true 216 | }, 217 | "color-convert": { 218 | "version": "1.9.3", 219 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 220 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 221 | "dev": true, 222 | "requires": { 223 | "color-name": "1.1.3" 224 | } 225 | }, 226 | "color-name": { 227 | "version": "1.1.3", 228 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 229 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 230 | "dev": true 231 | }, 232 | "commander": { 233 | "version": "2.1.0", 234 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", 235 | "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" 236 | }, 237 | "concat-map": { 238 | "version": "0.0.1", 239 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 240 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 241 | "dev": true 242 | }, 243 | "concat-stream": { 244 | "version": "1.6.2", 245 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 246 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 247 | "dev": true, 248 | "requires": { 249 | "buffer-from": "^1.0.0", 250 | "inherits": "^2.0.3", 251 | "readable-stream": "^2.2.2", 252 | "typedarray": "^0.0.6" 253 | } 254 | }, 255 | "contains-path": { 256 | "version": "0.1.0", 257 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 258 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 259 | "dev": true 260 | }, 261 | "core-util-is": { 262 | "version": "1.0.2", 263 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 264 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 265 | "dev": true 266 | }, 267 | "cross-spawn": { 268 | "version": "5.1.0", 269 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 270 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 271 | "dev": true, 272 | "requires": { 273 | "lru-cache": "^4.0.1", 274 | "shebang-command": "^1.2.0", 275 | "which": "^1.2.9" 276 | } 277 | }, 278 | "debug": { 279 | "version": "3.2.6", 280 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 281 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 282 | "dev": true, 283 | "requires": { 284 | "ms": "^2.1.1" 285 | }, 286 | "dependencies": { 287 | "ms": { 288 | "version": "2.1.2", 289 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 290 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 291 | "dev": true 292 | } 293 | } 294 | }, 295 | "deep-is": { 296 | "version": "0.1.3", 297 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 298 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 299 | "dev": true 300 | }, 301 | "doctrine": { 302 | "version": "2.1.0", 303 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 304 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 305 | "dev": true, 306 | "requires": { 307 | "esutils": "^2.0.2" 308 | } 309 | }, 310 | "error-ex": { 311 | "version": "1.3.2", 312 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 313 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 314 | "dev": true, 315 | "requires": { 316 | "is-arrayish": "^0.2.1" 317 | } 318 | }, 319 | "escape-string-regexp": { 320 | "version": "1.0.5", 321 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 322 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 323 | "dev": true 324 | }, 325 | "eslint": { 326 | "version": "4.18.2", 327 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", 328 | "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", 329 | "dev": true, 330 | "requires": { 331 | "ajv": "^5.3.0", 332 | "babel-code-frame": "^6.22.0", 333 | "chalk": "^2.1.0", 334 | "concat-stream": "^1.6.0", 335 | "cross-spawn": "^5.1.0", 336 | "debug": "^3.1.0", 337 | "doctrine": "^2.1.0", 338 | "eslint-scope": "^3.7.1", 339 | "eslint-visitor-keys": "^1.0.0", 340 | "espree": "^3.5.2", 341 | "esquery": "^1.0.0", 342 | "esutils": "^2.0.2", 343 | "file-entry-cache": "^2.0.0", 344 | "functional-red-black-tree": "^1.0.1", 345 | "glob": "^7.1.2", 346 | "globals": "^11.0.1", 347 | "ignore": "^3.3.3", 348 | "imurmurhash": "^0.1.4", 349 | "inquirer": "^3.0.6", 350 | "is-resolvable": "^1.0.0", 351 | "js-yaml": "^3.9.1", 352 | "json-stable-stringify-without-jsonify": "^1.0.1", 353 | "levn": "^0.3.0", 354 | "lodash": "^4.17.4", 355 | "minimatch": "^3.0.2", 356 | "mkdirp": "^0.5.1", 357 | "natural-compare": "^1.4.0", 358 | "optionator": "^0.8.2", 359 | "path-is-inside": "^1.0.2", 360 | "pluralize": "^7.0.0", 361 | "progress": "^2.0.0", 362 | "require-uncached": "^1.0.3", 363 | "semver": "^5.3.0", 364 | "strip-ansi": "^4.0.0", 365 | "strip-json-comments": "~2.0.1", 366 | "table": "4.0.2", 367 | "text-table": "~0.2.0" 368 | } 369 | }, 370 | "eslint-config-standard": { 371 | "version": "11.0.0", 372 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", 373 | "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", 374 | "dev": true 375 | }, 376 | "eslint-import-resolver-node": { 377 | "version": "0.3.2", 378 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", 379 | "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", 380 | "dev": true, 381 | "requires": { 382 | "debug": "^2.6.9", 383 | "resolve": "^1.5.0" 384 | }, 385 | "dependencies": { 386 | "debug": { 387 | "version": "2.6.9", 388 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 389 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 390 | "dev": true, 391 | "requires": { 392 | "ms": "2.0.0" 393 | } 394 | } 395 | } 396 | }, 397 | "eslint-module-utils": { 398 | "version": "2.2.0", 399 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", 400 | "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", 401 | "dev": true, 402 | "requires": { 403 | "debug": "^2.6.8", 404 | "pkg-dir": "^1.0.0" 405 | }, 406 | "dependencies": { 407 | "debug": { 408 | "version": "2.6.9", 409 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 410 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 411 | "dev": true, 412 | "requires": { 413 | "ms": "2.0.0" 414 | } 415 | } 416 | } 417 | }, 418 | "eslint-plugin-import": { 419 | "version": "2.8.0", 420 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", 421 | "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", 422 | "dev": true, 423 | "requires": { 424 | "builtin-modules": "^1.1.1", 425 | "contains-path": "^0.1.0", 426 | "debug": "^2.6.8", 427 | "doctrine": "1.5.0", 428 | "eslint-import-resolver-node": "^0.3.1", 429 | "eslint-module-utils": "^2.1.1", 430 | "has": "^1.0.1", 431 | "lodash.cond": "^4.3.0", 432 | "minimatch": "^3.0.3", 433 | "read-pkg-up": "^2.0.0" 434 | }, 435 | "dependencies": { 436 | "debug": { 437 | "version": "2.6.9", 438 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 439 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 440 | "dev": true, 441 | "requires": { 442 | "ms": "2.0.0" 443 | } 444 | }, 445 | "doctrine": { 446 | "version": "1.5.0", 447 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 448 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 449 | "dev": true, 450 | "requires": { 451 | "esutils": "^2.0.2", 452 | "isarray": "^1.0.0" 453 | } 454 | } 455 | } 456 | }, 457 | "eslint-plugin-node": { 458 | "version": "5.2.1", 459 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", 460 | "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", 461 | "dev": true, 462 | "requires": { 463 | "ignore": "^3.3.6", 464 | "minimatch": "^3.0.4", 465 | "resolve": "^1.3.3", 466 | "semver": "5.3.0" 467 | }, 468 | "dependencies": { 469 | "semver": { 470 | "version": "5.3.0", 471 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 472 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 473 | "dev": true 474 | } 475 | } 476 | }, 477 | "eslint-plugin-promise": { 478 | "version": "3.6.0", 479 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", 480 | "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", 481 | "dev": true 482 | }, 483 | "eslint-plugin-standard": { 484 | "version": "3.0.1", 485 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", 486 | "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", 487 | "dev": true 488 | }, 489 | "eslint-scope": { 490 | "version": "3.7.3", 491 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", 492 | "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", 493 | "dev": true, 494 | "requires": { 495 | "esrecurse": "^4.1.0", 496 | "estraverse": "^4.1.1" 497 | } 498 | }, 499 | "eslint-visitor-keys": { 500 | "version": "1.1.0", 501 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 502 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 503 | "dev": true 504 | }, 505 | "espree": { 506 | "version": "3.5.4", 507 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", 508 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", 509 | "dev": true, 510 | "requires": { 511 | "acorn": "^5.5.0", 512 | "acorn-jsx": "^3.0.0" 513 | } 514 | }, 515 | "esprima": { 516 | "version": "4.0.1", 517 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 518 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 519 | "dev": true 520 | }, 521 | "esquery": { 522 | "version": "1.1.0", 523 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", 524 | "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", 525 | "dev": true, 526 | "requires": { 527 | "estraverse": "^4.0.0" 528 | } 529 | }, 530 | "esrecurse": { 531 | "version": "4.2.1", 532 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 533 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 534 | "dev": true, 535 | "requires": { 536 | "estraverse": "^4.1.0" 537 | } 538 | }, 539 | "estraverse": { 540 | "version": "4.3.0", 541 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 542 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 543 | "dev": true 544 | }, 545 | "esutils": { 546 | "version": "2.0.2", 547 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 548 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 549 | "dev": true 550 | }, 551 | "external-editor": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", 554 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", 555 | "dev": true, 556 | "requires": { 557 | "chardet": "^0.4.0", 558 | "iconv-lite": "^0.4.17", 559 | "tmp": "^0.0.33" 560 | } 561 | }, 562 | "fast-deep-equal": { 563 | "version": "1.1.0", 564 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 565 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", 566 | "dev": true 567 | }, 568 | "fast-json-stable-stringify": { 569 | "version": "2.1.0", 570 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 571 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 572 | "dev": true 573 | }, 574 | "fast-levenshtein": { 575 | "version": "2.0.6", 576 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 577 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 578 | "dev": true 579 | }, 580 | "figures": { 581 | "version": "2.0.0", 582 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 583 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 584 | "dev": true, 585 | "requires": { 586 | "escape-string-regexp": "^1.0.5" 587 | } 588 | }, 589 | "file-entry-cache": { 590 | "version": "2.0.0", 591 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 592 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 593 | "dev": true, 594 | "requires": { 595 | "flat-cache": "^1.2.1", 596 | "object-assign": "^4.0.1" 597 | } 598 | }, 599 | "find-up": { 600 | "version": "1.1.2", 601 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 602 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 603 | "dev": true, 604 | "requires": { 605 | "path-exists": "^2.0.0", 606 | "pinkie-promise": "^2.0.0" 607 | } 608 | }, 609 | "flat-cache": { 610 | "version": "1.3.4", 611 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", 612 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", 613 | "dev": true, 614 | "requires": { 615 | "circular-json": "^0.3.1", 616 | "graceful-fs": "^4.1.2", 617 | "rimraf": "~2.6.2", 618 | "write": "^0.2.1" 619 | } 620 | }, 621 | "fs.realpath": { 622 | "version": "1.0.0", 623 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 624 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 625 | "dev": true 626 | }, 627 | "function-bind": { 628 | "version": "1.1.1", 629 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 630 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 631 | "dev": true 632 | }, 633 | "functional-red-black-tree": { 634 | "version": "1.0.1", 635 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 636 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 637 | "dev": true 638 | }, 639 | "glob": { 640 | "version": "7.1.6", 641 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 642 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 643 | "dev": true, 644 | "requires": { 645 | "fs.realpath": "^1.0.0", 646 | "inflight": "^1.0.4", 647 | "inherits": "2", 648 | "minimatch": "^3.0.4", 649 | "once": "^1.3.0", 650 | "path-is-absolute": "^1.0.0" 651 | } 652 | }, 653 | "globals": { 654 | "version": "11.12.0", 655 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 656 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 657 | "dev": true 658 | }, 659 | "graceful-fs": { 660 | "version": "4.1.11", 661 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 662 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 663 | "dev": true 664 | }, 665 | "has": { 666 | "version": "1.0.3", 667 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 668 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 669 | "dev": true, 670 | "requires": { 671 | "function-bind": "^1.1.1" 672 | } 673 | }, 674 | "has-ansi": { 675 | "version": "2.0.0", 676 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 677 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 678 | "dev": true, 679 | "requires": { 680 | "ansi-regex": "^2.0.0" 681 | } 682 | }, 683 | "has-flag": { 684 | "version": "3.0.0", 685 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 686 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 687 | "dev": true 688 | }, 689 | "hosted-git-info": { 690 | "version": "2.7.1", 691 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 692 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", 693 | "dev": true 694 | }, 695 | "iconv-lite": { 696 | "version": "0.4.24", 697 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 698 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 699 | "dev": true, 700 | "requires": { 701 | "safer-buffer": ">= 2.1.2 < 3" 702 | } 703 | }, 704 | "ignore": { 705 | "version": "3.3.10", 706 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 707 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 708 | "dev": true 709 | }, 710 | "imurmurhash": { 711 | "version": "0.1.4", 712 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 713 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 714 | "dev": true 715 | }, 716 | "inflight": { 717 | "version": "1.0.6", 718 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 719 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 720 | "dev": true, 721 | "requires": { 722 | "once": "^1.3.0", 723 | "wrappy": "1" 724 | } 725 | }, 726 | "inherits": { 727 | "version": "2.0.4", 728 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 729 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 730 | "dev": true 731 | }, 732 | "inquirer": { 733 | "version": "3.3.0", 734 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", 735 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", 736 | "dev": true, 737 | "requires": { 738 | "ansi-escapes": "^3.0.0", 739 | "chalk": "^2.0.0", 740 | "cli-cursor": "^2.1.0", 741 | "cli-width": "^2.0.0", 742 | "external-editor": "^2.0.4", 743 | "figures": "^2.0.0", 744 | "lodash": "^4.3.0", 745 | "mute-stream": "0.0.7", 746 | "run-async": "^2.2.0", 747 | "rx-lite": "^4.0.8", 748 | "rx-lite-aggregates": "^4.0.8", 749 | "string-width": "^2.1.0", 750 | "strip-ansi": "^4.0.0", 751 | "through": "^2.3.6" 752 | } 753 | }, 754 | "is-arrayish": { 755 | "version": "0.2.1", 756 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 757 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 758 | "dev": true 759 | }, 760 | "is-builtin-module": { 761 | "version": "1.0.0", 762 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 763 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 764 | "dev": true, 765 | "requires": { 766 | "builtin-modules": "^1.0.0" 767 | } 768 | }, 769 | "is-fullwidth-code-point": { 770 | "version": "2.0.0", 771 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 772 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 773 | "dev": true 774 | }, 775 | "is-promise": { 776 | "version": "2.1.0", 777 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 778 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 779 | "dev": true 780 | }, 781 | "is-resolvable": { 782 | "version": "1.1.0", 783 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 784 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 785 | "dev": true 786 | }, 787 | "isarray": { 788 | "version": "1.0.0", 789 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 790 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 791 | "dev": true 792 | }, 793 | "isexe": { 794 | "version": "2.0.0", 795 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 796 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 797 | "dev": true 798 | }, 799 | "js-tokens": { 800 | "version": "3.0.2", 801 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 802 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 803 | "dev": true 804 | }, 805 | "js-yaml": { 806 | "version": "3.13.1", 807 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 808 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 809 | "dev": true, 810 | "requires": { 811 | "argparse": "^1.0.7", 812 | "esprima": "^4.0.0" 813 | } 814 | }, 815 | "json-schema-traverse": { 816 | "version": "0.3.1", 817 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 818 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 819 | "dev": true 820 | }, 821 | "json-stable-stringify-without-jsonify": { 822 | "version": "1.0.1", 823 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 824 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 825 | "dev": true 826 | }, 827 | "levn": { 828 | "version": "0.3.0", 829 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 830 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 831 | "dev": true, 832 | "requires": { 833 | "prelude-ls": "~1.1.2", 834 | "type-check": "~0.3.2" 835 | } 836 | }, 837 | "load-json-file": { 838 | "version": "2.0.0", 839 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 840 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 841 | "dev": true, 842 | "requires": { 843 | "graceful-fs": "^4.1.2", 844 | "parse-json": "^2.2.0", 845 | "pify": "^2.0.0", 846 | "strip-bom": "^3.0.0" 847 | } 848 | }, 849 | "locate-path": { 850 | "version": "2.0.0", 851 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 852 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 853 | "dev": true, 854 | "requires": { 855 | "p-locate": "^2.0.0", 856 | "path-exists": "^3.0.0" 857 | }, 858 | "dependencies": { 859 | "path-exists": { 860 | "version": "3.0.0", 861 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 862 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 863 | "dev": true 864 | } 865 | } 866 | }, 867 | "lodash": { 868 | "version": "4.17.15", 869 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 870 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 871 | "dev": true 872 | }, 873 | "lodash.cond": { 874 | "version": "4.5.2", 875 | "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", 876 | "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", 877 | "dev": true 878 | }, 879 | "lru-cache": { 880 | "version": "4.1.5", 881 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 882 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 883 | "dev": true, 884 | "requires": { 885 | "pseudomap": "^1.0.2", 886 | "yallist": "^2.1.2" 887 | } 888 | }, 889 | "mimic-fn": { 890 | "version": "1.2.0", 891 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 892 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 893 | "dev": true 894 | }, 895 | "minimatch": { 896 | "version": "3.0.4", 897 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 898 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 899 | "dev": true, 900 | "requires": { 901 | "brace-expansion": "^1.1.7" 902 | } 903 | }, 904 | "minimist": { 905 | "version": "0.0.8", 906 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 907 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 908 | "dev": true 909 | }, 910 | "mkdirp": { 911 | "version": "0.5.1", 912 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 913 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 914 | "dev": true, 915 | "requires": { 916 | "minimist": "0.0.8" 917 | } 918 | }, 919 | "ms": { 920 | "version": "2.0.0", 921 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 922 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 923 | "dev": true 924 | }, 925 | "mute-stream": { 926 | "version": "0.0.7", 927 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 928 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 929 | "dev": true 930 | }, 931 | "natural-compare": { 932 | "version": "1.4.0", 933 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 934 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 935 | "dev": true 936 | }, 937 | "normalize-package-data": { 938 | "version": "2.4.0", 939 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 940 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 941 | "dev": true, 942 | "requires": { 943 | "hosted-git-info": "^2.1.4", 944 | "is-builtin-module": "^1.0.0", 945 | "semver": "2 || 3 || 4 || 5", 946 | "validate-npm-package-license": "^3.0.1" 947 | } 948 | }, 949 | "object-assign": { 950 | "version": "4.1.1", 951 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 952 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 953 | "dev": true 954 | }, 955 | "once": { 956 | "version": "1.4.0", 957 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 958 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 959 | "dev": true, 960 | "requires": { 961 | "wrappy": "1" 962 | } 963 | }, 964 | "onetime": { 965 | "version": "2.0.1", 966 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 967 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 968 | "dev": true, 969 | "requires": { 970 | "mimic-fn": "^1.0.0" 971 | } 972 | }, 973 | "optionator": { 974 | "version": "0.8.3", 975 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 976 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 977 | "dev": true, 978 | "requires": { 979 | "deep-is": "~0.1.3", 980 | "fast-levenshtein": "~2.0.6", 981 | "levn": "~0.3.0", 982 | "prelude-ls": "~1.1.2", 983 | "type-check": "~0.3.2", 984 | "word-wrap": "~1.2.3" 985 | } 986 | }, 987 | "os-tmpdir": { 988 | "version": "1.0.2", 989 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 990 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 991 | "dev": true 992 | }, 993 | "p-limit": { 994 | "version": "1.3.0", 995 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 996 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 997 | "dev": true, 998 | "requires": { 999 | "p-try": "^1.0.0" 1000 | } 1001 | }, 1002 | "p-locate": { 1003 | "version": "2.0.0", 1004 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1005 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1006 | "dev": true, 1007 | "requires": { 1008 | "p-limit": "^1.1.0" 1009 | } 1010 | }, 1011 | "p-try": { 1012 | "version": "1.0.0", 1013 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1014 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1015 | "dev": true 1016 | }, 1017 | "parse-json": { 1018 | "version": "2.2.0", 1019 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1020 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1021 | "dev": true, 1022 | "requires": { 1023 | "error-ex": "^1.2.0" 1024 | } 1025 | }, 1026 | "path-exists": { 1027 | "version": "2.1.0", 1028 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1029 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1030 | "dev": true, 1031 | "requires": { 1032 | "pinkie-promise": "^2.0.0" 1033 | } 1034 | }, 1035 | "path-is-absolute": { 1036 | "version": "1.0.1", 1037 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1038 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1039 | "dev": true 1040 | }, 1041 | "path-is-inside": { 1042 | "version": "1.0.2", 1043 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1044 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1045 | "dev": true 1046 | }, 1047 | "path-parse": { 1048 | "version": "1.0.5", 1049 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1050 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1051 | "dev": true 1052 | }, 1053 | "path-type": { 1054 | "version": "2.0.0", 1055 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1056 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1057 | "dev": true, 1058 | "requires": { 1059 | "pify": "^2.0.0" 1060 | } 1061 | }, 1062 | "pify": { 1063 | "version": "2.3.0", 1064 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1065 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1066 | "dev": true 1067 | }, 1068 | "pinkie": { 1069 | "version": "2.0.4", 1070 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1071 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1072 | "dev": true 1073 | }, 1074 | "pinkie-promise": { 1075 | "version": "2.0.1", 1076 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1077 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1078 | "dev": true, 1079 | "requires": { 1080 | "pinkie": "^2.0.0" 1081 | } 1082 | }, 1083 | "pkg-dir": { 1084 | "version": "1.0.0", 1085 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 1086 | "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 1087 | "dev": true, 1088 | "requires": { 1089 | "find-up": "^1.0.0" 1090 | } 1091 | }, 1092 | "pluralize": { 1093 | "version": "7.0.0", 1094 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 1095 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 1096 | "dev": true 1097 | }, 1098 | "prelude-ls": { 1099 | "version": "1.1.2", 1100 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1101 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1102 | "dev": true 1103 | }, 1104 | "process-nextick-args": { 1105 | "version": "2.0.1", 1106 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1107 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1108 | "dev": true 1109 | }, 1110 | "progress": { 1111 | "version": "2.0.3", 1112 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1113 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1114 | "dev": true 1115 | }, 1116 | "pseudomap": { 1117 | "version": "1.0.2", 1118 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1119 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1120 | "dev": true 1121 | }, 1122 | "read-pkg": { 1123 | "version": "2.0.0", 1124 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 1125 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 1126 | "dev": true, 1127 | "requires": { 1128 | "load-json-file": "^2.0.0", 1129 | "normalize-package-data": "^2.3.2", 1130 | "path-type": "^2.0.0" 1131 | } 1132 | }, 1133 | "read-pkg-up": { 1134 | "version": "2.0.0", 1135 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 1136 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 1137 | "dev": true, 1138 | "requires": { 1139 | "find-up": "^2.0.0", 1140 | "read-pkg": "^2.0.0" 1141 | }, 1142 | "dependencies": { 1143 | "find-up": { 1144 | "version": "2.1.0", 1145 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1146 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1147 | "dev": true, 1148 | "requires": { 1149 | "locate-path": "^2.0.0" 1150 | } 1151 | } 1152 | } 1153 | }, 1154 | "readable-stream": { 1155 | "version": "2.3.7", 1156 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1157 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1158 | "dev": true, 1159 | "requires": { 1160 | "core-util-is": "~1.0.0", 1161 | "inherits": "~2.0.3", 1162 | "isarray": "~1.0.0", 1163 | "process-nextick-args": "~2.0.0", 1164 | "safe-buffer": "~5.1.1", 1165 | "string_decoder": "~1.1.1", 1166 | "util-deprecate": "~1.0.1" 1167 | } 1168 | }, 1169 | "require-uncached": { 1170 | "version": "1.0.3", 1171 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1172 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1173 | "dev": true, 1174 | "requires": { 1175 | "caller-path": "^0.1.0", 1176 | "resolve-from": "^1.0.0" 1177 | } 1178 | }, 1179 | "resolve": { 1180 | "version": "1.8.1", 1181 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 1182 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 1183 | "dev": true, 1184 | "requires": { 1185 | "path-parse": "^1.0.5" 1186 | } 1187 | }, 1188 | "resolve-from": { 1189 | "version": "1.0.1", 1190 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1191 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1192 | "dev": true 1193 | }, 1194 | "restore-cursor": { 1195 | "version": "2.0.0", 1196 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1197 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1198 | "dev": true, 1199 | "requires": { 1200 | "onetime": "^2.0.0", 1201 | "signal-exit": "^3.0.2" 1202 | } 1203 | }, 1204 | "rimraf": { 1205 | "version": "2.6.3", 1206 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1207 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1208 | "dev": true, 1209 | "requires": { 1210 | "glob": "^7.1.3" 1211 | } 1212 | }, 1213 | "run-async": { 1214 | "version": "2.3.0", 1215 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1216 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1217 | "dev": true, 1218 | "requires": { 1219 | "is-promise": "^2.1.0" 1220 | } 1221 | }, 1222 | "rx-lite": { 1223 | "version": "4.0.8", 1224 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 1225 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 1226 | "dev": true 1227 | }, 1228 | "rx-lite-aggregates": { 1229 | "version": "4.0.8", 1230 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 1231 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 1232 | "dev": true, 1233 | "requires": { 1234 | "rx-lite": "*" 1235 | } 1236 | }, 1237 | "safe-buffer": { 1238 | "version": "5.1.2", 1239 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1240 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1241 | "dev": true 1242 | }, 1243 | "safer-buffer": { 1244 | "version": "2.1.2", 1245 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1246 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1247 | "dev": true 1248 | }, 1249 | "semver": { 1250 | "version": "5.5.0", 1251 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 1252 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 1253 | "dev": true 1254 | }, 1255 | "shebang-command": { 1256 | "version": "1.2.0", 1257 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1258 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1259 | "dev": true, 1260 | "requires": { 1261 | "shebang-regex": "^1.0.0" 1262 | } 1263 | }, 1264 | "shebang-regex": { 1265 | "version": "1.0.0", 1266 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1267 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1268 | "dev": true 1269 | }, 1270 | "signal-exit": { 1271 | "version": "3.0.2", 1272 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1273 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1274 | "dev": true 1275 | }, 1276 | "slice-ansi": { 1277 | "version": "1.0.0", 1278 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 1279 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 1280 | "dev": true, 1281 | "requires": { 1282 | "is-fullwidth-code-point": "^2.0.0" 1283 | } 1284 | }, 1285 | "spdx-correct": { 1286 | "version": "3.0.0", 1287 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", 1288 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", 1289 | "dev": true, 1290 | "requires": { 1291 | "spdx-expression-parse": "^3.0.0", 1292 | "spdx-license-ids": "^3.0.0" 1293 | } 1294 | }, 1295 | "spdx-exceptions": { 1296 | "version": "2.1.0", 1297 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", 1298 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", 1299 | "dev": true 1300 | }, 1301 | "spdx-expression-parse": { 1302 | "version": "3.0.0", 1303 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1304 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1305 | "dev": true, 1306 | "requires": { 1307 | "spdx-exceptions": "^2.1.0", 1308 | "spdx-license-ids": "^3.0.0" 1309 | } 1310 | }, 1311 | "spdx-license-ids": { 1312 | "version": "3.0.0", 1313 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", 1314 | "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", 1315 | "dev": true 1316 | }, 1317 | "sprintf-js": { 1318 | "version": "1.0.3", 1319 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1320 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1321 | "dev": true 1322 | }, 1323 | "string-width": { 1324 | "version": "2.1.1", 1325 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1326 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1327 | "dev": true, 1328 | "requires": { 1329 | "is-fullwidth-code-point": "^2.0.0", 1330 | "strip-ansi": "^4.0.0" 1331 | } 1332 | }, 1333 | "string_decoder": { 1334 | "version": "1.1.1", 1335 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1336 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1337 | "dev": true, 1338 | "requires": { 1339 | "safe-buffer": "~5.1.0" 1340 | } 1341 | }, 1342 | "strip-ansi": { 1343 | "version": "4.0.0", 1344 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1345 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1346 | "dev": true, 1347 | "requires": { 1348 | "ansi-regex": "^3.0.0" 1349 | }, 1350 | "dependencies": { 1351 | "ansi-regex": { 1352 | "version": "3.0.0", 1353 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1354 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1355 | "dev": true 1356 | } 1357 | } 1358 | }, 1359 | "strip-bom": { 1360 | "version": "3.0.0", 1361 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1362 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1363 | "dev": true 1364 | }, 1365 | "strip-json-comments": { 1366 | "version": "2.0.1", 1367 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1368 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1369 | "dev": true 1370 | }, 1371 | "supports-color": { 1372 | "version": "2.0.0", 1373 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1374 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1375 | "dev": true 1376 | }, 1377 | "table": { 1378 | "version": "4.0.2", 1379 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", 1380 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", 1381 | "dev": true, 1382 | "requires": { 1383 | "ajv": "^5.2.3", 1384 | "ajv-keywords": "^2.1.0", 1385 | "chalk": "^2.1.0", 1386 | "lodash": "^4.17.4", 1387 | "slice-ansi": "1.0.0", 1388 | "string-width": "^2.1.1" 1389 | } 1390 | }, 1391 | "text-table": { 1392 | "version": "0.2.0", 1393 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1394 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1395 | "dev": true 1396 | }, 1397 | "through": { 1398 | "version": "2.3.8", 1399 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1400 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1401 | "dev": true 1402 | }, 1403 | "tmp": { 1404 | "version": "0.0.33", 1405 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1406 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1407 | "dev": true, 1408 | "requires": { 1409 | "os-tmpdir": "~1.0.2" 1410 | } 1411 | }, 1412 | "type-check": { 1413 | "version": "0.3.2", 1414 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1415 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1416 | "dev": true, 1417 | "requires": { 1418 | "prelude-ls": "~1.1.2" 1419 | } 1420 | }, 1421 | "typedarray": { 1422 | "version": "0.0.6", 1423 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1424 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1425 | "dev": true 1426 | }, 1427 | "util-deprecate": { 1428 | "version": "1.0.2", 1429 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1430 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1431 | "dev": true 1432 | }, 1433 | "validate-npm-package-license": { 1434 | "version": "3.0.3", 1435 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", 1436 | "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", 1437 | "dev": true, 1438 | "requires": { 1439 | "spdx-correct": "^3.0.0", 1440 | "spdx-expression-parse": "^3.0.0" 1441 | } 1442 | }, 1443 | "which": { 1444 | "version": "1.3.1", 1445 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1446 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1447 | "dev": true, 1448 | "requires": { 1449 | "isexe": "^2.0.0" 1450 | } 1451 | }, 1452 | "word-wrap": { 1453 | "version": "1.2.3", 1454 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1455 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1456 | "dev": true 1457 | }, 1458 | "wrappy": { 1459 | "version": "1.0.2", 1460 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1461 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1462 | "dev": true 1463 | }, 1464 | "write": { 1465 | "version": "0.2.1", 1466 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 1467 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 1468 | "dev": true, 1469 | "requires": { 1470 | "mkdirp": "^0.5.1" 1471 | } 1472 | }, 1473 | "yallist": { 1474 | "version": "2.1.2", 1475 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 1476 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 1477 | "dev": true 1478 | } 1479 | } 1480 | } 1481 | -------------------------------------------------------------------------------- /osx-wifi-cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict' 4 | 5 | const cli = require('commander') 6 | 7 | cli 8 | .version(require('./package.json').version) 9 | .usage('[on | off | restart | scan | pass | ]') 10 | .option('on', 'turn wifi on') 11 | .option('off', 'turn wifi off') 12 | .option('restart', 'restart wifi') 13 | .option('scan', 'show available networks') 14 | .option('pass', 'show password for current network') 15 | .option('network', 'show network information') 16 | .option('--device ', 'set device (default is en0)', 'en0') 17 | .parse(process.argv) 18 | 19 | const airport = '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport' 20 | 21 | const platforms = { 22 | /* 23 | Adding another operating system might only require finding matching commands 24 | the few below. If, however, you'll discover that it's not so simple, I'd be 25 | happy to discuss it online at https://github.com/danyshaanan/osx-wifi-cli 26 | */ 27 | darwin: { 28 | on: 'networksetup -setairportpower DEVICE on', 29 | off: 'networksetup -setairportpower DEVICE off', 30 | scan: `${airport} scan`, 31 | pass: 'security find-generic-password -wa "SSID"', 32 | connect: 'networksetup -setairportnetwork DEVICE "NETWORK" "PASSWORD"', 33 | ssid: `${airport} -I | grep -e "\\bSSID:" | sed -e "s/^.*SSID: //"`, 34 | network: `${airport} -I` 35 | } 36 | // The commented out linux object below is a result of ~5 minutes online, 37 | // Can you do better? (This is untested guesswork that might be distro dependent). 38 | // ,linux : { 39 | // on: 'sudo ifconfig DEVICE up', 40 | // off: 'sudo ifconfig DEVICE down', 41 | // scan: 'sudo iw dev wlan0 scan | grep SSID', 42 | // pass: 'echo "Error: 'pass' command not implemented for linux" 1>&2 && exit 1', 43 | // connect: 'echo "Error: 'pass' command not implemented for linux" 1>&2 && exit 1', 44 | // ssid: 'iwgetid -r' 45 | // } 46 | // ,yourFavoriteOS: {}, // Add your favorite OS here!! 47 | } 48 | 49 | const utils = platforms[process.platform] 50 | if (!utils) { 51 | console.log([ 52 | `ERROR!`, 53 | `Your 'process.platform' is '${process.platform}', which is not supported.`, 54 | `Open a pull request or issue on Github:`, 55 | `https://github.com/danyshaanan/osx-wifi-cli` 56 | ].join('\n')) 57 | process.exit(1) 58 | } 59 | 60 | const args = process.argv.slice(2, Infinity) 61 | Object.keys(utils).forEach(key => { utils[key] = utils[key].replace('DEVICE', cli.device) }) 62 | if (args.includes('--device')) args.splice(args.indexOf('--device'), 2) 63 | 64 | const exec = command => require('child_process').execSync(command).toString() 65 | const execTrim = command => exec(command).trim() 66 | 67 | if (args[0] === 'on') { // cli.on is a function 68 | execTrim(utils.on) 69 | } else if (args[0] === 'off') { 70 | execTrim(utils.off) 71 | } else if (cli.restart) { 72 | execTrim(utils.off) 73 | execTrim(utils.on) 74 | } else if (cli.scan) { 75 | console.log(execTrim(utils.scan)) 76 | } else if (cli.pass) { 77 | const ssid = execTrim(utils.ssid) 78 | const pass = execTrim(utils.pass.replace('SSID', ssid)) 79 | console.log(pass) 80 | } else if (cli.network) { 81 | console.log(exec(utils.network)) 82 | } else if (args.length === 2) { 83 | execTrim(utils.connect.replace('NETWORK', args[0]).replace('PASSWORD', args[1])) 84 | } else if (args.length === 0) { 85 | const ssid = execTrim(utils.ssid) 86 | console.log(ssid ? `you are connected to ${ssid}.` : 'You are not connected anywhere.') 87 | } else { 88 | cli.help() 89 | } 90 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "osx-wifi-cli", 3 | "version": "2.1.0", 4 | "description": "A command line tool for managing wifi connection in osx", 5 | "keywords": [ 6 | "osx", 7 | "wifi", 8 | "cli", 9 | "mac", 10 | "wireless", 11 | "network" 12 | ], 13 | "homepage": "https://github.com/danyshaanan/osx-wifi-cli", 14 | "author": { 15 | "name": "Dany Shaanan", 16 | "email": "danyshaanan@gmail.com", 17 | "url": "http://danyshaanan.com/" 18 | }, 19 | "os": [ 20 | "darwin" 21 | ], 22 | "contributors": [], 23 | "license": "MIT", 24 | "licenses": [ 25 | { 26 | "type": "MIT", 27 | "url": "https://github.com/danyshaanan/osx-wifi-cli/blob/master/LICENSE" 28 | } 29 | ], 30 | "repository": { 31 | "type": "git", 32 | "url": "git://github.com/danyshaanan/osx-wifi-cli.git" 33 | }, 34 | "bugs": { 35 | "url": "https://github.com/danyshaanan/osx-wifi-cli/issues", 36 | "email": "danyshaanan@gmail.com" 37 | }, 38 | "preferGlobal": true, 39 | "engines": { 40 | "node": ">=6" 41 | }, 42 | "engineStrict": true, 43 | "scripts": { 44 | "lint": "eslint .", 45 | "test": "npm run lint", 46 | "start": "npm test" 47 | }, 48 | "bin": { 49 | "osx-wifi-cli": "./osx-wifi-cli.js" 50 | }, 51 | "dependencies": { 52 | "commander": "2.1.0" 53 | }, 54 | "devDependencies": { 55 | "eslint": "4.18.2", 56 | "eslint-config-standard": "11.0.0", 57 | "eslint-plugin-import": "2.8.0", 58 | "eslint-plugin-node": "5.2.1", 59 | "eslint-plugin-promise": "3.6.0", 60 | "eslint-plugin-standard": "3.0.1" 61 | } 62 | } 63 | --------------------------------------------------------------------------------