├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .travis.yml ├── README.md ├── assets └── logo-360.png ├── package.json ├── src.js ├── test ├── add.js ├── append.js ├── apply.js ├── assoc.js ├── assocPath.js ├── call.js ├── compose.js ├── composeP.js ├── concat.js ├── cond.js ├── constant.js ├── converge.js ├── curry.js ├── curryN.js ├── defaultTo.js ├── dissoc.js ├── dissocPath.js ├── either.js ├── evolve.js ├── filter.js ├── find.js ├── flatten.js ├── flip.js ├── head.js ├── identity.js ├── ifElse.js ├── indexBy.js ├── init.js ├── is.js ├── join.js ├── juxt.js ├── keys.js ├── last.js ├── length.js ├── map.js ├── mapObj.js ├── match.js ├── merge.js ├── multiply.js ├── nAry.js ├── not.js ├── objOf.js ├── omit.js ├── partial.js ├── partialRight.js ├── path.js ├── pathEq.js ├── pick.js ├── pipe.js ├── pipeP.js ├── pluck.js ├── prepend.js ├── prop.js ├── propEq.js ├── props.js ├── reduce.js ├── reduceObj.js ├── reduceP.js ├── reduceRight.js ├── reduceRightP.js ├── replace.js ├── slice.js ├── sort.js ├── sortBy.js ├── split.js ├── tail.js ├── take.js ├── tap.js ├── test.js ├── then.js ├── thrush.js ├── unapply.js ├── unary.js ├── uniqBy.js ├── unit.js ├── unless.js ├── useWith.js ├── values.js ├── when.js └── zipObj.js ├── tinyfunk.js └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'env': { 3 | 'es6': true, 4 | 'mocha': true, 5 | 'node': true 6 | }, 7 | 'extends': 'eslint:recommended', 8 | 'parserOptions': { 9 | 'sourceType': 'module' 10 | }, 11 | 'rules': { 12 | 'indent': ['error', 2, { 13 | 'flatTernaryExpressions': true, 14 | 'SwitchCase': 1 15 | }], 16 | 'linebreak-style': ['error', 'unix'], 17 | 'no-console': 'off', 18 | 'quotes': ['error', 'single', { 'allowTemplateLiterals': true }], 19 | 'semi': ['error', 'never'] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | .DS_Store 3 | .yarn* 4 | /.nyc_output 5 | /node_modules 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .eslintrc.js 3 | .git* 4 | .travis.yml 5 | .yarn* 6 | /.nyc_output 7 | /assets 8 | /coverage 9 | /node_modules 10 | /test 11 | README.md 12 | yarn.lock 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '10' 4 | - '8' 5 | - '7' 6 | - '6' 7 | before_install: 8 | - npm install -g yarn@1.10.0 9 | install: 10 | - yarn install --pure-lockfile 11 | script: 12 | - yarn test:ci 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | tinyfunk 4 | 5 |

6 |

7 | The tiniest of functional libraries. 8 |

9 |

10 | npm version 11 | npm downloads 12 | gzip-size 13 |
14 | Build Status 15 | Coverage Status 16 |

17 | 18 | ## Documentation 19 | 20 | - [Motivation](#motivation) 21 | - [Caveat Emptor](#caveat-emptor) 22 | - [API](#api) 23 | - [Dependents](#dependents) 24 | 25 | ## Motivation 26 | 27 | Most popular functional libraries, like [Ramda](https://www.npmjs.com/package/ramda), are quite large. To use them in a frontend project, it's common to import only the bits you need (to keep the bundle size down) like this: 28 | 29 | ```js 30 | const assoc = require('ramda/src/assoc') 31 | const map = require('ramda/src/map') 32 | const merge = require('ramda/src/merge') 33 | // etc. 34 | ``` 35 | 36 | But multiple `require` statements take up extra space, since many `js` code compression tools (including [`uglify-js`](https://www.npmjs.com/package/uglify-js)) don't mangle strings. The AST overhead required to bundle the various modules adds an additional size penalty, not to mention the extra compute time to parse the twisted flow of the AST, which adds to a longer perceived load time. 37 | 38 | `tinyfunk` takes a different approach. It exports a single module to minimize AST overhead and obviate the repeated require statements. You just destructure the functions you need in one go: 39 | 40 | ```js 41 | const { assoc, map, merge } = require('tinyfunk') 42 | ``` 43 | 44 | Where possible, it also composes more complex functions by reusing basic ones. A good example is `compose`, implemented as so: 45 | 46 | ```js 47 | const compose = unapply(flip(reduceRight(thrush))) 48 | ``` 49 | 50 | With [`uglify-es`](https://www.npmjs.com/package/uglify-es), this mangles down to the following. I doubt you'll find a smaller implementation. 51 | 52 | ```js 53 | const I=r(b(B(E))) 54 | ``` 55 | 56 | ## Caveat emptor 57 | 58 | In an effort to keep `tinyfunk` lean and mean - and most of all, tiny - I've taken a few shortcuts. 59 | 60 | 1. **None of the exported functions perform type-checking of arguments.**
If type-checking is a runtime debug tool you tend to lean on, then you'll need to look elsewhere. 61 | 62 | 2. **Many of the function combinators only support unary functions.**
This includes `compose`, `converge`, `juxt`, `pipe`, `thrush`, etc. Unary functions are easily composable, readily portable, and so much simpler (ie: tinier) to support. 63 | 64 | 3. **Unlike other popular FP libraries, each exported function only has a single job.**
For example, Ramda's `map` supports "mapping" over functors, objects, and even functions. In `tinyfunk`, those various jobs are supported instead by `map`, `mapObj`, and `compose` respectfully. So be sure to use the right tool for the job at hand. 65 | 66 | ## API 67 | 68 | If you've lived with FP long enough, you are likely familiar with most of the functions listed below. So I've opted to leave out the lengthy descriptions and include only the signatures. I'll be adding more functions as I need them, but if you see any of your favorites missing, just [post an issue](https://github.com/flintinatux/tinyfunk/issues) and I'll be sure to consider it. 69 | 70 | | Function | Signature | 71 | | -------- | --------- | 72 | | `add` | `Number -> Number -> Number` | 73 | | `append` | `a -> [a] -> [a]` | 74 | | `apply` | `(a... -> b) -> [a] -> b` | 75 | | `assoc` | `k -> v -> { k: v } -> { k: v }` | 76 | | `assocPath` | `[k] -> v -> { k: v } -> { k: v }` | 77 | | `call` | `(a... -> b) -> a... -> b` | 78 | | `compose` | `((y -> z), ..., (a -> b)) -> a -> z` | 79 | | `composeP` | `((y -> Promise z), ..., (a -> Promise b)) -> a -> Promise z` | 80 | | `concat` | `Semigroup a => a -> a -> a` | 81 | | `cond` | `[[(a -> Boolean), (a -> b)]] -> a -> b` | 82 | | `constant` | `a -> () -> a` | 83 | | `converge` | `(b... -> c) -> [(a -> b)] -> a -> c` | 84 | | `curry` | `((a, b, ...) -> z) -> a -> b -> ... -> z` | 85 | | `curryN` | `Number -> ((a, b, ...) -> z) -> a -> b -> ... -> z` | 86 | | `defaultTo` | `a -> a -> a` | 87 | | `dissoc` | `k -> { k: v } -> { k: v }` | 88 | | `dissocPath` | `[k] -> { k: v } -> { k: v }` | 89 | | `either` | `(a -> Boolean) -> (a -> Boolean) -> (a -> Boolean)` | 90 | | `evolve` | `{ k: (v -> v) } -> { k: v } -> { k: v }` | 91 | | `filter` | `(a -> Boolean) -> [a] -> [a]` | 92 | | `find` | `(a -> Boolean) -> [a] -> a` | 93 | | `flatten` | `[a] -> [b]` | 94 | | `flip` | `(a -> b -> c) -> (b -> a -> c)` | 95 | | `head` | `[a] -> a` | 96 | | `identity` | `a -> a` | 97 | | `ifElse` | `(a -> Boolean) -> (a -> b) -> (a -> b) -> (a -> b)` | 98 | | `indexBy` | `(v -> k) -> [v] -> { k: v }` | 99 | | `init` | `[a] -> [a]` | 100 | | `is` | `Constructor -> a -> Boolean` | 101 | | `join` | `String -> [a] -> String` | 102 | | `juxt` | `[(a -> b)] -> a -> [b]` | 103 | | `keys` | `{ k: v } -> [k]` | 104 | | `last` | `[a] -> a` | 105 | | `length` | `[a] -> Number` | 106 | | `map` | `Functor f => (a -> b) -> f a -> f b` | 107 | | `mapObj` | `(v -> k -> v) -> { k: v } -> { k: v }` | 108 | | `match` | `RegExp -> String -> [String]` | 109 | | `merge` | `{ k: v } -> { k: v } -> { k: v }` | 110 | | `multiply` | `Number -> Number -> Number` | 111 | | `nAry` | `Number -> (a... -> b) -> (a... -> b)` | 112 | | `not` | `a -> a` | 113 | | `objOf` | `k -> v -> { k: v }` | 114 | | `omit` | `[k] -> { k: v } -> { k: v }` | 115 | | `partial` | `(a... -> b) -> [a] -> a... -> b` | 116 | | `partialRight` | `(a... -> b) -> [a] -> a... -> b` | 117 | | `path` | `[k] -> { k: v } -> v` | 118 | | `pathEq` | `[k] -> v -> { k: v } -> Boolean` | 119 | | `pick` | `[k] -> { k: v } -> { k: v }` | 120 | | `pipe` | `((a -> b), ..., (y -> z)) -> a -> z` | 121 | | `pipeP` | `((a -> Promise b), ..., (y -> Promise z)) -> a -> Promise z` | 122 | | `pluck` | `k -> [{ k: v }] -> [v]` | 123 | | `prepend` | `a -> [a] -> [a]` | 124 | | `prop` | `k -> { k: v } -> v` | 125 | | `propEq` | `k -> v -> { k: v } -> Boolean` | 126 | | `props` | `[k] -> { k: v } -> [v]` | 127 | | `reduce` | `Foldable f => (b -> a -> b) -> b -> f a -> b` | 128 | | `reduceObj` | `(a -> v -> k -> a) -> a -> { k: v } -> a` | 129 | | `reduceP` | `(b -> a -> Promise b) -> b -> [a] -> Promise b` | 130 | | `reduceRight` | `Foldable f => (b -> a -> b) -> b -> f a -> b` | 131 | | `reduceRightP` | `(b -> a -> Promise b) -> b -> [a] -> Promise b` | 132 | | `replace` | `RegExp -> String -> String -> String` | 133 | | `slice` | `Number -> Number -> [a] -> [a]` | 134 | | `sort` | `((a, a) -> Number) -> [a] -> [a]` | 135 | | `sortBy` | `Ord b => (a -> b) -> [a] -> [a]` | 136 | | `split` | `RegExp -> String -> [String]` | 137 | | `tail` | `[a] -> [a]` | 138 | | `take` | `Number -> [a] -> [a]` | 139 | | `tap` | `(a -> b) -> a -> a` | 140 | | `test` | `RegExp -> String -> Boolean` | 141 | | `then` | `(a -> Promise b) -> a -> Promise b` | 142 | | `thrush` | `a -> (a -> b) -> b` | 143 | | `unapply` | `([a] -> b) -> a... -> b` | 144 | | `unary` | `(a... -> b) -> (a -> b)` | 145 | | `uniqBy` | `(a -> String) -> [a] -> [a]` | 146 | | `unit` | `a -> ()` | 147 | | `unless` | `(a -> Boolean) -> (a -> a) -> a -> a` | 148 | | `useWith` | `(b... -> c) -> [(a -> b)] -> a... -> c` | 149 | | `values` | `{ k: v } -> [v]` | 150 | | `when` | `(a -> Boolean) -> (a -> a) -> a -> a` | 151 | | `zipObj` | `[k] -> [v] -> { k: v }` | 152 | 153 | ## Dependents 154 | 155 | I use `tinyfunk` everyday to make cool things. Maybe you do, too. If so, let me know with a PR, and we can add your cool things to this list. 156 | 157 | - [`puddles`](https://github.com/flintinatux/puddles) - _Tiny vdom app framework. Pure Redux. No boilerplate._ - Built with ❤️ on `tinyfunk`. 158 | -------------------------------------------------------------------------------- /assets/logo-360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flintinatux/tinyfunk/d49dee5e78d4da0a00a71b95f9ad3e017a0f43cc/assets/logo-360.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinyfunk", 3 | "version": "1.7.3", 4 | "description": "The tiniest of functional libraries", 5 | "repository": "git@github.com:flintinatux/tinyfunk.git", 6 | "keywords": [ 7 | "functional", 8 | "tiny", 9 | "compose", 10 | "ramda" 11 | ], 12 | "main": "src.js", 13 | "unpkg": "tinyfunk.js", 14 | "author": "flintinatux", 15 | "license": "MIT", 16 | "nyc": { 17 | "check-coverage": true, 18 | "include": [ 19 | "src.js" 20 | ], 21 | "lines": 100, 22 | "statements": 100, 23 | "functions": 100, 24 | "branches": 100 25 | }, 26 | "scripts": { 27 | "build": "uglifyjs src.js -cm --toplevel --wrap tinyfunk > tinyfunk.js", 28 | "clean": "rm -f tinyfunk.js", 29 | "coverage": "nyc report --reporter=text-lcov | coveralls", 30 | "lint": "eslint src.js test", 31 | "postbuild": "gzip-size tinyfunk.js", 32 | "prewatch": "yarn run build", 33 | "test": "mocha --reporter=dot", 34 | "test:ci": "yarn run lint && yarn run test:coverage && yarn run coverage", 35 | "test:coverage": "nyc yarn run test", 36 | "watch": "eye --*glob=src.js yarn run build" 37 | }, 38 | "devDependencies": { 39 | "@articulate/spy": "^0.0.1", 40 | "chai": "^4.1.2", 41 | "coveralls": "^2.13.1", 42 | "eslint": "^4.7.2", 43 | "eye": "^0.0.3", 44 | "gzip-size-cli": "^2.1.0", 45 | "mocha": "^3.5.3", 46 | "nyc": "^11.2.1", 47 | "prop-factory": "^1.0.0", 48 | "uglify-es": "^3.3.9" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src.js: -------------------------------------------------------------------------------- 1 | // _appendKey :: ([k], v, k) -> [k] 2 | const _appendKey = (keys, val, key) => 3 | append(key, keys) 4 | 5 | // _assign :: ({ k: v }, { k: v }) -> { k: v } 6 | const _assign = (a, b) => { 7 | for (let key in b) a[key] = b[key] 8 | return a 9 | } 10 | 11 | // _comp :: (a, b) -> Number 12 | const _comp = (a, b) => 13 | a < b ? -1 : b < a ? 1 : 0 14 | 15 | // _index :: ({ k: Number }, String) -> { k: Number } 16 | const _index = (idx, key) => 17 | assoc(key, 1, idx) 18 | 19 | // _partial :: ((a... -> b), [a]) -> a... -> b 20 | const _partial = (f, args) => 21 | f.bind(null, ...args) 22 | 23 | // _putBy :: (v -> k) -> { k: v } -> v -> { k: v } 24 | const _putBy = f => (acc, item) => 25 | assoc(f(item), item, acc) 26 | 27 | // _smash :: ([a], a) -> [b] 28 | const _smash = (acc, item) => 29 | concat(acc, flatten(item)) 30 | 31 | // length :: [a] -> Number 32 | const length = list => 33 | list.length 34 | 35 | // unapply :: ([a] -> b) -> a... -> b 36 | const unapply = f => (...args) => 37 | f(args) 38 | 39 | // curryN :: Number -> ((a, b, ...) -> z) -> a -> b -> ... -> z 40 | const _curryN = (n, f) => 41 | n < 1 ? f : unapply(args => { 42 | const left = n - length(args) 43 | return left > 0 44 | ? _curryN(left, _partial(f, args)) 45 | : f.apply(null, args) 46 | }) 47 | 48 | const curryN = _curryN(2, _curryN) 49 | 50 | // curry :: ((a, b, ...) -> z) -> a -> b -> ... -> z 51 | const curry = f => 52 | curryN(length(f), f) 53 | 54 | // _xfrm :: { k: (v -> v) } -> v -> k -> v 55 | const _xfrm = curry((xfrms, val, key) => { 56 | let f = xfrms[key] || identity 57 | if (typeof f === 'object') f = evolve(f) 58 | return f(val) 59 | }) 60 | 61 | // add :: Number -> Number -> Number 62 | const add = curry((a, b) => 63 | a + b 64 | ) 65 | 66 | // append :: a -> [a] -> [a] 67 | const append = curry((last, init) => 68 | concat(init, [ last ]) 69 | ) 70 | 71 | // apply :: (a... -> b) -> [a] -> b 72 | const apply = curry((f, args) => 73 | f.apply(null, args) 74 | ) 75 | 76 | // assoc :: k -> v -> { k: v } -> { k: v } 77 | const assoc = curry((prop, val, obj) => { 78 | const res = _assign({}, obj) 79 | res[prop] = val 80 | return res 81 | }) 82 | 83 | // assocPath :: [k] -> v -> { k: v } -> { k: v } 84 | const assocPath = curryN(3, ([ head, ...tail ], x, obj={}) => 85 | assoc(head, length(tail) ? assocPath(tail, x, obj[head]) : x, obj) 86 | ) 87 | 88 | // call :: (a... -> b) -> a... -> b 89 | const call = curryN(2, (f, ...args) => 90 | apply(f, args) 91 | ) 92 | 93 | // concat :: Semigroup a => a -> a -> a 94 | const concat = curry((a, b) => 95 | a.concat(b) 96 | ) 97 | 98 | // constant :: a -> () -> a 99 | const constant = x => () => x 100 | 101 | // converge :: (b... -> c) -> [(a -> b)] -> a -> c 102 | const converge = curry((after, fs) => 103 | compose(apply(after), juxt(fs)) 104 | ) 105 | 106 | // defaultTo :: a -> a -> a 107 | const defaultTo = curry((a, b) => 108 | b == null || b !== b ? a : b 109 | ) 110 | 111 | // dissoc :: k -> { k: v } -> { k: v } 112 | const dissoc = curry((key, obj) => { 113 | const res = _assign({}, obj) 114 | delete res[key] 115 | return res 116 | }) 117 | 118 | // dissocPath :: [k] -> { k: v } -> { k: v } 119 | const dissocPath = curry(([ head, ...tail ], obj) => 120 | !head ? obj : 121 | obj[head] == null ? obj : 122 | length(tail) ? assoc(head, dissocPath(tail, obj[head]), obj) : 123 | dissoc(head, obj) 124 | ) 125 | 126 | // either :: (a -> Boolean) -> (a -> Boolean) -> (a -> Boolean) 127 | const either = curry((f, g, x) => 128 | f(x) || g(x) 129 | ) 130 | 131 | // evolve :: { k: (v -> v) } -> { k: v } -> { k: v } 132 | const evolve = curry((xfrms, obj) => { 133 | return mapObj(_xfrm(xfrms), obj) 134 | }) 135 | 136 | // filter :: (a -> Boolean) -> [a] -> [a] 137 | const filter = curry((pred, list) => 138 | list.filter(pred) 139 | ) 140 | 141 | // find :: (a -> Boolean) -> [a] -> a 142 | const find = curry((pred, list) => 143 | list.find(pred) 144 | ) 145 | 146 | // flip :: (a -> b -> c) -> (b -> a -> c) 147 | const flip = curry((f, x, y) => 148 | curry(f)(y, x) 149 | ) 150 | 151 | // identity :: a -> a 152 | const identity = x => x 153 | 154 | // ifElse :: (a -> Boolean) -> (a -> b) -> (a -> b) -> (a -> b) 155 | const ifElse = curry((pred, pos, neg, x) => 156 | pred(x) ? pos(x) : neg(x) 157 | ) 158 | 159 | // is :: Constructor -> a -> Boolean 160 | const is = curry((type, val) => 161 | val != null && val.constructor === type || val instanceof type 162 | ) 163 | 164 | // join :: String -> [a] -> String 165 | const join = curry((sep, list) => 166 | list.join(sep) 167 | ) 168 | 169 | // juxt :: [(a -> b)] -> a -> [b] 170 | const juxt = curry((fs, x) => 171 | map(thrush(x), fs) 172 | ) 173 | 174 | // map :: Functor f => (a -> b) -> f a -> f b 175 | const map = curry((f, functor) => 176 | functor.map(f) 177 | ) 178 | 179 | // mapObj :: (v -> k -> v) -> { k: v } -> { k: v } 180 | const mapObj = curry((f, obj) => { 181 | const res = {} 182 | for (let key in obj) res[key] = f(obj[key], key) 183 | return res 184 | }) 185 | 186 | // match :: RegExp -> String -> [String] 187 | const match = curry((regexp, string) => 188 | string.match(regexp) || [] 189 | ) 190 | 191 | // merge :: { k: v } -> { k: v } -> { k: v } 192 | const merge = curry((a, b) => 193 | reduce(_assign, {}, [ a, b ]) 194 | ) 195 | 196 | // multiply :: Number -> Number -> Number 197 | const multiply = curry((a, b) => 198 | a * b 199 | ) 200 | 201 | // nAry :: Number -> (a... -> b) -> (a... -> b) 202 | const nAry = curry((n, f) => 203 | unapply(compose(apply(f), take(n))) 204 | ) 205 | 206 | // not :: a -> a 207 | const not = a => !a 208 | 209 | // objOf :: k -> v -> { k: v } 210 | const objOf = curry((key, val) => 211 | ({ [key]: val }) 212 | ) 213 | 214 | // omit :: [k] -> { k: v } -> { k: v } 215 | const omit = curry((keys, obj) => { 216 | const idx = reduce(_index, {}, keys) 217 | const res = {} 218 | for (let key in obj) if (!idx[key]) res[key] = obj[key] 219 | return res 220 | }) 221 | 222 | // partial :: (a... -> b) -> [a] -> a... -> b 223 | const partial = curry(_partial) 224 | 225 | // partialRight :: (a... -> b) -> [a] -> a... -> b 226 | const partialRight = curryN(3, (f, right, ...left) => 227 | apply(f, concat(left, right)) 228 | ) 229 | 230 | // path :: [k] -> { k: v } -> v 231 | const path = curryN(2, ([ head, ...tail ], obj) => { 232 | if (obj == null) obj = {} 233 | return length(tail) ? path(tail, obj[head]) : obj[head] 234 | }) 235 | 236 | // pathEq :: [k] -> v -> { k: v } -> Boolean 237 | const pathEq = curry((paths, val, obj) => 238 | path(paths, obj) === val 239 | ) 240 | 241 | // pick :: [k] -> { k: v } -> { k: v } 242 | const pick = curry((keys, obj) => 243 | zipObj(keys, props(keys, obj)) 244 | ) 245 | 246 | // prepend :: a -> [a] -> [a] 247 | const prepend = curry((head, tail) => 248 | concat([ head ], tail) 249 | ) 250 | 251 | // prop :: k -> { k: v } -> v 252 | const prop = curry((key, obj) => 253 | obj[key] 254 | ) 255 | 256 | // propEq :: k -> v -> { k: v } -> Boolean 257 | const propEq = curry((key, val, obj) => 258 | obj[key] === val 259 | ) 260 | 261 | // props :: [k] -> { k: v } -> [v] 262 | const props = curry((keys, obj) => 263 | map(flip(prop)(obj), keys) 264 | ) 265 | 266 | // reduce :: Foldable f => (b -> a -> b) -> b -> f a -> b 267 | const reduce = curry((f, acc, list) => 268 | list.reduce(f, acc) 269 | ) 270 | 271 | // reduceObj :: (a -> v -> k -> a) -> a -> { k: v } -> a 272 | const reduceObj = curry((f, acc, obj) => { 273 | for (let key in obj) acc = f(acc, obj[key], key) 274 | return acc 275 | }) 276 | 277 | // reduceP :: (b -> a -> Promise b) -> b -> [a] -> Promise b 278 | const reduceP = curry((f, acc, list) => 279 | pipeP(...map(unary(flip(f)), list))(acc) 280 | ) 281 | 282 | // reduceRight :: Foldable f => (b -> a -> b) -> b -> f a -> b 283 | const reduceRight = curry((f, acc, list) => 284 | list.reduceRight(f, acc) 285 | ) 286 | 287 | // reduceRightP :: (b -> a -> Promise b) -> b -> [a] -> Promise b 288 | const reduceRightP = curry((f, acc, list) => 289 | composeP(...map(unary(flip(f)), list))(acc) 290 | ) 291 | 292 | // replace :: RegExp -> String -> String -> String 293 | const replace = curry((regexp, replacement, string) => 294 | string.replace(regexp, replacement) 295 | ) 296 | 297 | // sort :: ((a, a) -> Number) -> [a] -> [a] 298 | const sort = curry((comp, list) => 299 | list.slice(0).sort(comp) 300 | ) 301 | 302 | // sortBy :: Ord b => (a -> b) -> [a] -> [a] 303 | const sortBy = curry((f, list) => 304 | sort(useWith(_comp, [ f, f ]), list) 305 | ) 306 | 307 | // split :: RegExp -> String -> [String] 308 | const split = curry((regexp, string) => 309 | string.split(regexp) 310 | ) 311 | 312 | // tap :: (a -> b) -> a -> a 313 | const tap = curry((f, x) => 314 | (f(x), x) 315 | ) 316 | 317 | // test :: RegExp -> String -> Boolean 318 | const test = curry((regexp, string) => 319 | regexp.test(string) 320 | ) 321 | 322 | // then :: (a -> Promise b) -> a -> Promise b 323 | const then = curry((f, x) => 324 | Promise.resolve(x).then(f) 325 | ) 326 | 327 | // thrush :: a -> (a -> b) -> b 328 | const thrush = curry((x, f) => 329 | f(x) 330 | ) 331 | 332 | // unary :: (a... -> b) -> (a -> b) 333 | const unary = nAry(1) 334 | 335 | // unit :: a -> () 336 | const unit = () => {} 337 | 338 | // unless :: (a -> Boolean) -> (a -> a) -> a -> a 339 | const unless = curry((pred, f, x) => 340 | pred(x) ? x : f(x) 341 | ) 342 | 343 | // useWith :: (b... -> c) -> [(a -> b)] -> a... -> c 344 | const useWith = curry((f, xfrms) => 345 | unapply(compose(apply(f), map(_xfrm(xfrms)))) 346 | ) 347 | 348 | // when :: (a -> Boolean) -> (a -> a) -> a -> a 349 | const when = curry((pred, f, x) => 350 | pred(x) ? f(x) : x 351 | ) 352 | 353 | // zipObj :: [k] -> [v] -> { k: v } 354 | const zipObj = curry((keys, vals) => { 355 | const res = {} 356 | for (let i = length(keys); i--;) 357 | if (vals[i] !== undefined) res[keys[i]] = vals[i] 358 | return res 359 | }) 360 | 361 | // compose :: ((y -> z), ..., (a -> b)) -> a -> z 362 | const compose = unapply(flip(reduceRight(thrush))) 363 | 364 | // composeP :: ((y -> Promise z), ..., (a -> Promise b)) -> a -> Promise z 365 | const composeP = unapply(flip(reduceRight(flip(then)))) 366 | 367 | // pipe :: ((a -> b), ..., (y -> z)) -> a -> z 368 | const pipe = unapply(flip(reduce(thrush))) 369 | 370 | // pipeP :: ((a -> Promise b), ..., (y -> Promise z)) -> a -> Promise z 371 | const pipeP = unapply(flip(reduce(flip(then)))) 372 | 373 | // cond :: [[(a -> Boolean), (a -> b)]] -> a -> b 374 | const cond = compose(reduceRight(thrush, unit), map(apply(ifElse))) 375 | 376 | // flatten :: [a] -> [b] 377 | const flatten = 378 | when(Array.isArray, reduce(_smash, [])) 379 | 380 | // pluck :: k -> [{ k: v }] -> [v] 381 | const pluck = curry((key, list) => 382 | map(prop(key), list) 383 | ) 384 | 385 | // slice :: Number -> Number -> [a] -> [a] 386 | const slice = curry((from, to, list) => 387 | list.slice(from, to) 388 | ) 389 | 390 | // head :: [a] -> a 391 | const head = prop(0) 392 | 393 | // init :: [a] -> [a] 394 | const init = slice(0, -1) 395 | 396 | // last :: [a] -> a 397 | const last = compose(head, slice(-1, void 0)) 398 | 399 | // tail :: [a] -> [a] 400 | const tail = slice(1, Infinity) 401 | 402 | // take :: Number -> [a] -> [a] 403 | const take = slice(0) 404 | 405 | // keys :: { k: v } -> [k] 406 | const keys = reduceObj(_appendKey, []) 407 | 408 | // values :: { k: v } -> [v] 409 | const values = reduceObj(flip(append), []) 410 | 411 | // indexBy :: (v -> k) -> [v] -> { k: v } 412 | const indexBy = curry((f, list) => 413 | reduce(_putBy(f), {}, list) 414 | ) 415 | 416 | // uniqBy :: (a -> String) -> [a] -> [a] 417 | const uniqBy = curry((f, list) => 418 | compose(values, indexBy(f))(list) 419 | ) 420 | 421 | _assign(exports, { 422 | add, 423 | append, 424 | apply, 425 | assoc, 426 | assocPath, 427 | call, 428 | compose, 429 | composeP, 430 | concat, 431 | cond, 432 | constant, 433 | converge, 434 | curry, 435 | curryN, 436 | defaultTo, 437 | dissoc, 438 | dissocPath, 439 | either, 440 | evolve, 441 | filter, 442 | find, 443 | flatten, 444 | flip, 445 | head, 446 | identity, 447 | ifElse, 448 | indexBy, 449 | init, 450 | is, 451 | join, 452 | juxt, 453 | keys, 454 | last, 455 | length, 456 | map, 457 | mapObj, 458 | match, 459 | merge, 460 | multiply, 461 | nAry, 462 | not, 463 | objOf, 464 | omit, 465 | partial, 466 | partialRight, 467 | path, 468 | pathEq, 469 | pick, 470 | pipe, 471 | pipeP, 472 | pluck, 473 | prepend, 474 | prop, 475 | propEq, 476 | props, 477 | reduce, 478 | reduceObj, 479 | reduceP, 480 | reduceRight, 481 | reduceRightP, 482 | replace, 483 | slice, 484 | sort, 485 | sortBy, 486 | split, 487 | tail, 488 | take, 489 | tap, 490 | test, 491 | then, 492 | thrush, 493 | unapply, 494 | unary, 495 | uniqBy, 496 | unit, 497 | unless, 498 | useWith, 499 | values, 500 | when, 501 | zipObj 502 | }) 503 | -------------------------------------------------------------------------------- /test/add.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add } = require('..') 4 | 5 | describe('add', () => { 6 | it('adds two numbers', () => 7 | expect(add(1, 2)).to.equal(3) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(add(1)(2)).to.equal(3) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/append.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { append } = require('..') 4 | 5 | describe('append', () => { 6 | const list = [ 1, 2, 3 ] 7 | 8 | it('appends an element to a list', () => 9 | expect(append(4, list)).to.eql([ 1, 2, 3, 4 ]) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(append(4)(list)).to.eql([ 1, 2, 3, 4 ]) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/apply.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { apply } = require('..') 4 | 5 | describe('apply', () => { 6 | const f = (a, b) => a + b 7 | 8 | it('applies a list of args to a function', () => 9 | expect(apply(f, [1, 2])).to.equal(3) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(apply(f)([1, 2])).to.equal(3) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/assoc.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { assoc } = require('..') 4 | 5 | describe('assoc', () => { 6 | it('sets a property on an obj to a value', () => 7 | expect(assoc('foo', 'bar', {})).to.eql({ foo: 'bar' }) 8 | ) 9 | 10 | it('is curried', () => { 11 | expect(assoc('foo')('bar', {})).to.eql({ foo: 'bar' }) 12 | expect(assoc('foo', 'bar')({})).to.eql({ foo: 'bar' }) 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /test/assocPath.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { assocPath } = require('..') 4 | 5 | describe('assocPath', () => { 6 | it('sets a value on a path of a nested object', () => 7 | expect(assocPath(['foo', 'bar', 'bat'], 'baz', {})) 8 | .to.eql({ foo: { bar: { bat: 'baz' } } }) 9 | ) 10 | 11 | it('is curried', () => { 12 | expect(assocPath(['foo', 'bar', 'bat'])('baz', {})) 13 | .to.eql({ foo: { bar: { bat: 'baz' } } }) 14 | expect(assocPath(['foo', 'bar', 'bat'], 'baz')({})) 15 | .to.eql({ foo: { bar: { bat: 'baz' } } }) 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /test/call.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { call } = require('..') 4 | 5 | describe('call', () => { 6 | const f = (a, b) => a + b 7 | 8 | it('calls a function with variadic arguments', () => 9 | expect(call(f, 1, 2)).to.equal(3) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(call(f)(1, 2)).to.equal(3) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/compose.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, compose, multiply } = require('..') 4 | 5 | describe('compose', () => { 6 | const f = compose(add(1), multiply(2)) 7 | 8 | it('composes functions RTL', () => 9 | expect(f(2)).to.equal(5) 10 | ) 11 | }) 12 | -------------------------------------------------------------------------------- /test/composeP.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const property = require('prop-factory') 3 | 4 | const { composeP, curry } = require('..') 5 | 6 | describe('composeP', () => { 7 | const res = property() 8 | 9 | const add = curry((a, b) => Promise.resolve(a + b)) 10 | const multiply = curry((a, b) => Promise.resolve(a * b)) 11 | 12 | const maths = composeP(add(2), multiply(3)) 13 | 14 | beforeEach(() => 15 | maths(1).then(res) 16 | ) 17 | 18 | it('composes async functions RTL', () => 19 | expect(res()).to.equal(5) 20 | ) 21 | }) 22 | -------------------------------------------------------------------------------- /test/concat.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { concat } = require('..') 4 | 5 | describe('concat', () => { 6 | const array = ['a'] 7 | const string = 'a' 8 | 9 | it('concats two semigroups', () => { 10 | expect(concat(array, array)).to.eql(['a','a']) 11 | expect(concat(string, string)).to.equal('aa') 12 | }) 13 | 14 | it('is curried', () => 15 | expect(concat(string)(string)).to.equal('aa') 16 | ) 17 | }) 18 | -------------------------------------------------------------------------------- /test/cond.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { cond, constant, prop } = require('..') 4 | 5 | describe('cond', () => { 6 | const conditional = 7 | cond([ 8 | [ prop('foo'), constant('yes') ], 9 | [ prop('bar'), constant('no') ] 10 | ]) 11 | 12 | it('accepts a list of if/else pred and transformer pairs', () => { 13 | expect(conditional({ foo: true })).to.equal('yes') 14 | expect(conditional({ bar: true })).to.equal('no') 15 | }) 16 | 17 | it('returns undefined if no preds match', () => 18 | expect(conditional({ none: true })).to.be.undefined 19 | ) 20 | }) 21 | -------------------------------------------------------------------------------- /test/constant.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { constant } = require('..') 4 | 5 | describe('constant', () => { 6 | const f = constant('a') 7 | 8 | it('creates a function that returns the same value regardless of input', () => { 9 | expect(f()).to.equal('a') 10 | expect(f(1)).to.equal('a') 11 | expect(f(2)).to.equal('a') 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /test/converge.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, converge, multiply } = require('..') 4 | 5 | describe('converge', () => { 6 | it('converges the results of applying an arg to branching functions', () => 7 | expect(converge(multiply, [ add(1), add(2) ])(1)).to.equal(6) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(converge(multiply)([ add(1), add(2) ])(1)).to.equal(6) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/curry.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { curry } = require('..') 4 | 5 | describe('curry', () => { 6 | const f = curry((a, b, c=0) => 7 | a + b + c 8 | ) 9 | 10 | it('curries a function to its length', () => { 11 | expect(f(1, 2)).to.equal(3) 12 | expect(f(1)(2)).to.equal(3) 13 | expect(f(1, 2, 3)).to.equal(6) 14 | expect(f(1)(2, 3)).to.equal(6) 15 | }) 16 | }) 17 | -------------------------------------------------------------------------------- /test/curryN.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { curryN } = require('..') 4 | 5 | describe('curryN', () => { 6 | const f = (a, b, c) => 7 | a + b + (c || 0) 8 | 9 | const g = curryN(2, f) 10 | 11 | it('curries a function to N arity', () => { 12 | expect(g(1, 2)).to.equal(3) 13 | expect(g(1)(2)).to.equal(3) 14 | expect(g(1, 2, 3)).to.equal(6) 15 | expect(g(1)(2, 3)).to.equal(6) 16 | }) 17 | 18 | it('is curried', () => 19 | expect(curryN(2)(f)(1)(2)).to.equal(3) 20 | ) 21 | }) 22 | -------------------------------------------------------------------------------- /test/defaultTo.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { defaultTo } = require('..') 4 | 5 | describe('defaultTo', () => { 6 | it('defaults to a value if the original is null', () => 7 | expect(defaultTo(1, null)).to.equal(1) 8 | ) 9 | 10 | it('defaults to a value if the original is undefined', () => 11 | expect(defaultTo(1, undefined)).to.equal(1) 12 | ) 13 | 14 | it('defaults to a value if the original is NaN', () => 15 | expect(defaultTo(1, 1/'a')).to.equal(1) 16 | ) 17 | 18 | it('passes thru the original otherwise', () => 19 | expect(defaultTo(1, 2)).to.equal(2) 20 | ) 21 | 22 | it('is curried', () => 23 | expect(defaultTo(1)(null)).to.equal(1) 24 | ) 25 | }) 26 | -------------------------------------------------------------------------------- /test/dissoc.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { dissoc } = require('..') 4 | 5 | describe('dissoc', () => { 6 | it('removes a property from an obj', () => 7 | expect(dissoc('foo', { foo: 'bar', baz: 'bat' })).to.eql({ baz: 'bat' }) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(dissoc('foo')({ foo: 'bar', baz: 'bat' })).to.eql({ baz: 'bat' }) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/dissocPath.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { dissocPath } = require('..') 4 | 5 | describe('dissocPath', () => { 6 | const orig = { foo: { bar: 'baz' } } 7 | 8 | it('removes a value from the tip of a path on a nested object', () => 9 | expect(dissocPath(['foo', 'bar'], orig)).to.eql({ foo: { } }) 10 | ) 11 | 12 | it('returns object unharmed if path is empty', () => 13 | expect(dissocPath([], orig)).to.eql(orig) 14 | ) 15 | 16 | it('returns object unharmed if nothing at that path', () => 17 | expect(dissocPath(['blah'], orig)).to.eql(orig) 18 | ) 19 | 20 | it('is curried', () => 21 | expect(dissocPath(['foo', 'bar'])(orig)).to.eql({ foo: { } }) 22 | ) 23 | }) 24 | -------------------------------------------------------------------------------- /test/either.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { either, prop } = require('..') 4 | 5 | describe('either', () => { 6 | const f = prop('f') 7 | const g = prop('g') 8 | 9 | const obj = { g: 'h' } 10 | 11 | it('wraps two functions in an || operation', () => 12 | expect(either(f, g, obj)).to.equal('h') 13 | ) 14 | 15 | it('is curried', () => { 16 | expect(either(f)(g, obj)).to.equal('h') 17 | expect(either(f, g)(obj)).to.equal('h') 18 | expect(either(f)(g)(obj)).to.equal('h') 19 | }) 20 | }) 21 | -------------------------------------------------------------------------------- /test/evolve.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, evolve } = require('..') 4 | 5 | describe('evolve', () => { 6 | const orig = { foo: 1, bar: { baz: 2 }, blah: 3 } 7 | 8 | const xfrms = { foo: add(1), bar: { baz: add(2) } } 9 | 10 | it('recursively evolves a nested object with a map of transforms', () => 11 | expect(evolve(xfrms, orig)).to.eql({ foo: 2, bar: { baz: 4 }, blah: 3 }) 12 | ) 13 | 14 | it('is curried', () => 15 | expect(evolve(xfrms)(orig)).to.eql({ foo: 2, bar: { baz: 4 }, blah: 3 }) 16 | ) 17 | }) 18 | -------------------------------------------------------------------------------- /test/filter.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { filter } = require('..') 4 | 5 | describe('filter', () => { 6 | const even = num => 7 | num % 2 === 0 8 | 9 | it('filters a list by a predicate', () => 10 | expect(filter(even, [ 1, 2, 3, 4 ])).to.eql([ 2, 4 ]) 11 | ) 12 | 13 | it('is curried', () => 14 | expect(filter(even)([ 1, 2, 3, 4 ])).to.eql([ 2, 4 ]) 15 | ) 16 | }) 17 | -------------------------------------------------------------------------------- /test/find.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { find } = require('..') 4 | 5 | describe('find', () => { 6 | const arr = [1, 2, 3, 4] 7 | 8 | const gt2 = x => 9 | x > 2 10 | 11 | it('finds an item in a list', () => 12 | expect(find(gt2, arr)).to.equal(3) 13 | ) 14 | 15 | it('is curried', () => 16 | expect(find(gt2)(arr)).to.equal(3) 17 | ) 18 | }) 19 | -------------------------------------------------------------------------------- /test/flatten.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { flatten } = require('..') 4 | 5 | describe('flatten', () => { 6 | const arr = [ 1, [ 2, 3 ], [ 4, [ 5 ] ] ] 7 | 8 | it('recursively flattens an array', () => 9 | expect(flatten(arr)).to.eql([ 1, 2, 3, 4, 5 ]) 10 | ) 11 | }) 12 | -------------------------------------------------------------------------------- /test/flip.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, flip } = require('..') 4 | 5 | describe('flip', () => { 6 | it('flips and curries the first two args of a function', () => { 7 | expect(flip(add)('a', 'b')).to.equal('ba') 8 | expect(flip(add)('a')('b')).to.equal('ba') 9 | }) 10 | }) 11 | -------------------------------------------------------------------------------- /test/head.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { head } = require('..') 4 | 5 | describe('head', () => { 6 | it('returns the head of a list', () => 7 | expect(head([ 1, 2, 3 ])).to.equal(1) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/identity.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { identity } = require('..') 4 | 5 | describe('identity', () => { 6 | const obj = { foo: 'bar' } 7 | 8 | it('always returns the first arg', () => { 9 | expect(identity('a')).to.equal('a') 10 | expect(identity(1)).to.equal(1) 11 | expect(identity(true)).to.equal(true) 12 | expect(identity(obj)).to.equal(obj) 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /test/ifElse.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, ifElse } = require('..') 4 | 5 | describe('ifElse', () => { 6 | const falsy = x => !x 7 | 8 | it('branches between two functions based on predicate', () => { 9 | expect(ifElse(falsy, add(1), add(2), 0)).to.equal(1) 10 | expect(ifElse(falsy, add(1), add(2), 1)).to.equal(3) 11 | }) 12 | 13 | it('isCurried', () => { 14 | expect(ifElse(falsy, add(1), add(2))(0)).to.equal(1) 15 | expect(ifElse(falsy, add(1))(add(2), 0)).to.equal(1) 16 | expect(ifElse(falsy)(add(1), add(2), 0)).to.equal(1) 17 | expect(ifElse(falsy)(add(1))(add(2))(0)).to.equal(1) 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /test/indexBy.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { indexBy, prop } = require('..') 4 | 5 | describe('indexBy', () => { 6 | const list = [{ id: 'abc' }, { id: 'def' }] 7 | 8 | it('indexes a list by a key function', () => 9 | expect(indexBy(prop('id'), list)).to.eql({ 10 | abc: { id: 'abc' }, 11 | def: { id: 'def' } 12 | }) 13 | ) 14 | 15 | it('is curried', () => 16 | expect(indexBy(prop('id'))(list)).to.eql({ 17 | abc: { id: 'abc' }, 18 | def: { id: 'def' } 19 | }) 20 | ) 21 | }) 22 | -------------------------------------------------------------------------------- /test/init.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { init } = require('..') 4 | 5 | describe('init', () => { 6 | it('returns all but the last element of a list', () => 7 | expect(init([ 1, 2, 3 ])).to.eql([ 1, 2 ]) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/is.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { is } = require('..') 4 | 5 | class Foo {} 6 | class Bar extends Foo {} 7 | 8 | describe('is', () => { 9 | it('tests if object is instance of supplied contructor', () => { 10 | expect(is(Number, 12345)).to.be.true 11 | expect(is(String, 'foo')).to.be.true 12 | expect(is(Foo, new Bar())).to.be.true 13 | }) 14 | 15 | it('is curried', () => 16 | expect(is(String)('foo')).to.be.true 17 | ) 18 | }) 19 | -------------------------------------------------------------------------------- /test/join.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { join } = require('..') 4 | 5 | describe('join', () => { 6 | it('joins a list by a separator', () => 7 | expect(join(',', [ 1, 2, 3 ])).to.equal('1,2,3') 8 | ) 9 | 10 | it('is curried', () => 11 | expect(join(',')([ 1, 2, 3 ])).to.equal('1,2,3') 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/juxt.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, juxt, multiply } = require('..') 4 | 5 | describe('juxt', () => { 6 | it('creates a new function that branches an arg over multiple functions', () => 7 | expect(juxt([ add(1), multiply(2) ], 2)).to.eql([ 3, 4 ]) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(juxt([ add(1), multiply(2) ])(2)).to.eql([ 3, 4 ]) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/keys.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { keys } = require('..') 4 | 5 | describe('keys', () => { 6 | it('returns a list of keys in an object', () => 7 | expect(keys({ foo: 'bar', baz: 'bat' })).to.eql([ 'foo', 'baz' ]) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/last.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { last } = require('..') 4 | 5 | describe('last', () => { 6 | it('returns the last item of a list', () => 7 | expect(last([ 1, 2, 3 ])).to.equal(3) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/length.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { length } = require('..') 4 | 5 | describe('length', () => { 6 | const a = [1, 2, 3] 7 | 8 | it('returns the length of a list', () => 9 | expect(length(a)).to.equal(3) 10 | ) 11 | }) 12 | -------------------------------------------------------------------------------- /test/map.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, map } = require('..') 4 | 5 | describe('map', () => { 6 | const functor = [ 1, 2 ] 7 | 8 | it('maps a function over a functor', () => 9 | expect(map(add(1), functor)).to.eql([ 2, 3 ]) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(map(add(1))(functor)).to.eql([ 2, 3 ]) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/mapObj.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { mapObj } = require('..') 4 | 5 | describe('mapObj', () => { 6 | const obj = { foo: 1, bar: 2 } 7 | 8 | const f = (val, key) => key + val 9 | 10 | it('maps a function over an object', () => 11 | expect(mapObj(f, obj)).to.eql({ foo: 'foo1', bar: 'bar2' }) 12 | ) 13 | 14 | it('is curried', () => 15 | expect(mapObj(f)(obj)).to.eql({ foo: 'foo1', bar: 'bar2' }) 16 | ) 17 | }) 18 | -------------------------------------------------------------------------------- /test/match.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { match } = require('..') 4 | 5 | describe('match', () => { 6 | const regex = /foo/ 7 | 8 | it('matches a regex to a string', () => 9 | expect(match(regex, 'foot')).to.eql(['foo']) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(match(regex)('foot')).to.eql(['foo']) 14 | ) 15 | 16 | it('returns an empty array if no matches found', () => 17 | expect(match(regex, 'nope')).to.eql([]) 18 | ) 19 | }) 20 | -------------------------------------------------------------------------------- /test/merge.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { merge } = require('..') 4 | 5 | describe('merge', () => { 6 | it('merges the properties of one object onto a shallow copy of another', () => 7 | expect(merge({ foo: 1 }, { bar: 2 })).to.eql({ foo: 1, bar: 2 }) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(merge({ foo: 1 })({ bar: 2 })).to.eql({ foo: 1, bar: 2 }) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/multiply.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { multiply } = require('..') 4 | 5 | describe('multiply', () => { 6 | it('multiplies two numbers', () => 7 | expect(multiply(2, 3)).to.equal(6) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(multiply(2)(3)).to.equal(6) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/nAry.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { nAry } = require('..') 4 | 5 | describe('nAry', () => { 6 | const f = (a=0, b=0, c=0, d=0) => 7 | a + b + c + d 8 | 9 | it('limits the args passed to the wrapped function', () => { 10 | expect(nAry(0, f)(1, 1, 1, 1)).to.equal(0) 11 | expect(nAry(1, f)(1, 1, 1, 1)).to.equal(1) 12 | expect(nAry(2, f)(1, 1, 1, 1)).to.equal(2) 13 | expect(nAry(3, f)(1, 1, 1, 1)).to.equal(3) 14 | }) 15 | 16 | it('is curried', () => 17 | expect(nAry(1)(f)(1, 1, 1, 1)).to.equal(1) 18 | ) 19 | }) 20 | -------------------------------------------------------------------------------- /test/not.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { not } = require('..') 4 | 5 | describe('not', () => { 6 | it('negates its first argument', () => { 7 | expect(not(true)).to.be.false 8 | expect(not(false)).to.be.true 9 | }) 10 | }) 11 | -------------------------------------------------------------------------------- /test/objOf.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { objOf } = require('..') 4 | 5 | describe('objOf', () => { 6 | it('makes an object of a key/value pair', () => 7 | expect(objOf('foo', 'bar')).to.eql({ foo: 'bar' }) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(objOf('foo')('bar')).to.eql({ foo: 'bar' }) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/omit.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { omit } = require('..') 4 | 5 | describe('omit', () => { 6 | const orig = { a: 'a', b: 'b', c: 'c' } 7 | 8 | it('omits certain properties from an object', () => 9 | expect(omit([ 'a', 'b' ], orig)).to.eql({ c: 'c' }) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(omit([ 'a', 'b' ])(orig)).to.eql({ c: 'c' }) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/partial.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { partial } = require('..') 4 | 5 | describe('partial', () => { 6 | const sum = (a, b, c, d) => 7 | a + b + c + d 8 | 9 | it('partially applies args to a function', () => 10 | expect(partial(sum, [ 1, 2 ])(3, 4)).to.equal(10) 11 | ) 12 | 13 | it('is curried', () => 14 | expect(partial(sum)([ 1, 2 ])(3, 4)).to.equal(10) 15 | ) 16 | }) 17 | -------------------------------------------------------------------------------- /test/partialRight.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { partialRight } = require('..') 4 | 5 | describe('partialRight', () => { 6 | const maths = (a, b, c, d) => 7 | a + b * c + d 8 | 9 | it('partially applies right-side args to a function', () => 10 | expect(partialRight(maths, [ 1, 2 ])(3, 4)).to.equal(9) 11 | ) 12 | 13 | it('is curried', () => 14 | expect(partialRight(maths)([ 1, 2 ])(3, 4)).to.equal(9) 15 | ) 16 | }) 17 | -------------------------------------------------------------------------------- /test/path.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { path } = require('..') 4 | 5 | describe('path', () => { 6 | const obj = { foo: { bar: 'baz' } } 7 | 8 | it('accesses a value at the tip of a path on an object', () => 9 | expect(path(['foo', 'bar'], obj)).to.equal('baz') 10 | ) 11 | 12 | it('is curried', () => 13 | expect(path(['foo', 'bar'])(obj)).to.equal('baz') 14 | ) 15 | 16 | it('returns undefined if part of the path is undefined or null', () => { 17 | expect(path(['foo', 'bar'], undefined)).to.be.undefined 18 | expect(path(['bar', 'foo'], obj)).to.be.undefined 19 | expect(path(['bar', 'foo'], { bar: null })).to.be.undefined 20 | }) 21 | }) 22 | -------------------------------------------------------------------------------- /test/pathEq.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { pathEq } = require('..') 4 | 5 | describe('pathEq', () => { 6 | const obj = { foo: { bar: 'yes' } } 7 | 8 | it('tests if a nested path is identically equal to a value', () => { 9 | expect(pathEq(['foo', 'bar'], 'yes', obj)).to.be.true 10 | expect(pathEq(['foo', 'bar'], 'no', obj)).to.be.false 11 | }) 12 | 13 | it('does not fail if the path is missing', () => 14 | expect(pathEq(['bar', 'foo'], 'yes', obj)).to.be.false 15 | ) 16 | 17 | it('is curried', () => { 18 | expect(pathEq(['foo', 'bar'])('yes', obj)).to.be.true 19 | expect(pathEq(['foo', 'bar'], 'yes')(obj)).to.be.true 20 | expect(pathEq(['foo', 'bar'])('yes')(obj)).to.be.true 21 | }) 22 | }) 23 | -------------------------------------------------------------------------------- /test/pick.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { pick } = require('..') 4 | 5 | describe('pick', () => { 6 | const orig = { a: 'a', b: 'b', c: 'c' } 7 | 8 | it('picks certain properties from an object', () => 9 | expect(pick([ 'a', 'b' ], orig)).to.eql({ a: 'a', b: 'b' }) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(pick([ 'a', 'b' ])(orig)).to.eql({ a: 'a', b: 'b' }) 14 | ) 15 | 16 | it('does not include a picked key if val is undefined', () => 17 | expect(pick([ 'a', 'd' ], orig)).to.eql({ a: 'a' }) 18 | ) 19 | }) 20 | -------------------------------------------------------------------------------- /test/pipe.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, multiply, pipe } = require('..') 4 | 5 | describe('pipe', () => { 6 | const f = pipe(add(1), multiply(2)) 7 | 8 | it('composes functions LTR', () => 9 | expect(f(2)).to.equal(6) 10 | ) 11 | }) 12 | -------------------------------------------------------------------------------- /test/pipeP.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const property = require('prop-factory') 3 | 4 | const { curry, pipeP } = require('..') 5 | 6 | describe('pipeP', () => { 7 | const res = property() 8 | 9 | const add = curry((a, b) => Promise.resolve(a + b)) 10 | const multiply = curry((a, b) => Promise.resolve(a * b)) 11 | 12 | const maths = pipeP(add(2), multiply(3)) 13 | 14 | beforeEach(() => 15 | maths(1).then(res) 16 | ) 17 | 18 | it('composes async functions RTL', () => 19 | expect(res()).to.equal(9) 20 | ) 21 | }) 22 | -------------------------------------------------------------------------------- /test/pluck.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { pluck } = require('..') 4 | 5 | describe('pluck', () => { 6 | const list = [{ a: 'b' }, { a: 'c' }, { b: 'a' }] 7 | 8 | it('plucks the values from a list for a given key', () => 9 | expect(pluck('a', list)).to.eql(['b', 'c', undefined]) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(pluck('a')(list)).to.eql(['b', 'c', undefined]) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/prepend.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { prepend } = require('..') 4 | 5 | describe('prepend', () => { 6 | const list = [ 1, 2, 3 ] 7 | 8 | it('appends an element to a list', () => 9 | expect(prepend(0, list)).to.eql([ 0, 1, 2, 3 ]) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(prepend(0)(list)).to.eql([ 0, 1, 2, 3 ]) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/prop.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { prop } = require('..') 4 | 5 | describe('prop', () => { 6 | const obj = { foo: 'bar' } 7 | 8 | it('accesses the value of a property on an object', () => 9 | expect(prop('foo', obj)).to.equal('bar') 10 | ) 11 | 12 | it('is curried', () => 13 | expect(prop('foo')(obj)).to.equal('bar') 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/propEq.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { propEq } = require('..') 4 | 5 | describe('propEq', () => { 6 | const obj = { foo: 'bar' } 7 | 8 | it('tests that a certain property equals a supplied value', () => { 9 | expect(propEq('foo', 'bar', obj)).to.be.true 10 | expect(propEq('foo', 'nope', obj)).to.be.false 11 | expect(propEq('bar', 'nope', obj)).to.be.false 12 | }) 13 | 14 | it('is curried', () => { 15 | expect(propEq('foo', 'bar')(obj)).to.be.true 16 | expect(propEq('foo')('bar', obj)).to.be.true 17 | expect(propEq('foo')('bar')(obj)).to.be.true 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /test/props.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { props } = require('..') 4 | 5 | describe('props', () => { 6 | const obj = { foo: 1, bar: 2, baz: 3 } 7 | 8 | it('lists values from an object corresponding to a list of keys', () => 9 | expect(props(['foo', 'bar'], obj)).to.eql([ 1, 2 ]) 10 | ) 11 | 12 | it('is curried', () => 13 | expect(props(['foo', 'bar'])(obj)).to.eql([ 1, 2 ]) 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /test/reduce.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, reduce } = require('..') 4 | 5 | describe('reduce', () => { 6 | const list = ['1', '2', '3'] 7 | 8 | it('reduces a list LTR', () => 9 | expect(reduce(add, '0', list)).to.equal('0123') 10 | ) 11 | 12 | it('is curried', () => { 13 | expect(reduce(add)('0', list)).to.equal('0123') 14 | expect(reduce(add, '0')(list)).to.equal('0123') 15 | expect(reduce(add)('0')(list)).to.equal('0123') 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /test/reduceObj.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { reduceObj } = require('..') 4 | 5 | describe('reduceObj', () => { 6 | const obj = { name: 'Spot', color: 'blue' } 7 | 8 | const serialize = (acc, val, key) => 9 | (acc ? `${acc},` : '') + `${key}:${val}` 10 | 11 | it('reduces an object', () => 12 | expect(reduceObj(serialize, '', obj)).to.equal('name:Spot,color:blue') 13 | ) 14 | 15 | it('is curried', () => { 16 | expect(reduceObj(serialize)('', obj)).to.equal('name:Spot,color:blue') 17 | expect(reduceObj(serialize, '')(obj)).to.equal('name:Spot,color:blue') 18 | expect(reduceObj(serialize)('')(obj)).to.equal('name:Spot,color:blue') 19 | }) 20 | }) 21 | -------------------------------------------------------------------------------- /test/reduceP.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const property = require('prop-factory') 3 | 4 | const { reduceP } = require('..') 5 | 6 | describe('reduceP', () => { 7 | const res = property() 8 | 9 | const f = (b, a) => 10 | Promise.resolve(b + a) 11 | 12 | beforeEach(() => 13 | reduceP(f, '0', ['1', '2', '3', '4']).then(res) 14 | ) 15 | 16 | it('reduces a list LTR with an async reducer', () => 17 | expect(res()).to.equal('01234') 18 | ) 19 | }) 20 | -------------------------------------------------------------------------------- /test/reduceRight.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, reduceRight } = require('..') 4 | 5 | describe('reduceRight', () => { 6 | const list = ['1', '2', '3'] 7 | 8 | it('reduces a list RTL', () => 9 | expect(reduceRight(add, '0', list)).to.equal('0321') 10 | ) 11 | 12 | it('is curried', () => { 13 | expect(reduceRight(add)('0', list)).to.equal('0321') 14 | expect(reduceRight(add, '0')(list)).to.equal('0321') 15 | expect(reduceRight(add)('0')(list)).to.equal('0321') 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /test/reduceRightP.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const property = require('prop-factory') 3 | 4 | const { reduceRightP } = require('..') 5 | 6 | describe('reduceRightP', () => { 7 | const res = property() 8 | 9 | const f = (b, a) => 10 | Promise.resolve(b + a) 11 | 12 | beforeEach(() => 13 | reduceRightP(f, '0', ['1', '2', '3', '4']).then(res) 14 | ) 15 | 16 | it('reduces a list RTL with an async reducer', () => 17 | expect(res()).to.equal('04321') 18 | ) 19 | }) 20 | -------------------------------------------------------------------------------- /test/replace.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { replace } = require('..') 4 | 5 | describe('replace', () => { 6 | const string = 'I like food.' 7 | 8 | it('replaces a regex in a string with a replacement string', () => 9 | expect(replace(/foo/, 'bar', string)).to.equal('I like bard.') 10 | ) 11 | 12 | it('is curried', () => { 13 | expect(replace(/foo/)('bar', string)).to.equal('I like bard.') 14 | expect(replace(/foo/, 'bar')(string)).to.equal('I like bard.') 15 | expect(replace(/foo/)('bar')(string)).to.equal('I like bard.') 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /test/slice.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { slice } = require('..') 4 | 5 | describe('slice', () => { 6 | it('slices a list', () => 7 | expect(slice(1, 3, [ 1, 2, 3, 4 ])).to.eql([ 2, 3 ]) 8 | ) 9 | 10 | it('is curried', () => { 11 | expect(slice(1)(3, [ 1, 2, 3, 4 ])).to.eql([ 2, 3 ]) 12 | expect(slice(1, 3)([ 1, 2, 3, 4 ])).to.eql([ 2, 3 ]) 13 | expect(slice(1)(3)([ 1, 2, 3, 4 ])).to.eql([ 2, 3 ]) 14 | }) 15 | }) 16 | -------------------------------------------------------------------------------- /test/sort.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { sort } = require('..') 4 | 5 | describe('sort', () => { 6 | const desc = (a, b) => 7 | a < b ? 1 : b < a ? -1 : 0 8 | 9 | const list = [ 1, 2, 3, 4 ] 10 | 11 | it('sorts a list by a comparator', () => 12 | expect(sort(desc, list)).to.eql([ 4, 3, 2, 1 ]) 13 | ) 14 | 15 | it('is curried', () => 16 | expect(sort(desc)(list)).to.eql([ 4, 3, 2, 1 ]) 17 | ) 18 | }) 19 | -------------------------------------------------------------------------------- /test/sortBy.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { prop, sortBy } = require('..') 4 | 5 | describe('sortBy', () => { 6 | const list = [ 7 | { name: 'Scott' }, 8 | { name: 'Frank' }, 9 | { name: 'Scott' }, 10 | { name: 'Reginald' } 11 | ] 12 | 13 | it('sorts a list by an indexing function', () => 14 | expect(sortBy(prop('name'), list)).to.eql([ 15 | { name: 'Frank' }, 16 | { name: 'Reginald' }, 17 | { name: 'Scott' }, 18 | { name: 'Scott' } 19 | ]) 20 | ) 21 | 22 | it('is curried', () => 23 | expect(sortBy(prop('name'))(list)).to.eql([ 24 | { name: 'Frank' }, 25 | { name: 'Reginald' }, 26 | { name: 'Scott' }, 27 | { name: 'Scott' } 28 | ]) 29 | ) 30 | }) 31 | -------------------------------------------------------------------------------- /test/split.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { split } = require('..') 4 | 5 | describe('split', () => { 6 | it('splits a string by a regexp', () => { 7 | expect(split('', 'abc')).to.eql(['a','b','c']) 8 | expect(split('a', 'banana')).to.eql(['b','n','n','']) 9 | }) 10 | 11 | it('is curried', () => 12 | expect(split('')('abc')).to.eql(['a','b','c']) 13 | ) 14 | }) 15 | -------------------------------------------------------------------------------- /test/tail.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { tail } = require('..') 4 | 5 | describe('tail', () => { 6 | it('returns all but the first item of a list', () => 7 | expect(tail([ 1, 2, 3 ])).to.eql([ 2, 3 ]) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/take.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { take } = require('..') 4 | 5 | describe('take', () => { 6 | const arr = [1, 2, 3, 4] 7 | 8 | it('takes the first n items in a list', () => { 9 | expect(take(0, arr)).to.eql([]) 10 | expect(take(1, arr)).to.eql([1]) 11 | expect(take(2, arr)).to.eql([1, 2]) 12 | expect(take(3, arr)).to.eql([1, 2, 3]) 13 | expect(take(4, arr)).to.eql([1, 2, 3, 4]) 14 | expect(take(5, arr)).to.eql([1, 2, 3, 4]) 15 | }) 16 | 17 | it('is curried', () => 18 | expect(take(1)(arr)).to.eql([1]) 19 | ) 20 | }) 21 | -------------------------------------------------------------------------------- /test/tap.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const spy = require('@articulate/spy') 3 | 4 | const { tap } = require('..') 5 | 6 | describe('tap', () => { 7 | const f = spy() 8 | 9 | afterEach(() => 10 | f.reset() 11 | ) 12 | 13 | it('passes thru the arg after executing the function', () => { 14 | expect(tap(f, 'a')).to.equal('a') 15 | expect(f.calls.length).to.equal(1) 16 | }) 17 | 18 | it('is curried', () => { 19 | expect(tap(f)('a')).to.equal('a') 20 | expect(f.calls.length).to.equal(1) 21 | }) 22 | }) 23 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { test } = require('..') 4 | 5 | describe('test', () => { 6 | const pattern = /good/ 7 | 8 | it('tests a string against a RegExp', () => { 9 | expect(test(pattern, 'good news')).to.be.true 10 | expect(test(pattern, 'bad news')).to.be.false 11 | }) 12 | 13 | it('is curried', () => 14 | expect(test(pattern)('good news')).to.be.true 15 | ) 16 | }) 17 | -------------------------------------------------------------------------------- /test/then.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | const property = require('prop-factory') 3 | 4 | const { curry, then } = require('..') 5 | 6 | describe('then', () => { 7 | const res1 = property() 8 | const res2 = property() 9 | 10 | const add = curry((a, b) => Promise.resolve(a + b)) 11 | 12 | beforeEach(() => 13 | Promise.all([ 14 | then(add(2), Promise.resolve(2)).then(res1), 15 | then(add(2))(Promise.resolve(2)).then(res2) 16 | ]) 17 | ) 18 | 19 | it('is a pointfree then', () => 20 | expect(res1()).to.equal(4) 21 | ) 22 | 23 | it('is curried', () => 24 | expect(res2()).to.equal(4) 25 | ) 26 | }) 27 | -------------------------------------------------------------------------------- /test/thrush.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, thrush } = require('..') 4 | 5 | describe('thrush', () => { 6 | it('accepts a value and function and executes the latter with the former', () => 7 | expect(thrush(1, add(1))).to.equal(2) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(thrush(1)(add(1))).to.equal(2) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/unapply.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, reduce, unapply } = require('..') 4 | 5 | describe('unapply', () => { 6 | const sum = unapply(reduce(add, 0)) 7 | 8 | it('converts a function which takes an array to variadic', () => 9 | expect(sum(1, 2, 3, 4)).to.equal(10) 10 | ) 11 | }) 12 | -------------------------------------------------------------------------------- /test/unary.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { unary } = require('..') 4 | 5 | describe('unary', () => { 6 | const f = unary((a=0, b=0) => 7 | a + b 8 | ) 9 | 10 | it('only passes one arg to wrapped function', () => { 11 | expect(f()).to.equal(0) 12 | expect(f(1)).to.equal(1) 13 | expect(f(1, 2)).to.equal(1) 14 | }) 15 | }) 16 | -------------------------------------------------------------------------------- /test/uniqBy.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { prop, propEq, uniqBy } = require('..') 4 | 5 | describe('uniqBy', () => { 6 | const list = [{ id: 'abc' }, { id: 'def' }, { id: 'abc' }] 7 | 8 | it('uniques a list by a key function', () => { 9 | const res = uniqBy(prop('id'), list) 10 | expect(res.length).to.equal(2) 11 | expect(res.find(propEq('id', 'abc'))).to.exist 12 | expect(res.find(propEq('id', 'def'))).to.exist 13 | }) 14 | 15 | it('is curried', () => { 16 | const res = uniqBy(prop('id'))(list) 17 | expect(res.length).to.equal(2) 18 | expect(res.find(propEq('id', 'abc'))).to.exist 19 | expect(res.find(propEq('id', 'def'))).to.exist 20 | }) 21 | }) 22 | -------------------------------------------------------------------------------- /test/unit.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { unit } = require('..') 4 | 5 | describe('unit', () => { 6 | it('always returns undefined', () => { 7 | expect(unit('a')).to.be.undefined 8 | expect(unit()).to.be.undefined 9 | }) 10 | }) 11 | -------------------------------------------------------------------------------- /test/unless.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, unless } = require('..') 4 | 5 | describe('unless', () => { 6 | const truthy = x => !!x 7 | 8 | it('transforms an arg by a function unless a predicate is true', () => { 9 | expect(unless(truthy, add(1), 0)).to.equal(1) 10 | expect(unless(truthy, add(1), 1)).to.equal(1) 11 | }) 12 | 13 | it('is curried', () => { 14 | expect(unless(truthy)(add(1), 0)).to.equal(1) 15 | expect(unless(truthy, add(1))(0)).to.equal(1) 16 | expect(unless(truthy)(add(1))(0)).to.equal(1) 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /test/useWith.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, multiply, useWith } = require('..') 4 | 5 | describe('useWith', () => { 6 | it('transforms args before passing to original function', () => 7 | expect(useWith(multiply, [ add(1), add(2) ])(1, 1)).to.equal(6) 8 | ) 9 | 10 | it('is curried', () => 11 | expect(useWith(multiply)([ add(1), add(2) ])(1, 1)).to.equal(6) 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /test/values.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { values } = require('..') 4 | 5 | describe('values', () => { 6 | it('returns a list of values in an object', () => 7 | expect(values({ foo: 'bar', baz: 'bat' })).to.eql([ 'bar', 'bat' ]) 8 | ) 9 | }) 10 | -------------------------------------------------------------------------------- /test/when.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { add, when } = require('..') 4 | 5 | describe('when', () => { 6 | const falsy = x => !x 7 | 8 | it('transforms an arg by a function when a predicate is true', () => { 9 | expect(when(falsy, add(1), 0)).to.equal(1) 10 | expect(when(falsy, add(1), 1)).to.equal(1) 11 | }) 12 | 13 | it('is curried', () => { 14 | expect(when(falsy)(add(1), 0)).to.equal(1) 15 | expect(when(falsy, add(1))(0)).to.equal(1) 16 | expect(when(falsy)(add(1))(0)).to.equal(1) 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /test/zipObj.js: -------------------------------------------------------------------------------- 1 | const { expect } = require('chai') 2 | 3 | const { zipObj } = require('..') 4 | 5 | describe('zipObj', () => { 6 | const keys = ['foo', 'bar'] 7 | const vals = [ 1, 2 ] 8 | 9 | it('zips a list of keys and list of values into an object', () => 10 | expect(zipObj(keys, vals)).to.eql({ foo: 1, bar: 2 }) 11 | ) 12 | 13 | it('is curried', () => 14 | expect(zipObj(keys)(vals)).to.eql({ foo: 1, bar: 2 }) 15 | ) 16 | 17 | it('does not include a key when val is undefined', () => 18 | expect(zipObj(keys, [ 1, undefined ])).to.eql({ foo: 1 }) 19 | ) 20 | }) 21 | -------------------------------------------------------------------------------- /tinyfunk.js: -------------------------------------------------------------------------------- 1 | !function(e){const t=(e,t)=>{for(let n in t)e[n]=t[n];return e},n=(e,t)=>ey(t,1,e),i=(e,t)=>e.bind(null,...t),l=e=>e.length,o=e=>(...t)=>e(t),c=(e,t)=>e<1?t:o(n=>{const r=e-l(n);return r>0?c(r,i(t,n)):t.apply(null,n)}),p=c(2,c),s=e=>p(l(e),e),u=s((e,t,n)=>{let r=e[n]||B;return"object"==typeof r&&(r=O(r)),r(t)}),a=s((e,t)=>e+t),d=s((e,t)=>g(t,[e])),f=s((e,t)=>e.apply(null,t)),y=s((e,n,r)=>{const i=t({},r);return i[e]=n,i}),h=p(3,([e,...t],n,r={})=>y(e,l(t)?h(t,n,r[e]):n,r)),m=p(2,(e,...t)=>f(e,t)),g=s((e,t)=>e.concat(t)),j=s((e,t)=>ye(f(e),z(t))),k=s((e,t)=>null==t||t!=t?e:t),v=s((e,n)=>{const r=t({},n);return delete r[e],r}),P=s(([e,...t],n)=>e?null==n[e]?n:l(t)?y(e,P(t,n[e]),n):v(e,n):n),b=s((e,t,n)=>e(n)||t(n)),O=s((e,t)=>T(u(e),t)),R=s((e,t)=>t.filter(e)),q=s((e,t)=>t.find(e)),A=s((e,t,n)=>s(e)(n,t)),B=e=>e,E=s((e,t,n,r)=>e(r)?t(r):n(r)),x=s((e,t)=>null!=t&&t.constructor===e||t instanceof e),w=s((e,t)=>t.join(e)),z=s((e,t)=>N(ce(t),e)),N=s((e,t)=>t.map(e)),T=s((e,t)=>{const n={};for(let r in t)n[r]=e(t[r],r);return n}),W=s((e,t)=>t.match(e)||[]),C=s((e,n)=>X(t,{},[e,n])),D=s((e,t)=>e*t),F=s((e,t)=>o(ye(f(t),Ae(e)))),G=s((e,t)=>({[e]:t})),H=s((e,t)=>{const n=X(r,{},e),i={};for(let e in t)n[e]||(i[e]=t[e]);return i}),I=s(i),J=p(3,(e,t,...n)=>f(e,g(n,t))),K=p(2,([e,...t],n)=>(null==n&&(n={}),l(t)?K(t,n[e]):n[e])),L=s((e,t,n)=>K(e,n)===t),M=s((e,t)=>fe(e,V(e,t))),Q=s((e,t)=>g([e],t)),S=s((e,t)=>t[e]),U=s((e,t,n)=>n[e]===t),V=s((e,t)=>N(A(S)(t),e)),X=s((e,t,n)=>n.reduce(e,t)),Y=s((e,t,n)=>{for(let r in n)t=e(t,n[r],r);return t}),Z=s((e,t,n)=>ge(...N(pe(A(e)),n))(t)),$=s((e,t,n)=>n.reduceRight(e,t)),_=s((e,t,n)=>he(...N(pe(A(e)),n))(t)),ee=s((e,t,n)=>n.replace(e,t)),te=s((e,t)=>t.slice(0).sort(e)),ne=s((e,t)=>te(ae(n,[e,e]),t)),re=s((e,t)=>t.split(e)),ie=s((e,t)=>(e(t),t)),le=s((e,t)=>e.test(t)),oe=s((e,t)=>Promise.resolve(t).then(e)),ce=s((e,t)=>t(e)),pe=F(1),se=()=>{},ue=s((e,t,n)=>e(n)?n:t(n)),ae=s((e,t)=>o(ye(f(e),N(u(t))))),de=s((e,t,n)=>e(n)?t(n):n),fe=s((e,t)=>{const n={};for(let r=l(e);r--;)void 0!==t[r]&&(n[e[r]]=t[r]);return n}),ye=o(A($(ce))),he=o(A($(A(oe)))),me=o(A(X(ce))),ge=o(A(X(A(oe)))),je=ye($(ce,se),N(f(E))),ke=de(Array.isArray,X((e,t)=>g(e,ke(t)),[])),ve=s((e,t)=>N(S(e),t)),Pe=s((e,t,n)=>n.slice(e,t)),be=S(0),Oe=Pe(0,-1),Re=ye(be,Pe(-1,void 0)),qe=Pe(1,1/0),Ae=Pe(0),Be=Y((e,t,n)=>d(n,e),[]),Ee=Y(A(d),[]),xe=s((e,t)=>X((e=>(t,n)=>y(e(n),n,t))(e),{},t)),we=s((e,t)=>ye(Ee,xe(e))(t));t(e,{add:a,append:d,apply:f,assoc:y,assocPath:h,call:m,compose:ye,composeP:he,concat:g,cond:je,constant:e=>()=>e,converge:j,curry:s,curryN:p,defaultTo:k,dissoc:v,dissocPath:P,either:b,evolve:O,filter:R,find:q,flatten:ke,flip:A,head:be,identity:B,ifElse:E,indexBy:xe,init:Oe,is:x,join:w,juxt:z,keys:Be,last:Re,length:l,map:N,mapObj:T,match:W,merge:C,multiply:D,nAry:F,not:e=>!e,objOf:G,omit:H,partial:I,partialRight:J,path:K,pathEq:L,pick:M,pipe:me,pipeP:ge,pluck:ve,prepend:Q,prop:S,propEq:U,props:V,reduce:X,reduceObj:Y,reduceP:Z,reduceRight:$,reduceRightP:_,replace:ee,slice:Pe,sort:te,sortBy:ne,split:re,tail:qe,take:Ae,tap:ie,test:le,then:oe,thrush:ce,unapply:o,unary:pe,uniqBy:we,unit:se,unless:ue,useWith:ae,values:Ee,when:de,zipObj:fe})}("undefined"==typeof tinyfunk?tinyfunk={}:tinyfunk); 2 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@articulate/spy@^0.0.1": 6 | version "0.0.1" 7 | resolved "https://registry.yarnpkg.com/@articulate/spy/-/spy-0.0.1.tgz#2da9fdb919075fa5fc3868017e17b43b8528a399" 8 | integrity sha512-Ewt95Ba4Kg/n28OMqm/bfUOeq7vURjYL1EXmPOVzqMPPG1tBGPcEftQzlcIb+cz9rNh/5d7uxdPo9eqD8x5hXg== 9 | 10 | acorn-jsx@^3.0.0: 11 | version "3.0.1" 12 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 13 | integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= 14 | dependencies: 15 | acorn "^3.0.4" 16 | 17 | acorn@^3.0.4: 18 | version "3.3.0" 19 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 20 | integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= 21 | 22 | acorn@^5.1.1: 23 | version "5.1.2" 24 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" 25 | integrity sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA== 26 | 27 | ajv-keywords@^1.0.0: 28 | version "1.5.1" 29 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 30 | integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= 31 | 32 | ajv@^4.7.0: 33 | version "4.11.8" 34 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 35 | integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= 36 | dependencies: 37 | co "^4.6.0" 38 | json-stable-stringify "^1.0.1" 39 | 40 | ajv@^5.2.0: 41 | version "5.2.2" 42 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" 43 | integrity sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk= 44 | dependencies: 45 | co "^4.6.0" 46 | fast-deep-equal "^1.0.0" 47 | json-schema-traverse "^0.3.0" 48 | json-stable-stringify "^1.0.1" 49 | 50 | align-text@^0.1.1, align-text@^0.1.3: 51 | version "0.1.4" 52 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 53 | integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= 54 | dependencies: 55 | kind-of "^3.0.2" 56 | longest "^1.0.1" 57 | repeat-string "^1.5.2" 58 | 59 | amdefine@>=0.0.4: 60 | version "1.0.1" 61 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 62 | integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= 63 | 64 | ansi-escapes@^3.0.0: 65 | version "3.0.0" 66 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" 67 | integrity sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ== 68 | 69 | ansi-regex@^2.0.0: 70 | version "2.1.1" 71 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 72 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 73 | 74 | ansi-regex@^3.0.0: 75 | version "3.0.0" 76 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 77 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 78 | 79 | ansi-styles@^2.2.1: 80 | version "2.2.1" 81 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 82 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 83 | 84 | ansi-styles@^3.1.0: 85 | version "3.2.0" 86 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 87 | integrity sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug== 88 | dependencies: 89 | color-convert "^1.9.0" 90 | 91 | append-transform@^0.4.0: 92 | version "0.4.0" 93 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" 94 | integrity sha1-126/jKlNJ24keja61EpLdKthGZE= 95 | dependencies: 96 | default-require-extensions "^1.0.0" 97 | 98 | archy@^1.0.0: 99 | version "1.0.0" 100 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 101 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= 102 | 103 | argparse@^1.0.7: 104 | version "1.0.9" 105 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 106 | integrity sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY= 107 | dependencies: 108 | sprintf-js "~1.0.2" 109 | 110 | arr-diff@^2.0.0: 111 | version "2.0.0" 112 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 113 | integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 114 | dependencies: 115 | arr-flatten "^1.0.1" 116 | 117 | arr-flatten@^1.0.1: 118 | version "1.1.0" 119 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 120 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 121 | 122 | array-find-index@^1.0.1: 123 | version "1.0.2" 124 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 125 | integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= 126 | 127 | array-union@^1.0.1: 128 | version "1.0.2" 129 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 130 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 131 | dependencies: 132 | array-uniq "^1.0.1" 133 | 134 | array-uniq@^1.0.1: 135 | version "1.0.3" 136 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 137 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 138 | 139 | array-unique@^0.2.1: 140 | version "0.2.1" 141 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 142 | integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 143 | 144 | arrify@^1.0.0, arrify@^1.0.1: 145 | version "1.0.1" 146 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 147 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 148 | 149 | asn1@~0.2.3: 150 | version "0.2.3" 151 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 152 | integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y= 153 | 154 | assert-plus@1.0.0, assert-plus@^1.0.0: 155 | version "1.0.0" 156 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 157 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 158 | 159 | assert-plus@^0.2.0: 160 | version "0.2.0" 161 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 162 | integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= 163 | 164 | assertion-error@^1.0.1: 165 | version "1.0.2" 166 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 167 | integrity sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw= 168 | 169 | async@^1.4.0: 170 | version "1.5.2" 171 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 172 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= 173 | 174 | asynckit@^0.4.0: 175 | version "0.4.0" 176 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 177 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 178 | 179 | aws-sign2@~0.6.0: 180 | version "0.6.0" 181 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 182 | integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= 183 | 184 | aws4@^1.2.1: 185 | version "1.6.0" 186 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 187 | integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= 188 | 189 | babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: 190 | version "6.26.0" 191 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 192 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 193 | dependencies: 194 | chalk "^1.1.3" 195 | esutils "^2.0.2" 196 | js-tokens "^3.0.2" 197 | 198 | babel-generator@^6.18.0: 199 | version "6.26.0" 200 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" 201 | integrity sha1-rBriAHC3n248odMmlhMFN3TyDcU= 202 | dependencies: 203 | babel-messages "^6.23.0" 204 | babel-runtime "^6.26.0" 205 | babel-types "^6.26.0" 206 | detect-indent "^4.0.0" 207 | jsesc "^1.3.0" 208 | lodash "^4.17.4" 209 | source-map "^0.5.6" 210 | trim-right "^1.0.1" 211 | 212 | babel-messages@^6.23.0: 213 | version "6.23.0" 214 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 215 | integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= 216 | dependencies: 217 | babel-runtime "^6.22.0" 218 | 219 | babel-runtime@^6.22.0, babel-runtime@^6.26.0: 220 | version "6.26.0" 221 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 222 | integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= 223 | dependencies: 224 | core-js "^2.4.0" 225 | regenerator-runtime "^0.11.0" 226 | 227 | babel-template@^6.16.0: 228 | version "6.26.0" 229 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 230 | integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= 231 | dependencies: 232 | babel-runtime "^6.26.0" 233 | babel-traverse "^6.26.0" 234 | babel-types "^6.26.0" 235 | babylon "^6.18.0" 236 | lodash "^4.17.4" 237 | 238 | babel-traverse@^6.18.0, babel-traverse@^6.26.0: 239 | version "6.26.0" 240 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 241 | integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= 242 | dependencies: 243 | babel-code-frame "^6.26.0" 244 | babel-messages "^6.23.0" 245 | babel-runtime "^6.26.0" 246 | babel-types "^6.26.0" 247 | babylon "^6.18.0" 248 | debug "^2.6.8" 249 | globals "^9.18.0" 250 | invariant "^2.2.2" 251 | lodash "^4.17.4" 252 | 253 | babel-types@^6.18.0, babel-types@^6.26.0: 254 | version "6.26.0" 255 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 256 | integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= 257 | dependencies: 258 | babel-runtime "^6.26.0" 259 | esutils "^2.0.2" 260 | lodash "^4.17.4" 261 | to-fast-properties "^1.0.3" 262 | 263 | babylon@^6.18.0: 264 | version "6.18.0" 265 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 266 | integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== 267 | 268 | balanced-match@^1.0.0: 269 | version "1.0.0" 270 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 271 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 272 | 273 | bcrypt-pbkdf@^1.0.0: 274 | version "1.0.1" 275 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 276 | integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40= 277 | dependencies: 278 | tweetnacl "^0.14.3" 279 | 280 | boom@2.x.x: 281 | version "2.10.1" 282 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 283 | integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= 284 | dependencies: 285 | hoek "2.x.x" 286 | 287 | brace-expansion@^1.1.7: 288 | version "1.1.8" 289 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 290 | integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI= 291 | dependencies: 292 | balanced-match "^1.0.0" 293 | concat-map "0.0.1" 294 | 295 | braces@^1.8.2: 296 | version "1.8.5" 297 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 298 | integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 299 | dependencies: 300 | expand-range "^1.8.1" 301 | preserve "^0.2.0" 302 | repeat-element "^1.1.2" 303 | 304 | browser-stdout@1.3.0: 305 | version "1.3.0" 306 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 307 | integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= 308 | 309 | builtin-modules@^1.0.0: 310 | version "1.1.1" 311 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 312 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 313 | 314 | caching-transform@^1.0.0: 315 | version "1.0.1" 316 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" 317 | integrity sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE= 318 | dependencies: 319 | md5-hex "^1.2.0" 320 | mkdirp "^0.5.1" 321 | write-file-atomic "^1.1.4" 322 | 323 | caller-path@^0.1.0: 324 | version "0.1.0" 325 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 326 | integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= 327 | dependencies: 328 | callsites "^0.2.0" 329 | 330 | callsites@^0.2.0: 331 | version "0.2.0" 332 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 333 | integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= 334 | 335 | camelcase-keys@^2.0.0: 336 | version "2.1.0" 337 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 338 | integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= 339 | dependencies: 340 | camelcase "^2.0.0" 341 | map-obj "^1.0.0" 342 | 343 | camelcase@^1.0.2: 344 | version "1.2.1" 345 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 346 | integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= 347 | 348 | camelcase@^2.0.0: 349 | version "2.1.1" 350 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 351 | integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= 352 | 353 | camelcase@^3.0.0: 354 | version "3.0.0" 355 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 356 | integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= 357 | 358 | camelcase@^4.1.0: 359 | version "4.1.0" 360 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 361 | integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= 362 | 363 | caseless@~0.11.0: 364 | version "0.11.0" 365 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 366 | integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= 367 | 368 | center-align@^0.1.1: 369 | version "0.1.3" 370 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 371 | integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= 372 | dependencies: 373 | align-text "^0.1.3" 374 | lazy-cache "^1.0.3" 375 | 376 | chai@^4.1.2: 377 | version "4.1.2" 378 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" 379 | integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw= 380 | dependencies: 381 | assertion-error "^1.0.1" 382 | check-error "^1.0.1" 383 | deep-eql "^3.0.0" 384 | get-func-name "^2.0.0" 385 | pathval "^1.0.0" 386 | type-detect "^4.0.0" 387 | 388 | chalk@^1.1.1, chalk@^1.1.3: 389 | version "1.1.3" 390 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 391 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 392 | dependencies: 393 | ansi-styles "^2.2.1" 394 | escape-string-regexp "^1.0.2" 395 | has-ansi "^2.0.0" 396 | strip-ansi "^3.0.0" 397 | supports-color "^2.0.0" 398 | 399 | chalk@^2.0.0, chalk@^2.1.0: 400 | version "2.1.0" 401 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" 402 | integrity sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ== 403 | dependencies: 404 | ansi-styles "^3.1.0" 405 | escape-string-regexp "^1.0.5" 406 | supports-color "^4.0.0" 407 | 408 | check-error@^1.0.1: 409 | version "1.0.2" 410 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 411 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 412 | 413 | circular-json@^0.3.1: 414 | version "0.3.3" 415 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 416 | integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== 417 | 418 | cli-cursor@^2.1.0: 419 | version "2.1.0" 420 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 421 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 422 | dependencies: 423 | restore-cursor "^2.0.0" 424 | 425 | cli-width@^2.0.0: 426 | version "2.2.0" 427 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 428 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 429 | 430 | cliui@^2.1.0: 431 | version "2.1.0" 432 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 433 | integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= 434 | dependencies: 435 | center-align "^0.1.1" 436 | right-align "^0.1.1" 437 | wordwrap "0.0.2" 438 | 439 | cliui@^3.2.0: 440 | version "3.2.0" 441 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 442 | integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= 443 | dependencies: 444 | string-width "^1.0.1" 445 | strip-ansi "^3.0.1" 446 | wrap-ansi "^2.0.0" 447 | 448 | co@^4.6.0: 449 | version "4.6.0" 450 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 451 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 452 | 453 | code-point-at@^1.0.0: 454 | version "1.1.0" 455 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 456 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 457 | 458 | color-convert@^1.9.0: 459 | version "1.9.0" 460 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 461 | integrity sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o= 462 | dependencies: 463 | color-name "^1.1.1" 464 | 465 | color-name@^1.1.1: 466 | version "1.1.3" 467 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 468 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 469 | 470 | combined-stream@^1.0.5, combined-stream@~1.0.5: 471 | version "1.0.5" 472 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 473 | integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk= 474 | dependencies: 475 | delayed-stream "~1.0.0" 476 | 477 | commander@2.9.0: 478 | version "2.9.0" 479 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 480 | integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= 481 | dependencies: 482 | graceful-readlink ">= 1.0.0" 483 | 484 | commander@^2.9.0: 485 | version "2.11.0" 486 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" 487 | integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== 488 | 489 | commander@~2.13.0: 490 | version "2.13.0" 491 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" 492 | integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== 493 | 494 | commondir@^1.0.1: 495 | version "1.0.1" 496 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 497 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 498 | 499 | concat-map@0.0.1: 500 | version "0.0.1" 501 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 502 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 503 | 504 | concat-stream@^1.6.0: 505 | version "1.6.0" 506 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 507 | integrity sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc= 508 | dependencies: 509 | inherits "^2.0.3" 510 | readable-stream "^2.2.2" 511 | typedarray "^0.0.6" 512 | 513 | convert-source-map@^1.3.0: 514 | version "1.5.0" 515 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" 516 | integrity sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU= 517 | 518 | core-js@^2.4.0: 519 | version "2.5.1" 520 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" 521 | integrity sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs= 522 | 523 | core-util-is@1.0.2, core-util-is@~1.0.0: 524 | version "1.0.2" 525 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 526 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 527 | 528 | coveralls@^2.13.1: 529 | version "2.13.1" 530 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.13.1.tgz#d70bb9acc1835ec4f063ff9dac5423c17b11f178" 531 | integrity sha1-1wu5rMGDXsTwY/+drFQjwXsR8Xg= 532 | dependencies: 533 | js-yaml "3.6.1" 534 | lcov-parse "0.0.10" 535 | log-driver "1.2.5" 536 | minimist "1.2.0" 537 | request "2.79.0" 538 | 539 | cross-spawn@^4: 540 | version "4.0.2" 541 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 542 | integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= 543 | dependencies: 544 | lru-cache "^4.0.1" 545 | which "^1.2.9" 546 | 547 | cross-spawn@^5.0.1, cross-spawn@^5.1.0: 548 | version "5.1.0" 549 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 550 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 551 | dependencies: 552 | lru-cache "^4.0.1" 553 | shebang-command "^1.2.0" 554 | which "^1.2.9" 555 | 556 | cryptiles@2.x.x: 557 | version "2.0.5" 558 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 559 | integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= 560 | dependencies: 561 | boom "2.x.x" 562 | 563 | currently-unhandled@^0.4.1: 564 | version "0.4.1" 565 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 566 | integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= 567 | dependencies: 568 | array-find-index "^1.0.1" 569 | 570 | dashdash@^1.12.0: 571 | version "1.14.1" 572 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 573 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 574 | dependencies: 575 | assert-plus "^1.0.0" 576 | 577 | debug-log@^1.0.1: 578 | version "1.0.1" 579 | resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" 580 | integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= 581 | 582 | debug@2.6.8: 583 | version "2.6.8" 584 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 585 | integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw= 586 | dependencies: 587 | ms "2.0.0" 588 | 589 | debug@^2.6.3, debug@^2.6.8: 590 | version "2.6.9" 591 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 592 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 593 | dependencies: 594 | ms "2.0.0" 595 | 596 | debug@^3.0.1: 597 | version "3.0.1" 598 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" 599 | integrity sha512-6nVc6S36qbt/mutyt+UGMnawAMrPDZUPQjRZI3FS9tCtDRhvxJbK79unYBLPi+z5SLXQ3ftoVBFCblQtNSls8w== 600 | dependencies: 601 | ms "2.0.0" 602 | 603 | decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: 604 | version "1.2.0" 605 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 606 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 607 | 608 | deep-eql@^3.0.0: 609 | version "3.0.1" 610 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 611 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 612 | dependencies: 613 | type-detect "^4.0.0" 614 | 615 | deep-is@~0.1.3: 616 | version "0.1.3" 617 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 618 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 619 | 620 | default-require-extensions@^1.0.0: 621 | version "1.0.0" 622 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" 623 | integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= 624 | dependencies: 625 | strip-bom "^2.0.0" 626 | 627 | del@^2.0.2: 628 | version "2.2.2" 629 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 630 | integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= 631 | dependencies: 632 | globby "^5.0.0" 633 | is-path-cwd "^1.0.0" 634 | is-path-in-cwd "^1.0.0" 635 | object-assign "^4.0.1" 636 | pify "^2.0.0" 637 | pinkie-promise "^2.0.0" 638 | rimraf "^2.2.8" 639 | 640 | delayed-stream@~1.0.0: 641 | version "1.0.0" 642 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 643 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 644 | 645 | detect-indent@^4.0.0: 646 | version "4.0.0" 647 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 648 | integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= 649 | dependencies: 650 | repeating "^2.0.0" 651 | 652 | diff@3.2.0: 653 | version "3.2.0" 654 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 655 | integrity sha1-yc45Okt8vQsFinJck98pkCeGj/k= 656 | 657 | doctrine@^2.0.0: 658 | version "2.0.0" 659 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 660 | integrity sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM= 661 | dependencies: 662 | esutils "^2.0.2" 663 | isarray "^1.0.0" 664 | 665 | duplexer@^0.1.1: 666 | version "0.1.1" 667 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 668 | integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= 669 | 670 | ecc-jsbn@~0.1.1: 671 | version "0.1.1" 672 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 673 | integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU= 674 | dependencies: 675 | jsbn "~0.1.0" 676 | 677 | error-ex@^1.2.0: 678 | version "1.3.1" 679 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 680 | integrity sha1-+FWobOYa3E6GIcPNoh56dhLDqNw= 681 | dependencies: 682 | is-arrayish "^0.2.1" 683 | 684 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 685 | version "1.0.5" 686 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 687 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 688 | 689 | eslint-scope@^3.7.1: 690 | version "3.7.1" 691 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 692 | integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= 693 | dependencies: 694 | esrecurse "^4.1.0" 695 | estraverse "^4.1.1" 696 | 697 | eslint@^4.7.2: 698 | version "4.7.2" 699 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.7.2.tgz#ff6f5f5193848a27ee9b627be3e73fb9cb5e662e" 700 | integrity sha1-/29fUZOEiifum2J74+c/ucteZi4= 701 | dependencies: 702 | ajv "^5.2.0" 703 | babel-code-frame "^6.22.0" 704 | chalk "^2.1.0" 705 | concat-stream "^1.6.0" 706 | cross-spawn "^5.1.0" 707 | debug "^3.0.1" 708 | doctrine "^2.0.0" 709 | eslint-scope "^3.7.1" 710 | espree "^3.5.1" 711 | esquery "^1.0.0" 712 | estraverse "^4.2.0" 713 | esutils "^2.0.2" 714 | file-entry-cache "^2.0.0" 715 | functional-red-black-tree "^1.0.1" 716 | glob "^7.1.2" 717 | globals "^9.17.0" 718 | ignore "^3.3.3" 719 | imurmurhash "^0.1.4" 720 | inquirer "^3.0.6" 721 | is-resolvable "^1.0.0" 722 | js-yaml "^3.9.1" 723 | json-stable-stringify "^1.0.1" 724 | levn "^0.3.0" 725 | lodash "^4.17.4" 726 | minimatch "^3.0.2" 727 | mkdirp "^0.5.1" 728 | natural-compare "^1.4.0" 729 | optionator "^0.8.2" 730 | path-is-inside "^1.0.2" 731 | pluralize "^7.0.0" 732 | progress "^2.0.0" 733 | require-uncached "^1.0.3" 734 | semver "^5.3.0" 735 | strip-ansi "^4.0.0" 736 | strip-json-comments "~2.0.1" 737 | table "^4.0.1" 738 | text-table "~0.2.0" 739 | 740 | espree@^3.5.1: 741 | version "3.5.1" 742 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" 743 | integrity sha1-DJiLirRttTEAoZVK5LqZXd0n2H4= 744 | dependencies: 745 | acorn "^5.1.1" 746 | acorn-jsx "^3.0.0" 747 | 748 | esprima@^2.6.0: 749 | version "2.7.3" 750 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 751 | integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= 752 | 753 | esprima@^4.0.0: 754 | version "4.0.0" 755 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 756 | integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw== 757 | 758 | esquery@^1.0.0: 759 | version "1.0.0" 760 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 761 | integrity sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo= 762 | dependencies: 763 | estraverse "^4.0.0" 764 | 765 | esrecurse@^4.1.0: 766 | version "4.2.0" 767 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 768 | integrity sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM= 769 | dependencies: 770 | estraverse "^4.1.0" 771 | object-assign "^4.0.1" 772 | 773 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: 774 | version "4.2.0" 775 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 776 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 777 | 778 | esutils@^2.0.2: 779 | version "2.0.2" 780 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 781 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 782 | 783 | execa@^0.7.0: 784 | version "0.7.0" 785 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 786 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 787 | dependencies: 788 | cross-spawn "^5.0.1" 789 | get-stream "^3.0.0" 790 | is-stream "^1.1.0" 791 | npm-run-path "^2.0.0" 792 | p-finally "^1.0.0" 793 | signal-exit "^3.0.0" 794 | strip-eof "^1.0.0" 795 | 796 | expand-brackets@^0.1.4: 797 | version "0.1.5" 798 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 799 | integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 800 | dependencies: 801 | is-posix-bracket "^0.1.0" 802 | 803 | expand-range@^1.8.1: 804 | version "1.8.2" 805 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 806 | integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 807 | dependencies: 808 | fill-range "^2.1.0" 809 | 810 | extend@~3.0.0: 811 | version "3.0.1" 812 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 813 | integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= 814 | 815 | external-editor@^2.0.4: 816 | version "2.0.5" 817 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" 818 | integrity sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w== 819 | dependencies: 820 | iconv-lite "^0.4.17" 821 | jschardet "^1.4.2" 822 | tmp "^0.0.33" 823 | 824 | extglob@^0.3.1: 825 | version "0.3.2" 826 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 827 | integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 828 | dependencies: 829 | is-extglob "^1.0.0" 830 | 831 | extsprintf@1.3.0, extsprintf@^1.2.0: 832 | version "1.3.0" 833 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 834 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 835 | 836 | eye@^0.0.3: 837 | version "0.0.3" 838 | resolved "https://registry.yarnpkg.com/eye/-/eye-0.0.3.tgz#20a82763f19827fb9315664ce6fee381aa1959c7" 839 | integrity sha1-IKgnY/GYJ/uTFWZM5v7jgaoZWcc= 840 | dependencies: 841 | gaze "~0.3.4" 842 | 843 | fast-deep-equal@^1.0.0: 844 | version "1.0.0" 845 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 846 | integrity sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8= 847 | 848 | fast-levenshtein@~2.0.4: 849 | version "2.0.6" 850 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 851 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 852 | 853 | figures@^2.0.0: 854 | version "2.0.0" 855 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 856 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 857 | dependencies: 858 | escape-string-regexp "^1.0.5" 859 | 860 | file-entry-cache@^2.0.0: 861 | version "2.0.0" 862 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 863 | integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= 864 | dependencies: 865 | flat-cache "^1.2.1" 866 | object-assign "^4.0.1" 867 | 868 | filename-regex@^2.0.0: 869 | version "2.0.1" 870 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 871 | integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 872 | 873 | fileset@~0.1.5: 874 | version "0.1.8" 875 | resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.1.8.tgz#506b91a9396eaa7e32fb42a84077c7a0c736b741" 876 | integrity sha1-UGuRqTluqn4y+0KoQHfHoMc2t0E= 877 | dependencies: 878 | glob "3.x" 879 | minimatch "0.x" 880 | 881 | fill-range@^2.1.0: 882 | version "2.2.3" 883 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 884 | integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= 885 | dependencies: 886 | is-number "^2.1.0" 887 | isobject "^2.0.0" 888 | randomatic "^1.1.3" 889 | repeat-element "^1.1.2" 890 | repeat-string "^1.5.2" 891 | 892 | find-cache-dir@^0.1.1: 893 | version "0.1.1" 894 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" 895 | integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= 896 | dependencies: 897 | commondir "^1.0.1" 898 | mkdirp "^0.5.1" 899 | pkg-dir "^1.0.0" 900 | 901 | find-up@^1.0.0: 902 | version "1.1.2" 903 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 904 | integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= 905 | dependencies: 906 | path-exists "^2.0.0" 907 | pinkie-promise "^2.0.0" 908 | 909 | find-up@^2.0.0, find-up@^2.1.0: 910 | version "2.1.0" 911 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 912 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 913 | dependencies: 914 | locate-path "^2.0.0" 915 | 916 | flat-cache@^1.2.1: 917 | version "1.2.2" 918 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 919 | integrity sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y= 920 | dependencies: 921 | circular-json "^0.3.1" 922 | del "^2.0.2" 923 | graceful-fs "^4.1.2" 924 | write "^0.2.1" 925 | 926 | for-in@^1.0.1: 927 | version "1.0.2" 928 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 929 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 930 | 931 | for-own@^0.1.4: 932 | version "0.1.5" 933 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 934 | integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 935 | dependencies: 936 | for-in "^1.0.1" 937 | 938 | foreground-child@^1.5.3, foreground-child@^1.5.6: 939 | version "1.5.6" 940 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" 941 | integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= 942 | dependencies: 943 | cross-spawn "^4" 944 | signal-exit "^3.0.0" 945 | 946 | forever-agent@~0.6.1: 947 | version "0.6.1" 948 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 949 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 950 | 951 | form-data@~2.1.1: 952 | version "2.1.4" 953 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 954 | integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= 955 | dependencies: 956 | asynckit "^0.4.0" 957 | combined-stream "^1.0.5" 958 | mime-types "^2.1.12" 959 | 960 | fs.realpath@^1.0.0: 961 | version "1.0.0" 962 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 963 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 964 | 965 | functional-red-black-tree@^1.0.1: 966 | version "1.0.1" 967 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 968 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 969 | 970 | gaze@~0.3.4: 971 | version "0.3.4" 972 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.3.4.tgz#5f94bdda0afe53bc710969bcd6f282548d60c279" 973 | integrity sha1-X5S92gr+U7xxCWm81vKCVI1gwnk= 974 | dependencies: 975 | fileset "~0.1.5" 976 | minimatch "~0.2.9" 977 | 978 | generate-function@^2.0.0: 979 | version "2.0.0" 980 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 981 | integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ= 982 | 983 | generate-object-property@^1.1.0: 984 | version "1.2.0" 985 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 986 | integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= 987 | dependencies: 988 | is-property "^1.0.0" 989 | 990 | get-caller-file@^1.0.1: 991 | version "1.0.2" 992 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 993 | integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= 994 | 995 | get-func-name@^2.0.0: 996 | version "2.0.0" 997 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 998 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 999 | 1000 | get-stdin@^4.0.1: 1001 | version "4.0.1" 1002 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 1003 | integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= 1004 | 1005 | get-stream@^3.0.0: 1006 | version "3.0.0" 1007 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1008 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 1009 | 1010 | getpass@^0.1.1: 1011 | version "0.1.7" 1012 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1013 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 1014 | dependencies: 1015 | assert-plus "^1.0.0" 1016 | 1017 | glob-base@^0.3.0: 1018 | version "0.3.0" 1019 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1020 | integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 1021 | dependencies: 1022 | glob-parent "^2.0.0" 1023 | is-glob "^2.0.0" 1024 | 1025 | glob-parent@^2.0.0: 1026 | version "2.0.0" 1027 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1028 | integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 1029 | dependencies: 1030 | is-glob "^2.0.0" 1031 | 1032 | glob@3.x: 1033 | version "3.2.11" 1034 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" 1035 | integrity sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0= 1036 | dependencies: 1037 | inherits "2" 1038 | minimatch "0.3" 1039 | 1040 | glob@7.1.1: 1041 | version "7.1.1" 1042 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1043 | integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg= 1044 | dependencies: 1045 | fs.realpath "^1.0.0" 1046 | inflight "^1.0.4" 1047 | inherits "2" 1048 | minimatch "^3.0.2" 1049 | once "^1.3.0" 1050 | path-is-absolute "^1.0.0" 1051 | 1052 | glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2: 1053 | version "7.1.2" 1054 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1055 | integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 1056 | dependencies: 1057 | fs.realpath "^1.0.0" 1058 | inflight "^1.0.4" 1059 | inherits "2" 1060 | minimatch "^3.0.4" 1061 | once "^1.3.0" 1062 | path-is-absolute "^1.0.0" 1063 | 1064 | globals@^9.17.0, globals@^9.18.0: 1065 | version "9.18.0" 1066 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1067 | integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== 1068 | 1069 | globby@^5.0.0: 1070 | version "5.0.0" 1071 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1072 | integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= 1073 | dependencies: 1074 | array-union "^1.0.1" 1075 | arrify "^1.0.0" 1076 | glob "^7.0.3" 1077 | object-assign "^4.0.1" 1078 | pify "^2.0.0" 1079 | pinkie-promise "^2.0.0" 1080 | 1081 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1082 | version "4.1.11" 1083 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1084 | integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= 1085 | 1086 | "graceful-readlink@>= 1.0.0": 1087 | version "1.0.1" 1088 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1089 | integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= 1090 | 1091 | growl@1.9.2: 1092 | version "1.9.2" 1093 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 1094 | integrity sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8= 1095 | 1096 | gzip-size-cli@^2.1.0: 1097 | version "2.1.0" 1098 | resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-2.1.0.tgz#78a1fc3dc399e9d39d9f1f63a7aae38a817e917d" 1099 | integrity sha512-2aFj16SGdAD5FTTqJe4Wdzs5d05MnHYLr5lwmxdFjiWzJWhUI+L48beS0Vmlg6s9Kqe+bfQ42WskPZdzTwPH4w== 1100 | dependencies: 1101 | gzip-size "^4.0.0" 1102 | meow "^3.7.0" 1103 | pretty-bytes "^4.0.2" 1104 | 1105 | gzip-size@^4.0.0: 1106 | version "4.0.0" 1107 | resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.0.0.tgz#a80e13e18938bcb2e6702fec606f5cf8b666db3a" 1108 | integrity sha512-6SWfFRd8r8VTKTpJCR7h/T6IbCaK+jM/n2gB1+pV3IrKcrLO1WTb8ZWdaRy1T/nwOz80cp4gAJf8sujpZxfA1w== 1109 | dependencies: 1110 | duplexer "^0.1.1" 1111 | pify "^3.0.0" 1112 | 1113 | handlebars@^4.0.3: 1114 | version "4.0.10" 1115 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" 1116 | integrity sha1-PTDHGLCaPZbyPqTMH0A8TTup/08= 1117 | dependencies: 1118 | async "^1.4.0" 1119 | optimist "^0.6.1" 1120 | source-map "^0.4.4" 1121 | optionalDependencies: 1122 | uglify-js "^2.6" 1123 | 1124 | har-validator@~2.0.6: 1125 | version "2.0.6" 1126 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 1127 | integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0= 1128 | dependencies: 1129 | chalk "^1.1.1" 1130 | commander "^2.9.0" 1131 | is-my-json-valid "^2.12.4" 1132 | pinkie-promise "^2.0.0" 1133 | 1134 | has-ansi@^2.0.0: 1135 | version "2.0.0" 1136 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1137 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 1138 | dependencies: 1139 | ansi-regex "^2.0.0" 1140 | 1141 | has-flag@^1.0.0: 1142 | version "1.0.0" 1143 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1144 | integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= 1145 | 1146 | has-flag@^2.0.0: 1147 | version "2.0.0" 1148 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 1149 | integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= 1150 | 1151 | hawk@~3.1.3: 1152 | version "3.1.3" 1153 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1154 | integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= 1155 | dependencies: 1156 | boom "2.x.x" 1157 | cryptiles "2.x.x" 1158 | hoek "2.x.x" 1159 | sntp "1.x.x" 1160 | 1161 | he@1.1.1: 1162 | version "1.1.1" 1163 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 1164 | integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= 1165 | 1166 | hoek@2.x.x: 1167 | version "2.16.3" 1168 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1169 | integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= 1170 | 1171 | hosted-git-info@^2.1.4: 1172 | version "2.5.0" 1173 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 1174 | integrity sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg== 1175 | 1176 | http-signature@~1.1.0: 1177 | version "1.1.1" 1178 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1179 | integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= 1180 | dependencies: 1181 | assert-plus "^0.2.0" 1182 | jsprim "^1.2.2" 1183 | sshpk "^1.7.0" 1184 | 1185 | iconv-lite@^0.4.17: 1186 | version "0.4.19" 1187 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 1188 | integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== 1189 | 1190 | ignore@^3.3.3: 1191 | version "3.3.5" 1192 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" 1193 | integrity sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw== 1194 | 1195 | imurmurhash@^0.1.4: 1196 | version "0.1.4" 1197 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1198 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1199 | 1200 | indent-string@^2.1.0: 1201 | version "2.1.0" 1202 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1203 | integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= 1204 | dependencies: 1205 | repeating "^2.0.0" 1206 | 1207 | inflight@^1.0.4: 1208 | version "1.0.6" 1209 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1210 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1211 | dependencies: 1212 | once "^1.3.0" 1213 | wrappy "1" 1214 | 1215 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1216 | version "2.0.3" 1217 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1218 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1219 | 1220 | inquirer@^3.0.6: 1221 | version "3.3.0" 1222 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 1223 | integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== 1224 | dependencies: 1225 | ansi-escapes "^3.0.0" 1226 | chalk "^2.0.0" 1227 | cli-cursor "^2.1.0" 1228 | cli-width "^2.0.0" 1229 | external-editor "^2.0.4" 1230 | figures "^2.0.0" 1231 | lodash "^4.3.0" 1232 | mute-stream "0.0.7" 1233 | run-async "^2.2.0" 1234 | rx-lite "^4.0.8" 1235 | rx-lite-aggregates "^4.0.8" 1236 | string-width "^2.1.0" 1237 | strip-ansi "^4.0.0" 1238 | through "^2.3.6" 1239 | 1240 | invariant@^2.2.2: 1241 | version "2.2.2" 1242 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1243 | integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A= 1244 | dependencies: 1245 | loose-envify "^1.0.0" 1246 | 1247 | invert-kv@^1.0.0: 1248 | version "1.0.0" 1249 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1250 | integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= 1251 | 1252 | is-arrayish@^0.2.1: 1253 | version "0.2.1" 1254 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1255 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1256 | 1257 | is-buffer@^1.1.5: 1258 | version "1.1.5" 1259 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1260 | integrity sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw= 1261 | 1262 | is-builtin-module@^1.0.0: 1263 | version "1.0.0" 1264 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1265 | integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= 1266 | dependencies: 1267 | builtin-modules "^1.0.0" 1268 | 1269 | is-dotfile@^1.0.0: 1270 | version "1.0.3" 1271 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1272 | integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 1273 | 1274 | is-equal-shallow@^0.1.3: 1275 | version "0.1.3" 1276 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1277 | integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 1278 | dependencies: 1279 | is-primitive "^2.0.0" 1280 | 1281 | is-extendable@^0.1.1: 1282 | version "0.1.1" 1283 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1284 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1285 | 1286 | is-extglob@^1.0.0: 1287 | version "1.0.0" 1288 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1289 | integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 1290 | 1291 | is-finite@^1.0.0: 1292 | version "1.0.2" 1293 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1294 | integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= 1295 | dependencies: 1296 | number-is-nan "^1.0.0" 1297 | 1298 | is-fullwidth-code-point@^1.0.0: 1299 | version "1.0.0" 1300 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1301 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1302 | dependencies: 1303 | number-is-nan "^1.0.0" 1304 | 1305 | is-fullwidth-code-point@^2.0.0: 1306 | version "2.0.0" 1307 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1308 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1309 | 1310 | is-glob@^2.0.0, is-glob@^2.0.1: 1311 | version "2.0.1" 1312 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1313 | integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 1314 | dependencies: 1315 | is-extglob "^1.0.0" 1316 | 1317 | is-my-json-valid@^2.12.4: 1318 | version "2.16.1" 1319 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" 1320 | integrity sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ== 1321 | dependencies: 1322 | generate-function "^2.0.0" 1323 | generate-object-property "^1.1.0" 1324 | jsonpointer "^4.0.0" 1325 | xtend "^4.0.0" 1326 | 1327 | is-number@^2.1.0: 1328 | version "2.1.0" 1329 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1330 | integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 1331 | dependencies: 1332 | kind-of "^3.0.2" 1333 | 1334 | is-number@^3.0.0: 1335 | version "3.0.0" 1336 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1337 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1338 | dependencies: 1339 | kind-of "^3.0.2" 1340 | 1341 | is-path-cwd@^1.0.0: 1342 | version "1.0.0" 1343 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1344 | integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= 1345 | 1346 | is-path-in-cwd@^1.0.0: 1347 | version "1.0.0" 1348 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1349 | integrity sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw= 1350 | dependencies: 1351 | is-path-inside "^1.0.0" 1352 | 1353 | is-path-inside@^1.0.0: 1354 | version "1.0.0" 1355 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1356 | integrity sha1-/AbloWg/vaE95mev9xe7wQpI838= 1357 | dependencies: 1358 | path-is-inside "^1.0.1" 1359 | 1360 | is-posix-bracket@^0.1.0: 1361 | version "0.1.1" 1362 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1363 | integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 1364 | 1365 | is-primitive@^2.0.0: 1366 | version "2.0.0" 1367 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1368 | integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 1369 | 1370 | is-promise@^2.1.0: 1371 | version "2.1.0" 1372 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1373 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1374 | 1375 | is-property@^1.0.0: 1376 | version "1.0.2" 1377 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1378 | integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= 1379 | 1380 | is-resolvable@^1.0.0: 1381 | version "1.0.0" 1382 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 1383 | integrity sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI= 1384 | dependencies: 1385 | tryit "^1.0.1" 1386 | 1387 | is-stream@^1.1.0: 1388 | version "1.1.0" 1389 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1390 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1391 | 1392 | is-typedarray@~1.0.0: 1393 | version "1.0.0" 1394 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1395 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1396 | 1397 | is-utf8@^0.2.0: 1398 | version "0.2.1" 1399 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1400 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= 1401 | 1402 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1403 | version "1.0.0" 1404 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1405 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1406 | 1407 | isexe@^2.0.0: 1408 | version "2.0.0" 1409 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1410 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1411 | 1412 | isobject@^2.0.0: 1413 | version "2.1.0" 1414 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1415 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1416 | dependencies: 1417 | isarray "1.0.0" 1418 | 1419 | isstream@~0.1.2: 1420 | version "0.1.2" 1421 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1422 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1423 | 1424 | istanbul-lib-coverage@^1.1.1: 1425 | version "1.1.1" 1426 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" 1427 | integrity sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q== 1428 | 1429 | istanbul-lib-hook@^1.0.7: 1430 | version "1.0.7" 1431 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" 1432 | integrity sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ== 1433 | dependencies: 1434 | append-transform "^0.4.0" 1435 | 1436 | istanbul-lib-instrument@^1.8.0: 1437 | version "1.8.0" 1438 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" 1439 | integrity sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI= 1440 | dependencies: 1441 | babel-generator "^6.18.0" 1442 | babel-template "^6.16.0" 1443 | babel-traverse "^6.18.0" 1444 | babel-types "^6.18.0" 1445 | babylon "^6.18.0" 1446 | istanbul-lib-coverage "^1.1.1" 1447 | semver "^5.3.0" 1448 | 1449 | istanbul-lib-report@^1.1.1: 1450 | version "1.1.1" 1451 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" 1452 | integrity sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q== 1453 | dependencies: 1454 | istanbul-lib-coverage "^1.1.1" 1455 | mkdirp "^0.5.1" 1456 | path-parse "^1.0.5" 1457 | supports-color "^3.1.2" 1458 | 1459 | istanbul-lib-source-maps@^1.2.1: 1460 | version "1.2.1" 1461 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" 1462 | integrity sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w== 1463 | dependencies: 1464 | debug "^2.6.3" 1465 | istanbul-lib-coverage "^1.1.1" 1466 | mkdirp "^0.5.1" 1467 | rimraf "^2.6.1" 1468 | source-map "^0.5.3" 1469 | 1470 | istanbul-reports@^1.1.1: 1471 | version "1.1.2" 1472 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" 1473 | integrity sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8= 1474 | dependencies: 1475 | handlebars "^4.0.3" 1476 | 1477 | js-tokens@^3.0.0, js-tokens@^3.0.2: 1478 | version "3.0.2" 1479 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1480 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 1481 | 1482 | js-yaml@3.6.1: 1483 | version "3.6.1" 1484 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" 1485 | integrity sha1-bl/mfYsgXOTSL60Ft3geja3MSzA= 1486 | dependencies: 1487 | argparse "^1.0.7" 1488 | esprima "^2.6.0" 1489 | 1490 | js-yaml@^3.9.1: 1491 | version "3.10.0" 1492 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" 1493 | integrity sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA== 1494 | dependencies: 1495 | argparse "^1.0.7" 1496 | esprima "^4.0.0" 1497 | 1498 | jsbn@~0.1.0: 1499 | version "0.1.1" 1500 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1501 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1502 | 1503 | jschardet@^1.4.2: 1504 | version "1.5.1" 1505 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" 1506 | integrity sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A== 1507 | 1508 | jsesc@^1.3.0: 1509 | version "1.3.0" 1510 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1511 | integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= 1512 | 1513 | json-schema-traverse@^0.3.0: 1514 | version "0.3.1" 1515 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1516 | integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= 1517 | 1518 | json-schema@0.2.3: 1519 | version "0.2.3" 1520 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1521 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1522 | 1523 | json-stable-stringify@^1.0.1: 1524 | version "1.0.1" 1525 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1526 | integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= 1527 | dependencies: 1528 | jsonify "~0.0.0" 1529 | 1530 | json-stringify-safe@~5.0.1: 1531 | version "5.0.1" 1532 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1533 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1534 | 1535 | json3@3.3.2: 1536 | version "3.3.2" 1537 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1538 | integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= 1539 | 1540 | jsonify@~0.0.0: 1541 | version "0.0.0" 1542 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1543 | integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= 1544 | 1545 | jsonpointer@^4.0.0: 1546 | version "4.0.1" 1547 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1548 | integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= 1549 | 1550 | jsprim@^1.2.2: 1551 | version "1.4.1" 1552 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1553 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1554 | dependencies: 1555 | assert-plus "1.0.0" 1556 | extsprintf "1.3.0" 1557 | json-schema "0.2.3" 1558 | verror "1.10.0" 1559 | 1560 | kind-of@^3.0.2: 1561 | version "3.2.2" 1562 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1563 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1564 | dependencies: 1565 | is-buffer "^1.1.5" 1566 | 1567 | kind-of@^4.0.0: 1568 | version "4.0.0" 1569 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1570 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1571 | dependencies: 1572 | is-buffer "^1.1.5" 1573 | 1574 | lazy-cache@^1.0.3: 1575 | version "1.0.4" 1576 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1577 | integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= 1578 | 1579 | lcid@^1.0.0: 1580 | version "1.0.0" 1581 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1582 | integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= 1583 | dependencies: 1584 | invert-kv "^1.0.0" 1585 | 1586 | lcov-parse@0.0.10: 1587 | version "0.0.10" 1588 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" 1589 | integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= 1590 | 1591 | levn@^0.3.0, levn@~0.3.0: 1592 | version "0.3.0" 1593 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1594 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1595 | dependencies: 1596 | prelude-ls "~1.1.2" 1597 | type-check "~0.3.2" 1598 | 1599 | load-json-file@^1.0.0: 1600 | version "1.1.0" 1601 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1602 | integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= 1603 | dependencies: 1604 | graceful-fs "^4.1.2" 1605 | parse-json "^2.2.0" 1606 | pify "^2.0.0" 1607 | pinkie-promise "^2.0.0" 1608 | strip-bom "^2.0.0" 1609 | 1610 | load-json-file@^2.0.0: 1611 | version "2.0.0" 1612 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1613 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1614 | dependencies: 1615 | graceful-fs "^4.1.2" 1616 | parse-json "^2.2.0" 1617 | pify "^2.0.0" 1618 | strip-bom "^3.0.0" 1619 | 1620 | locate-path@^2.0.0: 1621 | version "2.0.0" 1622 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1623 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1624 | dependencies: 1625 | p-locate "^2.0.0" 1626 | path-exists "^3.0.0" 1627 | 1628 | lodash._baseassign@^3.0.0: 1629 | version "3.2.0" 1630 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 1631 | integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= 1632 | dependencies: 1633 | lodash._basecopy "^3.0.0" 1634 | lodash.keys "^3.0.0" 1635 | 1636 | lodash._basecopy@^3.0.0: 1637 | version "3.0.1" 1638 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 1639 | integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= 1640 | 1641 | lodash._basecreate@^3.0.0: 1642 | version "3.0.3" 1643 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 1644 | integrity sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE= 1645 | 1646 | lodash._getnative@^3.0.0: 1647 | version "3.9.1" 1648 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 1649 | integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= 1650 | 1651 | lodash._isiterateecall@^3.0.0: 1652 | version "3.0.9" 1653 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 1654 | integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= 1655 | 1656 | lodash.create@3.1.1: 1657 | version "3.1.1" 1658 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 1659 | integrity sha1-1/KEnw29p+BGgruM1yqwIkYd6+c= 1660 | dependencies: 1661 | lodash._baseassign "^3.0.0" 1662 | lodash._basecreate "^3.0.0" 1663 | lodash._isiterateecall "^3.0.0" 1664 | 1665 | lodash.isarguments@^3.0.0: 1666 | version "3.1.0" 1667 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 1668 | integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= 1669 | 1670 | lodash.isarray@^3.0.0: 1671 | version "3.0.4" 1672 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 1673 | integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= 1674 | 1675 | lodash.keys@^3.0.0: 1676 | version "3.1.2" 1677 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 1678 | integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= 1679 | dependencies: 1680 | lodash._getnative "^3.0.0" 1681 | lodash.isarguments "^3.0.0" 1682 | lodash.isarray "^3.0.0" 1683 | 1684 | lodash@^4.0.0, lodash@^4.17.4, lodash@^4.3.0: 1685 | version "4.17.4" 1686 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1687 | integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= 1688 | 1689 | log-driver@1.2.5: 1690 | version "1.2.5" 1691 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" 1692 | integrity sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY= 1693 | 1694 | longest@^1.0.1: 1695 | version "1.0.1" 1696 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1697 | integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= 1698 | 1699 | loose-envify@^1.0.0: 1700 | version "1.3.1" 1701 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1702 | integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= 1703 | dependencies: 1704 | js-tokens "^3.0.0" 1705 | 1706 | loud-rejection@^1.0.0: 1707 | version "1.6.0" 1708 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1709 | integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= 1710 | dependencies: 1711 | currently-unhandled "^0.4.1" 1712 | signal-exit "^3.0.0" 1713 | 1714 | lru-cache@2: 1715 | version "2.7.3" 1716 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 1717 | integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= 1718 | 1719 | lru-cache@^4.0.1: 1720 | version "4.1.1" 1721 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 1722 | integrity sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew== 1723 | dependencies: 1724 | pseudomap "^1.0.2" 1725 | yallist "^2.1.2" 1726 | 1727 | map-obj@^1.0.0, map-obj@^1.0.1: 1728 | version "1.0.1" 1729 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1730 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 1731 | 1732 | md5-hex@^1.2.0: 1733 | version "1.3.0" 1734 | resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" 1735 | integrity sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ= 1736 | dependencies: 1737 | md5-o-matic "^0.1.1" 1738 | 1739 | md5-o-matic@^0.1.1: 1740 | version "0.1.1" 1741 | resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" 1742 | integrity sha1-givM1l4RfFFPqxdrJZRdVBAKA8M= 1743 | 1744 | mem@^1.1.0: 1745 | version "1.1.0" 1746 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 1747 | integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= 1748 | dependencies: 1749 | mimic-fn "^1.0.0" 1750 | 1751 | meow@^3.7.0: 1752 | version "3.7.0" 1753 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1754 | integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= 1755 | dependencies: 1756 | camelcase-keys "^2.0.0" 1757 | decamelize "^1.1.2" 1758 | loud-rejection "^1.0.0" 1759 | map-obj "^1.0.1" 1760 | minimist "^1.1.3" 1761 | normalize-package-data "^2.3.4" 1762 | object-assign "^4.0.1" 1763 | read-pkg-up "^1.0.1" 1764 | redent "^1.0.0" 1765 | trim-newlines "^1.0.0" 1766 | 1767 | merge-source-map@^1.0.2: 1768 | version "1.0.4" 1769 | resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" 1770 | integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= 1771 | dependencies: 1772 | source-map "^0.5.6" 1773 | 1774 | micromatch@^2.3.11: 1775 | version "2.3.11" 1776 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1777 | integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 1778 | dependencies: 1779 | arr-diff "^2.0.0" 1780 | array-unique "^0.2.1" 1781 | braces "^1.8.2" 1782 | expand-brackets "^0.1.4" 1783 | extglob "^0.3.1" 1784 | filename-regex "^2.0.0" 1785 | is-extglob "^1.0.0" 1786 | is-glob "^2.0.1" 1787 | kind-of "^3.0.2" 1788 | normalize-path "^2.0.1" 1789 | object.omit "^2.0.0" 1790 | parse-glob "^3.0.4" 1791 | regex-cache "^0.4.2" 1792 | 1793 | mime-db@~1.30.0: 1794 | version "1.30.0" 1795 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 1796 | integrity sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE= 1797 | 1798 | mime-types@^2.1.12, mime-types@~2.1.7: 1799 | version "2.1.17" 1800 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 1801 | integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo= 1802 | dependencies: 1803 | mime-db "~1.30.0" 1804 | 1805 | mimic-fn@^1.0.0: 1806 | version "1.1.0" 1807 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 1808 | integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg= 1809 | 1810 | minimatch@0.3: 1811 | version "0.3.0" 1812 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" 1813 | integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0= 1814 | dependencies: 1815 | lru-cache "2" 1816 | sigmund "~1.0.0" 1817 | 1818 | minimatch@0.x: 1819 | version "0.4.0" 1820 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.4.0.tgz#bd2c7d060d2c8c8fd7cde7f1f2ed2d5b270fdb1b" 1821 | integrity sha1-vSx9Bg0sjI/Xzefx8u0tWycP2xs= 1822 | dependencies: 1823 | lru-cache "2" 1824 | sigmund "~1.0.0" 1825 | 1826 | minimatch@^3.0.2, minimatch@^3.0.4: 1827 | version "3.0.4" 1828 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1829 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1830 | dependencies: 1831 | brace-expansion "^1.1.7" 1832 | 1833 | minimatch@~0.2.9: 1834 | version "0.2.14" 1835 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" 1836 | integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo= 1837 | dependencies: 1838 | lru-cache "2" 1839 | sigmund "~1.0.0" 1840 | 1841 | minimist@0.0.8: 1842 | version "0.0.8" 1843 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1844 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1845 | 1846 | minimist@1.2.0, minimist@^1.1.3: 1847 | version "1.2.0" 1848 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1849 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1850 | 1851 | minimist@~0.0.1: 1852 | version "0.0.10" 1853 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1854 | integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= 1855 | 1856 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 1857 | version "0.5.1" 1858 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1859 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1860 | dependencies: 1861 | minimist "0.0.8" 1862 | 1863 | mocha@^3.5.3: 1864 | version "3.5.3" 1865 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" 1866 | integrity sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg== 1867 | dependencies: 1868 | browser-stdout "1.3.0" 1869 | commander "2.9.0" 1870 | debug "2.6.8" 1871 | diff "3.2.0" 1872 | escape-string-regexp "1.0.5" 1873 | glob "7.1.1" 1874 | growl "1.9.2" 1875 | he "1.1.1" 1876 | json3 "3.3.2" 1877 | lodash.create "3.1.1" 1878 | mkdirp "0.5.1" 1879 | supports-color "3.1.2" 1880 | 1881 | ms@2.0.0: 1882 | version "2.0.0" 1883 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1884 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1885 | 1886 | mute-stream@0.0.7: 1887 | version "0.0.7" 1888 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1889 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 1890 | 1891 | natural-compare@^1.4.0: 1892 | version "1.4.0" 1893 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1894 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1895 | 1896 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 1897 | version "2.4.0" 1898 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1899 | integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== 1900 | dependencies: 1901 | hosted-git-info "^2.1.4" 1902 | is-builtin-module "^1.0.0" 1903 | semver "2 || 3 || 4 || 5" 1904 | validate-npm-package-license "^3.0.1" 1905 | 1906 | normalize-path@^2.0.1: 1907 | version "2.1.1" 1908 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1909 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 1910 | dependencies: 1911 | remove-trailing-separator "^1.0.1" 1912 | 1913 | npm-run-path@^2.0.0: 1914 | version "2.0.2" 1915 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1916 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1917 | dependencies: 1918 | path-key "^2.0.0" 1919 | 1920 | number-is-nan@^1.0.0: 1921 | version "1.0.1" 1922 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1923 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1924 | 1925 | nyc@^11.2.1: 1926 | version "11.2.1" 1927 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.2.1.tgz#ad850afe9dbad7f4970728b4b2e47fed1c38721c" 1928 | integrity sha1-rYUK/p261/SXByi0suR/7Rw4chw= 1929 | dependencies: 1930 | archy "^1.0.0" 1931 | arrify "^1.0.1" 1932 | caching-transform "^1.0.0" 1933 | convert-source-map "^1.3.0" 1934 | debug-log "^1.0.1" 1935 | default-require-extensions "^1.0.0" 1936 | find-cache-dir "^0.1.1" 1937 | find-up "^2.1.0" 1938 | foreground-child "^1.5.3" 1939 | glob "^7.0.6" 1940 | istanbul-lib-coverage "^1.1.1" 1941 | istanbul-lib-hook "^1.0.7" 1942 | istanbul-lib-instrument "^1.8.0" 1943 | istanbul-lib-report "^1.1.1" 1944 | istanbul-lib-source-maps "^1.2.1" 1945 | istanbul-reports "^1.1.1" 1946 | md5-hex "^1.2.0" 1947 | merge-source-map "^1.0.2" 1948 | micromatch "^2.3.11" 1949 | mkdirp "^0.5.0" 1950 | resolve-from "^2.0.0" 1951 | rimraf "^2.5.4" 1952 | signal-exit "^3.0.1" 1953 | spawn-wrap "^1.3.8" 1954 | test-exclude "^4.1.1" 1955 | yargs "^8.0.1" 1956 | yargs-parser "^5.0.0" 1957 | 1958 | oauth-sign@~0.8.1: 1959 | version "0.8.2" 1960 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1961 | integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= 1962 | 1963 | object-assign@^4.0.1, object-assign@^4.1.0: 1964 | version "4.1.1" 1965 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1966 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1967 | 1968 | object.omit@^2.0.0: 1969 | version "2.0.1" 1970 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1971 | integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 1972 | dependencies: 1973 | for-own "^0.1.4" 1974 | is-extendable "^0.1.1" 1975 | 1976 | once@^1.3.0: 1977 | version "1.4.0" 1978 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1979 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1980 | dependencies: 1981 | wrappy "1" 1982 | 1983 | onetime@^2.0.0: 1984 | version "2.0.1" 1985 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1986 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 1987 | dependencies: 1988 | mimic-fn "^1.0.0" 1989 | 1990 | optimist@^0.6.1: 1991 | version "0.6.1" 1992 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1993 | integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= 1994 | dependencies: 1995 | minimist "~0.0.1" 1996 | wordwrap "~0.0.2" 1997 | 1998 | optionator@^0.8.2: 1999 | version "0.8.2" 2000 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2001 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 2002 | dependencies: 2003 | deep-is "~0.1.3" 2004 | fast-levenshtein "~2.0.4" 2005 | levn "~0.3.0" 2006 | prelude-ls "~1.1.2" 2007 | type-check "~0.3.2" 2008 | wordwrap "~1.0.0" 2009 | 2010 | os-homedir@^1.0.1: 2011 | version "1.0.2" 2012 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2013 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 2014 | 2015 | os-locale@^2.0.0: 2016 | version "2.1.0" 2017 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 2018 | integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== 2019 | dependencies: 2020 | execa "^0.7.0" 2021 | lcid "^1.0.0" 2022 | mem "^1.1.0" 2023 | 2024 | os-tmpdir@~1.0.2: 2025 | version "1.0.2" 2026 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2027 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2028 | 2029 | p-finally@^1.0.0: 2030 | version "1.0.0" 2031 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2032 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 2033 | 2034 | p-limit@^1.1.0: 2035 | version "1.1.0" 2036 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 2037 | integrity sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw= 2038 | 2039 | p-locate@^2.0.0: 2040 | version "2.0.0" 2041 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2042 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 2043 | dependencies: 2044 | p-limit "^1.1.0" 2045 | 2046 | parse-glob@^3.0.4: 2047 | version "3.0.4" 2048 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2049 | integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 2050 | dependencies: 2051 | glob-base "^0.3.0" 2052 | is-dotfile "^1.0.0" 2053 | is-extglob "^1.0.0" 2054 | is-glob "^2.0.0" 2055 | 2056 | parse-json@^2.2.0: 2057 | version "2.2.0" 2058 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2059 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 2060 | dependencies: 2061 | error-ex "^1.2.0" 2062 | 2063 | path-exists@^2.0.0: 2064 | version "2.1.0" 2065 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2066 | integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= 2067 | dependencies: 2068 | pinkie-promise "^2.0.0" 2069 | 2070 | path-exists@^3.0.0: 2071 | version "3.0.0" 2072 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2073 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 2074 | 2075 | path-is-absolute@^1.0.0: 2076 | version "1.0.1" 2077 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2078 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2079 | 2080 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 2081 | version "1.0.2" 2082 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2083 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 2084 | 2085 | path-key@^2.0.0: 2086 | version "2.0.1" 2087 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2088 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2089 | 2090 | path-parse@^1.0.5: 2091 | version "1.0.5" 2092 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2093 | integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= 2094 | 2095 | path-type@^1.0.0: 2096 | version "1.1.0" 2097 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2098 | integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= 2099 | dependencies: 2100 | graceful-fs "^4.1.2" 2101 | pify "^2.0.0" 2102 | pinkie-promise "^2.0.0" 2103 | 2104 | path-type@^2.0.0: 2105 | version "2.0.0" 2106 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 2107 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 2108 | dependencies: 2109 | pify "^2.0.0" 2110 | 2111 | pathval@^1.0.0: 2112 | version "1.1.0" 2113 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 2114 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 2115 | 2116 | pify@^2.0.0: 2117 | version "2.3.0" 2118 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2119 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 2120 | 2121 | pify@^3.0.0: 2122 | version "3.0.0" 2123 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2124 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 2125 | 2126 | pinkie-promise@^2.0.0: 2127 | version "2.0.1" 2128 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2129 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 2130 | dependencies: 2131 | pinkie "^2.0.0" 2132 | 2133 | pinkie@^2.0.0: 2134 | version "2.0.4" 2135 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2136 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 2137 | 2138 | pkg-dir@^1.0.0: 2139 | version "1.0.0" 2140 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 2141 | integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= 2142 | dependencies: 2143 | find-up "^1.0.0" 2144 | 2145 | pluralize@^7.0.0: 2146 | version "7.0.0" 2147 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 2148 | integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== 2149 | 2150 | prelude-ls@~1.1.2: 2151 | version "1.1.2" 2152 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2153 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2154 | 2155 | preserve@^0.2.0: 2156 | version "0.2.0" 2157 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2158 | integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 2159 | 2160 | pretty-bytes@^4.0.2: 2161 | version "4.0.2" 2162 | resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" 2163 | integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= 2164 | 2165 | process-nextick-args@~1.0.6: 2166 | version "1.0.7" 2167 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2168 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= 2169 | 2170 | progress@^2.0.0: 2171 | version "2.0.0" 2172 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 2173 | integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= 2174 | 2175 | prop-factory@^1.0.0: 2176 | version "1.0.0" 2177 | resolved "https://registry.yarnpkg.com/prop-factory/-/prop-factory-1.0.0.tgz#1a1f953b10be675b5524f2273e38dfba18151ae6" 2178 | integrity sha1-Gh+VOxC+Z1tVJPInPjjfuhgVGuY= 2179 | 2180 | pseudomap@^1.0.2: 2181 | version "1.0.2" 2182 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2183 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2184 | 2185 | punycode@^1.4.1: 2186 | version "1.4.1" 2187 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2188 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 2189 | 2190 | qs@~6.3.0: 2191 | version "6.3.2" 2192 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" 2193 | integrity sha1-51vV9uJoEioqDgvaYwslUMFmUCw= 2194 | 2195 | randomatic@^1.1.3: 2196 | version "1.1.7" 2197 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" 2198 | integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== 2199 | dependencies: 2200 | is-number "^3.0.0" 2201 | kind-of "^4.0.0" 2202 | 2203 | read-pkg-up@^1.0.1: 2204 | version "1.0.1" 2205 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2206 | integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= 2207 | dependencies: 2208 | find-up "^1.0.0" 2209 | read-pkg "^1.0.0" 2210 | 2211 | read-pkg-up@^2.0.0: 2212 | version "2.0.0" 2213 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 2214 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 2215 | dependencies: 2216 | find-up "^2.0.0" 2217 | read-pkg "^2.0.0" 2218 | 2219 | read-pkg@^1.0.0: 2220 | version "1.1.0" 2221 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2222 | integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= 2223 | dependencies: 2224 | load-json-file "^1.0.0" 2225 | normalize-package-data "^2.3.2" 2226 | path-type "^1.0.0" 2227 | 2228 | read-pkg@^2.0.0: 2229 | version "2.0.0" 2230 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2231 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 2232 | dependencies: 2233 | load-json-file "^2.0.0" 2234 | normalize-package-data "^2.3.2" 2235 | path-type "^2.0.0" 2236 | 2237 | readable-stream@^2.2.2: 2238 | version "2.3.3" 2239 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 2240 | integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== 2241 | dependencies: 2242 | core-util-is "~1.0.0" 2243 | inherits "~2.0.3" 2244 | isarray "~1.0.0" 2245 | process-nextick-args "~1.0.6" 2246 | safe-buffer "~5.1.1" 2247 | string_decoder "~1.0.3" 2248 | util-deprecate "~1.0.1" 2249 | 2250 | redent@^1.0.0: 2251 | version "1.0.0" 2252 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 2253 | integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= 2254 | dependencies: 2255 | indent-string "^2.1.0" 2256 | strip-indent "^1.0.1" 2257 | 2258 | regenerator-runtime@^0.11.0: 2259 | version "0.11.0" 2260 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" 2261 | integrity sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A== 2262 | 2263 | regex-cache@^0.4.2: 2264 | version "0.4.4" 2265 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2266 | integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 2267 | dependencies: 2268 | is-equal-shallow "^0.1.3" 2269 | 2270 | remove-trailing-separator@^1.0.1: 2271 | version "1.1.0" 2272 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2273 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2274 | 2275 | repeat-element@^1.1.2: 2276 | version "1.1.2" 2277 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2278 | integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= 2279 | 2280 | repeat-string@^1.5.2: 2281 | version "1.6.1" 2282 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2283 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2284 | 2285 | repeating@^2.0.0: 2286 | version "2.0.1" 2287 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2288 | integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= 2289 | dependencies: 2290 | is-finite "^1.0.0" 2291 | 2292 | request@2.79.0: 2293 | version "2.79.0" 2294 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 2295 | integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4= 2296 | dependencies: 2297 | aws-sign2 "~0.6.0" 2298 | aws4 "^1.2.1" 2299 | caseless "~0.11.0" 2300 | combined-stream "~1.0.5" 2301 | extend "~3.0.0" 2302 | forever-agent "~0.6.1" 2303 | form-data "~2.1.1" 2304 | har-validator "~2.0.6" 2305 | hawk "~3.1.3" 2306 | http-signature "~1.1.0" 2307 | is-typedarray "~1.0.0" 2308 | isstream "~0.1.2" 2309 | json-stringify-safe "~5.0.1" 2310 | mime-types "~2.1.7" 2311 | oauth-sign "~0.8.1" 2312 | qs "~6.3.0" 2313 | stringstream "~0.0.4" 2314 | tough-cookie "~2.3.0" 2315 | tunnel-agent "~0.4.1" 2316 | uuid "^3.0.0" 2317 | 2318 | require-directory@^2.1.1: 2319 | version "2.1.1" 2320 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2321 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2322 | 2323 | require-main-filename@^1.0.1: 2324 | version "1.0.1" 2325 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2326 | integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= 2327 | 2328 | require-uncached@^1.0.3: 2329 | version "1.0.3" 2330 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2331 | integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= 2332 | dependencies: 2333 | caller-path "^0.1.0" 2334 | resolve-from "^1.0.0" 2335 | 2336 | resolve-from@^1.0.0: 2337 | version "1.0.1" 2338 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 2339 | integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= 2340 | 2341 | resolve-from@^2.0.0: 2342 | version "2.0.0" 2343 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 2344 | integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= 2345 | 2346 | restore-cursor@^2.0.0: 2347 | version "2.0.0" 2348 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 2349 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 2350 | dependencies: 2351 | onetime "^2.0.0" 2352 | signal-exit "^3.0.2" 2353 | 2354 | right-align@^0.1.1: 2355 | version "0.1.3" 2356 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 2357 | integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= 2358 | dependencies: 2359 | align-text "^0.1.1" 2360 | 2361 | rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1: 2362 | version "2.6.2" 2363 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2364 | integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== 2365 | dependencies: 2366 | glob "^7.0.5" 2367 | 2368 | run-async@^2.2.0: 2369 | version "2.3.0" 2370 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 2371 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 2372 | dependencies: 2373 | is-promise "^2.1.0" 2374 | 2375 | rx-lite-aggregates@^4.0.8: 2376 | version "4.0.8" 2377 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 2378 | integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= 2379 | dependencies: 2380 | rx-lite "*" 2381 | 2382 | rx-lite@*, rx-lite@^4.0.8: 2383 | version "4.0.8" 2384 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 2385 | integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= 2386 | 2387 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2388 | version "5.1.1" 2389 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 2390 | integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== 2391 | 2392 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 2393 | version "5.4.1" 2394 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 2395 | integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== 2396 | 2397 | set-blocking@^2.0.0: 2398 | version "2.0.0" 2399 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2400 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2401 | 2402 | shebang-command@^1.2.0: 2403 | version "1.2.0" 2404 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2405 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2406 | dependencies: 2407 | shebang-regex "^1.0.0" 2408 | 2409 | shebang-regex@^1.0.0: 2410 | version "1.0.0" 2411 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2412 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2413 | 2414 | sigmund@~1.0.0: 2415 | version "1.0.1" 2416 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 2417 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= 2418 | 2419 | signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: 2420 | version "3.0.2" 2421 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2422 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2423 | 2424 | slice-ansi@0.0.4: 2425 | version "0.0.4" 2426 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 2427 | integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= 2428 | 2429 | slide@^1.1.5: 2430 | version "1.1.6" 2431 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 2432 | integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= 2433 | 2434 | sntp@1.x.x: 2435 | version "1.0.9" 2436 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2437 | integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= 2438 | dependencies: 2439 | hoek "2.x.x" 2440 | 2441 | source-map@^0.4.4: 2442 | version "0.4.4" 2443 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 2444 | integrity sha1-66T12pwNyZneaAMti092FzZSA2s= 2445 | dependencies: 2446 | amdefine ">=0.0.4" 2447 | 2448 | source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: 2449 | version "0.5.7" 2450 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2451 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2452 | 2453 | source-map@~0.6.1: 2454 | version "0.6.1" 2455 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2456 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2457 | 2458 | spawn-wrap@^1.3.8: 2459 | version "1.3.8" 2460 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" 2461 | integrity sha512-Yfkd7Yiwz4RcBPrDWzvhnTzQINBHNqOEhUzOdWZ67Y9b4wzs3Gz6ymuptQmRBpzlpOzroM7jwzmBdRec7JJ0UA== 2462 | dependencies: 2463 | foreground-child "^1.5.6" 2464 | mkdirp "^0.5.0" 2465 | os-homedir "^1.0.1" 2466 | rimraf "^2.3.3" 2467 | signal-exit "^3.0.2" 2468 | which "^1.2.4" 2469 | 2470 | spdx-correct@~1.0.0: 2471 | version "1.0.2" 2472 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2473 | integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A= 2474 | dependencies: 2475 | spdx-license-ids "^1.0.2" 2476 | 2477 | spdx-expression-parse@~1.0.0: 2478 | version "1.0.4" 2479 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2480 | integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw= 2481 | 2482 | spdx-license-ids@^1.0.2: 2483 | version "1.2.2" 2484 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2485 | integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc= 2486 | 2487 | sprintf-js@~1.0.2: 2488 | version "1.0.3" 2489 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2490 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2491 | 2492 | sshpk@^1.7.0: 2493 | version "1.13.1" 2494 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 2495 | integrity sha1-US322mKHFEMW3EwY/hzx2UBzm+M= 2496 | dependencies: 2497 | asn1 "~0.2.3" 2498 | assert-plus "^1.0.0" 2499 | dashdash "^1.12.0" 2500 | getpass "^0.1.1" 2501 | optionalDependencies: 2502 | bcrypt-pbkdf "^1.0.0" 2503 | ecc-jsbn "~0.1.1" 2504 | jsbn "~0.1.0" 2505 | tweetnacl "~0.14.0" 2506 | 2507 | string-width@^1.0.1: 2508 | version "1.0.2" 2509 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2510 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2511 | dependencies: 2512 | code-point-at "^1.0.0" 2513 | is-fullwidth-code-point "^1.0.0" 2514 | strip-ansi "^3.0.0" 2515 | 2516 | string-width@^2.0.0, string-width@^2.1.0: 2517 | version "2.1.1" 2518 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2519 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2520 | dependencies: 2521 | is-fullwidth-code-point "^2.0.0" 2522 | strip-ansi "^4.0.0" 2523 | 2524 | string_decoder@~1.0.3: 2525 | version "1.0.3" 2526 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 2527 | integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== 2528 | dependencies: 2529 | safe-buffer "~5.1.0" 2530 | 2531 | stringstream@~0.0.4: 2532 | version "0.0.5" 2533 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2534 | integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= 2535 | 2536 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2537 | version "3.0.1" 2538 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2539 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2540 | dependencies: 2541 | ansi-regex "^2.0.0" 2542 | 2543 | strip-ansi@^4.0.0: 2544 | version "4.0.0" 2545 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2546 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2547 | dependencies: 2548 | ansi-regex "^3.0.0" 2549 | 2550 | strip-bom@^2.0.0: 2551 | version "2.0.0" 2552 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2553 | integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= 2554 | dependencies: 2555 | is-utf8 "^0.2.0" 2556 | 2557 | strip-bom@^3.0.0: 2558 | version "3.0.0" 2559 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2560 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2561 | 2562 | strip-eof@^1.0.0: 2563 | version "1.0.0" 2564 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2565 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2566 | 2567 | strip-indent@^1.0.1: 2568 | version "1.0.1" 2569 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 2570 | integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= 2571 | dependencies: 2572 | get-stdin "^4.0.1" 2573 | 2574 | strip-json-comments@~2.0.1: 2575 | version "2.0.1" 2576 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2577 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2578 | 2579 | supports-color@3.1.2: 2580 | version "3.1.2" 2581 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 2582 | integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU= 2583 | dependencies: 2584 | has-flag "^1.0.0" 2585 | 2586 | supports-color@^2.0.0: 2587 | version "2.0.0" 2588 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2589 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2590 | 2591 | supports-color@^3.1.2: 2592 | version "3.2.3" 2593 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 2594 | integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= 2595 | dependencies: 2596 | has-flag "^1.0.0" 2597 | 2598 | supports-color@^4.0.0: 2599 | version "4.4.0" 2600 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" 2601 | integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== 2602 | dependencies: 2603 | has-flag "^2.0.0" 2604 | 2605 | table@^4.0.1: 2606 | version "4.0.1" 2607 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" 2608 | integrity sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU= 2609 | dependencies: 2610 | ajv "^4.7.0" 2611 | ajv-keywords "^1.0.0" 2612 | chalk "^1.1.1" 2613 | lodash "^4.0.0" 2614 | slice-ansi "0.0.4" 2615 | string-width "^2.0.0" 2616 | 2617 | test-exclude@^4.1.1: 2618 | version "4.1.1" 2619 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" 2620 | integrity sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA== 2621 | dependencies: 2622 | arrify "^1.0.1" 2623 | micromatch "^2.3.11" 2624 | object-assign "^4.1.0" 2625 | read-pkg-up "^1.0.1" 2626 | require-main-filename "^1.0.1" 2627 | 2628 | text-table@~0.2.0: 2629 | version "0.2.0" 2630 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2631 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2632 | 2633 | through@^2.3.6: 2634 | version "2.3.8" 2635 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2636 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2637 | 2638 | tmp@^0.0.33: 2639 | version "0.0.33" 2640 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2641 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2642 | dependencies: 2643 | os-tmpdir "~1.0.2" 2644 | 2645 | to-fast-properties@^1.0.3: 2646 | version "1.0.3" 2647 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 2648 | integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= 2649 | 2650 | tough-cookie@~2.3.0: 2651 | version "2.3.3" 2652 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 2653 | integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE= 2654 | dependencies: 2655 | punycode "^1.4.1" 2656 | 2657 | trim-newlines@^1.0.0: 2658 | version "1.0.0" 2659 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 2660 | integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= 2661 | 2662 | trim-right@^1.0.1: 2663 | version "1.0.1" 2664 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2665 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 2666 | 2667 | tryit@^1.0.1: 2668 | version "1.0.3" 2669 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 2670 | integrity sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics= 2671 | 2672 | tunnel-agent@~0.4.1: 2673 | version "0.4.3" 2674 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 2675 | integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= 2676 | 2677 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2678 | version "0.14.5" 2679 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2680 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2681 | 2682 | type-check@~0.3.2: 2683 | version "0.3.2" 2684 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2685 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2686 | dependencies: 2687 | prelude-ls "~1.1.2" 2688 | 2689 | type-detect@^4.0.0: 2690 | version "4.0.3" 2691 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 2692 | integrity sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo= 2693 | 2694 | typedarray@^0.0.6: 2695 | version "0.0.6" 2696 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2697 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 2698 | 2699 | uglify-es@^3.3.9: 2700 | version "3.3.9" 2701 | resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" 2702 | integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== 2703 | dependencies: 2704 | commander "~2.13.0" 2705 | source-map "~0.6.1" 2706 | 2707 | uglify-js@^2.6: 2708 | version "2.8.29" 2709 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 2710 | integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= 2711 | dependencies: 2712 | source-map "~0.5.1" 2713 | yargs "~3.10.0" 2714 | optionalDependencies: 2715 | uglify-to-browserify "~1.0.0" 2716 | 2717 | uglify-to-browserify@~1.0.0: 2718 | version "1.0.2" 2719 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2720 | integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= 2721 | 2722 | util-deprecate@~1.0.1: 2723 | version "1.0.2" 2724 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2725 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2726 | 2727 | uuid@^3.0.0: 2728 | version "3.1.0" 2729 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 2730 | integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== 2731 | 2732 | validate-npm-package-license@^3.0.1: 2733 | version "3.0.1" 2734 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2735 | integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w= 2736 | dependencies: 2737 | spdx-correct "~1.0.0" 2738 | spdx-expression-parse "~1.0.0" 2739 | 2740 | verror@1.10.0: 2741 | version "1.10.0" 2742 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2743 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2744 | dependencies: 2745 | assert-plus "^1.0.0" 2746 | core-util-is "1.0.2" 2747 | extsprintf "^1.2.0" 2748 | 2749 | which-module@^2.0.0: 2750 | version "2.0.0" 2751 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2752 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2753 | 2754 | which@^1.2.4, which@^1.2.9: 2755 | version "1.3.0" 2756 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 2757 | integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== 2758 | dependencies: 2759 | isexe "^2.0.0" 2760 | 2761 | window-size@0.1.0: 2762 | version "0.1.0" 2763 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2764 | integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= 2765 | 2766 | wordwrap@0.0.2: 2767 | version "0.0.2" 2768 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2769 | integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= 2770 | 2771 | wordwrap@~0.0.2: 2772 | version "0.0.3" 2773 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2774 | integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= 2775 | 2776 | wordwrap@~1.0.0: 2777 | version "1.0.0" 2778 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2779 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 2780 | 2781 | wrap-ansi@^2.0.0: 2782 | version "2.1.0" 2783 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 2784 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= 2785 | dependencies: 2786 | string-width "^1.0.1" 2787 | strip-ansi "^3.0.1" 2788 | 2789 | wrappy@1: 2790 | version "1.0.2" 2791 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2792 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2793 | 2794 | write-file-atomic@^1.1.4: 2795 | version "1.3.4" 2796 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" 2797 | integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= 2798 | dependencies: 2799 | graceful-fs "^4.1.11" 2800 | imurmurhash "^0.1.4" 2801 | slide "^1.1.5" 2802 | 2803 | write@^0.2.1: 2804 | version "0.2.1" 2805 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 2806 | integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= 2807 | dependencies: 2808 | mkdirp "^0.5.1" 2809 | 2810 | xtend@^4.0.0: 2811 | version "4.0.1" 2812 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2813 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 2814 | 2815 | y18n@^3.2.1: 2816 | version "3.2.1" 2817 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 2818 | integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= 2819 | 2820 | yallist@^2.1.2: 2821 | version "2.1.2" 2822 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2823 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2824 | 2825 | yargs-parser@^5.0.0: 2826 | version "5.0.0" 2827 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" 2828 | integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= 2829 | dependencies: 2830 | camelcase "^3.0.0" 2831 | 2832 | yargs-parser@^7.0.0: 2833 | version "7.0.0" 2834 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" 2835 | integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= 2836 | dependencies: 2837 | camelcase "^4.1.0" 2838 | 2839 | yargs@^8.0.1: 2840 | version "8.0.2" 2841 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" 2842 | integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= 2843 | dependencies: 2844 | camelcase "^4.1.0" 2845 | cliui "^3.2.0" 2846 | decamelize "^1.1.1" 2847 | get-caller-file "^1.0.1" 2848 | os-locale "^2.0.0" 2849 | read-pkg-up "^2.0.0" 2850 | require-directory "^2.1.1" 2851 | require-main-filename "^1.0.1" 2852 | set-blocking "^2.0.0" 2853 | string-width "^2.0.0" 2854 | which-module "^2.0.0" 2855 | y18n "^3.2.1" 2856 | yargs-parser "^7.0.0" 2857 | 2858 | yargs@~3.10.0: 2859 | version "3.10.0" 2860 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2861 | integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= 2862 | dependencies: 2863 | camelcase "^1.0.2" 2864 | cliui "^2.1.0" 2865 | decamelize "^1.0.0" 2866 | window-size "0.1.0" 2867 | --------------------------------------------------------------------------------