├── .gitignore ├── src ├── Middleware │ └── Rbac.js └── Traits │ └── Rbac.js ├── .editorconfig ├── instructions.js ├── providers └── RbacProvider.js ├── package.json ├── templates └── config.mustache ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | coverage 2 | node_modules 3 | .DS_Store 4 | npm-debug.log 5 | .idea 6 | out 7 | .nyc_output 8 | package-lock.json 9 | -------------------------------------------------------------------------------- /src/Middleware/Rbac.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = class Rbac { 3 | 4 | async handle(ctx, next) { 5 | const { auth } = ctx 6 | await next() 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_size = 2 6 | indent_style = space 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /instructions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const path = require('path') 4 | 5 | module.exports = async function (cli) { 6 | try { 7 | await cli.makeConfig('rbac.js', path.join(__dirname, './templates/config.mustache')) 8 | cli.command.completed('create', `config/rbac.js`) 9 | } catch (error) { 10 | // ignore errors 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /providers/RbacProvider.js: -------------------------------------------------------------------------------- 1 | 2 | const { ServiceProvider } = require.main.require('@adonisjs/fold') 3 | 4 | module.exports = class RbacProvider extends ServiceProvider { 5 | 6 | register() { 7 | 8 | this.app.bind('Rbac/Traits/Rbac', () => { 9 | 10 | return new (require('../src/Traits/Rbac')) 11 | }) 12 | this.app.bind('Rbac/Middleware/Rbac', () => { 13 | return new (require('../src/Middlware/Rbac')) 14 | }) 15 | 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "adonis-rbac", 3 | "version": "1.0.2", 4 | "main": "index.js", 5 | "keywords": [ 6 | "adonisjs", 7 | "rbac", 8 | "adonis rbac", 9 | "adonis-framework" 10 | ], 11 | "author": "JohnnyWu ", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "@adonisjs/fold": "^4.0.8", 15 | "@adonisjs/sink": "^1.0.13", 16 | "japa": "^1.0.5", 17 | "japa-cli": "^1.0.1", 18 | "standard": "^10.0.3" 19 | }, 20 | "dependencies": { 21 | "lodash": "^4.17.10" 22 | }, 23 | "repository": { 24 | "type": "git", 25 | "url": "https://github.com/wxs77577/adonis-rbac.git" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /templates/config.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Configurations for adonis-rbac 4 | * 5 | * Permission format: . 6 | * e.g: posts.index, posts.update, posts.delete 7 | * 8 | * tip: define roles sorting by permissions asc. 9 | */ 10 | module.exports = { 11 | roles: { 12 | // : [...] 13 | user: ['posts.index', 'posts.show'], 14 | 15 | // use `role:` to grant all permissions for 16 | editor: ['role:user', 'posts.create', 'posts.update'], 17 | 18 | // use `posts.*` to allow all operations for posts 19 | admin: ['role:editor', 'posts.*'], 20 | 21 | // use `*` to grant all permissions 22 | system: ['*'] 23 | }, 24 | } -------------------------------------------------------------------------------- /src/Traits/Rbac.js: -------------------------------------------------------------------------------- 1 | const Config = use('Config') 2 | const _ = require('lodash') 3 | 4 | module.exports = class Rbac { 5 | 6 | register(Model, options) { 7 | const that = this 8 | Model.prototype.getPermissions = function () { 9 | const roles = that.fetchRoles() 10 | if (!this.roles) { 11 | return [] 12 | } 13 | 14 | let myRoles = [] 15 | 16 | if (_.isArray(this.roles)) { 17 | myRoles = this.roles 18 | } 19 | 20 | if (_.isString(this.roles)) { 21 | myRoles = this.roles.split(',') 22 | } 23 | 24 | let perms = new Set 25 | _.mapValues(_.pick(roles, myRoles), items => { 26 | items.forEach(item => perms.add(item)) 27 | }) 28 | return [...perms] 29 | } 30 | 31 | Model.prototype.isRole = function () { 32 | return true 33 | } 34 | 35 | Model.prototype.can = function (permission) { 36 | const perms = this.getPermissions() 37 | if (perms.includes('*')) { 38 | return true 39 | } 40 | if (perms.includes(permission)) { 41 | return true 42 | } 43 | if (permission.includes('.')) { 44 | const [resource, action] = permission.split('.') 45 | if (perms.includes(`${resource}.*`)) { 46 | return true 47 | } 48 | } 49 | console.error('rbac:', permission, false) 50 | return false 51 | } 52 | } 53 | 54 | fetchRoles() { 55 | const { roles, permissions } = Config.get('rbac', {}) 56 | const flatten = (name) => { 57 | let ret = roles[name].map((v, k) => { 58 | if (String(v).includes('role:')) { 59 | const subRole = v.split(':').pop() 60 | v = flatten(subRole) 61 | } 62 | return v 63 | }) 64 | 65 | return _.flatMap(ret) 66 | 67 | } 68 | 69 | _.mapValues(roles, (perms, name) => { 70 | roles[name] = flatten(name) 71 | }) 72 | return roles 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # adonis-rbac 2 | 3 | ## Install 4 | 5 | ```bash 6 | adonis install adonis-rbac --yarn 7 | ``` 8 | 9 | ## Setup 10 | 1. Add provider in `/start/app.js` 11 | ```js 12 | const providers = [ 13 | //... 14 | 'adonis-rbac/providers/RbacProvider', 15 | ] 16 | ``` 17 | 18 | 19 | 1. Add trait in `/app/Models/User.js` 20 | 21 | ```js 22 | class User extends Model { 23 | 24 | static get traits() { 25 | return [ 26 | '@provider:Rbac/Traits/Rbac' 27 | ] 28 | } 29 | 30 | //...or if you need to customize the field name... 31 | 32 | static boot () { 33 | super.boot() 34 | 35 | this.addTrait('@provider:Rbac/Traits/Rbac', { 36 | field: 'roles' //default is `roles` 37 | }) 38 | } 39 | } 40 | ``` 41 | 42 | ## Usage 43 | 1. Define `roles` in `/config/rbac.js` 44 | ```js 45 | /** 46 | * 47 | * Configurations for adonis-rbac 48 | * 49 | * Permission format: . 50 | * e.g: posts.index, posts.update, posts.delete 51 | * 52 | * tip: define roles sorting by permissions asc. 53 | */ 54 | module.exports = { 55 | roles: { 56 | // : [...] 57 | user: ['posts.index', 'posts.show'], 58 | 59 | // use `role:` to grant all permissions for 60 | editor: ['role:user', 'posts.create', 'posts.update'], 61 | 62 | // use `posts.*` to allow all operations for posts 63 | admin: ['role:editor', 'posts.*'], 64 | 65 | // use `*` to grant all permissions 66 | system: ['*'] 67 | }, 68 | } 69 | ```` 70 | 71 | 1. Set `roles` on user 72 | ```js 73 | user.roles = ['admin'] 74 | 75 | /* or string split by comma*/ 76 | user.roles = 'admin,editor' 77 | 78 | ``` 79 | 1. Use `.can()` in middleware or controller actions. 80 | ```js 81 | const { HttpException } = require('@adonisjs/generic-exceptions') 82 | 83 | if (!auth.user.can('posts.index')) { 84 | throw new HttpException('Forbidden.', 403) 85 | } 86 | ``` -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@adonisjs/fold@^4.0.8": 6 | version "4.0.8" 7 | resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-4.0.8.tgz#b187a22bafceaf413b4d27683a48afd0d11d0208" 8 | dependencies: 9 | "@adonisjs/generic-exceptions" "^2.0.0" 10 | caller "^1.0.1" 11 | debug "^3.1.0" 12 | lodash "^4.17.5" 13 | require-stack "^1.0.2" 14 | 15 | "@adonisjs/generic-exceptions@^2.0.0": 16 | version "2.0.0" 17 | resolved "https://registry.yarnpkg.com/@adonisjs/generic-exceptions/-/generic-exceptions-2.0.0.tgz#530e89a8487be01ae8e1c9152b1714ddc0b92446" 18 | dependencies: 19 | node-exceptions "^3.0.0" 20 | upcast "^2.1.1" 21 | 22 | "@adonisjs/sink@^1.0.13": 23 | version "1.0.16" 24 | resolved "https://registry.npmjs.org/@adonisjs/sink/-/sink-1.0.16.tgz#ff15ca05aeca875997775313d69800496a40cfe2" 25 | dependencies: 26 | lodash "^4.17.5" 27 | 28 | acorn-jsx@^3.0.0: 29 | version "3.0.1" 30 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 31 | dependencies: 32 | acorn "^3.0.4" 33 | 34 | acorn-node@^1.2.0: 35 | version "1.3.0" 36 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" 37 | dependencies: 38 | acorn "^5.4.1" 39 | xtend "^4.0.1" 40 | 41 | acorn@^3.0.4: 42 | version "3.3.0" 43 | resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 44 | 45 | acorn@^5.4.1, acorn@^5.5.0: 46 | version "5.5.3" 47 | resolved "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" 48 | 49 | ajv-keywords@^1.0.0: 50 | version "1.5.1" 51 | resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 52 | 53 | ajv@^4.7.0: 54 | version "4.11.8" 55 | resolved "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 56 | dependencies: 57 | co "^4.6.0" 58 | json-stable-stringify "^1.0.1" 59 | 60 | ansi-escapes@^1.1.0: 61 | version "1.4.0" 62 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 63 | 64 | ansi-regex@^2.0.0: 65 | version "2.1.1" 66 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 67 | 68 | ansi-regex@^3.0.0: 69 | version "3.0.0" 70 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 71 | 72 | ansi-styles@^2.2.1: 73 | version "2.2.1" 74 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 75 | 76 | ansi-styles@^3.2.1: 77 | version "3.2.1" 78 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 79 | dependencies: 80 | color-convert "^1.9.0" 81 | 82 | argparse@^1.0.7: 83 | version "1.0.10" 84 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 85 | dependencies: 86 | sprintf-js "~1.0.2" 87 | 88 | array-union@^1.0.1: 89 | version "1.0.2" 90 | resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 91 | dependencies: 92 | array-uniq "^1.0.1" 93 | 94 | array-uniq@^1.0.1: 95 | version "1.0.3" 96 | resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 97 | 98 | array.prototype.find@^2.0.1: 99 | version "2.0.4" 100 | resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" 101 | dependencies: 102 | define-properties "^1.1.2" 103 | es-abstract "^1.7.0" 104 | 105 | arrify@^1.0.0: 106 | version "1.0.1" 107 | resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 108 | 109 | assertion-error@^1.0.1: 110 | version "1.1.0" 111 | resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 112 | 113 | babel-code-frame@^6.16.0: 114 | version "6.26.0" 115 | resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 116 | dependencies: 117 | chalk "^1.1.3" 118 | esutils "^2.0.2" 119 | js-tokens "^3.0.2" 120 | 121 | balanced-match@^1.0.0: 122 | version "1.0.0" 123 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 124 | 125 | brace-expansion@^1.1.7: 126 | version "1.1.11" 127 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 128 | dependencies: 129 | balanced-match "^1.0.0" 130 | concat-map "0.0.1" 131 | 132 | buffer-from@^1.0.0: 133 | version "1.0.0" 134 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" 135 | 136 | builtin-modules@^1.1.1: 137 | version "1.1.1" 138 | resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 139 | 140 | caller-path@^0.1.0: 141 | version "0.1.0" 142 | resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 143 | dependencies: 144 | callsites "^0.2.0" 145 | 146 | caller@^1.0.1: 147 | version "1.0.1" 148 | resolved "https://registry.yarnpkg.com/caller/-/caller-1.0.1.tgz#b851860f70e195db3d277395aa1a7e23ea30ecf5" 149 | 150 | callsites@^0.2.0: 151 | version "0.2.0" 152 | resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 153 | 154 | chai@^4.1.2: 155 | version "4.1.2" 156 | resolved "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" 157 | dependencies: 158 | assertion-error "^1.0.1" 159 | check-error "^1.0.1" 160 | deep-eql "^3.0.0" 161 | get-func-name "^2.0.0" 162 | pathval "^1.0.0" 163 | type-detect "^4.0.0" 164 | 165 | chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: 166 | version "1.1.3" 167 | resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 168 | dependencies: 169 | ansi-styles "^2.2.1" 170 | escape-string-regexp "^1.0.2" 171 | has-ansi "^2.0.0" 172 | strip-ansi "^3.0.0" 173 | supports-color "^2.0.0" 174 | 175 | chalk@^2.3.0: 176 | version "2.4.1" 177 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 178 | dependencies: 179 | ansi-styles "^3.2.1" 180 | escape-string-regexp "^1.0.5" 181 | supports-color "^5.3.0" 182 | 183 | check-error@^1.0.1: 184 | version "1.0.2" 185 | resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 186 | 187 | circular-json@^0.3.1: 188 | version "0.3.3" 189 | resolved "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 190 | 191 | cli-cursor@^1.0.1: 192 | version "1.0.2" 193 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 194 | dependencies: 195 | restore-cursor "^1.0.1" 196 | 197 | cli-width@^2.0.0: 198 | version "2.2.0" 199 | resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 200 | 201 | co@^4.6.0: 202 | version "4.6.0" 203 | resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 204 | 205 | code-point-at@^1.0.0: 206 | version "1.1.0" 207 | resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 208 | 209 | color-convert@^1.9.0: 210 | version "1.9.1" 211 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 212 | dependencies: 213 | color-name "^1.1.1" 214 | 215 | color-name@^1.1.1: 216 | version "1.1.3" 217 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 218 | 219 | colors@^1.1.2: 220 | version "1.2.4" 221 | resolved "https://registry.npmjs.org/colors/-/colors-1.2.4.tgz#e0cb41d3e4b20806b3bfc27f4559f01b94bc2f7c" 222 | 223 | commander@^2.9.0: 224 | version "2.15.1" 225 | resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 226 | 227 | concat-map@0.0.1: 228 | version "0.0.1" 229 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 230 | 231 | concat-stream@^1.5.2: 232 | version "1.6.2" 233 | resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 234 | dependencies: 235 | buffer-from "^1.0.0" 236 | inherits "^2.0.3" 237 | readable-stream "^2.2.2" 238 | typedarray "^0.0.6" 239 | 240 | contains-path@^0.1.0: 241 | version "0.1.0" 242 | resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 243 | 244 | core-util-is@~1.0.0: 245 | version "1.0.2" 246 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 247 | 248 | cross-env@^5.1.0: 249 | version "5.1.4" 250 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.4.tgz#f61c14291f7cc653bb86457002ea80a04699d022" 251 | dependencies: 252 | cross-spawn "^5.1.0" 253 | is-windows "^1.0.0" 254 | 255 | cross-spawn@^5.1.0: 256 | version "5.1.0" 257 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 258 | dependencies: 259 | lru-cache "^4.0.1" 260 | shebang-command "^1.2.0" 261 | which "^1.2.9" 262 | 263 | d@1: 264 | version "1.0.0" 265 | resolved "https://registry.npmjs.org/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 266 | dependencies: 267 | es5-ext "^0.10.9" 268 | 269 | debug-log@^1.0.0: 270 | version "1.0.1" 271 | resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" 272 | 273 | debug@^2.1.1, debug@^2.2.0, debug@^2.6.8: 274 | version "2.6.9" 275 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 276 | dependencies: 277 | ms "2.0.0" 278 | 279 | debug@^3.1.0: 280 | version "3.1.0" 281 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 282 | dependencies: 283 | ms "2.0.0" 284 | 285 | deep-eql@^3.0.0: 286 | version "3.0.1" 287 | resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 288 | dependencies: 289 | type-detect "^4.0.0" 290 | 291 | deep-is@~0.1.3: 292 | version "0.1.3" 293 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 294 | 295 | define-properties@^1.1.2: 296 | version "1.1.2" 297 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 298 | dependencies: 299 | foreach "^2.0.5" 300 | object-keys "^1.0.8" 301 | 302 | deglob@^2.1.0: 303 | version "2.1.0" 304 | resolved "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a" 305 | dependencies: 306 | find-root "^1.0.0" 307 | glob "^7.0.5" 308 | ignore "^3.0.9" 309 | pkg-config "^1.1.0" 310 | run-parallel "^1.1.2" 311 | uniq "^1.0.1" 312 | 313 | del@^2.0.2: 314 | version "2.2.2" 315 | resolved "https://registry.npmjs.org/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 316 | dependencies: 317 | globby "^5.0.0" 318 | is-path-cwd "^1.0.0" 319 | is-path-in-cwd "^1.0.0" 320 | object-assign "^4.0.1" 321 | pify "^2.0.0" 322 | pinkie-promise "^2.0.0" 323 | rimraf "^2.2.8" 324 | 325 | doctrine@1.5.0, doctrine@^1.2.2: 326 | version "1.5.0" 327 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 328 | dependencies: 329 | esutils "^2.0.2" 330 | isarray "^1.0.0" 331 | 332 | doctrine@^2.0.0: 333 | version "2.1.0" 334 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 335 | dependencies: 336 | esutils "^2.0.2" 337 | 338 | error-ex@^1.3.1: 339 | version "1.3.1" 340 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 341 | dependencies: 342 | is-arrayish "^0.2.1" 343 | 344 | es-abstract@^1.7.0: 345 | version "1.11.0" 346 | resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" 347 | dependencies: 348 | es-to-primitive "^1.1.1" 349 | function-bind "^1.1.1" 350 | has "^1.0.1" 351 | is-callable "^1.1.3" 352 | is-regex "^1.0.4" 353 | 354 | es-to-primitive@^1.1.1: 355 | version "1.1.1" 356 | resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 357 | dependencies: 358 | is-callable "^1.1.1" 359 | is-date-object "^1.0.1" 360 | is-symbol "^1.0.1" 361 | 362 | es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: 363 | version "0.10.42" 364 | resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" 365 | dependencies: 366 | es6-iterator "~2.0.3" 367 | es6-symbol "~3.1.1" 368 | next-tick "1" 369 | 370 | es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: 371 | version "2.0.3" 372 | resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 373 | dependencies: 374 | d "1" 375 | es5-ext "^0.10.35" 376 | es6-symbol "^3.1.1" 377 | 378 | es6-map@^0.1.3: 379 | version "0.1.5" 380 | resolved "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 381 | dependencies: 382 | d "1" 383 | es5-ext "~0.10.14" 384 | es6-iterator "~2.0.1" 385 | es6-set "~0.1.5" 386 | es6-symbol "~3.1.1" 387 | event-emitter "~0.3.5" 388 | 389 | es6-set@~0.1.5: 390 | version "0.1.5" 391 | resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 392 | dependencies: 393 | d "1" 394 | es5-ext "~0.10.14" 395 | es6-iterator "~2.0.1" 396 | es6-symbol "3.1.1" 397 | event-emitter "~0.3.5" 398 | 399 | es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: 400 | version "3.1.1" 401 | resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 402 | dependencies: 403 | d "1" 404 | es5-ext "~0.10.14" 405 | 406 | es6-weak-map@^2.0.1: 407 | version "2.0.2" 408 | resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 409 | dependencies: 410 | d "1" 411 | es5-ext "^0.10.14" 412 | es6-iterator "^2.0.1" 413 | es6-symbol "^3.1.1" 414 | 415 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 416 | version "1.0.5" 417 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 418 | 419 | escope@^3.6.0: 420 | version "3.6.0" 421 | resolved "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 422 | dependencies: 423 | es6-map "^0.1.3" 424 | es6-weak-map "^2.0.1" 425 | esrecurse "^4.1.0" 426 | estraverse "^4.1.1" 427 | 428 | eslint-config-standard-jsx@4.0.2: 429 | version "4.0.2" 430 | resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1" 431 | 432 | eslint-config-standard@10.2.1: 433 | version "10.2.1" 434 | resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" 435 | 436 | eslint-import-resolver-node@^0.2.0: 437 | version "0.2.3" 438 | resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" 439 | dependencies: 440 | debug "^2.2.0" 441 | object-assign "^4.0.1" 442 | resolve "^1.1.6" 443 | 444 | eslint-module-utils@^2.0.0: 445 | version "2.2.0" 446 | resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" 447 | dependencies: 448 | debug "^2.6.8" 449 | pkg-dir "^1.0.0" 450 | 451 | eslint-plugin-import@~2.2.0: 452 | version "2.2.0" 453 | resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" 454 | dependencies: 455 | builtin-modules "^1.1.1" 456 | contains-path "^0.1.0" 457 | debug "^2.2.0" 458 | doctrine "1.5.0" 459 | eslint-import-resolver-node "^0.2.0" 460 | eslint-module-utils "^2.0.0" 461 | has "^1.0.1" 462 | lodash.cond "^4.3.0" 463 | minimatch "^3.0.3" 464 | pkg-up "^1.0.0" 465 | 466 | eslint-plugin-node@~4.2.2: 467 | version "4.2.3" 468 | resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz#c04390ab8dbcbb6887174023d6f3a72769e63b97" 469 | dependencies: 470 | ignore "^3.0.11" 471 | minimatch "^3.0.2" 472 | object-assign "^4.0.1" 473 | resolve "^1.1.7" 474 | semver "5.3.0" 475 | 476 | eslint-plugin-promise@~3.5.0: 477 | version "3.5.0" 478 | resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" 479 | 480 | eslint-plugin-react@~6.10.0: 481 | version "6.10.3" 482 | resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" 483 | dependencies: 484 | array.prototype.find "^2.0.1" 485 | doctrine "^1.2.2" 486 | has "^1.0.1" 487 | jsx-ast-utils "^1.3.4" 488 | object.assign "^4.0.4" 489 | 490 | eslint-plugin-standard@~3.0.1: 491 | version "3.0.1" 492 | resolved "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" 493 | 494 | eslint@~3.19.0: 495 | version "3.19.0" 496 | resolved "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" 497 | dependencies: 498 | babel-code-frame "^6.16.0" 499 | chalk "^1.1.3" 500 | concat-stream "^1.5.2" 501 | debug "^2.1.1" 502 | doctrine "^2.0.0" 503 | escope "^3.6.0" 504 | espree "^3.4.0" 505 | esquery "^1.0.0" 506 | estraverse "^4.2.0" 507 | esutils "^2.0.2" 508 | file-entry-cache "^2.0.0" 509 | glob "^7.0.3" 510 | globals "^9.14.0" 511 | ignore "^3.2.0" 512 | imurmurhash "^0.1.4" 513 | inquirer "^0.12.0" 514 | is-my-json-valid "^2.10.0" 515 | is-resolvable "^1.0.0" 516 | js-yaml "^3.5.1" 517 | json-stable-stringify "^1.0.0" 518 | levn "^0.3.0" 519 | lodash "^4.0.0" 520 | mkdirp "^0.5.0" 521 | natural-compare "^1.4.0" 522 | optionator "^0.8.2" 523 | path-is-inside "^1.0.1" 524 | pluralize "^1.2.1" 525 | progress "^1.1.8" 526 | require-uncached "^1.0.2" 527 | shelljs "^0.7.5" 528 | strip-bom "^3.0.0" 529 | strip-json-comments "~2.0.1" 530 | table "^3.7.8" 531 | text-table "~0.2.0" 532 | user-home "^2.0.0" 533 | 534 | espree@^3.4.0: 535 | version "3.5.4" 536 | resolved "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" 537 | dependencies: 538 | acorn "^5.5.0" 539 | acorn-jsx "^3.0.0" 540 | 541 | esprima@^4.0.0: 542 | version "4.0.0" 543 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 544 | 545 | esquery@^1.0.0: 546 | version "1.0.1" 547 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 548 | dependencies: 549 | estraverse "^4.0.0" 550 | 551 | esrecurse@^4.1.0: 552 | version "4.2.1" 553 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 554 | dependencies: 555 | estraverse "^4.1.0" 556 | 557 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: 558 | version "4.2.0" 559 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 560 | 561 | esutils@^2.0.2: 562 | version "2.0.2" 563 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 564 | 565 | event-emitter@~0.3.5: 566 | version "0.3.5" 567 | resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 568 | dependencies: 569 | d "1" 570 | es5-ext "~0.10.14" 571 | 572 | exit-hook@^1.0.0: 573 | version "1.1.1" 574 | resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 575 | 576 | fast-levenshtein@~2.0.4: 577 | version "2.0.6" 578 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 579 | 580 | figures@^1.3.5: 581 | version "1.7.0" 582 | resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 583 | dependencies: 584 | escape-string-regexp "^1.0.5" 585 | object-assign "^4.1.0" 586 | 587 | file-entry-cache@^2.0.0: 588 | version "2.0.0" 589 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 590 | dependencies: 591 | flat-cache "^1.2.1" 592 | object-assign "^4.0.1" 593 | 594 | find-root@^1.0.0: 595 | version "1.1.0" 596 | resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" 597 | 598 | find-up@^1.0.0: 599 | version "1.1.2" 600 | resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 601 | dependencies: 602 | path-exists "^2.0.0" 603 | pinkie-promise "^2.0.0" 604 | 605 | find-up@^2.0.0: 606 | version "2.1.0" 607 | resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 608 | dependencies: 609 | locate-path "^2.0.0" 610 | 611 | flat-cache@^1.2.1: 612 | version "1.3.0" 613 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 614 | dependencies: 615 | circular-json "^0.3.1" 616 | del "^2.0.2" 617 | graceful-fs "^4.1.2" 618 | write "^0.2.1" 619 | 620 | foreach@^2.0.5: 621 | version "2.0.5" 622 | resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 623 | 624 | fs.realpath@^1.0.0: 625 | version "1.0.0" 626 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 627 | 628 | function-bind@^1.0.2, function-bind@^1.1.1: 629 | version "1.1.1" 630 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 631 | 632 | generate-function@^2.0.0: 633 | version "2.0.0" 634 | resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 635 | 636 | generate-object-property@^1.1.0: 637 | version "1.2.0" 638 | resolved "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 639 | dependencies: 640 | is-property "^1.0.0" 641 | 642 | get-func-name@^2.0.0: 643 | version "2.0.0" 644 | resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 645 | 646 | get-stdin@^5.0.1: 647 | version "5.0.1" 648 | resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" 649 | 650 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 651 | version "7.1.2" 652 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 653 | dependencies: 654 | fs.realpath "^1.0.0" 655 | inflight "^1.0.4" 656 | inherits "2" 657 | minimatch "^3.0.4" 658 | once "^1.3.0" 659 | path-is-absolute "^1.0.0" 660 | 661 | globals@^9.14.0: 662 | version "9.18.0" 663 | resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 664 | 665 | globby@^5.0.0: 666 | version "5.0.0" 667 | resolved "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 668 | dependencies: 669 | array-union "^1.0.1" 670 | arrify "^1.0.0" 671 | glob "^7.0.3" 672 | object-assign "^4.0.1" 673 | pify "^2.0.0" 674 | pinkie-promise "^2.0.0" 675 | 676 | globby@^6.1.0: 677 | version "6.1.0" 678 | resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 679 | dependencies: 680 | array-union "^1.0.1" 681 | glob "^7.0.3" 682 | object-assign "^4.0.1" 683 | pify "^2.0.0" 684 | pinkie-promise "^2.0.0" 685 | 686 | graceful-fs@^4.1.2: 687 | version "4.1.11" 688 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 689 | 690 | has-ansi@^2.0.0: 691 | version "2.0.0" 692 | resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 693 | dependencies: 694 | ansi-regex "^2.0.0" 695 | 696 | has-flag@^3.0.0: 697 | version "3.0.0" 698 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 699 | 700 | has-symbols@^1.0.0: 701 | version "1.0.0" 702 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 703 | 704 | has@^1.0.1: 705 | version "1.0.1" 706 | resolved "https://registry.npmjs.org/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 707 | dependencies: 708 | function-bind "^1.0.2" 709 | 710 | ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0: 711 | version "3.3.8" 712 | resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" 713 | 714 | imurmurhash@^0.1.4: 715 | version "0.1.4" 716 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 717 | 718 | inflight@^1.0.4: 719 | version "1.0.6" 720 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 721 | dependencies: 722 | once "^1.3.0" 723 | wrappy "1" 724 | 725 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 726 | version "2.0.3" 727 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 728 | 729 | inquirer@^0.12.0: 730 | version "0.12.0" 731 | resolved "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 732 | dependencies: 733 | ansi-escapes "^1.1.0" 734 | ansi-regex "^2.0.0" 735 | chalk "^1.0.0" 736 | cli-cursor "^1.0.1" 737 | cli-width "^2.0.0" 738 | figures "^1.3.5" 739 | lodash "^4.3.0" 740 | readline2 "^1.0.1" 741 | run-async "^0.1.0" 742 | rx-lite "^3.1.2" 743 | string-width "^1.0.1" 744 | strip-ansi "^3.0.0" 745 | through "^2.3.6" 746 | 747 | interpret@^1.0.0: 748 | version "1.1.0" 749 | resolved "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 750 | 751 | is-arrayish@^0.2.1: 752 | version "0.2.1" 753 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 754 | 755 | is-callable@^1.1.1, is-callable@^1.1.3: 756 | version "1.1.3" 757 | resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 758 | 759 | is-date-object@^1.0.1: 760 | version "1.0.1" 761 | resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 762 | 763 | is-fullwidth-code-point@^1.0.0: 764 | version "1.0.0" 765 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 766 | dependencies: 767 | number-is-nan "^1.0.0" 768 | 769 | is-fullwidth-code-point@^2.0.0: 770 | version "2.0.0" 771 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 772 | 773 | is-my-ip-valid@^1.0.0: 774 | version "1.0.0" 775 | resolved "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" 776 | 777 | is-my-json-valid@^2.10.0: 778 | version "2.17.2" 779 | resolved "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" 780 | dependencies: 781 | generate-function "^2.0.0" 782 | generate-object-property "^1.1.0" 783 | is-my-ip-valid "^1.0.0" 784 | jsonpointer "^4.0.0" 785 | xtend "^4.0.0" 786 | 787 | is-path-cwd@^1.0.0: 788 | version "1.0.0" 789 | resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 790 | 791 | is-path-in-cwd@^1.0.0: 792 | version "1.0.1" 793 | resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" 794 | dependencies: 795 | is-path-inside "^1.0.0" 796 | 797 | is-path-inside@^1.0.0: 798 | version "1.0.1" 799 | resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 800 | dependencies: 801 | path-is-inside "^1.0.1" 802 | 803 | is-property@^1.0.0: 804 | version "1.0.2" 805 | resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 806 | 807 | is-regex@^1.0.4: 808 | version "1.0.4" 809 | resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 810 | dependencies: 811 | has "^1.0.1" 812 | 813 | is-resolvable@^1.0.0: 814 | version "1.1.0" 815 | resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" 816 | 817 | is-symbol@^1.0.1: 818 | version "1.0.1" 819 | resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 820 | 821 | is-windows@^1.0.0: 822 | version "1.0.2" 823 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 824 | 825 | isarray@^1.0.0, isarray@~1.0.0: 826 | version "1.0.0" 827 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 828 | 829 | isexe@^2.0.0: 830 | version "2.0.0" 831 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 832 | 833 | japa-cli@^1.0.1: 834 | version "1.0.1" 835 | resolved "https://registry.npmjs.org/japa-cli/-/japa-cli-1.0.1.tgz#08672bc4a22f87921a5a28f9e17fb93773817060" 836 | dependencies: 837 | colors "^1.1.2" 838 | commander "^2.9.0" 839 | globby "^6.1.0" 840 | left-pad "^1.1.3" 841 | 842 | japa@^1.0.5: 843 | version "1.0.6" 844 | resolved "https://registry.npmjs.org/japa/-/japa-1.0.6.tgz#bb4a4d0ad8fdb2e24f39904fb339e403ccd2a87c" 845 | dependencies: 846 | chai "^4.1.2" 847 | chalk "^2.3.0" 848 | ms "^2.1.1" 849 | retry "^0.10.1" 850 | right-pad "^1.0.1" 851 | variable-diff "^1.1.0" 852 | 853 | js-tokens@^3.0.2: 854 | version "3.0.2" 855 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 856 | 857 | js-yaml@^3.5.1: 858 | version "3.11.0" 859 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" 860 | dependencies: 861 | argparse "^1.0.7" 862 | esprima "^4.0.0" 863 | 864 | json-parse-better-errors@^1.0.1: 865 | version "1.0.2" 866 | resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 867 | 868 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 869 | version "1.0.1" 870 | resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 871 | dependencies: 872 | jsonify "~0.0.0" 873 | 874 | jsonify@~0.0.0: 875 | version "0.0.0" 876 | resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 877 | 878 | jsonpointer@^4.0.0: 879 | version "4.0.1" 880 | resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 881 | 882 | jsx-ast-utils@^1.3.4: 883 | version "1.4.1" 884 | resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" 885 | 886 | left-pad@^1.1.3: 887 | version "1.3.0" 888 | resolved "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" 889 | 890 | levn@^0.3.0, levn@~0.3.0: 891 | version "0.3.0" 892 | resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 893 | dependencies: 894 | prelude-ls "~1.1.2" 895 | type-check "~0.3.2" 896 | 897 | load-json-file@^4.0.0: 898 | version "4.0.0" 899 | resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 900 | dependencies: 901 | graceful-fs "^4.1.2" 902 | parse-json "^4.0.0" 903 | pify "^3.0.0" 904 | strip-bom "^3.0.0" 905 | 906 | locate-path@^2.0.0: 907 | version "2.0.0" 908 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 909 | dependencies: 910 | p-locate "^2.0.0" 911 | path-exists "^3.0.0" 912 | 913 | lodash.cond@^4.3.0: 914 | version "4.5.2" 915 | resolved "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" 916 | 917 | lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.3.0: 918 | version "4.17.10" 919 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 920 | 921 | lru-cache@^4.0.1: 922 | version "4.1.3" 923 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 924 | dependencies: 925 | pseudomap "^1.0.2" 926 | yallist "^2.1.2" 927 | 928 | minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 929 | version "3.0.4" 930 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 931 | dependencies: 932 | brace-expansion "^1.1.7" 933 | 934 | minimist@0.0.8: 935 | version "0.0.8" 936 | resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 937 | 938 | minimist@^1.1.0: 939 | version "1.2.0" 940 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 941 | 942 | mkdirp@^0.5.0, mkdirp@^0.5.1: 943 | version "0.5.1" 944 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 945 | dependencies: 946 | minimist "0.0.8" 947 | 948 | ms@2.0.0: 949 | version "2.0.0" 950 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 951 | 952 | ms@^2.1.1: 953 | version "2.1.1" 954 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 955 | 956 | mute-stream@0.0.5: 957 | version "0.0.5" 958 | resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 959 | 960 | natural-compare@^1.4.0: 961 | version "1.4.0" 962 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 963 | 964 | next-tick@1: 965 | version "1.0.0" 966 | resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" 967 | 968 | node-exceptions@^3.0.0: 969 | version "3.0.0" 970 | resolved "https://registry.yarnpkg.com/node-exceptions/-/node-exceptions-3.0.0.tgz#48b8e10da71370845ef1af583778139527308d11" 971 | 972 | number-is-nan@^1.0.0: 973 | version "1.0.1" 974 | resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 975 | 976 | object-assign@^4.0.1, object-assign@^4.1.0: 977 | version "4.1.1" 978 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 979 | 980 | object-keys@^1.0.11, object-keys@^1.0.8: 981 | version "1.0.11" 982 | resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 983 | 984 | object.assign@^4.0.4: 985 | version "4.1.0" 986 | resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 987 | dependencies: 988 | define-properties "^1.1.2" 989 | function-bind "^1.1.1" 990 | has-symbols "^1.0.0" 991 | object-keys "^1.0.11" 992 | 993 | once@^1.3.0: 994 | version "1.4.0" 995 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 996 | dependencies: 997 | wrappy "1" 998 | 999 | onetime@^1.0.0: 1000 | version "1.1.0" 1001 | resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 1002 | 1003 | optionator@^0.8.2: 1004 | version "0.8.2" 1005 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1006 | dependencies: 1007 | deep-is "~0.1.3" 1008 | fast-levenshtein "~2.0.4" 1009 | levn "~0.3.0" 1010 | prelude-ls "~1.1.2" 1011 | type-check "~0.3.2" 1012 | wordwrap "~1.0.0" 1013 | 1014 | os-homedir@^1.0.0: 1015 | version "1.0.2" 1016 | resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1017 | 1018 | p-limit@^1.1.0: 1019 | version "1.2.0" 1020 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" 1021 | dependencies: 1022 | p-try "^1.0.0" 1023 | 1024 | p-locate@^2.0.0: 1025 | version "2.0.0" 1026 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1027 | dependencies: 1028 | p-limit "^1.1.0" 1029 | 1030 | p-try@^1.0.0: 1031 | version "1.0.0" 1032 | resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1033 | 1034 | parse-json@^4.0.0: 1035 | version "4.0.0" 1036 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1037 | dependencies: 1038 | error-ex "^1.3.1" 1039 | json-parse-better-errors "^1.0.1" 1040 | 1041 | path-exists@^2.0.0: 1042 | version "2.1.0" 1043 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1044 | dependencies: 1045 | pinkie-promise "^2.0.0" 1046 | 1047 | path-exists@^3.0.0: 1048 | version "3.0.0" 1049 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1050 | 1051 | path-is-absolute@^1.0.0: 1052 | version "1.0.1" 1053 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1054 | 1055 | path-is-inside@^1.0.1: 1056 | version "1.0.2" 1057 | resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1058 | 1059 | path-parse@^1.0.5: 1060 | version "1.0.5" 1061 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 1062 | 1063 | pathval@^1.0.0: 1064 | version "1.1.0" 1065 | resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1066 | 1067 | pify@^2.0.0: 1068 | version "2.3.0" 1069 | resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1070 | 1071 | pify@^3.0.0: 1072 | version "3.0.0" 1073 | resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1074 | 1075 | pinkie-promise@^2.0.0: 1076 | version "2.0.1" 1077 | resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1078 | dependencies: 1079 | pinkie "^2.0.0" 1080 | 1081 | pinkie@^2.0.0: 1082 | version "2.0.4" 1083 | resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1084 | 1085 | pkg-conf@^2.0.0: 1086 | version "2.1.0" 1087 | resolved "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" 1088 | dependencies: 1089 | find-up "^2.0.0" 1090 | load-json-file "^4.0.0" 1091 | 1092 | pkg-config@^1.1.0: 1093 | version "1.1.1" 1094 | resolved "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" 1095 | dependencies: 1096 | debug-log "^1.0.0" 1097 | find-root "^1.0.0" 1098 | xtend "^4.0.1" 1099 | 1100 | pkg-dir@^1.0.0: 1101 | version "1.0.0" 1102 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 1103 | dependencies: 1104 | find-up "^1.0.0" 1105 | 1106 | pkg-up@^1.0.0: 1107 | version "1.0.0" 1108 | resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" 1109 | dependencies: 1110 | find-up "^1.0.0" 1111 | 1112 | pluralize@^1.2.1: 1113 | version "1.2.1" 1114 | resolved "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 1115 | 1116 | prelude-ls@~1.1.2: 1117 | version "1.1.2" 1118 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1119 | 1120 | process-nextick-args@~2.0.0: 1121 | version "2.0.0" 1122 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1123 | 1124 | progress@^1.1.8: 1125 | version "1.1.8" 1126 | resolved "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 1127 | 1128 | pseudomap@^1.0.2: 1129 | version "1.0.2" 1130 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1131 | 1132 | readable-stream@^2.2.2: 1133 | version "2.3.6" 1134 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1135 | dependencies: 1136 | core-util-is "~1.0.0" 1137 | inherits "~2.0.3" 1138 | isarray "~1.0.0" 1139 | process-nextick-args "~2.0.0" 1140 | safe-buffer "~5.1.1" 1141 | string_decoder "~1.1.1" 1142 | util-deprecate "~1.0.1" 1143 | 1144 | readline2@^1.0.1: 1145 | version "1.0.1" 1146 | resolved "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 1147 | dependencies: 1148 | code-point-at "^1.0.0" 1149 | is-fullwidth-code-point "^1.0.0" 1150 | mute-stream "0.0.5" 1151 | 1152 | rechoir@^0.6.2: 1153 | version "0.6.2" 1154 | resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1155 | dependencies: 1156 | resolve "^1.1.6" 1157 | 1158 | require-stack@^1.0.2: 1159 | version "1.0.2" 1160 | resolved "https://registry.yarnpkg.com/require-stack/-/require-stack-1.0.2.tgz#e00ee348bf96cb5c3e2d4c27b49e41476e08965d" 1161 | dependencies: 1162 | syntax-error "^1.1.4" 1163 | 1164 | require-uncached@^1.0.2: 1165 | version "1.0.3" 1166 | resolved "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 1167 | dependencies: 1168 | caller-path "^0.1.0" 1169 | resolve-from "^1.0.0" 1170 | 1171 | resolve-from@^1.0.0: 1172 | version "1.0.1" 1173 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 1174 | 1175 | resolve@^1.1.6, resolve@^1.1.7: 1176 | version "1.7.1" 1177 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" 1178 | dependencies: 1179 | path-parse "^1.0.5" 1180 | 1181 | restore-cursor@^1.0.1: 1182 | version "1.0.1" 1183 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 1184 | dependencies: 1185 | exit-hook "^1.0.0" 1186 | onetime "^1.0.0" 1187 | 1188 | retry@^0.10.1: 1189 | version "0.10.1" 1190 | resolved "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" 1191 | 1192 | right-pad@^1.0.1: 1193 | version "1.0.1" 1194 | resolved "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" 1195 | 1196 | rimraf@^2.2.8: 1197 | version "2.6.2" 1198 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 1199 | dependencies: 1200 | glob "^7.0.5" 1201 | 1202 | run-async@^0.1.0: 1203 | version "0.1.0" 1204 | resolved "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 1205 | dependencies: 1206 | once "^1.3.0" 1207 | 1208 | run-parallel@^1.1.2: 1209 | version "1.1.9" 1210 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" 1211 | 1212 | rx-lite@^3.1.2: 1213 | version "3.1.2" 1214 | resolved "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 1215 | 1216 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1217 | version "5.1.2" 1218 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1219 | 1220 | semver@5.3.0: 1221 | version "5.3.0" 1222 | resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1223 | 1224 | shebang-command@^1.2.0: 1225 | version "1.2.0" 1226 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1227 | dependencies: 1228 | shebang-regex "^1.0.0" 1229 | 1230 | shebang-regex@^1.0.0: 1231 | version "1.0.0" 1232 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1233 | 1234 | shelljs@^0.7.5: 1235 | version "0.7.8" 1236 | resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" 1237 | dependencies: 1238 | glob "^7.0.0" 1239 | interpret "^1.0.0" 1240 | rechoir "^0.6.2" 1241 | 1242 | slice-ansi@0.0.4: 1243 | version "0.0.4" 1244 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 1245 | 1246 | sprintf-js@~1.0.2: 1247 | version "1.0.3" 1248 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1249 | 1250 | standard-engine@~7.0.0: 1251 | version "7.0.0" 1252 | resolved "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690" 1253 | dependencies: 1254 | deglob "^2.1.0" 1255 | get-stdin "^5.0.1" 1256 | minimist "^1.1.0" 1257 | pkg-conf "^2.0.0" 1258 | 1259 | standard@^10.0.3: 1260 | version "10.0.3" 1261 | resolved "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz#7869bcbf422bdeeaab689a1ffb1fea9677dd50ea" 1262 | dependencies: 1263 | eslint "~3.19.0" 1264 | eslint-config-standard "10.2.1" 1265 | eslint-config-standard-jsx "4.0.2" 1266 | eslint-plugin-import "~2.2.0" 1267 | eslint-plugin-node "~4.2.2" 1268 | eslint-plugin-promise "~3.5.0" 1269 | eslint-plugin-react "~6.10.0" 1270 | eslint-plugin-standard "~3.0.1" 1271 | standard-engine "~7.0.0" 1272 | 1273 | string-width@^1.0.1: 1274 | version "1.0.2" 1275 | resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1276 | dependencies: 1277 | code-point-at "^1.0.0" 1278 | is-fullwidth-code-point "^1.0.0" 1279 | strip-ansi "^3.0.0" 1280 | 1281 | string-width@^2.0.0: 1282 | version "2.1.1" 1283 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1284 | dependencies: 1285 | is-fullwidth-code-point "^2.0.0" 1286 | strip-ansi "^4.0.0" 1287 | 1288 | string_decoder@~1.1.1: 1289 | version "1.1.1" 1290 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1291 | dependencies: 1292 | safe-buffer "~5.1.0" 1293 | 1294 | strip-ansi@^3.0.0: 1295 | version "3.0.1" 1296 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1297 | dependencies: 1298 | ansi-regex "^2.0.0" 1299 | 1300 | strip-ansi@^4.0.0: 1301 | version "4.0.0" 1302 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1303 | dependencies: 1304 | ansi-regex "^3.0.0" 1305 | 1306 | strip-bom@^3.0.0: 1307 | version "3.0.0" 1308 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1309 | 1310 | strip-json-comments@~2.0.1: 1311 | version "2.0.1" 1312 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1313 | 1314 | supports-color@^2.0.0: 1315 | version "2.0.0" 1316 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1317 | 1318 | supports-color@^5.3.0: 1319 | version "5.4.0" 1320 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 1321 | dependencies: 1322 | has-flag "^3.0.0" 1323 | 1324 | syntax-error@^1.1.4: 1325 | version "1.4.0" 1326 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" 1327 | dependencies: 1328 | acorn-node "^1.2.0" 1329 | 1330 | table@^3.7.8: 1331 | version "3.8.3" 1332 | resolved "https://registry.npmjs.org/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 1333 | dependencies: 1334 | ajv "^4.7.0" 1335 | ajv-keywords "^1.0.0" 1336 | chalk "^1.1.1" 1337 | lodash "^4.0.0" 1338 | slice-ansi "0.0.4" 1339 | string-width "^2.0.0" 1340 | 1341 | text-table@~0.2.0: 1342 | version "0.2.0" 1343 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1344 | 1345 | through@^2.3.6: 1346 | version "2.3.8" 1347 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1348 | 1349 | type-check@~0.3.2: 1350 | version "0.3.2" 1351 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1352 | dependencies: 1353 | prelude-ls "~1.1.2" 1354 | 1355 | type-detect@^4.0.0: 1356 | version "4.0.8" 1357 | resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1358 | 1359 | typedarray@^0.0.6: 1360 | version "0.0.6" 1361 | resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1362 | 1363 | uniq@^1.0.1: 1364 | version "1.0.1" 1365 | resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" 1366 | 1367 | upcast@^2.1.1: 1368 | version "2.1.2" 1369 | resolved "https://registry.yarnpkg.com/upcast/-/upcast-2.1.2.tgz#69468e374b3cfb7b22fb632d55a420048b9e24a1" 1370 | dependencies: 1371 | cross-env "^5.1.0" 1372 | 1373 | user-home@^2.0.0: 1374 | version "2.0.0" 1375 | resolved "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 1376 | dependencies: 1377 | os-homedir "^1.0.0" 1378 | 1379 | util-deprecate@~1.0.1: 1380 | version "1.0.2" 1381 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1382 | 1383 | variable-diff@^1.1.0: 1384 | version "1.1.0" 1385 | resolved "https://registry.npmjs.org/variable-diff/-/variable-diff-1.1.0.tgz#d2bd5c66db76c13879d96e6a306edc989df978da" 1386 | dependencies: 1387 | chalk "^1.1.1" 1388 | object-assign "^4.0.1" 1389 | 1390 | which@^1.2.9: 1391 | version "1.3.0" 1392 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 1393 | dependencies: 1394 | isexe "^2.0.0" 1395 | 1396 | wordwrap@~1.0.0: 1397 | version "1.0.0" 1398 | resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1399 | 1400 | wrappy@1: 1401 | version "1.0.2" 1402 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1403 | 1404 | write@^0.2.1: 1405 | version "0.2.1" 1406 | resolved "https://registry.npmjs.org/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1407 | dependencies: 1408 | mkdirp "^0.5.1" 1409 | 1410 | xtend@^4.0.0, xtend@^4.0.1: 1411 | version "4.0.1" 1412 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1413 | 1414 | yallist@^2.1.2: 1415 | version "2.1.2" 1416 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1417 | --------------------------------------------------------------------------------