├── .eslintrc.js ├── .gitignore ├── README.md ├── circle.yml ├── coding-easy ├── factorial.js ├── fib.js ├── filter.js ├── indexOf.js ├── isBalanced.js ├── isPalindrome.js ├── isPrime.js ├── isSorted.js ├── missing.js ├── reduce.js └── reverse.js ├── coding-harder ├── BinarySearchTree.js ├── HashMap.js ├── LinkedList.js ├── TreeTraversal.js ├── debounce.js └── permute.js ├── coding-intermediate ├── assignDeep.js ├── fib2.js ├── includes.js ├── intersection.js ├── isBalanced2.js ├── reduceAsync.js ├── seq.js ├── sort.js └── uniq.js ├── debugging ├── bark.md ├── doggo.md ├── heyAmy.md ├── isBig.md └── setTimeout.md ├── package-lock.json └── package.json /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "extends": "standard", 3 | "plugins": [ 4 | "standard", 5 | "promise" 6 | ], 7 | "rules": { 8 | "import/first": [0], 9 | "new-parens": [0], 10 | "padded-blocks": [0], 11 | "space-before-function-paren": [0] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Best Frontend JavaScript Interview Questions: Answers 2 | 3 | [![Build Status][build]](https://circleci.com/gh/bcherny/frontend-interview-questions) 4 | 5 | [build]: https://img.shields.io/circleci/project/bcherny/frontend-interview-questions.svg?branch=master&style=flat-square 6 | 7 | This repository contains just answers. 8 | 9 | ## [See questions here](https://borischerny.com/javascript/%22functional/programming%22/2017/06/09/Frontend-Interview-Questions.html) 10 | 11 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | machine: 2 | node: 3 | version: 6.7.0 -------------------------------------------------------------------------------- /coding-easy/factorial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Note: We put the recursive call in tail position, so 3 | * that it can be optimized by the JavaScript compiler. 4 | */ 5 | 6 | /// solution 7 | 8 | function tailFactorial(n, total) { 9 | switch (n) { 10 | case 0: return 1 11 | case 1: return total 12 | default: return tailFactorial(n - 1, n * total) 13 | } 14 | } 15 | 16 | function factorial(n) { 17 | return tailFactorial(n, 1) 18 | } 19 | 20 | /// tests 21 | 22 | import { test } from 'ava' 23 | 24 | test(t => t.is(factorial(0), 1)) 25 | test(t => t.is(factorial(1), 1)) 26 | test(t => t.is(factorial(6), 720)) 27 | -------------------------------------------------------------------------------- /coding-easy/fib.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function fib (n) { 4 | switch (n) { 5 | case 0: return 0 6 | case 1: return 1 7 | default: return fib(n - 1) + fib(n - 2) 8 | } 9 | } 10 | 11 | /// tests 12 | 13 | import { test } from 'ava' 14 | 15 | test(t => t.is(fib(0), 0)) 16 | test(t => t.is(fib(1), 1)) 17 | test(t => t.is(fib(10), 55)) 18 | test(t => t.is(fib(20), 6765)) 19 | -------------------------------------------------------------------------------- /coding-easy/filter.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function filter(array, fn) { 4 | let result = [] 5 | for (let i = 0; i < array.length; i++) { 6 | let current = array[i] 7 | if (fn(current)) { 8 | result.push(current) 9 | } 10 | } 11 | return result 12 | } 13 | 14 | /// tests 15 | 16 | import { test } from 'ava' 17 | 18 | test(t => t.deepEqual(filter([1, 2, 3, 4], n => n < 3), [1, 2])) 19 | -------------------------------------------------------------------------------- /coding-easy/indexOf.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function indexOf(array, item) { 4 | for (let i = 0; i < array.length; i++) { 5 | if (array[i] === item) { 6 | return i 7 | } 8 | } 9 | return -1 10 | } 11 | 12 | /// tests 13 | 14 | import { test } from 'ava' 15 | 16 | test(t => t.is(indexOf([1, 2, 3], 1), 0)) 17 | test(t => t.is(indexOf([1, 2, 3], 4), -1)) 18 | -------------------------------------------------------------------------------- /coding-easy/isBalanced.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function isBalanced(string) { 4 | let count = 0 5 | for (let letter of string) { 6 | if (letter === '{') { 7 | count++ 8 | } 9 | if (letter === '}') { 10 | count-- 11 | 12 | // if a closing bracket doesn't have a matching 13 | // opening bracket, we should return early. 14 | if (count < 0) { 15 | return false 16 | } 17 | 18 | } 19 | } 20 | return count === 0 21 | } 22 | 23 | /// tests 24 | 25 | import { test } from 'ava' 26 | 27 | test(t => t.is(isBalanced('}{'), false)) 28 | test(t => t.is(isBalanced('{{}'), false)) 29 | test(t => t.is(isBalanced('{}{}'), true)) 30 | test(t => t.is(isBalanced('foo { bar { baz } boo }'), true)) 31 | test(t => t.is(isBalanced('foo { bar { baz }'), false)) 32 | test(t => t.is(isBalanced('foo { bar } }'), false)) 33 | -------------------------------------------------------------------------------- /coding-easy/isPalindrome.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function isPalindrome(string) { 4 | let _string = string.replace(/\s/g, '').toLowerCase() 5 | return reverse(_string) === _string 6 | } 7 | 8 | function reverse(string) { 9 | return string.split('').reverse().join('') 10 | } 11 | 12 | /// tests 13 | 14 | import { test } from 'ava' 15 | 16 | test(t => t.is(isPalindrome(''), true)) 17 | test(t => t.is(isPalindrome('abcdcba'), true)) 18 | test(t => t.is(isPalindrome('abcd'), false)) 19 | test(t => t.is(isPalindrome('A man a plan a canal Panama'), true)) 20 | -------------------------------------------------------------------------------- /coding-easy/isPrime.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a lightly optimized version of a naive primality test. We make a couple of optimizations: 3 | * 4 | * - We only need to check up to the square root of our number 5 | * - We use an iterative solution instead of a recursive one so we are not susceptible to stack overflows 6 | * 7 | * Note that much more efficient solutions exist, but are harder to understand. Eg. Google "AKS primality test". 8 | */ 9 | 10 | /// solution 11 | 12 | function isPrime(n) { 13 | if (n < 2) { 14 | return false 15 | } 16 | for (let i = 2; i < Math.ceil(Math.sqrt(n)) + 1; i++) { 17 | if (n % i === 0 && i !== n) { 18 | return false 19 | } 20 | } 21 | return true 22 | } 23 | 24 | /// tests 25 | 26 | import { test } from 'ava' 27 | 28 | test(t => t.is(isPrime(0), false)) 29 | test(t => t.is(isPrime(1), false)) 30 | test(t => t.is(isPrime(2), true)) 31 | test(t => t.is(isPrime(9), false)) 32 | test(t => t.is(isPrime(17), true)) 33 | test(t => t.is(isPrime(25), false)) 34 | test(t => t.is(isPrime(73), true)) 35 | test(t => t.is(isPrime(10000000000000), false)) 36 | -------------------------------------------------------------------------------- /coding-easy/isSorted.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function isSorted(array) { 4 | for (let i = 0; i < array.length; i++) { 5 | let current = array[i] 6 | let next = array[i + 1] 7 | if (next && current > next) { 8 | // exit as soon as we know the array isn't sorted 9 | return false 10 | } 11 | } 12 | return true 13 | } 14 | 15 | /// tests 16 | 17 | import { test } from 'ava' 18 | 19 | test(t => t.is(isSorted([]), true)) 20 | test(t => t.is(isSorted([-Infinity, -5, 0, 3, 9]), true)) 21 | test(t => t.is(isSorted([3, 9, -3, 10]), false)) 22 | -------------------------------------------------------------------------------- /coding-easy/missing.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function missing(array) { 4 | 5 | // sum the array, and keep track of the maximum number in it 6 | let max = array[0] 7 | let sum = 0 8 | array.forEach(number => { 9 | sum += number 10 | if (number > max) { 11 | max = number 12 | } 13 | }) 14 | 15 | // the maximum tells us how long the array should be. 16 | // we plug it into the formula to sum a series to see 17 | // what we should expect the sum to be. 18 | let expectedSum = max * (max + 1) / 2 19 | let difference = expectedSum - sum 20 | 21 | if (difference > 0) { 22 | return difference 23 | } else { 24 | return undefined 25 | } 26 | 27 | } 28 | 29 | /// tests 30 | 31 | import { test } from 'ava' 32 | 33 | test(t => t.is(missing([]), undefined)) 34 | test(t => t.is(missing([1, 4, 3]), 2)) 35 | test(t => t.is(missing([2, 3, 4]), 1)) 36 | test(t => t.is(missing([5, 1, 4, 2]), 3)) 37 | test(t => t.is(missing([1, 2, 3, 4]), undefined)) 38 | -------------------------------------------------------------------------------- /coding-easy/reduce.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function reduce(array, fn, value) { 4 | for (let i = 0; i < array.length; i++) { 5 | let current = array[i] 6 | value = fn(value, current, i, array) 7 | } 8 | return value 9 | } 10 | 11 | /// tests 12 | 13 | import { test } from 'ava' 14 | 15 | test(t => t.is(reduce([1, 2, 3, 4], (a, b) => a + b, 0), 10)) 16 | -------------------------------------------------------------------------------- /coding-easy/reverse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Note: This solution aims for clarity, but does not give correct results when given unicode characters 3 | * from the supplementary planes (including Chinese characters, emojis, etc.). See discussion here: 4 | * https://github.com/bcherny/frontend-interview-questions/issues/6. 5 | */ 6 | 7 | /// solution 8 | 9 | function reverse(string) { 10 | let index = string.length - 1 11 | let result = '' 12 | while (index > -1) { 13 | result += string[index] 14 | index-- 15 | } 16 | return result 17 | } 18 | 19 | /// tests 20 | 21 | import { test } from 'ava' 22 | 23 | test(t => t.is(reverse(''), '')) 24 | test(t => t.is(reverse('abcdef'), 'fedcba')) 25 | -------------------------------------------------------------------------------- /coding-harder/BinarySearchTree.js: -------------------------------------------------------------------------------- 1 | class BinarySearchTree { 2 | 3 | constructor() { 4 | this.root = null 5 | } 6 | 7 | // O(n), where n is # nodes 8 | get(value) { 9 | let node = this.root 10 | while (node != null) { 11 | if (value === node.value) return node.value 12 | else if (value < node.value) node = node.left 13 | else node = node.right 14 | } 15 | return null 16 | } 17 | 18 | // O(n), where n is # nodes 19 | has(value) { 20 | return this.get(value) !== null 21 | } 22 | 23 | // O(n), where n is # nodes 24 | add(...values) { 25 | function _add(value, node) { 26 | if (node === null) return new Node(value) 27 | if (value < node.value) { 28 | node.left = _add(value, node.left) 29 | } else if (value > node.value) { 30 | node.right = _add(value, node.right) 31 | } else { 32 | node.value = value 33 | } 34 | return node 35 | } 36 | for (let value of values) { 37 | this.root = _add(value, this.root) 38 | } 39 | } 40 | 41 | // O(n), where n is # nodes 42 | size() { 43 | let _size = node => node === null ? 0 : 1 + _size(node.left) + _size(node.right) 44 | return _size(this.root) 45 | } 46 | 47 | // Hibbard deletion 48 | remove(value) { 49 | function _remove(value, node) { 50 | if (node === null) return null 51 | if (value < node.value) node.left = _remove(value, node.left) 52 | else if (value > node.value) node.right = _remove(value, node.right) 53 | else { 54 | if (node.right === null) return node.left 55 | if (node.left === null) return node.right 56 | 57 | let t = node 58 | node = min(t.right) 59 | node.right = removeMin(t.right) 60 | node.left = t.left 61 | } 62 | return node 63 | } 64 | 65 | function removeMin(node) { 66 | if (node.left === null) return node.right 67 | node.left = removeMin(node.left) 68 | return node 69 | } 70 | 71 | function min(node) { 72 | let curr = node 73 | while (curr.left !== null) curr = curr.left 74 | return curr 75 | } 76 | 77 | this.root = _remove(value, this.root) 78 | } 79 | } 80 | 81 | class Node { 82 | constructor(value) { 83 | this.value = value 84 | this.left = null 85 | this.right = null 86 | } 87 | } 88 | 89 | /// tests 90 | 91 | import { test } from 'ava' 92 | 93 | test('BinarySearchTree', t => { 94 | let tree = new BinarySearchTree 95 | tree.add(1, 2, 3, 4) 96 | tree.add(5) 97 | t.is(tree.has(2), true) 98 | t.is(tree.has(5), true) 99 | tree.remove(3) 100 | t.is(tree.size(), 4) 101 | }) 102 | 103 | test('BinarySearchTree#get', t => { 104 | let tree = new BinarySearchTree 105 | t.is(tree.get(42), null) 106 | tree.add(42, 43) 107 | t.is(tree.get(42), 42) 108 | t.is(tree.get(43), 43) 109 | t.is(tree.get(44), null) 110 | }) 111 | -------------------------------------------------------------------------------- /coding-harder/HashMap.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | class HashMap { 4 | constructor() { 5 | this.data = [] 6 | } 7 | get(key) { 8 | let index = hash(key) 9 | let slot = this.data[index] 10 | if (!slot) { 11 | return undefined 12 | } 13 | for (let [k, v] of slot) { 14 | if (key === k) { 15 | return v 16 | } 17 | } 18 | } 19 | set(key, value) { 20 | let index = hash(key) 21 | 22 | if (!this.data[index]) { 23 | this.data[index] = [] 24 | } 25 | 26 | let slot = this.data[index] 27 | let indexInSlot = 0 28 | 29 | // find available index in the given slot, or overwrite the given key 30 | // if a value is already defined for it. 31 | while (slot[indexInSlot]) { 32 | if (slot[indexInSlot][0] === key) { 33 | break 34 | } 35 | indexInSlot++ 36 | } 37 | 38 | slot[indexInSlot] = [key, value] 39 | } 40 | } 41 | 42 | // hash function (provided) 43 | function hash(string) { 44 | return string 45 | .split('') 46 | .reduce((a, b) => ((a << 5) + a) + b.charCodeAt(0), 5381) 47 | } 48 | 49 | /// tests 50 | 51 | import { test } from 'ava' 52 | 53 | test('HashMap', t => { 54 | let map = new HashMap 55 | map.set('abc', 123) 56 | map.set('foo', 'bar') 57 | map.set('foo', 'baz') 58 | t.is(map.get('abc'), 123) 59 | t.is(map.get('foo'), 'baz') 60 | t.is(map.get('def'), undefined) 61 | }) 62 | -------------------------------------------------------------------------------- /coding-harder/LinkedList.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | /** 4 | * LinkedList has 2 members, head and tail: 5 | * - head is a value 6 | * - tail is either another LinkedList, or null 7 | */ 8 | export class LinkedList { 9 | constructor(head, ...tail) { 10 | this.head = head 11 | this.tail = tail.length 12 | ? new LinkedList(...tail) 13 | : null 14 | } 15 | add(item) { 16 | if (this.tail) { 17 | this.tail.add(item) 18 | } else { 19 | this.tail = new LinkedList(item) 20 | } 21 | } 22 | has(item) { 23 | if (this.head === item) { 24 | return true 25 | } 26 | if (this.tail === null) { 27 | return false 28 | } 29 | return this.tail.has(item) 30 | } 31 | } 32 | 33 | // tests 34 | 35 | import test from 'ava' 36 | 37 | test('LinkedList', t => { 38 | let list = new LinkedList(1, 2, 3) 39 | list.add(4) 40 | list.add(5) 41 | t.is(list.has(1), true) 42 | t.is(list.has(4), true) 43 | t.is(list.has(6), false) 44 | }) 45 | -------------------------------------------------------------------------------- /coding-harder/TreeTraversal.js: -------------------------------------------------------------------------------- 1 | class BinarySearchTree { 2 | constructor(...nodes) { 3 | this.root = null 4 | for (let node of nodes) { 5 | this.put(node.key, node.value) 6 | } 7 | } 8 | 9 | put(key, value) { 10 | function _put(node, key, value) { 11 | if (node === null) return new Node(key, value) 12 | else if (key < node.key) { 13 | node.left = _put(node.left, key, value) 14 | } else if (key > node.key) { 15 | node.right = _put(node.right, key, value) 16 | } else { 17 | node.value = value 18 | } 19 | return node 20 | } 21 | this.root = _put(this.root, key, value) 22 | } 23 | 24 | get(key) { 25 | let x = this.root 26 | while (x !== null) { 27 | if (key < x.key) x = x.left // traverse left 28 | else if (key > x.key) x = x.right // traverse right 29 | else return x.value // found it! 30 | } 31 | return x 32 | } 33 | 34 | delete(key) { 35 | function _delete(node, key) { 36 | if (node === null) return 37 | if (key < node.key) { 38 | node.left = _delete(node.left, key) 39 | } else if (key > node.key) { 40 | node.right = _delete(node.right, key) 41 | } else { // node.key === key 42 | if (node.right === null) return node.left 43 | if (node.left === null) return node.right 44 | 45 | let t = node 46 | node = min(t.right) 47 | node.right = removeMin(t.right) 48 | node.left = t.left 49 | } 50 | return node 51 | } 52 | 53 | function removeMin(node) { 54 | if (node.left === null) return node.right 55 | node.left = removeMin(node.left) 56 | return node 57 | } 58 | 59 | function min(node) { 60 | let x = node 61 | while (x.left !== null) x = x.left 62 | return x 63 | } 64 | 65 | this.root = _delete(this.root, key) 66 | } 67 | 68 | contains(key) { 69 | return this.get(key) !== null 70 | } 71 | 72 | isEmpty() { 73 | return this.root === null 74 | } 75 | 76 | size() { 77 | function _size(node) { 78 | return node === null ? 0 : 1 + _size(node.left) + _size(node.right) 79 | } 80 | return _size(this.root) 81 | } 82 | 83 | inorder(fn) { 84 | function _inorder(node) { 85 | if (node === null) return 86 | _inorder(node.left) 87 | fn(node) 88 | _inorder(node.right) 89 | } 90 | _inorder(this.root) 91 | } 92 | 93 | preorder(fn) { 94 | function _preorder(node) { 95 | if (node === null) return 96 | fn(node) 97 | _preorder(node.left) 98 | _preorder(node.right) 99 | } 100 | _preorder(this.root) 101 | } 102 | 103 | postorder(fn) { 104 | function _postorder(node) { 105 | if (node === null) return 106 | _postorder(node.left) 107 | _postorder(node.right) 108 | fn(node) 109 | } 110 | _postorder(this.root) 111 | } 112 | 113 | bfs(fn) { 114 | if (this.root === null) return 115 | let queue = new Queue() 116 | queue.enqueue(this.root) 117 | while (!queue.isEmpty()) { 118 | let node = queue.dequeue() 119 | fn(node) 120 | if (node.left !== null) queue.enqueue(node.left) 121 | if (node.right !== null) queue.enqueue(node.right) 122 | } 123 | } 124 | } 125 | 126 | class Node { 127 | constructor(key, value) { 128 | this.key = key 129 | this.value = value 130 | this.left = null 131 | this.right = null 132 | } 133 | } 134 | 135 | class Queue { 136 | constructor(...items) { 137 | this.data = [] 138 | for (let item of items) { 139 | this.enqueue(item) 140 | } 141 | } 142 | 143 | enqueue(item) { this.data.unshift(item) } 144 | dequeue() { return this.data.pop() } 145 | isEmpty() { return this.data.length === 0 } 146 | } 147 | 148 | import { test } from 'ava' 149 | test('BinarySearchTree#put', t => { 150 | let bst = new BinarySearchTree( 151 | { key: 'c', value: 42 }, 152 | { key: 'a', value: 100 }, 153 | { key: 'd', value: 22 } 154 | ) 155 | t.is(bst.get('c'), 42) 156 | bst.put('c', 44) 157 | t.is(bst.get('c'), 44) 158 | }) 159 | 160 | test('BinarySearchTree#get', t => { 161 | let bst = new BinarySearchTree( 162 | { key: 'c', value: 42 }, 163 | { key: 'a', value: 100 }, 164 | { key: 'd', value: 22 } 165 | ) 166 | t.is(bst.get('a'), 100) 167 | t.is(bst.get('c'), 42) 168 | t.is(bst.get('d'), 22) 169 | }) 170 | 171 | test('BinarySearchTree#delete', t => { 172 | let bst = new BinarySearchTree( 173 | { key: 'c', value: 42 }, 174 | { key: 'a', value: 100 }, 175 | { key: 'd', value: 22 } 176 | ) 177 | t.is(bst.get('a'), 100) 178 | t.is(bst.get('c'), 42) 179 | t.is(bst.get('d'), 22) 180 | 181 | bst.delete('a') 182 | bst.delete('d') 183 | t.is(bst.get('d'), null) 184 | t.is(bst.get('a'), null) 185 | t.is(bst.get('c'), 42) 186 | }) 187 | 188 | test('BinarySearchTree#size', t => { 189 | let bst = new BinarySearchTree( 190 | { key: 'c', value: 42 }, 191 | { key: 'a', value: 100 }, 192 | { key: 'd', value: 22 } 193 | ) 194 | t.is(bst.size(), 3) 195 | bst.delete('d') 196 | bst.delete('a') 197 | t.is(bst.size(), 1) 198 | }) 199 | 200 | test('BinarySearchTree#inorder', t => { 201 | let bst = new BinarySearchTree( 202 | { key: 'c', value: 42 }, 203 | { key: 'a', value: 100 }, 204 | { key: 'd', value: 22 }, 205 | { key: 'e', value: 42 }, 206 | { key: 'b', value: 100 } 207 | ) 208 | 209 | let values = [] 210 | bst.inorder(n => { values.push(n.key) }) 211 | t.deepEqual(values, ['a', 'b', 'c', 'd', 'e']) 212 | }) 213 | 214 | test('BinarySearchTree#preorder', t => { 215 | let bst = new BinarySearchTree( 216 | { key: 'c', value: 42 }, 217 | { key: 'a', value: 100 }, 218 | { key: 'd', value: 22 }, 219 | { key: 'e', value: 42 }, 220 | { key: 'b', value: 100 } 221 | ) 222 | 223 | let values = [] 224 | bst.preorder(n => { values.push(n.key) }) 225 | t.deepEqual(values, ['c', 'a', 'b', 'd', 'e']) 226 | }) 227 | 228 | test('BinarySearchTree#postorder', t => { 229 | let bst = new BinarySearchTree( 230 | { key: 'f', value: 42 }, 231 | { key: 'b', value: 100 }, 232 | { key: 'g', value: 22 }, 233 | { key: 'a', value: 42 }, 234 | { key: 'd', value: 100 }, 235 | { key: 'i', value: 100 }, 236 | { key: 'c', value: 100 }, 237 | { key: 'e', value: 100 }, 238 | { key: 'h', value: 100 } 239 | ) 240 | 241 | let values = [] 242 | bst.postorder(n => { values.push(n.key) }) 243 | t.deepEqual(values, ['a', 'c', 'e', 'd', 'b', 'h', 'i', 'g', 'f']) 244 | }) 245 | 246 | test('BinarySearchTree#bfs', t => { 247 | let bst = new BinarySearchTree( 248 | { key: 'f', value: 42 }, 249 | { key: 'b', value: 100 }, 250 | { key: 'g', value: 22 }, 251 | { key: 'a', value: 42 }, 252 | { key: 'd', value: 100 }, 253 | { key: 'i', value: 100 }, 254 | { key: 'c', value: 100 }, 255 | { key: 'e', value: 100 }, 256 | { key: 'h', value: 100 } 257 | ) 258 | 259 | let values = [] 260 | bst.bfs(n => { values.push(n.key) }) 261 | t.deepEqual(values, ['f', 'b', 'g', 'a', 'd', 'i', 'c', 'e', 'h']) 262 | }) 263 | -------------------------------------------------------------------------------- /coding-harder/debounce.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function debounce(func, timeout = 300){ 4 | 5 | // keep track of the last call to the debounced function 6 | let timer; 7 | 8 | // return a debounced version of fn 9 | return function(...args) { 10 | 11 | // if the debounced function was called again before the delay elapsed, 12 | // cancel the timer (started in the previous call) that would have called 13 | // fn, and start a new timer. 14 | clearTimeout(timer); 15 | timer = setTimeout(() => func.apply(this, args), timeout); 16 | }; 17 | } 18 | 19 | /// tests 20 | 21 | import { test } from 'ava' 22 | 23 | test.cb(t => { 24 | t.plan(1) 25 | let count = 0 26 | let a = () => { 27 | count++ 28 | t.is(count, 1) 29 | t.end() 30 | } 31 | let b = debounce(a, 100) 32 | b() 33 | b() 34 | b() 35 | }) 36 | -------------------------------------------------------------------------------- /coding-harder/permute.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function permute(string) { 4 | return permuteArray(string.split('')) 5 | } 6 | 7 | function permuteArray(array) { 8 | switch (array.length) { 9 | case 0: return [] 10 | case 1: return array 11 | default: return flatten(array.map(a => permuteArray(without(array, a)).map(b => a.concat(b)))) 12 | } 13 | } 14 | 15 | function flatten(array) { 16 | return array.reduce((a, b) => a.concat(b), []) 17 | } 18 | 19 | function without(array, a) { 20 | const bs = array.slice(0) 21 | bs.splice(array.indexOf(a), 1) 22 | return bs 23 | } 24 | 25 | /// tests 26 | 27 | import { test } from 'ava' 28 | 29 | test(t => t.deepEqual(permute(''), [])) 30 | test(t => t.deepEqual(permute('abc'), ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'])) 31 | -------------------------------------------------------------------------------- /coding-intermediate/assignDeep.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function assignDeep(target, ...sources) { 4 | for (let source of sources) { 5 | for (let key in source) { 6 | if (isObject(source[key])) { 7 | if (!isObject(target[key])) { 8 | target[key] = {} 9 | } 10 | assignDeep(target[key], source[key]) 11 | } else { 12 | target[key] = source[key] 13 | } 14 | } 15 | } 16 | return target 17 | } 18 | 19 | function isObject(a) { 20 | return typeof a === 'object' && a !== null 21 | } 22 | 23 | /// tests 24 | 25 | import { test } from 'ava' 26 | 27 | test(t => t.deepEqual(assignDeep({ a: 1 }, {}), { a: 1 })) 28 | test(t => t.deepEqual(assignDeep({ a: 1 }, { a: 2 }), { a: 2 })) 29 | test(t => t.deepEqual(assignDeep({ a: 1 }, { a: { b: 2 } }), { a: { b: 2 } })) 30 | test(t => t.deepEqual(assignDeep({ a: { b: { c: 1 } } }, { a: { b: { d: 2 } }, e: 3 }), { a: { b: { c: 1, d: 2 } }, e: 3 })) 31 | -------------------------------------------------------------------------------- /coding-intermediate/fib2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * We memoize the fib function to avoid an exponential number of repeated computations. 3 | */ 4 | 5 | /// solution 6 | 7 | let fib2 = memoize(n => { 8 | switch (n) { 9 | case 0: return 0 10 | case 1: return 1 11 | default: return fib2(n - 1) + fib2(n - 2) 12 | } 13 | }) 14 | 15 | function memoize(fn) { 16 | let cache = new Map 17 | return _ => { 18 | if (!cache.has(_)) { 19 | cache.set(_, fn(_)) 20 | } 21 | return cache.get(_) 22 | } 23 | } 24 | 25 | /// tests 26 | 27 | import { test } from 'ava' 28 | 29 | test(t => t.is(fib2(0), 0)) 30 | test(t => t.is(fib2(1), 1)) 31 | test(t => t.is(fib2(10), 55)) 32 | test(t => t.is(fib2(50), 12586269025)) 33 | -------------------------------------------------------------------------------- /coding-intermediate/includes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * We use a binary search to quickly search the given sorted array for the given number. 3 | */ 4 | 5 | /// solution 6 | 7 | function includes(array, number) { 8 | let index = binarySearch(array, number, 0, array.length - 1) 9 | return index !== undefined 10 | } 11 | 12 | function binarySearch(array, number, leftIndex, rightIndex) { 13 | let midIndex = Math.floor((rightIndex + leftIndex) / 2) 14 | let current = array[midIndex] 15 | if (rightIndex < leftIndex) { 16 | return undefined 17 | } 18 | if (number === current) { 19 | return midIndex 20 | } 21 | if (number < current) { 22 | return binarySearch(array, number, leftIndex, midIndex - 1) 23 | } 24 | return binarySearch(array, number, midIndex + 1, rightIndex) 25 | } 26 | 27 | /// tests 28 | 29 | import { test } from 'ava' 30 | 31 | test(t => t.is(includes([1, 3, 8, 10], 8), true)) 32 | test(t => t.is(includes([1, 3, 8, 8, 15], 15), true)) 33 | test(t => t.is(includes([1, 3, 8, 10, 15], 9), false)) 34 | -------------------------------------------------------------------------------- /coding-intermediate/intersection.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function intersection(left, right) { 4 | 5 | // first build an object from the left array, 6 | // because checking if an object has a certain key 7 | // is cheap (it takes O(1) time). 8 | // 9 | // if we didn't use this object, we'd have to check 10 | // if result contains current on every turn of the 11 | // loop, which would take up to O(N * log(N)) time. 12 | let seen = left.reduce((seen, item) => { 13 | seen[item] = true 14 | return seen 15 | }, {}) 16 | 17 | return right.reduce((result, current) => { 18 | if (current in seen) { 19 | return result.concat(current) 20 | } 21 | seen[current] = true 22 | return result 23 | }, []) 24 | } 25 | 26 | /// tests 27 | 28 | import { test } from 'ava' 29 | 30 | test(t => t.deepEqual(intersection([1, 5, 4, 2], [8, 91, 4, 1, 3]), [4, 1])) 31 | test(t => t.deepEqual(intersection([1, 5, 4, 2], [7, 12]), [])) 32 | -------------------------------------------------------------------------------- /coding-intermediate/isBalanced2.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function isBalanced2(string) { 4 | let stack = new Stack 5 | for (let letter of string) { 6 | switch (letter) { 7 | case '{': 8 | case '[': 9 | case '(': 10 | stack.push(letter) 11 | break 12 | case '}': 13 | case ']': 14 | case ')': 15 | if (pairOf(stack.peek()) === letter) { 16 | stack.pop() 17 | } else { 18 | return false 19 | } 20 | } 21 | } 22 | return stack.size() === 0 23 | } 24 | 25 | let pairs = { 26 | '(': ')', 27 | '[': ']', 28 | '{': '}' 29 | } 30 | function pairOf(letter) { 31 | return pairs[letter] 32 | } 33 | 34 | class Stack { 35 | constructor() { 36 | this.items = [] 37 | } 38 | peek() { 39 | return this.items[this.size() - 1] 40 | } 41 | push(item) { 42 | this.items.push(item) 43 | } 44 | pop() { 45 | return this.items.pop() 46 | } 47 | size() { 48 | return this.items.length 49 | } 50 | } 51 | 52 | /// tests 53 | 54 | import { test } from 'ava' 55 | 56 | test(t => t.is(isBalanced2('(foo { bar (baz) [boo] })'), true)) 57 | test(t => t.is(isBalanced2('foo { bar { baz }'), false)) 58 | test(t => t.is(isBalanced2('foo { (bar [baz] } )'), false)) 59 | -------------------------------------------------------------------------------- /coding-intermediate/reduceAsync.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | let reduceAsync = async (array, fn, value) => { 4 | for (let a of array) { 5 | value = fn(value, await a()) 6 | } 7 | return value 8 | } 9 | 10 | /// tests 11 | 12 | import { test } from 'ava' 13 | 14 | test(async t => { 15 | let a = () => Promise.resolve('a') 16 | let b = () => Promise.resolve('b') 17 | let c = () => new Promise(resolve => setTimeout(() => resolve('c'), 100)) 18 | 19 | t.deepEqual( 20 | await reduceAsync([a, b, c], (acc, value) => [...acc, value], []), 21 | ['a', 'b', 'c'] 22 | ) 23 | t.deepEqual( 24 | await reduceAsync([a, c, b], (acc, value) => [...acc, value], ['d']), 25 | ['d', 'a', 'c', 'b'] 26 | ) 27 | }) 28 | -------------------------------------------------------------------------------- /coding-intermediate/seq.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | let reduceAsync = async (array, fn, value) => { 4 | for (let a of array) { 5 | value = fn(value, await a()) 6 | } 7 | return value 8 | } 9 | 10 | let seq = array => 11 | reduceAsync(array, (acc, value) => [...acc, value], []) 12 | 13 | /// tests 14 | 15 | import { test } from 'ava' 16 | 17 | test(async t => { 18 | let a = () => Promise.resolve('a') 19 | let b = () => Promise.resolve('b') 20 | let c = () => Promise.resolve('c') 21 | 22 | t.deepEqual(await seq([a, b, c]), ['a', 'b', 'c']) 23 | t.deepEqual(await seq([a, c, b]), ['a', 'c', 'b']) 24 | }) 25 | -------------------------------------------------------------------------------- /coding-intermediate/sort.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is an implementation of the mergesort algorithm. 3 | * There are other O(N * log(N)) sort algorithms, but 4 | * this is probably the simplest. 5 | */ 6 | 7 | /// solution 8 | 9 | function sort(array) { 10 | if (array.length < 2) { 11 | return array 12 | } 13 | 14 | let mid = Math.floor(array.length / 2) 15 | let left = array.slice(0, mid) 16 | let right = array.slice(mid) 17 | 18 | return merge(sort(left), sort(right)) 19 | } 20 | 21 | function merge(left, right) { 22 | let result = [] 23 | let indexLeft = 0 24 | let indexRight = 0 25 | 26 | while (indexLeft < left.length && indexRight < right.length) { 27 | result.push( 28 | left[indexLeft] < right[indexRight] 29 | ? left[indexLeft++] 30 | : right[indexRight++] 31 | ) 32 | } 33 | 34 | return result 35 | .concat(left.slice(indexLeft)) 36 | .concat(right.slice(indexRight)) 37 | } 38 | 39 | /// tests 40 | 41 | import { test } from 'ava' 42 | 43 | test(t => t.deepEqual(sort([]), [])) 44 | test(t => t.deepEqual(sort([-4, 1, Infinity, 3, 3, 0]), [-4, 0, 1, 3, 3, Infinity])) 45 | -------------------------------------------------------------------------------- /coding-intermediate/uniq.js: -------------------------------------------------------------------------------- 1 | /// solution 2 | 3 | function uniq(array) { 4 | 5 | // keep track of already seen numbers in an object, 6 | // because checking if an object has a certain key 7 | // is cheap (it takes O(1) time). 8 | // 9 | // if we didn't use this object, we'd have to check 10 | // if result contains current on every turn of the 11 | // loop, which would take up to O(N * log(N)) time. 12 | let seen = {} 13 | 14 | return array.reduce((result, current) => { 15 | if (current in seen) { 16 | return result 17 | } 18 | seen[current] = true 19 | return result.concat(current) 20 | }, []) 21 | } 22 | 23 | /// tests 24 | 25 | import { test } from 'ava' 26 | 27 | test(t => t.deepEqual(uniq([]), [])) 28 | test(t => t.deepEqual(uniq([1, 4, 2, 2, 3, 4, 8]), [1, 4, 2, 3, 8])) 29 | -------------------------------------------------------------------------------- /debugging/bark.md: -------------------------------------------------------------------------------- 1 | ## Original code 2 | 3 | ```js 4 | function Dog(name) { 5 | this.name = name 6 | } 7 | Dog.bark = function() { 8 | console.log(this.name + ' says woof') 9 | } 10 | let fido = new Dog('fido') 11 | fido.bark() 12 | ``` 13 | 14 | ## Corrected code 15 | 16 | ```js 17 | function Dog(name) { 18 | this.name = name 19 | } 20 | Dog.prototype.bark = function() { 21 | console.log(this.name + ' says woof') 22 | } 23 | let fido = new Dog('fido') 24 | fido.bark() 25 | ``` 26 | 27 | ## Explanation 28 | 29 | When you `new` a function in JavaScript, it creates a new object whose methods are inherited from the `prototype` of the function you `new`'d. This is called prototypal inheritance. Defining something on the prototype vs. on the function directly is analogous to defining something as an instance property vs. as a static property on a `class`. 30 | 31 | This code incorrectly defined `bark` directly on `Dog`. So when you `new` a `Dog`, the resulting object won't inherit the `bark` property. For it to inherit `bark`, we need to move `bark` to `Dog`'s `prototype`. 32 | -------------------------------------------------------------------------------- /debugging/doggo.md: -------------------------------------------------------------------------------- 1 | ## Original code 2 | 3 | ```js 4 | let dog = { 5 | name: 'doggo', 6 | sayName() { 7 | console.log(this.name) 8 | } 9 | } 10 | let sayName = dog.sayName 11 | sayName() 12 | ``` 13 | 14 | ## Corrected code 15 | 16 | ```js 17 | let dog = { 18 | name: 'doggo', 19 | sayName() { 20 | console.log(this.name) 21 | } 22 | } 23 | let sayName = dog.sayName.bind(dog) 24 | sayName() 25 | ``` 26 | 27 | ## Explanation 28 | 29 | In JavaScript `this` is dynamically scoped, which means `this` inside a function is defined *based on the way you call that function*. Unless you explicitly bind `this` using the `call`, `apply`, or `bind` functions, `this` is generally set to the thing that's to the left of the dot when you call your function. 30 | 31 | When the code calls `sayName()` there's nothing to the left of the dot, so `this` is set to its default value: `undefined` if we're in strict mode, or the global object otherwise. But for `this.name` to be defined, `this` has to point to `dog`. There are a few ways we could do that: 32 | 33 | 1. Explicitly bind `dog` to `this` using the `bind` function when we define `sayName`. 34 | 2. Explicitly bind `dog` to `this` using the `call` function when we call `sayName`. 35 | 3. Explicitly bind `dog` to `this` using the `apply` function when we call `sayName`. 36 | 37 | I chose option (1) because `sayName` can *only* be called when `this` is set to `dog`, otherwise the code will not give the correct result. I didn't want to leave it up to the consumer to do that correctly, so I used `bind` to make sure `this` will always be set correctly when calling `sayName()`. 38 | -------------------------------------------------------------------------------- /debugging/heyAmy.md: -------------------------------------------------------------------------------- 1 | ## Original code 2 | 3 | ```js 4 | function greet(person) { 5 | if (person == { name: 'amy' }) { 6 | return 'hey amy' 7 | } else { 8 | return 'hey arnold' 9 | } 10 | } 11 | greet({ name: 'amy' }) 12 | ``` 13 | 14 | ## Corrected code 15 | 16 | ```js 17 | function greet(person) { 18 | if (person.name == 'amy') { 19 | return 'hey amy' 20 | } else { 21 | return 'hey arnold' 22 | } 23 | } 24 | greet({ name: 'amy' }) 25 | ``` 26 | 27 | ## Explanation 28 | 29 | In JavaScript, every type is either a value type or a reference type. When comparing two types, value types are compared by value, while reference types are compared by reference. So when the code compares `person` to `{ name: 'amy' }`, it compares the passed in `person` again the *reference* to the object `{ name: 'amy' }`. Since the object is declared on the same line where the comparison is made, nothing that we pass in will ever be reference-equal to it. 30 | 31 | Here are two possible fixes: 32 | 33 | 1. Compare `person.name` to `'amy'`. They are both strings, which will be compared by value rather than by reference. 34 | 2. Do a deep comparison between `person` and `{ name: 'amy' }`. This means we check each property of each object, and make sure they all match. 35 | 36 | I chose option (1) for its simplicity and performance. It works here because in this case `name` is the only property on our object - if there were more properties, a deep comparison might be the better option. 37 | -------------------------------------------------------------------------------- /debugging/isBig.md: -------------------------------------------------------------------------------- 1 | ## Original code 2 | 3 | ```js 4 | function isBig(thing) { 5 | if (thing == 0 || thing == 1 || thing == 2) { 6 | return false 7 | } 8 | return true 9 | } 10 | isBig(1) // false 11 | isBig([2]) // false 12 | isBig([3]) // true 13 | ``` 14 | 15 | ## Explanation 16 | 17 | JavaScript is a weakly typed language. What this means is under the hood, JavaScript defines methods for converting from every type to every other type. When a variable needs to be converted to another type, JavaScript invokes the appropriate implicit to do the conversion. For example, if you run the code `1 + '2'`, JavaScript will (roughly): 18 | 19 | 1. Notice that you are using `+` to concatenate two strings 20 | 2. Notice that `1` is a number, not a string 21 | 3. Call the `toString()` method on `1` to convert it to the string `'1'` 22 | 4. Concatenate `'1'` and `'2'`, resulting in `'12'` 23 | 24 | Back to the original code - JavaScript tries to be helpful by converting `[2]` and `[3]` to numbers before comparing them to the numbers `0`, `1`, and `2` (you can try it yourself by running `Number([2])` in your REPL). Since `[2]` implicitly converts to `2`, `isBig([2])` returns `false`. Since `[3]` implicitly converts to `3`, `isBig([3])` returns `true`. 25 | 26 | As you can probably see, while having lots of pre-defined implicits is convenient, it can be also be a source of errors. This is a popular critique of the JavaScript language: it's *too* helpful when implicitly converting between types for you. 27 | 28 | For a full list of JavaScript's implicits, see page 25 ("Type Conversion") in the [original ECMAScript 1 specification](https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf), written back in 1997. 29 | -------------------------------------------------------------------------------- /debugging/setTimeout.md: -------------------------------------------------------------------------------- 1 | ## Original code 2 | 3 | ```js 4 | for (var i = 0; i < 4; i++) { 5 | setTimeout(() => console.log(i), 0) 6 | } 7 | ``` 8 | 9 | ## Corrected code 10 | 11 | ```js 12 | for (let i = 0; i < 4; i++) { 13 | setTimeout(() => console.log(i), 0) 14 | } 15 | ``` 16 | 17 | ## Explanation 18 | 19 | There are two types of variable declarations in JavaScript: block-level declarations (using `let`, `const`, and in `catch` clauses), and function-level declarations (using `var`). Since this code uses `var`, it declares a single variable `i` that is shared by all four calls to `setTimeout`; by the time the first `setTimeout` is actually fired, the loop has already run four times and `i` equals `4`. 20 | 21 | The fix is to make sure each call to `setTimeout` has its own instance of `i`, which doesn't change between the time when we set the timeout and the timeout is actually fired. There are a few ways we can do this: 22 | 23 | 1. Change `var` to `let`, which is a block-level declaration 24 | 2. Pass `i` to `setTimeout` as its third argument, so `i` is passed in as the argument in `setTimeout`'s callback 25 | 3. Wrap the `setTimeout` in an Immediately-Invoked-Function-Expression and pass `i` into it 26 | 27 | I chose option 1 for its minimal code change, and positive effect on readability. 28 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend-interview-questions", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@ava/babel-plugin-throws-helper": { 8 | "version": "2.0.0", 9 | "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", 10 | "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", 11 | "dev": true 12 | }, 13 | "@ava/babel-preset-stage-4": { 14 | "version": "1.1.0", 15 | "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", 16 | "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", 17 | "dev": true, 18 | "requires": { 19 | "babel-plugin-check-es2015-constants": "6.22.0", 20 | "babel-plugin-syntax-trailing-function-commas": "6.22.0", 21 | "babel-plugin-transform-async-to-generator": "6.24.1", 22 | "babel-plugin-transform-es2015-destructuring": "6.23.0", 23 | "babel-plugin-transform-es2015-function-name": "6.24.1", 24 | "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", 25 | "babel-plugin-transform-es2015-parameters": "6.24.1", 26 | "babel-plugin-transform-es2015-spread": "6.22.0", 27 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1", 28 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1", 29 | "babel-plugin-transform-exponentiation-operator": "6.24.1", 30 | "package-hash": "1.2.0" 31 | }, 32 | "dependencies": { 33 | "md5-hex": { 34 | "version": "1.3.0", 35 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", 36 | "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", 37 | "dev": true, 38 | "requires": { 39 | "md5-o-matic": "0.1.1" 40 | } 41 | }, 42 | "package-hash": { 43 | "version": "1.2.0", 44 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", 45 | "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", 46 | "dev": true, 47 | "requires": { 48 | "md5-hex": "1.3.0" 49 | } 50 | } 51 | } 52 | }, 53 | "@ava/babel-preset-transform-test-files": { 54 | "version": "3.0.0", 55 | "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", 56 | "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", 57 | "dev": true, 58 | "requires": { 59 | "@ava/babel-plugin-throws-helper": "2.0.0", 60 | "babel-plugin-espower": "2.3.2" 61 | } 62 | }, 63 | "@ava/write-file-atomic": { 64 | "version": "2.2.0", 65 | "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", 66 | "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", 67 | "dev": true, 68 | "requires": { 69 | "graceful-fs": "4.1.11", 70 | "imurmurhash": "0.1.4", 71 | "slide": "1.1.6" 72 | } 73 | }, 74 | "@concordance/react": { 75 | "version": "1.0.0", 76 | "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", 77 | "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", 78 | "dev": true, 79 | "requires": { 80 | "arrify": "1.0.1" 81 | } 82 | }, 83 | "acorn": { 84 | "version": "5.1.1", 85 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", 86 | "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", 87 | "dev": true 88 | }, 89 | "acorn-jsx": { 90 | "version": "3.0.1", 91 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 92 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 93 | "dev": true, 94 | "requires": { 95 | "acorn": "3.3.0" 96 | }, 97 | "dependencies": { 98 | "acorn": { 99 | "version": "3.3.0", 100 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 101 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 102 | "dev": true 103 | } 104 | } 105 | }, 106 | "ajv": { 107 | "version": "5.2.2", 108 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", 109 | "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", 110 | "dev": true, 111 | "requires": { 112 | "co": "4.6.0", 113 | "fast-deep-equal": "1.0.0", 114 | "json-schema-traverse": "0.3.1", 115 | "json-stable-stringify": "1.0.1" 116 | } 117 | }, 118 | "ajv-keywords": { 119 | "version": "1.5.1", 120 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 121 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", 122 | "dev": true 123 | }, 124 | "ansi-align": { 125 | "version": "2.0.0", 126 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", 127 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", 128 | "dev": true, 129 | "requires": { 130 | "string-width": "2.1.0" 131 | } 132 | }, 133 | "ansi-escapes": { 134 | "version": "2.0.0", 135 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", 136 | "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", 137 | "dev": true 138 | }, 139 | "ansi-regex": { 140 | "version": "2.1.1", 141 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 142 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 143 | "dev": true 144 | }, 145 | "ansi-styles": { 146 | "version": "3.1.0", 147 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", 148 | "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", 149 | "dev": true, 150 | "requires": { 151 | "color-convert": "1.9.0" 152 | } 153 | }, 154 | "anymatch": { 155 | "version": "1.3.0", 156 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 157 | "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", 158 | "dev": true, 159 | "requires": { 160 | "arrify": "1.0.1", 161 | "micromatch": "2.3.11" 162 | } 163 | }, 164 | "argparse": { 165 | "version": "1.0.9", 166 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 167 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 168 | "dev": true, 169 | "requires": { 170 | "sprintf-js": "1.0.3" 171 | } 172 | }, 173 | "arr-diff": { 174 | "version": "2.0.0", 175 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 176 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 177 | "dev": true, 178 | "requires": { 179 | "arr-flatten": "1.1.0" 180 | } 181 | }, 182 | "arr-exclude": { 183 | "version": "1.0.0", 184 | "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", 185 | "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", 186 | "dev": true 187 | }, 188 | "arr-flatten": { 189 | "version": "1.1.0", 190 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 191 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 192 | "dev": true 193 | }, 194 | "array-differ": { 195 | "version": "1.0.0", 196 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 197 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 198 | "dev": true 199 | }, 200 | "array-find-index": { 201 | "version": "1.0.2", 202 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 203 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 204 | "dev": true 205 | }, 206 | "array-union": { 207 | "version": "1.0.2", 208 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 209 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 210 | "dev": true, 211 | "requires": { 212 | "array-uniq": "1.0.3" 213 | } 214 | }, 215 | "array-uniq": { 216 | "version": "1.0.3", 217 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 218 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 219 | "dev": true 220 | }, 221 | "array-unique": { 222 | "version": "0.2.1", 223 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 224 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 225 | "dev": true 226 | }, 227 | "arrify": { 228 | "version": "1.0.1", 229 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 230 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 231 | "dev": true 232 | }, 233 | "async-each": { 234 | "version": "1.0.1", 235 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 236 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 237 | "dev": true 238 | }, 239 | "auto-bind": { 240 | "version": "1.1.0", 241 | "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", 242 | "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", 243 | "dev": true 244 | }, 245 | "ava": { 246 | "version": "0.21.0", 247 | "resolved": "https://registry.npmjs.org/ava/-/ava-0.21.0.tgz", 248 | "integrity": "sha512-+ZjahyjqyzkPLlFZe2OoLmiE3aaQ2jK5h74wrkuX5I+J6LpNAPoQ8X/EhqEtKEjuWwmniLAjnVjZ7OY8rWdJwA==", 249 | "dev": true, 250 | "requires": { 251 | "@ava/babel-preset-stage-4": "1.1.0", 252 | "@ava/babel-preset-transform-test-files": "3.0.0", 253 | "@ava/write-file-atomic": "2.2.0", 254 | "@concordance/react": "1.0.0", 255 | "ansi-escapes": "2.0.0", 256 | "ansi-styles": "3.1.0", 257 | "arr-flatten": "1.1.0", 258 | "array-union": "1.0.2", 259 | "array-uniq": "1.0.3", 260 | "arrify": "1.0.1", 261 | "auto-bind": "1.1.0", 262 | "ava-init": "0.2.1", 263 | "babel-core": "6.25.0", 264 | "bluebird": "3.5.0", 265 | "caching-transform": "1.0.1", 266 | "chalk": "2.0.1", 267 | "chokidar": "1.7.0", 268 | "clean-stack": "1.3.0", 269 | "clean-yaml-object": "0.1.0", 270 | "cli-cursor": "2.1.0", 271 | "cli-spinners": "1.0.0", 272 | "cli-truncate": "1.0.0", 273 | "co-with-promise": "4.6.0", 274 | "code-excerpt": "2.1.0", 275 | "common-path-prefix": "1.0.0", 276 | "concordance": "3.0.0", 277 | "convert-source-map": "1.5.0", 278 | "core-assert": "0.2.1", 279 | "currently-unhandled": "0.4.1", 280 | "debug": "2.6.8", 281 | "dot-prop": "4.1.1", 282 | "empower-core": "0.6.2", 283 | "equal-length": "1.0.1", 284 | "figures": "2.0.0", 285 | "find-cache-dir": "1.0.0", 286 | "fn-name": "2.0.1", 287 | "get-port": "3.1.0", 288 | "globby": "6.1.0", 289 | "has-flag": "2.0.0", 290 | "hullabaloo-config-manager": "1.1.1", 291 | "ignore-by-default": "1.0.1", 292 | "import-local": "0.1.1", 293 | "indent-string": "3.1.0", 294 | "is-ci": "1.0.10", 295 | "is-generator-fn": "1.0.0", 296 | "is-obj": "1.0.1", 297 | "is-observable": "0.2.0", 298 | "is-promise": "2.1.0", 299 | "js-yaml": "3.9.0", 300 | "last-line-stream": "1.0.0", 301 | "lodash.clonedeepwith": "4.5.0", 302 | "lodash.debounce": "4.0.8", 303 | "lodash.difference": "4.5.0", 304 | "lodash.flatten": "4.4.0", 305 | "loud-rejection": "1.6.0", 306 | "make-dir": "1.0.0", 307 | "matcher": "1.0.0", 308 | "md5-hex": "2.0.0", 309 | "meow": "3.7.0", 310 | "ms": "2.0.0", 311 | "multimatch": "2.1.0", 312 | "observable-to-promise": "0.5.0", 313 | "option-chain": "1.0.0", 314 | "package-hash": "2.0.0", 315 | "pkg-conf": "2.0.0", 316 | "plur": "2.1.2", 317 | "pretty-ms": "2.1.0", 318 | "require-precompiled": "0.1.0", 319 | "resolve-cwd": "2.0.0", 320 | "safe-buffer": "5.1.1", 321 | "slash": "1.0.0", 322 | "source-map-support": "0.4.15", 323 | "stack-utils": "1.0.1", 324 | "strip-ansi": "4.0.0", 325 | "strip-bom-buf": "1.0.0", 326 | "supports-color": "4.2.0", 327 | "time-require": "0.1.2", 328 | "trim-off-newlines": "1.0.1", 329 | "unique-temp-dir": "1.0.0", 330 | "update-notifier": "2.2.0" 331 | } 332 | }, 333 | "ava-init": { 334 | "version": "0.2.1", 335 | "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", 336 | "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", 337 | "dev": true, 338 | "requires": { 339 | "arr-exclude": "1.0.0", 340 | "execa": "0.7.0", 341 | "has-yarn": "1.0.0", 342 | "read-pkg-up": "2.0.0", 343 | "write-pkg": "3.1.0" 344 | } 345 | }, 346 | "babel-code-frame": { 347 | "version": "6.22.0", 348 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 349 | "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", 350 | "dev": true, 351 | "requires": { 352 | "chalk": "1.1.3", 353 | "esutils": "2.0.2", 354 | "js-tokens": "3.0.2" 355 | }, 356 | "dependencies": { 357 | "ansi-styles": { 358 | "version": "2.2.1", 359 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 360 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 361 | "dev": true 362 | }, 363 | "chalk": { 364 | "version": "1.1.3", 365 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 366 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 367 | "dev": true, 368 | "requires": { 369 | "ansi-styles": "2.2.1", 370 | "escape-string-regexp": "1.0.5", 371 | "has-ansi": "2.0.0", 372 | "strip-ansi": "3.0.1", 373 | "supports-color": "2.0.0" 374 | } 375 | }, 376 | "strip-ansi": { 377 | "version": "3.0.1", 378 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 379 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 380 | "dev": true, 381 | "requires": { 382 | "ansi-regex": "2.1.1" 383 | } 384 | }, 385 | "supports-color": { 386 | "version": "2.0.0", 387 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 388 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 389 | "dev": true 390 | } 391 | } 392 | }, 393 | "babel-core": { 394 | "version": "6.25.0", 395 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", 396 | "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", 397 | "dev": true, 398 | "requires": { 399 | "babel-code-frame": "6.22.0", 400 | "babel-generator": "6.25.0", 401 | "babel-helpers": "6.24.1", 402 | "babel-messages": "6.23.0", 403 | "babel-register": "6.24.1", 404 | "babel-runtime": "6.23.0", 405 | "babel-template": "6.25.0", 406 | "babel-traverse": "6.25.0", 407 | "babel-types": "6.25.0", 408 | "babylon": "6.17.4", 409 | "convert-source-map": "1.5.0", 410 | "debug": "2.6.8", 411 | "json5": "0.5.1", 412 | "lodash": "4.17.4", 413 | "minimatch": "3.0.4", 414 | "path-is-absolute": "1.0.1", 415 | "private": "0.1.7", 416 | "slash": "1.0.0", 417 | "source-map": "0.5.6" 418 | } 419 | }, 420 | "babel-generator": { 421 | "version": "6.25.0", 422 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", 423 | "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", 424 | "dev": true, 425 | "requires": { 426 | "babel-messages": "6.23.0", 427 | "babel-runtime": "6.23.0", 428 | "babel-types": "6.25.0", 429 | "detect-indent": "4.0.0", 430 | "jsesc": "1.3.0", 431 | "lodash": "4.17.4", 432 | "source-map": "0.5.6", 433 | "trim-right": "1.0.1" 434 | }, 435 | "dependencies": { 436 | "jsesc": { 437 | "version": "1.3.0", 438 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 439 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 440 | "dev": true 441 | } 442 | } 443 | }, 444 | "babel-helper-builder-binary-assignment-operator-visitor": { 445 | "version": "6.24.1", 446 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 447 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 448 | "dev": true, 449 | "requires": { 450 | "babel-helper-explode-assignable-expression": "6.24.1", 451 | "babel-runtime": "6.23.0", 452 | "babel-types": "6.25.0" 453 | } 454 | }, 455 | "babel-helper-call-delegate": { 456 | "version": "6.24.1", 457 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 458 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 459 | "dev": true, 460 | "requires": { 461 | "babel-helper-hoist-variables": "6.24.1", 462 | "babel-runtime": "6.23.0", 463 | "babel-traverse": "6.25.0", 464 | "babel-types": "6.25.0" 465 | } 466 | }, 467 | "babel-helper-explode-assignable-expression": { 468 | "version": "6.24.1", 469 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 470 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 471 | "dev": true, 472 | "requires": { 473 | "babel-runtime": "6.23.0", 474 | "babel-traverse": "6.25.0", 475 | "babel-types": "6.25.0" 476 | } 477 | }, 478 | "babel-helper-function-name": { 479 | "version": "6.24.1", 480 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 481 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 482 | "dev": true, 483 | "requires": { 484 | "babel-helper-get-function-arity": "6.24.1", 485 | "babel-runtime": "6.23.0", 486 | "babel-template": "6.25.0", 487 | "babel-traverse": "6.25.0", 488 | "babel-types": "6.25.0" 489 | } 490 | }, 491 | "babel-helper-get-function-arity": { 492 | "version": "6.24.1", 493 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 494 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 495 | "dev": true, 496 | "requires": { 497 | "babel-runtime": "6.23.0", 498 | "babel-types": "6.25.0" 499 | } 500 | }, 501 | "babel-helper-hoist-variables": { 502 | "version": "6.24.1", 503 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 504 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 505 | "dev": true, 506 | "requires": { 507 | "babel-runtime": "6.23.0", 508 | "babel-types": "6.25.0" 509 | } 510 | }, 511 | "babel-helper-regex": { 512 | "version": "6.24.1", 513 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", 514 | "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", 515 | "dev": true, 516 | "requires": { 517 | "babel-runtime": "6.23.0", 518 | "babel-types": "6.25.0", 519 | "lodash": "4.17.4" 520 | } 521 | }, 522 | "babel-helper-remap-async-to-generator": { 523 | "version": "6.24.1", 524 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 525 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 526 | "dev": true, 527 | "requires": { 528 | "babel-helper-function-name": "6.24.1", 529 | "babel-runtime": "6.23.0", 530 | "babel-template": "6.25.0", 531 | "babel-traverse": "6.25.0", 532 | "babel-types": "6.25.0" 533 | } 534 | }, 535 | "babel-helpers": { 536 | "version": "6.24.1", 537 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 538 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 539 | "dev": true, 540 | "requires": { 541 | "babel-runtime": "6.23.0", 542 | "babel-template": "6.25.0" 543 | } 544 | }, 545 | "babel-messages": { 546 | "version": "6.23.0", 547 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 548 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 549 | "dev": true, 550 | "requires": { 551 | "babel-runtime": "6.23.0" 552 | } 553 | }, 554 | "babel-plugin-check-es2015-constants": { 555 | "version": "6.22.0", 556 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 557 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 558 | "dev": true, 559 | "requires": { 560 | "babel-runtime": "6.23.0" 561 | } 562 | }, 563 | "babel-plugin-espower": { 564 | "version": "2.3.2", 565 | "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", 566 | "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", 567 | "dev": true, 568 | "requires": { 569 | "babel-generator": "6.25.0", 570 | "babylon": "6.17.4", 571 | "call-matcher": "1.0.1", 572 | "core-js": "2.4.1", 573 | "espower-location-detector": "1.0.0", 574 | "espurify": "1.7.0", 575 | "estraverse": "4.2.0" 576 | } 577 | }, 578 | "babel-plugin-syntax-async-functions": { 579 | "version": "6.13.0", 580 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 581 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 582 | "dev": true 583 | }, 584 | "babel-plugin-syntax-exponentiation-operator": { 585 | "version": "6.13.0", 586 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 587 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 588 | "dev": true 589 | }, 590 | "babel-plugin-syntax-trailing-function-commas": { 591 | "version": "6.22.0", 592 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 593 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 594 | "dev": true 595 | }, 596 | "babel-plugin-transform-async-to-generator": { 597 | "version": "6.24.1", 598 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 599 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 600 | "dev": true, 601 | "requires": { 602 | "babel-helper-remap-async-to-generator": "6.24.1", 603 | "babel-plugin-syntax-async-functions": "6.13.0", 604 | "babel-runtime": "6.23.0" 605 | } 606 | }, 607 | "babel-plugin-transform-es2015-destructuring": { 608 | "version": "6.23.0", 609 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 610 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 611 | "dev": true, 612 | "requires": { 613 | "babel-runtime": "6.23.0" 614 | } 615 | }, 616 | "babel-plugin-transform-es2015-function-name": { 617 | "version": "6.24.1", 618 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 619 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 620 | "dev": true, 621 | "requires": { 622 | "babel-helper-function-name": "6.24.1", 623 | "babel-runtime": "6.23.0", 624 | "babel-types": "6.25.0" 625 | } 626 | }, 627 | "babel-plugin-transform-es2015-modules-commonjs": { 628 | "version": "6.24.1", 629 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", 630 | "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", 631 | "dev": true, 632 | "requires": { 633 | "babel-plugin-transform-strict-mode": "6.24.1", 634 | "babel-runtime": "6.23.0", 635 | "babel-template": "6.25.0", 636 | "babel-types": "6.25.0" 637 | } 638 | }, 639 | "babel-plugin-transform-es2015-parameters": { 640 | "version": "6.24.1", 641 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 642 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 643 | "dev": true, 644 | "requires": { 645 | "babel-helper-call-delegate": "6.24.1", 646 | "babel-helper-get-function-arity": "6.24.1", 647 | "babel-runtime": "6.23.0", 648 | "babel-template": "6.25.0", 649 | "babel-traverse": "6.25.0", 650 | "babel-types": "6.25.0" 651 | } 652 | }, 653 | "babel-plugin-transform-es2015-spread": { 654 | "version": "6.22.0", 655 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 656 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 657 | "dev": true, 658 | "requires": { 659 | "babel-runtime": "6.23.0" 660 | } 661 | }, 662 | "babel-plugin-transform-es2015-sticky-regex": { 663 | "version": "6.24.1", 664 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 665 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 666 | "dev": true, 667 | "requires": { 668 | "babel-helper-regex": "6.24.1", 669 | "babel-runtime": "6.23.0", 670 | "babel-types": "6.25.0" 671 | } 672 | }, 673 | "babel-plugin-transform-es2015-unicode-regex": { 674 | "version": "6.24.1", 675 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 676 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 677 | "dev": true, 678 | "requires": { 679 | "babel-helper-regex": "6.24.1", 680 | "babel-runtime": "6.23.0", 681 | "regexpu-core": "2.0.0" 682 | } 683 | }, 684 | "babel-plugin-transform-exponentiation-operator": { 685 | "version": "6.24.1", 686 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 687 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 688 | "dev": true, 689 | "requires": { 690 | "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", 691 | "babel-plugin-syntax-exponentiation-operator": "6.13.0", 692 | "babel-runtime": "6.23.0" 693 | } 694 | }, 695 | "babel-plugin-transform-strict-mode": { 696 | "version": "6.24.1", 697 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 698 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 699 | "dev": true, 700 | "requires": { 701 | "babel-runtime": "6.23.0", 702 | "babel-types": "6.25.0" 703 | } 704 | }, 705 | "babel-register": { 706 | "version": "6.24.1", 707 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", 708 | "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", 709 | "dev": true, 710 | "requires": { 711 | "babel-core": "6.25.0", 712 | "babel-runtime": "6.23.0", 713 | "core-js": "2.4.1", 714 | "home-or-tmp": "2.0.0", 715 | "lodash": "4.17.4", 716 | "mkdirp": "0.5.1", 717 | "source-map-support": "0.4.15" 718 | } 719 | }, 720 | "babel-runtime": { 721 | "version": "6.23.0", 722 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 723 | "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", 724 | "dev": true, 725 | "requires": { 726 | "core-js": "2.4.1", 727 | "regenerator-runtime": "0.10.5" 728 | } 729 | }, 730 | "babel-template": { 731 | "version": "6.25.0", 732 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 733 | "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", 734 | "dev": true, 735 | "requires": { 736 | "babel-runtime": "6.23.0", 737 | "babel-traverse": "6.25.0", 738 | "babel-types": "6.25.0", 739 | "babylon": "6.17.4", 740 | "lodash": "4.17.4" 741 | } 742 | }, 743 | "babel-traverse": { 744 | "version": "6.25.0", 745 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 746 | "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", 747 | "dev": true, 748 | "requires": { 749 | "babel-code-frame": "6.22.0", 750 | "babel-messages": "6.23.0", 751 | "babel-runtime": "6.23.0", 752 | "babel-types": "6.25.0", 753 | "babylon": "6.17.4", 754 | "debug": "2.6.8", 755 | "globals": "9.18.0", 756 | "invariant": "2.2.2", 757 | "lodash": "4.17.4" 758 | } 759 | }, 760 | "babel-types": { 761 | "version": "6.25.0", 762 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 763 | "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", 764 | "dev": true, 765 | "requires": { 766 | "babel-runtime": "6.23.0", 767 | "esutils": "2.0.2", 768 | "lodash": "4.17.4", 769 | "to-fast-properties": "1.0.3" 770 | } 771 | }, 772 | "babylon": { 773 | "version": "6.17.4", 774 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", 775 | "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", 776 | "dev": true 777 | }, 778 | "balanced-match": { 779 | "version": "1.0.0", 780 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 781 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 782 | "dev": true 783 | }, 784 | "binary-extensions": { 785 | "version": "1.8.0", 786 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", 787 | "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", 788 | "dev": true 789 | }, 790 | "bluebird": { 791 | "version": "3.5.0", 792 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 793 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", 794 | "dev": true 795 | }, 796 | "boxen": { 797 | "version": "1.2.0", 798 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.0.tgz", 799 | "integrity": "sha512-tfKK3nq0qXXOxvXEYW1k1XNRrDuQzO2oFPvLD3Fs1I58n0leuTNlftBmu3seUCyZvDfiqgRaxlqZs9WJAbSA7g==", 800 | "dev": true, 801 | "requires": { 802 | "ansi-align": "2.0.0", 803 | "camelcase": "4.1.0", 804 | "chalk": "2.0.1", 805 | "cli-boxes": "1.0.0", 806 | "string-width": "2.1.0", 807 | "term-size": "1.2.0", 808 | "widest-line": "1.0.0" 809 | }, 810 | "dependencies": { 811 | "camelcase": { 812 | "version": "4.1.0", 813 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 814 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 815 | "dev": true 816 | } 817 | } 818 | }, 819 | "brace-expansion": { 820 | "version": "1.1.8", 821 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 822 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 823 | "dev": true, 824 | "requires": { 825 | "balanced-match": "1.0.0", 826 | "concat-map": "0.0.1" 827 | } 828 | }, 829 | "braces": { 830 | "version": "1.8.5", 831 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 832 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 833 | "dev": true, 834 | "requires": { 835 | "expand-range": "1.8.2", 836 | "preserve": "0.2.0", 837 | "repeat-element": "1.1.2" 838 | } 839 | }, 840 | "buf-compare": { 841 | "version": "1.0.1", 842 | "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", 843 | "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", 844 | "dev": true 845 | }, 846 | "builtin-modules": { 847 | "version": "1.1.1", 848 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 849 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 850 | "dev": true 851 | }, 852 | "caching-transform": { 853 | "version": "1.0.1", 854 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", 855 | "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", 856 | "dev": true, 857 | "requires": { 858 | "md5-hex": "1.3.0", 859 | "mkdirp": "0.5.1", 860 | "write-file-atomic": "1.3.4" 861 | }, 862 | "dependencies": { 863 | "md5-hex": { 864 | "version": "1.3.0", 865 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", 866 | "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", 867 | "dev": true, 868 | "requires": { 869 | "md5-o-matic": "0.1.1" 870 | } 871 | }, 872 | "write-file-atomic": { 873 | "version": "1.3.4", 874 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", 875 | "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", 876 | "dev": true, 877 | "requires": { 878 | "graceful-fs": "4.1.11", 879 | "imurmurhash": "0.1.4", 880 | "slide": "1.1.6" 881 | } 882 | } 883 | } 884 | }, 885 | "call-matcher": { 886 | "version": "1.0.1", 887 | "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", 888 | "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", 889 | "dev": true, 890 | "requires": { 891 | "core-js": "2.4.1", 892 | "deep-equal": "1.0.1", 893 | "espurify": "1.7.0", 894 | "estraverse": "4.2.0" 895 | } 896 | }, 897 | "call-signature": { 898 | "version": "0.0.2", 899 | "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", 900 | "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", 901 | "dev": true 902 | }, 903 | "caller-path": { 904 | "version": "0.1.0", 905 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 906 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 907 | "dev": true, 908 | "requires": { 909 | "callsites": "0.2.0" 910 | } 911 | }, 912 | "callsites": { 913 | "version": "0.2.0", 914 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 915 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 916 | "dev": true 917 | }, 918 | "camelcase": { 919 | "version": "2.1.1", 920 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 921 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 922 | "dev": true 923 | }, 924 | "camelcase-keys": { 925 | "version": "2.1.0", 926 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 927 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 928 | "dev": true, 929 | "requires": { 930 | "camelcase": "2.1.1", 931 | "map-obj": "1.0.1" 932 | } 933 | }, 934 | "capture-stack-trace": { 935 | "version": "1.0.0", 936 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", 937 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", 938 | "dev": true 939 | }, 940 | "chalk": { 941 | "version": "2.0.1", 942 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", 943 | "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", 944 | "dev": true, 945 | "requires": { 946 | "ansi-styles": "3.1.0", 947 | "escape-string-regexp": "1.0.5", 948 | "supports-color": "4.2.0" 949 | } 950 | }, 951 | "chokidar": { 952 | "version": "1.7.0", 953 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 954 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 955 | "dev": true, 956 | "requires": { 957 | "anymatch": "1.3.0", 958 | "async-each": "1.0.1", 959 | "fsevents": "1.1.2", 960 | "glob-parent": "2.0.0", 961 | "inherits": "2.0.3", 962 | "is-binary-path": "1.0.1", 963 | "is-glob": "2.0.1", 964 | "path-is-absolute": "1.0.1", 965 | "readdirp": "2.1.0" 966 | } 967 | }, 968 | "ci-info": { 969 | "version": "1.0.0", 970 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", 971 | "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", 972 | "dev": true 973 | }, 974 | "circular-json": { 975 | "version": "0.3.1", 976 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", 977 | "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", 978 | "dev": true 979 | }, 980 | "clean-stack": { 981 | "version": "1.3.0", 982 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", 983 | "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", 984 | "dev": true 985 | }, 986 | "clean-yaml-object": { 987 | "version": "0.1.0", 988 | "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", 989 | "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", 990 | "dev": true 991 | }, 992 | "cli-boxes": { 993 | "version": "1.0.0", 994 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 995 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 996 | "dev": true 997 | }, 998 | "cli-cursor": { 999 | "version": "2.1.0", 1000 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 1001 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 1002 | "dev": true, 1003 | "requires": { 1004 | "restore-cursor": "2.0.0" 1005 | } 1006 | }, 1007 | "cli-spinners": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", 1010 | "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", 1011 | "dev": true 1012 | }, 1013 | "cli-truncate": { 1014 | "version": "1.0.0", 1015 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.0.0.tgz", 1016 | "integrity": "sha1-IeuR9Hs/ZWDwBNt3p2m0Zo2cVRg=", 1017 | "dev": true, 1018 | "requires": { 1019 | "slice-ansi": "0.0.4", 1020 | "string-width": "2.1.0" 1021 | } 1022 | }, 1023 | "cli-width": { 1024 | "version": "2.1.0", 1025 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", 1026 | "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", 1027 | "dev": true 1028 | }, 1029 | "co": { 1030 | "version": "4.6.0", 1031 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1032 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 1033 | "dev": true 1034 | }, 1035 | "co-with-promise": { 1036 | "version": "4.6.0", 1037 | "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", 1038 | "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", 1039 | "dev": true, 1040 | "requires": { 1041 | "pinkie-promise": "1.0.0" 1042 | } 1043 | }, 1044 | "code-excerpt": { 1045 | "version": "2.1.0", 1046 | "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", 1047 | "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", 1048 | "dev": true, 1049 | "requires": { 1050 | "convert-to-spaces": "1.0.2" 1051 | } 1052 | }, 1053 | "code-point-at": { 1054 | "version": "1.1.0", 1055 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 1056 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 1057 | "dev": true 1058 | }, 1059 | "color-convert": { 1060 | "version": "1.9.0", 1061 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", 1062 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", 1063 | "dev": true, 1064 | "requires": { 1065 | "color-name": "1.1.3" 1066 | } 1067 | }, 1068 | "color-name": { 1069 | "version": "1.1.3", 1070 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1071 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1072 | "dev": true 1073 | }, 1074 | "common-path-prefix": { 1075 | "version": "1.0.0", 1076 | "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", 1077 | "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", 1078 | "dev": true 1079 | }, 1080 | "commondir": { 1081 | "version": "1.0.1", 1082 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1083 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1084 | "dev": true 1085 | }, 1086 | "concat-map": { 1087 | "version": "0.0.1", 1088 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1089 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1090 | "dev": true 1091 | }, 1092 | "concat-stream": { 1093 | "version": "1.6.0", 1094 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 1095 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 1096 | "dev": true, 1097 | "requires": { 1098 | "inherits": "2.0.3", 1099 | "readable-stream": "2.3.3", 1100 | "typedarray": "0.0.6" 1101 | } 1102 | }, 1103 | "concordance": { 1104 | "version": "3.0.0", 1105 | "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", 1106 | "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", 1107 | "dev": true, 1108 | "requires": { 1109 | "date-time": "2.1.0", 1110 | "esutils": "2.0.2", 1111 | "fast-diff": "1.1.1", 1112 | "function-name-support": "0.2.0", 1113 | "js-string-escape": "1.0.1", 1114 | "lodash.clonedeep": "4.5.0", 1115 | "lodash.flattendeep": "4.4.0", 1116 | "lodash.merge": "4.6.0", 1117 | "md5-hex": "2.0.0", 1118 | "semver": "5.3.0", 1119 | "well-known-symbols": "1.0.0" 1120 | } 1121 | }, 1122 | "configstore": { 1123 | "version": "3.1.0", 1124 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.0.tgz", 1125 | "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=", 1126 | "dev": true, 1127 | "requires": { 1128 | "dot-prop": "4.1.1", 1129 | "graceful-fs": "4.1.11", 1130 | "make-dir": "1.0.0", 1131 | "unique-string": "1.0.0", 1132 | "write-file-atomic": "2.1.0", 1133 | "xdg-basedir": "3.0.0" 1134 | } 1135 | }, 1136 | "contains-path": { 1137 | "version": "0.1.0", 1138 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 1139 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 1140 | "dev": true 1141 | }, 1142 | "convert-source-map": { 1143 | "version": "1.5.0", 1144 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 1145 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 1146 | "dev": true 1147 | }, 1148 | "convert-to-spaces": { 1149 | "version": "1.0.2", 1150 | "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", 1151 | "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", 1152 | "dev": true 1153 | }, 1154 | "core-assert": { 1155 | "version": "0.2.1", 1156 | "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", 1157 | "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", 1158 | "dev": true, 1159 | "requires": { 1160 | "buf-compare": "1.0.1", 1161 | "is-error": "2.2.1" 1162 | } 1163 | }, 1164 | "core-js": { 1165 | "version": "2.4.1", 1166 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 1167 | "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", 1168 | "dev": true 1169 | }, 1170 | "core-util-is": { 1171 | "version": "1.0.2", 1172 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1173 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1174 | "dev": true 1175 | }, 1176 | "create-error-class": { 1177 | "version": "3.0.2", 1178 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 1179 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 1180 | "dev": true, 1181 | "requires": { 1182 | "capture-stack-trace": "1.0.0" 1183 | } 1184 | }, 1185 | "cross-spawn": { 1186 | "version": "5.1.0", 1187 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 1188 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 1189 | "dev": true, 1190 | "requires": { 1191 | "lru-cache": "4.1.1", 1192 | "shebang-command": "1.2.0", 1193 | "which": "1.2.14" 1194 | } 1195 | }, 1196 | "crypto-random-string": { 1197 | "version": "1.0.0", 1198 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 1199 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 1200 | "dev": true 1201 | }, 1202 | "currently-unhandled": { 1203 | "version": "0.4.1", 1204 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 1205 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 1206 | "dev": true, 1207 | "requires": { 1208 | "array-find-index": "1.0.2" 1209 | } 1210 | }, 1211 | "date-time": { 1212 | "version": "2.1.0", 1213 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", 1214 | "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", 1215 | "dev": true, 1216 | "requires": { 1217 | "time-zone": "1.0.0" 1218 | } 1219 | }, 1220 | "debug": { 1221 | "version": "2.6.8", 1222 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 1223 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 1224 | "dev": true, 1225 | "requires": { 1226 | "ms": "2.0.0" 1227 | } 1228 | }, 1229 | "decamelize": { 1230 | "version": "1.2.0", 1231 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 1232 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 1233 | "dev": true 1234 | }, 1235 | "deep-equal": { 1236 | "version": "1.0.1", 1237 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 1238 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 1239 | "dev": true 1240 | }, 1241 | "deep-extend": { 1242 | "version": "0.4.2", 1243 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 1244 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", 1245 | "dev": true 1246 | }, 1247 | "deep-is": { 1248 | "version": "0.1.3", 1249 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1250 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1251 | "dev": true 1252 | }, 1253 | "del": { 1254 | "version": "2.2.2", 1255 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 1256 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 1257 | "dev": true, 1258 | "requires": { 1259 | "globby": "5.0.0", 1260 | "is-path-cwd": "1.0.0", 1261 | "is-path-in-cwd": "1.0.0", 1262 | "object-assign": "4.1.1", 1263 | "pify": "2.3.0", 1264 | "pinkie-promise": "2.0.1", 1265 | "rimraf": "2.6.1" 1266 | }, 1267 | "dependencies": { 1268 | "globby": { 1269 | "version": "5.0.0", 1270 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 1271 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 1272 | "dev": true, 1273 | "requires": { 1274 | "array-union": "1.0.2", 1275 | "arrify": "1.0.1", 1276 | "glob": "7.1.2", 1277 | "object-assign": "4.1.1", 1278 | "pify": "2.3.0", 1279 | "pinkie-promise": "2.0.1" 1280 | } 1281 | }, 1282 | "pinkie": { 1283 | "version": "2.0.4", 1284 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1285 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1286 | "dev": true 1287 | }, 1288 | "pinkie-promise": { 1289 | "version": "2.0.1", 1290 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1291 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1292 | "dev": true, 1293 | "requires": { 1294 | "pinkie": "2.0.4" 1295 | } 1296 | } 1297 | } 1298 | }, 1299 | "detect-indent": { 1300 | "version": "4.0.0", 1301 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 1302 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1303 | "dev": true, 1304 | "requires": { 1305 | "repeating": "2.0.1" 1306 | } 1307 | }, 1308 | "doctrine": { 1309 | "version": "2.0.0", 1310 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", 1311 | "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", 1312 | "dev": true, 1313 | "requires": { 1314 | "esutils": "2.0.2", 1315 | "isarray": "1.0.0" 1316 | } 1317 | }, 1318 | "dot-prop": { 1319 | "version": "4.1.1", 1320 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", 1321 | "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", 1322 | "dev": true, 1323 | "requires": { 1324 | "is-obj": "1.0.1" 1325 | } 1326 | }, 1327 | "duplexer3": { 1328 | "version": "0.1.4", 1329 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 1330 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 1331 | "dev": true 1332 | }, 1333 | "empower-core": { 1334 | "version": "0.6.2", 1335 | "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", 1336 | "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", 1337 | "dev": true, 1338 | "requires": { 1339 | "call-signature": "0.0.2", 1340 | "core-js": "2.4.1" 1341 | } 1342 | }, 1343 | "equal-length": { 1344 | "version": "1.0.1", 1345 | "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", 1346 | "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", 1347 | "dev": true 1348 | }, 1349 | "error-ex": { 1350 | "version": "1.3.1", 1351 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 1352 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 1353 | "dev": true, 1354 | "requires": { 1355 | "is-arrayish": "0.2.1" 1356 | } 1357 | }, 1358 | "es6-error": { 1359 | "version": "4.0.2", 1360 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", 1361 | "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", 1362 | "dev": true 1363 | }, 1364 | "escape-string-regexp": { 1365 | "version": "1.0.5", 1366 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1367 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1368 | "dev": true 1369 | }, 1370 | "eslint": { 1371 | "version": "4.2.0", 1372 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.2.0.tgz", 1373 | "integrity": "sha1-orMYQRGxmOAunH88ymJaXgHFaz0=", 1374 | "dev": true, 1375 | "requires": { 1376 | "ajv": "5.2.2", 1377 | "babel-code-frame": "6.22.0", 1378 | "chalk": "1.1.3", 1379 | "concat-stream": "1.6.0", 1380 | "debug": "2.6.8", 1381 | "doctrine": "2.0.0", 1382 | "eslint-scope": "3.7.1", 1383 | "espree": "3.4.3", 1384 | "esquery": "1.0.0", 1385 | "estraverse": "4.2.0", 1386 | "esutils": "2.0.2", 1387 | "file-entry-cache": "2.0.0", 1388 | "glob": "7.1.2", 1389 | "globals": "9.18.0", 1390 | "ignore": "3.3.3", 1391 | "imurmurhash": "0.1.4", 1392 | "inquirer": "3.2.0", 1393 | "is-resolvable": "1.0.0", 1394 | "js-yaml": "3.9.0", 1395 | "json-stable-stringify": "1.0.1", 1396 | "levn": "0.3.0", 1397 | "lodash": "4.17.4", 1398 | "minimatch": "3.0.4", 1399 | "mkdirp": "0.5.1", 1400 | "natural-compare": "1.4.0", 1401 | "optionator": "0.8.2", 1402 | "path-is-inside": "1.0.2", 1403 | "pluralize": "4.0.0", 1404 | "progress": "2.0.0", 1405 | "require-uncached": "1.0.3", 1406 | "strip-json-comments": "2.0.1", 1407 | "table": "4.0.1", 1408 | "text-table": "0.2.0" 1409 | }, 1410 | "dependencies": { 1411 | "ansi-styles": { 1412 | "version": "2.2.1", 1413 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1414 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 1415 | "dev": true 1416 | }, 1417 | "chalk": { 1418 | "version": "1.1.3", 1419 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1420 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1421 | "dev": true, 1422 | "requires": { 1423 | "ansi-styles": "2.2.1", 1424 | "escape-string-regexp": "1.0.5", 1425 | "has-ansi": "2.0.0", 1426 | "strip-ansi": "3.0.1", 1427 | "supports-color": "2.0.0" 1428 | } 1429 | }, 1430 | "strip-ansi": { 1431 | "version": "3.0.1", 1432 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1433 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1434 | "dev": true, 1435 | "requires": { 1436 | "ansi-regex": "2.1.1" 1437 | } 1438 | }, 1439 | "supports-color": { 1440 | "version": "2.0.0", 1441 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1442 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1443 | "dev": true 1444 | } 1445 | } 1446 | }, 1447 | "eslint-config-standard": { 1448 | "version": "10.2.1", 1449 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", 1450 | "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", 1451 | "dev": true 1452 | }, 1453 | "eslint-import-resolver-node": { 1454 | "version": "0.3.1", 1455 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", 1456 | "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", 1457 | "dev": true, 1458 | "requires": { 1459 | "debug": "2.6.8", 1460 | "resolve": "1.3.3" 1461 | } 1462 | }, 1463 | "eslint-module-utils": { 1464 | "version": "2.1.1", 1465 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", 1466 | "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", 1467 | "dev": true, 1468 | "requires": { 1469 | "debug": "2.6.8", 1470 | "pkg-dir": "1.0.0" 1471 | }, 1472 | "dependencies": { 1473 | "find-up": { 1474 | "version": "1.1.2", 1475 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 1476 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 1477 | "dev": true, 1478 | "requires": { 1479 | "path-exists": "2.1.0", 1480 | "pinkie-promise": "2.0.1" 1481 | } 1482 | }, 1483 | "path-exists": { 1484 | "version": "2.1.0", 1485 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1486 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1487 | "dev": true, 1488 | "requires": { 1489 | "pinkie-promise": "2.0.1" 1490 | } 1491 | }, 1492 | "pinkie": { 1493 | "version": "2.0.4", 1494 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1495 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1496 | "dev": true 1497 | }, 1498 | "pinkie-promise": { 1499 | "version": "2.0.1", 1500 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1501 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1502 | "dev": true, 1503 | "requires": { 1504 | "pinkie": "2.0.4" 1505 | } 1506 | }, 1507 | "pkg-dir": { 1508 | "version": "1.0.0", 1509 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 1510 | "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 1511 | "dev": true, 1512 | "requires": { 1513 | "find-up": "1.1.2" 1514 | } 1515 | } 1516 | } 1517 | }, 1518 | "eslint-plugin-import": { 1519 | "version": "2.7.0", 1520 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", 1521 | "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", 1522 | "dev": true, 1523 | "requires": { 1524 | "builtin-modules": "1.1.1", 1525 | "contains-path": "0.1.0", 1526 | "debug": "2.6.8", 1527 | "doctrine": "1.5.0", 1528 | "eslint-import-resolver-node": "0.3.1", 1529 | "eslint-module-utils": "2.1.1", 1530 | "has": "1.0.1", 1531 | "lodash.cond": "4.5.2", 1532 | "minimatch": "3.0.4", 1533 | "read-pkg-up": "2.0.0" 1534 | }, 1535 | "dependencies": { 1536 | "doctrine": { 1537 | "version": "1.5.0", 1538 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1539 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1540 | "dev": true, 1541 | "requires": { 1542 | "esutils": "2.0.2", 1543 | "isarray": "1.0.0" 1544 | } 1545 | } 1546 | } 1547 | }, 1548 | "eslint-plugin-node": { 1549 | "version": "5.1.0", 1550 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.1.0.tgz", 1551 | "integrity": "sha512-MzAAnEfNOl6g871VgjKswHkyG+bqsXX2//SWXwNkyREvWAPUoU8X6ZvcrambHEGecUIbE0pAVPzzfKU/p9H5lg==", 1552 | "dev": true, 1553 | "requires": { 1554 | "ignore": "3.3.3", 1555 | "minimatch": "3.0.4", 1556 | "resolve": "1.3.3", 1557 | "semver": "5.3.0" 1558 | } 1559 | }, 1560 | "eslint-plugin-promise": { 1561 | "version": "3.5.0", 1562 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", 1563 | "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", 1564 | "dev": true 1565 | }, 1566 | "eslint-plugin-standard": { 1567 | "version": "3.0.1", 1568 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", 1569 | "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", 1570 | "dev": true 1571 | }, 1572 | "eslint-scope": { 1573 | "version": "3.7.1", 1574 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 1575 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 1576 | "dev": true, 1577 | "requires": { 1578 | "esrecurse": "4.2.0", 1579 | "estraverse": "4.2.0" 1580 | } 1581 | }, 1582 | "espower-location-detector": { 1583 | "version": "1.0.0", 1584 | "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", 1585 | "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", 1586 | "dev": true, 1587 | "requires": { 1588 | "is-url": "1.2.2", 1589 | "path-is-absolute": "1.0.1", 1590 | "source-map": "0.5.6", 1591 | "xtend": "4.0.1" 1592 | } 1593 | }, 1594 | "espree": { 1595 | "version": "3.4.3", 1596 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", 1597 | "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", 1598 | "dev": true, 1599 | "requires": { 1600 | "acorn": "5.1.1", 1601 | "acorn-jsx": "3.0.1" 1602 | } 1603 | }, 1604 | "esprima": { 1605 | "version": "4.0.0", 1606 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 1607 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 1608 | "dev": true 1609 | }, 1610 | "espurify": { 1611 | "version": "1.7.0", 1612 | "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", 1613 | "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", 1614 | "dev": true, 1615 | "requires": { 1616 | "core-js": "2.4.1" 1617 | } 1618 | }, 1619 | "esquery": { 1620 | "version": "1.0.0", 1621 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 1622 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", 1623 | "dev": true, 1624 | "requires": { 1625 | "estraverse": "4.2.0" 1626 | } 1627 | }, 1628 | "esrecurse": { 1629 | "version": "4.2.0", 1630 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 1631 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 1632 | "dev": true, 1633 | "requires": { 1634 | "estraverse": "4.2.0", 1635 | "object-assign": "4.1.1" 1636 | } 1637 | }, 1638 | "estraverse": { 1639 | "version": "4.2.0", 1640 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1641 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1642 | "dev": true 1643 | }, 1644 | "esutils": { 1645 | "version": "2.0.2", 1646 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1647 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1648 | "dev": true 1649 | }, 1650 | "execa": { 1651 | "version": "0.7.0", 1652 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 1653 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 1654 | "dev": true, 1655 | "requires": { 1656 | "cross-spawn": "5.1.0", 1657 | "get-stream": "3.0.0", 1658 | "is-stream": "1.1.0", 1659 | "npm-run-path": "2.0.2", 1660 | "p-finally": "1.0.0", 1661 | "signal-exit": "3.0.2", 1662 | "strip-eof": "1.0.0" 1663 | } 1664 | }, 1665 | "expand-brackets": { 1666 | "version": "0.1.5", 1667 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 1668 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 1669 | "dev": true, 1670 | "requires": { 1671 | "is-posix-bracket": "0.1.1" 1672 | } 1673 | }, 1674 | "expand-range": { 1675 | "version": "1.8.2", 1676 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 1677 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 1678 | "dev": true, 1679 | "requires": { 1680 | "fill-range": "2.2.3" 1681 | } 1682 | }, 1683 | "external-editor": { 1684 | "version": "2.0.4", 1685 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", 1686 | "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", 1687 | "dev": true, 1688 | "requires": { 1689 | "iconv-lite": "0.4.18", 1690 | "jschardet": "1.5.0", 1691 | "tmp": "0.0.31" 1692 | } 1693 | }, 1694 | "extglob": { 1695 | "version": "0.3.2", 1696 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1697 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1698 | "dev": true, 1699 | "requires": { 1700 | "is-extglob": "1.0.0" 1701 | } 1702 | }, 1703 | "fast-deep-equal": { 1704 | "version": "1.0.0", 1705 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", 1706 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", 1707 | "dev": true 1708 | }, 1709 | "fast-diff": { 1710 | "version": "1.1.1", 1711 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", 1712 | "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", 1713 | "dev": true 1714 | }, 1715 | "fast-levenshtein": { 1716 | "version": "2.0.6", 1717 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1718 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1719 | "dev": true 1720 | }, 1721 | "figures": { 1722 | "version": "2.0.0", 1723 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1724 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1725 | "dev": true, 1726 | "requires": { 1727 | "escape-string-regexp": "1.0.5" 1728 | } 1729 | }, 1730 | "file-entry-cache": { 1731 | "version": "2.0.0", 1732 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1733 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 1734 | "dev": true, 1735 | "requires": { 1736 | "flat-cache": "1.2.2", 1737 | "object-assign": "4.1.1" 1738 | } 1739 | }, 1740 | "filename-regex": { 1741 | "version": "2.0.1", 1742 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1743 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1744 | "dev": true 1745 | }, 1746 | "fill-range": { 1747 | "version": "2.2.3", 1748 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 1749 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 1750 | "dev": true, 1751 | "requires": { 1752 | "is-number": "2.1.0", 1753 | "isobject": "2.1.0", 1754 | "randomatic": "1.1.7", 1755 | "repeat-element": "1.1.2", 1756 | "repeat-string": "1.6.1" 1757 | } 1758 | }, 1759 | "find-cache-dir": { 1760 | "version": "1.0.0", 1761 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", 1762 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", 1763 | "dev": true, 1764 | "requires": { 1765 | "commondir": "1.0.1", 1766 | "make-dir": "1.0.0", 1767 | "pkg-dir": "2.0.0" 1768 | } 1769 | }, 1770 | "find-up": { 1771 | "version": "2.1.0", 1772 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1773 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1774 | "dev": true, 1775 | "requires": { 1776 | "locate-path": "2.0.0" 1777 | } 1778 | }, 1779 | "flat-cache": { 1780 | "version": "1.2.2", 1781 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", 1782 | "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", 1783 | "dev": true, 1784 | "requires": { 1785 | "circular-json": "0.3.1", 1786 | "del": "2.2.2", 1787 | "graceful-fs": "4.1.11", 1788 | "write": "0.2.1" 1789 | } 1790 | }, 1791 | "fn-name": { 1792 | "version": "2.0.1", 1793 | "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", 1794 | "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", 1795 | "dev": true 1796 | }, 1797 | "for-in": { 1798 | "version": "1.0.2", 1799 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1800 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1801 | "dev": true 1802 | }, 1803 | "for-own": { 1804 | "version": "0.1.5", 1805 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1806 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1807 | "dev": true, 1808 | "requires": { 1809 | "for-in": "1.0.2" 1810 | } 1811 | }, 1812 | "fs.realpath": { 1813 | "version": "1.0.0", 1814 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1815 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1816 | "dev": true 1817 | }, 1818 | "fsevents": { 1819 | "version": "1.1.2", 1820 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", 1821 | "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", 1822 | "dev": true, 1823 | "optional": true, 1824 | "requires": { 1825 | "nan": "2.6.2", 1826 | "node-pre-gyp": "0.6.36" 1827 | }, 1828 | "dependencies": { 1829 | "abbrev": { 1830 | "version": "1.1.0", 1831 | "bundled": true, 1832 | "dev": true, 1833 | "optional": true 1834 | }, 1835 | "ajv": { 1836 | "version": "4.11.8", 1837 | "bundled": true, 1838 | "dev": true, 1839 | "optional": true, 1840 | "requires": { 1841 | "co": "4.6.0", 1842 | "json-stable-stringify": "1.0.1" 1843 | } 1844 | }, 1845 | "ansi-regex": { 1846 | "version": "2.1.1", 1847 | "bundled": true, 1848 | "dev": true 1849 | }, 1850 | "aproba": { 1851 | "version": "1.1.1", 1852 | "bundled": true, 1853 | "dev": true, 1854 | "optional": true 1855 | }, 1856 | "are-we-there-yet": { 1857 | "version": "1.1.4", 1858 | "bundled": true, 1859 | "dev": true, 1860 | "optional": true, 1861 | "requires": { 1862 | "delegates": "1.0.0", 1863 | "readable-stream": "2.2.9" 1864 | } 1865 | }, 1866 | "asn1": { 1867 | "version": "0.2.3", 1868 | "bundled": true, 1869 | "dev": true, 1870 | "optional": true 1871 | }, 1872 | "assert-plus": { 1873 | "version": "0.2.0", 1874 | "bundled": true, 1875 | "dev": true, 1876 | "optional": true 1877 | }, 1878 | "asynckit": { 1879 | "version": "0.4.0", 1880 | "bundled": true, 1881 | "dev": true, 1882 | "optional": true 1883 | }, 1884 | "aws-sign2": { 1885 | "version": "0.6.0", 1886 | "bundled": true, 1887 | "dev": true, 1888 | "optional": true 1889 | }, 1890 | "aws4": { 1891 | "version": "1.6.0", 1892 | "bundled": true, 1893 | "dev": true, 1894 | "optional": true 1895 | }, 1896 | "balanced-match": { 1897 | "version": "0.4.2", 1898 | "bundled": true, 1899 | "dev": true 1900 | }, 1901 | "bcrypt-pbkdf": { 1902 | "version": "1.0.1", 1903 | "bundled": true, 1904 | "dev": true, 1905 | "optional": true, 1906 | "requires": { 1907 | "tweetnacl": "0.14.5" 1908 | } 1909 | }, 1910 | "block-stream": { 1911 | "version": "0.0.9", 1912 | "bundled": true, 1913 | "dev": true, 1914 | "requires": { 1915 | "inherits": "2.0.3" 1916 | } 1917 | }, 1918 | "boom": { 1919 | "version": "2.10.1", 1920 | "bundled": true, 1921 | "dev": true, 1922 | "requires": { 1923 | "hoek": "2.16.3" 1924 | } 1925 | }, 1926 | "brace-expansion": { 1927 | "version": "1.1.7", 1928 | "bundled": true, 1929 | "dev": true, 1930 | "requires": { 1931 | "balanced-match": "0.4.2", 1932 | "concat-map": "0.0.1" 1933 | } 1934 | }, 1935 | "buffer-shims": { 1936 | "version": "1.0.0", 1937 | "bundled": true, 1938 | "dev": true 1939 | }, 1940 | "caseless": { 1941 | "version": "0.12.0", 1942 | "bundled": true, 1943 | "dev": true, 1944 | "optional": true 1945 | }, 1946 | "co": { 1947 | "version": "4.6.0", 1948 | "bundled": true, 1949 | "dev": true, 1950 | "optional": true 1951 | }, 1952 | "code-point-at": { 1953 | "version": "1.1.0", 1954 | "bundled": true, 1955 | "dev": true 1956 | }, 1957 | "combined-stream": { 1958 | "version": "1.0.5", 1959 | "bundled": true, 1960 | "dev": true, 1961 | "requires": { 1962 | "delayed-stream": "1.0.0" 1963 | } 1964 | }, 1965 | "concat-map": { 1966 | "version": "0.0.1", 1967 | "bundled": true, 1968 | "dev": true 1969 | }, 1970 | "console-control-strings": { 1971 | "version": "1.1.0", 1972 | "bundled": true, 1973 | "dev": true 1974 | }, 1975 | "core-util-is": { 1976 | "version": "1.0.2", 1977 | "bundled": true, 1978 | "dev": true 1979 | }, 1980 | "cryptiles": { 1981 | "version": "2.0.5", 1982 | "bundled": true, 1983 | "dev": true, 1984 | "optional": true, 1985 | "requires": { 1986 | "boom": "2.10.1" 1987 | } 1988 | }, 1989 | "dashdash": { 1990 | "version": "1.14.1", 1991 | "bundled": true, 1992 | "dev": true, 1993 | "optional": true, 1994 | "requires": { 1995 | "assert-plus": "1.0.0" 1996 | }, 1997 | "dependencies": { 1998 | "assert-plus": { 1999 | "version": "1.0.0", 2000 | "bundled": true, 2001 | "dev": true, 2002 | "optional": true 2003 | } 2004 | } 2005 | }, 2006 | "debug": { 2007 | "version": "2.6.8", 2008 | "bundled": true, 2009 | "dev": true, 2010 | "optional": true, 2011 | "requires": { 2012 | "ms": "2.0.0" 2013 | } 2014 | }, 2015 | "deep-extend": { 2016 | "version": "0.4.2", 2017 | "bundled": true, 2018 | "dev": true, 2019 | "optional": true 2020 | }, 2021 | "delayed-stream": { 2022 | "version": "1.0.0", 2023 | "bundled": true, 2024 | "dev": true 2025 | }, 2026 | "delegates": { 2027 | "version": "1.0.0", 2028 | "bundled": true, 2029 | "dev": true, 2030 | "optional": true 2031 | }, 2032 | "ecc-jsbn": { 2033 | "version": "0.1.1", 2034 | "bundled": true, 2035 | "dev": true, 2036 | "optional": true, 2037 | "requires": { 2038 | "jsbn": "0.1.1" 2039 | } 2040 | }, 2041 | "extend": { 2042 | "version": "3.0.1", 2043 | "bundled": true, 2044 | "dev": true, 2045 | "optional": true 2046 | }, 2047 | "extsprintf": { 2048 | "version": "1.0.2", 2049 | "bundled": true, 2050 | "dev": true 2051 | }, 2052 | "forever-agent": { 2053 | "version": "0.6.1", 2054 | "bundled": true, 2055 | "dev": true, 2056 | "optional": true 2057 | }, 2058 | "form-data": { 2059 | "version": "2.1.4", 2060 | "bundled": true, 2061 | "dev": true, 2062 | "optional": true, 2063 | "requires": { 2064 | "asynckit": "0.4.0", 2065 | "combined-stream": "1.0.5", 2066 | "mime-types": "2.1.15" 2067 | } 2068 | }, 2069 | "fs.realpath": { 2070 | "version": "1.0.0", 2071 | "bundled": true, 2072 | "dev": true 2073 | }, 2074 | "fstream": { 2075 | "version": "1.0.11", 2076 | "bundled": true, 2077 | "dev": true, 2078 | "requires": { 2079 | "graceful-fs": "4.1.11", 2080 | "inherits": "2.0.3", 2081 | "mkdirp": "0.5.1", 2082 | "rimraf": "2.6.1" 2083 | } 2084 | }, 2085 | "fstream-ignore": { 2086 | "version": "1.0.5", 2087 | "bundled": true, 2088 | "dev": true, 2089 | "optional": true, 2090 | "requires": { 2091 | "fstream": "1.0.11", 2092 | "inherits": "2.0.3", 2093 | "minimatch": "3.0.4" 2094 | } 2095 | }, 2096 | "gauge": { 2097 | "version": "2.7.4", 2098 | "bundled": true, 2099 | "dev": true, 2100 | "optional": true, 2101 | "requires": { 2102 | "aproba": "1.1.1", 2103 | "console-control-strings": "1.1.0", 2104 | "has-unicode": "2.0.1", 2105 | "object-assign": "4.1.1", 2106 | "signal-exit": "3.0.2", 2107 | "string-width": "1.0.2", 2108 | "strip-ansi": "3.0.1", 2109 | "wide-align": "1.1.2" 2110 | } 2111 | }, 2112 | "getpass": { 2113 | "version": "0.1.7", 2114 | "bundled": true, 2115 | "dev": true, 2116 | "optional": true, 2117 | "requires": { 2118 | "assert-plus": "1.0.0" 2119 | }, 2120 | "dependencies": { 2121 | "assert-plus": { 2122 | "version": "1.0.0", 2123 | "bundled": true, 2124 | "dev": true, 2125 | "optional": true 2126 | } 2127 | } 2128 | }, 2129 | "glob": { 2130 | "version": "7.1.2", 2131 | "bundled": true, 2132 | "dev": true, 2133 | "requires": { 2134 | "fs.realpath": "1.0.0", 2135 | "inflight": "1.0.6", 2136 | "inherits": "2.0.3", 2137 | "minimatch": "3.0.4", 2138 | "once": "1.4.0", 2139 | "path-is-absolute": "1.0.1" 2140 | } 2141 | }, 2142 | "graceful-fs": { 2143 | "version": "4.1.11", 2144 | "bundled": true, 2145 | "dev": true 2146 | }, 2147 | "har-schema": { 2148 | "version": "1.0.5", 2149 | "bundled": true, 2150 | "dev": true, 2151 | "optional": true 2152 | }, 2153 | "har-validator": { 2154 | "version": "4.2.1", 2155 | "bundled": true, 2156 | "dev": true, 2157 | "optional": true, 2158 | "requires": { 2159 | "ajv": "4.11.8", 2160 | "har-schema": "1.0.5" 2161 | } 2162 | }, 2163 | "has-unicode": { 2164 | "version": "2.0.1", 2165 | "bundled": true, 2166 | "dev": true, 2167 | "optional": true 2168 | }, 2169 | "hawk": { 2170 | "version": "3.1.3", 2171 | "bundled": true, 2172 | "dev": true, 2173 | "optional": true, 2174 | "requires": { 2175 | "boom": "2.10.1", 2176 | "cryptiles": "2.0.5", 2177 | "hoek": "2.16.3", 2178 | "sntp": "1.0.9" 2179 | } 2180 | }, 2181 | "hoek": { 2182 | "version": "2.16.3", 2183 | "bundled": true, 2184 | "dev": true 2185 | }, 2186 | "http-signature": { 2187 | "version": "1.1.1", 2188 | "bundled": true, 2189 | "dev": true, 2190 | "optional": true, 2191 | "requires": { 2192 | "assert-plus": "0.2.0", 2193 | "jsprim": "1.4.0", 2194 | "sshpk": "1.13.0" 2195 | } 2196 | }, 2197 | "inflight": { 2198 | "version": "1.0.6", 2199 | "bundled": true, 2200 | "dev": true, 2201 | "requires": { 2202 | "once": "1.4.0", 2203 | "wrappy": "1.0.2" 2204 | } 2205 | }, 2206 | "inherits": { 2207 | "version": "2.0.3", 2208 | "bundled": true, 2209 | "dev": true 2210 | }, 2211 | "ini": { 2212 | "version": "1.3.4", 2213 | "bundled": true, 2214 | "dev": true, 2215 | "optional": true 2216 | }, 2217 | "is-fullwidth-code-point": { 2218 | "version": "1.0.0", 2219 | "bundled": true, 2220 | "dev": true, 2221 | "requires": { 2222 | "number-is-nan": "1.0.1" 2223 | } 2224 | }, 2225 | "is-typedarray": { 2226 | "version": "1.0.0", 2227 | "bundled": true, 2228 | "dev": true, 2229 | "optional": true 2230 | }, 2231 | "isarray": { 2232 | "version": "1.0.0", 2233 | "bundled": true, 2234 | "dev": true 2235 | }, 2236 | "isstream": { 2237 | "version": "0.1.2", 2238 | "bundled": true, 2239 | "dev": true, 2240 | "optional": true 2241 | }, 2242 | "jodid25519": { 2243 | "version": "1.0.2", 2244 | "bundled": true, 2245 | "dev": true, 2246 | "optional": true, 2247 | "requires": { 2248 | "jsbn": "0.1.1" 2249 | } 2250 | }, 2251 | "jsbn": { 2252 | "version": "0.1.1", 2253 | "bundled": true, 2254 | "dev": true, 2255 | "optional": true 2256 | }, 2257 | "json-schema": { 2258 | "version": "0.2.3", 2259 | "bundled": true, 2260 | "dev": true, 2261 | "optional": true 2262 | }, 2263 | "json-stable-stringify": { 2264 | "version": "1.0.1", 2265 | "bundled": true, 2266 | "dev": true, 2267 | "optional": true, 2268 | "requires": { 2269 | "jsonify": "0.0.0" 2270 | } 2271 | }, 2272 | "json-stringify-safe": { 2273 | "version": "5.0.1", 2274 | "bundled": true, 2275 | "dev": true, 2276 | "optional": true 2277 | }, 2278 | "jsonify": { 2279 | "version": "0.0.0", 2280 | "bundled": true, 2281 | "dev": true, 2282 | "optional": true 2283 | }, 2284 | "jsprim": { 2285 | "version": "1.4.0", 2286 | "bundled": true, 2287 | "dev": true, 2288 | "optional": true, 2289 | "requires": { 2290 | "assert-plus": "1.0.0", 2291 | "extsprintf": "1.0.2", 2292 | "json-schema": "0.2.3", 2293 | "verror": "1.3.6" 2294 | }, 2295 | "dependencies": { 2296 | "assert-plus": { 2297 | "version": "1.0.0", 2298 | "bundled": true, 2299 | "dev": true, 2300 | "optional": true 2301 | } 2302 | } 2303 | }, 2304 | "mime-db": { 2305 | "version": "1.27.0", 2306 | "bundled": true, 2307 | "dev": true 2308 | }, 2309 | "mime-types": { 2310 | "version": "2.1.15", 2311 | "bundled": true, 2312 | "dev": true, 2313 | "requires": { 2314 | "mime-db": "1.27.0" 2315 | } 2316 | }, 2317 | "minimatch": { 2318 | "version": "3.0.4", 2319 | "bundled": true, 2320 | "dev": true, 2321 | "requires": { 2322 | "brace-expansion": "1.1.7" 2323 | } 2324 | }, 2325 | "minimist": { 2326 | "version": "0.0.8", 2327 | "bundled": true, 2328 | "dev": true 2329 | }, 2330 | "mkdirp": { 2331 | "version": "0.5.1", 2332 | "bundled": true, 2333 | "dev": true, 2334 | "requires": { 2335 | "minimist": "0.0.8" 2336 | } 2337 | }, 2338 | "ms": { 2339 | "version": "2.0.0", 2340 | "bundled": true, 2341 | "dev": true, 2342 | "optional": true 2343 | }, 2344 | "node-pre-gyp": { 2345 | "version": "0.6.36", 2346 | "bundled": true, 2347 | "dev": true, 2348 | "optional": true, 2349 | "requires": { 2350 | "mkdirp": "0.5.1", 2351 | "nopt": "4.0.1", 2352 | "npmlog": "4.1.0", 2353 | "rc": "1.2.1", 2354 | "request": "2.81.0", 2355 | "rimraf": "2.6.1", 2356 | "semver": "5.3.0", 2357 | "tar": "2.2.1", 2358 | "tar-pack": "3.4.0" 2359 | } 2360 | }, 2361 | "nopt": { 2362 | "version": "4.0.1", 2363 | "bundled": true, 2364 | "dev": true, 2365 | "optional": true, 2366 | "requires": { 2367 | "abbrev": "1.1.0", 2368 | "osenv": "0.1.4" 2369 | } 2370 | }, 2371 | "npmlog": { 2372 | "version": "4.1.0", 2373 | "bundled": true, 2374 | "dev": true, 2375 | "optional": true, 2376 | "requires": { 2377 | "are-we-there-yet": "1.1.4", 2378 | "console-control-strings": "1.1.0", 2379 | "gauge": "2.7.4", 2380 | "set-blocking": "2.0.0" 2381 | } 2382 | }, 2383 | "number-is-nan": { 2384 | "version": "1.0.1", 2385 | "bundled": true, 2386 | "dev": true 2387 | }, 2388 | "oauth-sign": { 2389 | "version": "0.8.2", 2390 | "bundled": true, 2391 | "dev": true, 2392 | "optional": true 2393 | }, 2394 | "object-assign": { 2395 | "version": "4.1.1", 2396 | "bundled": true, 2397 | "dev": true, 2398 | "optional": true 2399 | }, 2400 | "once": { 2401 | "version": "1.4.0", 2402 | "bundled": true, 2403 | "dev": true, 2404 | "requires": { 2405 | "wrappy": "1.0.2" 2406 | } 2407 | }, 2408 | "os-homedir": { 2409 | "version": "1.0.2", 2410 | "bundled": true, 2411 | "dev": true, 2412 | "optional": true 2413 | }, 2414 | "os-tmpdir": { 2415 | "version": "1.0.2", 2416 | "bundled": true, 2417 | "dev": true, 2418 | "optional": true 2419 | }, 2420 | "osenv": { 2421 | "version": "0.1.4", 2422 | "bundled": true, 2423 | "dev": true, 2424 | "optional": true, 2425 | "requires": { 2426 | "os-homedir": "1.0.2", 2427 | "os-tmpdir": "1.0.2" 2428 | } 2429 | }, 2430 | "path-is-absolute": { 2431 | "version": "1.0.1", 2432 | "bundled": true, 2433 | "dev": true 2434 | }, 2435 | "performance-now": { 2436 | "version": "0.2.0", 2437 | "bundled": true, 2438 | "dev": true, 2439 | "optional": true 2440 | }, 2441 | "process-nextick-args": { 2442 | "version": "1.0.7", 2443 | "bundled": true, 2444 | "dev": true 2445 | }, 2446 | "punycode": { 2447 | "version": "1.4.1", 2448 | "bundled": true, 2449 | "dev": true, 2450 | "optional": true 2451 | }, 2452 | "qs": { 2453 | "version": "6.4.0", 2454 | "bundled": true, 2455 | "dev": true, 2456 | "optional": true 2457 | }, 2458 | "rc": { 2459 | "version": "1.2.1", 2460 | "bundled": true, 2461 | "dev": true, 2462 | "optional": true, 2463 | "requires": { 2464 | "deep-extend": "0.4.2", 2465 | "ini": "1.3.4", 2466 | "minimist": "1.2.0", 2467 | "strip-json-comments": "2.0.1" 2468 | }, 2469 | "dependencies": { 2470 | "minimist": { 2471 | "version": "1.2.0", 2472 | "bundled": true, 2473 | "dev": true, 2474 | "optional": true 2475 | } 2476 | } 2477 | }, 2478 | "readable-stream": { 2479 | "version": "2.2.9", 2480 | "bundled": true, 2481 | "dev": true, 2482 | "requires": { 2483 | "buffer-shims": "1.0.0", 2484 | "core-util-is": "1.0.2", 2485 | "inherits": "2.0.3", 2486 | "isarray": "1.0.0", 2487 | "process-nextick-args": "1.0.7", 2488 | "string_decoder": "1.0.1", 2489 | "util-deprecate": "1.0.2" 2490 | } 2491 | }, 2492 | "request": { 2493 | "version": "2.81.0", 2494 | "bundled": true, 2495 | "dev": true, 2496 | "optional": true, 2497 | "requires": { 2498 | "aws-sign2": "0.6.0", 2499 | "aws4": "1.6.0", 2500 | "caseless": "0.12.0", 2501 | "combined-stream": "1.0.5", 2502 | "extend": "3.0.1", 2503 | "forever-agent": "0.6.1", 2504 | "form-data": "2.1.4", 2505 | "har-validator": "4.2.1", 2506 | "hawk": "3.1.3", 2507 | "http-signature": "1.1.1", 2508 | "is-typedarray": "1.0.0", 2509 | "isstream": "0.1.2", 2510 | "json-stringify-safe": "5.0.1", 2511 | "mime-types": "2.1.15", 2512 | "oauth-sign": "0.8.2", 2513 | "performance-now": "0.2.0", 2514 | "qs": "6.4.0", 2515 | "safe-buffer": "5.0.1", 2516 | "stringstream": "0.0.5", 2517 | "tough-cookie": "2.3.2", 2518 | "tunnel-agent": "0.6.0", 2519 | "uuid": "3.0.1" 2520 | } 2521 | }, 2522 | "rimraf": { 2523 | "version": "2.6.1", 2524 | "bundled": true, 2525 | "dev": true, 2526 | "requires": { 2527 | "glob": "7.1.2" 2528 | } 2529 | }, 2530 | "safe-buffer": { 2531 | "version": "5.0.1", 2532 | "bundled": true, 2533 | "dev": true 2534 | }, 2535 | "semver": { 2536 | "version": "5.3.0", 2537 | "bundled": true, 2538 | "dev": true, 2539 | "optional": true 2540 | }, 2541 | "set-blocking": { 2542 | "version": "2.0.0", 2543 | "bundled": true, 2544 | "dev": true, 2545 | "optional": true 2546 | }, 2547 | "signal-exit": { 2548 | "version": "3.0.2", 2549 | "bundled": true, 2550 | "dev": true, 2551 | "optional": true 2552 | }, 2553 | "sntp": { 2554 | "version": "1.0.9", 2555 | "bundled": true, 2556 | "dev": true, 2557 | "optional": true, 2558 | "requires": { 2559 | "hoek": "2.16.3" 2560 | } 2561 | }, 2562 | "sshpk": { 2563 | "version": "1.13.0", 2564 | "bundled": true, 2565 | "dev": true, 2566 | "optional": true, 2567 | "requires": { 2568 | "asn1": "0.2.3", 2569 | "assert-plus": "1.0.0", 2570 | "bcrypt-pbkdf": "1.0.1", 2571 | "dashdash": "1.14.1", 2572 | "ecc-jsbn": "0.1.1", 2573 | "getpass": "0.1.7", 2574 | "jodid25519": "1.0.2", 2575 | "jsbn": "0.1.1", 2576 | "tweetnacl": "0.14.5" 2577 | }, 2578 | "dependencies": { 2579 | "assert-plus": { 2580 | "version": "1.0.0", 2581 | "bundled": true, 2582 | "dev": true, 2583 | "optional": true 2584 | } 2585 | } 2586 | }, 2587 | "string-width": { 2588 | "version": "1.0.2", 2589 | "bundled": true, 2590 | "dev": true, 2591 | "requires": { 2592 | "code-point-at": "1.1.0", 2593 | "is-fullwidth-code-point": "1.0.0", 2594 | "strip-ansi": "3.0.1" 2595 | } 2596 | }, 2597 | "string_decoder": { 2598 | "version": "1.0.1", 2599 | "bundled": true, 2600 | "dev": true, 2601 | "requires": { 2602 | "safe-buffer": "5.0.1" 2603 | } 2604 | }, 2605 | "stringstream": { 2606 | "version": "0.0.5", 2607 | "bundled": true, 2608 | "dev": true, 2609 | "optional": true 2610 | }, 2611 | "strip-ansi": { 2612 | "version": "3.0.1", 2613 | "bundled": true, 2614 | "dev": true, 2615 | "requires": { 2616 | "ansi-regex": "2.1.1" 2617 | } 2618 | }, 2619 | "strip-json-comments": { 2620 | "version": "2.0.1", 2621 | "bundled": true, 2622 | "dev": true, 2623 | "optional": true 2624 | }, 2625 | "tar": { 2626 | "version": "2.2.1", 2627 | "bundled": true, 2628 | "dev": true, 2629 | "requires": { 2630 | "block-stream": "0.0.9", 2631 | "fstream": "1.0.11", 2632 | "inherits": "2.0.3" 2633 | } 2634 | }, 2635 | "tar-pack": { 2636 | "version": "3.4.0", 2637 | "bundled": true, 2638 | "dev": true, 2639 | "optional": true, 2640 | "requires": { 2641 | "debug": "2.6.8", 2642 | "fstream": "1.0.11", 2643 | "fstream-ignore": "1.0.5", 2644 | "once": "1.4.0", 2645 | "readable-stream": "2.2.9", 2646 | "rimraf": "2.6.1", 2647 | "tar": "2.2.1", 2648 | "uid-number": "0.0.6" 2649 | } 2650 | }, 2651 | "tough-cookie": { 2652 | "version": "2.3.2", 2653 | "bundled": true, 2654 | "dev": true, 2655 | "optional": true, 2656 | "requires": { 2657 | "punycode": "1.4.1" 2658 | } 2659 | }, 2660 | "tunnel-agent": { 2661 | "version": "0.6.0", 2662 | "bundled": true, 2663 | "dev": true, 2664 | "optional": true, 2665 | "requires": { 2666 | "safe-buffer": "5.0.1" 2667 | } 2668 | }, 2669 | "tweetnacl": { 2670 | "version": "0.14.5", 2671 | "bundled": true, 2672 | "dev": true, 2673 | "optional": true 2674 | }, 2675 | "uid-number": { 2676 | "version": "0.0.6", 2677 | "bundled": true, 2678 | "dev": true, 2679 | "optional": true 2680 | }, 2681 | "util-deprecate": { 2682 | "version": "1.0.2", 2683 | "bundled": true, 2684 | "dev": true 2685 | }, 2686 | "uuid": { 2687 | "version": "3.0.1", 2688 | "bundled": true, 2689 | "dev": true, 2690 | "optional": true 2691 | }, 2692 | "verror": { 2693 | "version": "1.3.6", 2694 | "bundled": true, 2695 | "dev": true, 2696 | "optional": true, 2697 | "requires": { 2698 | "extsprintf": "1.0.2" 2699 | } 2700 | }, 2701 | "wide-align": { 2702 | "version": "1.1.2", 2703 | "bundled": true, 2704 | "dev": true, 2705 | "optional": true, 2706 | "requires": { 2707 | "string-width": "1.0.2" 2708 | } 2709 | }, 2710 | "wrappy": { 2711 | "version": "1.0.2", 2712 | "bundled": true, 2713 | "dev": true 2714 | } 2715 | } 2716 | }, 2717 | "function-bind": { 2718 | "version": "1.1.0", 2719 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", 2720 | "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", 2721 | "dev": true 2722 | }, 2723 | "function-name-support": { 2724 | "version": "0.2.0", 2725 | "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", 2726 | "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", 2727 | "dev": true 2728 | }, 2729 | "get-port": { 2730 | "version": "3.1.0", 2731 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", 2732 | "integrity": "sha1-7wGxioTKZIaXD/meVERhQac//T4=", 2733 | "dev": true 2734 | }, 2735 | "get-stdin": { 2736 | "version": "4.0.1", 2737 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 2738 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", 2739 | "dev": true 2740 | }, 2741 | "get-stream": { 2742 | "version": "3.0.0", 2743 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 2744 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 2745 | "dev": true 2746 | }, 2747 | "glob": { 2748 | "version": "7.1.2", 2749 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2750 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2751 | "dev": true, 2752 | "requires": { 2753 | "fs.realpath": "1.0.0", 2754 | "inflight": "1.0.6", 2755 | "inherits": "2.0.3", 2756 | "minimatch": "3.0.4", 2757 | "once": "1.4.0", 2758 | "path-is-absolute": "1.0.1" 2759 | } 2760 | }, 2761 | "glob-base": { 2762 | "version": "0.3.0", 2763 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 2764 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 2765 | "dev": true, 2766 | "requires": { 2767 | "glob-parent": "2.0.0", 2768 | "is-glob": "2.0.1" 2769 | } 2770 | }, 2771 | "glob-parent": { 2772 | "version": "2.0.0", 2773 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 2774 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 2775 | "dev": true, 2776 | "requires": { 2777 | "is-glob": "2.0.1" 2778 | } 2779 | }, 2780 | "globals": { 2781 | "version": "9.18.0", 2782 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 2783 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 2784 | "dev": true 2785 | }, 2786 | "globby": { 2787 | "version": "6.1.0", 2788 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 2789 | "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", 2790 | "dev": true, 2791 | "requires": { 2792 | "array-union": "1.0.2", 2793 | "glob": "7.1.2", 2794 | "object-assign": "4.1.1", 2795 | "pify": "2.3.0", 2796 | "pinkie-promise": "2.0.1" 2797 | }, 2798 | "dependencies": { 2799 | "pinkie": { 2800 | "version": "2.0.4", 2801 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2802 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2803 | "dev": true 2804 | }, 2805 | "pinkie-promise": { 2806 | "version": "2.0.1", 2807 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2808 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2809 | "dev": true, 2810 | "requires": { 2811 | "pinkie": "2.0.4" 2812 | } 2813 | } 2814 | } 2815 | }, 2816 | "got": { 2817 | "version": "6.7.1", 2818 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 2819 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 2820 | "dev": true, 2821 | "requires": { 2822 | "create-error-class": "3.0.2", 2823 | "duplexer3": "0.1.4", 2824 | "get-stream": "3.0.0", 2825 | "is-redirect": "1.0.0", 2826 | "is-retry-allowed": "1.1.0", 2827 | "is-stream": "1.1.0", 2828 | "lowercase-keys": "1.0.0", 2829 | "safe-buffer": "5.1.1", 2830 | "timed-out": "4.0.1", 2831 | "unzip-response": "2.0.1", 2832 | "url-parse-lax": "1.0.0" 2833 | } 2834 | }, 2835 | "graceful-fs": { 2836 | "version": "4.1.11", 2837 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 2838 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2839 | "dev": true 2840 | }, 2841 | "has": { 2842 | "version": "1.0.1", 2843 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 2844 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 2845 | "dev": true, 2846 | "requires": { 2847 | "function-bind": "1.1.0" 2848 | } 2849 | }, 2850 | "has-ansi": { 2851 | "version": "2.0.0", 2852 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 2853 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 2854 | "dev": true, 2855 | "requires": { 2856 | "ansi-regex": "2.1.1" 2857 | } 2858 | }, 2859 | "has-color": { 2860 | "version": "0.1.7", 2861 | "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", 2862 | "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", 2863 | "dev": true 2864 | }, 2865 | "has-flag": { 2866 | "version": "2.0.0", 2867 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 2868 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 2869 | "dev": true 2870 | }, 2871 | "has-yarn": { 2872 | "version": "1.0.0", 2873 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", 2874 | "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", 2875 | "dev": true 2876 | }, 2877 | "home-or-tmp": { 2878 | "version": "2.0.0", 2879 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 2880 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 2881 | "dev": true, 2882 | "requires": { 2883 | "os-homedir": "1.0.2", 2884 | "os-tmpdir": "1.0.2" 2885 | } 2886 | }, 2887 | "hosted-git-info": { 2888 | "version": "2.5.0", 2889 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 2890 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 2891 | "dev": true 2892 | }, 2893 | "hullabaloo-config-manager": { 2894 | "version": "1.1.1", 2895 | "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", 2896 | "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", 2897 | "dev": true, 2898 | "requires": { 2899 | "dot-prop": "4.1.1", 2900 | "es6-error": "4.0.2", 2901 | "graceful-fs": "4.1.11", 2902 | "indent-string": "3.1.0", 2903 | "json5": "0.5.1", 2904 | "lodash.clonedeep": "4.5.0", 2905 | "lodash.clonedeepwith": "4.5.0", 2906 | "lodash.isequal": "4.5.0", 2907 | "lodash.merge": "4.6.0", 2908 | "md5-hex": "2.0.0", 2909 | "package-hash": "2.0.0", 2910 | "pkg-dir": "2.0.0", 2911 | "resolve-from": "3.0.0", 2912 | "safe-buffer": "5.1.1" 2913 | } 2914 | }, 2915 | "iconv-lite": { 2916 | "version": "0.4.18", 2917 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", 2918 | "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", 2919 | "dev": true 2920 | }, 2921 | "ignore": { 2922 | "version": "3.3.3", 2923 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", 2924 | "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", 2925 | "dev": true 2926 | }, 2927 | "ignore-by-default": { 2928 | "version": "1.0.1", 2929 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 2930 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", 2931 | "dev": true 2932 | }, 2933 | "import-lazy": { 2934 | "version": "2.1.0", 2935 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 2936 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 2937 | "dev": true 2938 | }, 2939 | "import-local": { 2940 | "version": "0.1.1", 2941 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", 2942 | "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", 2943 | "dev": true, 2944 | "requires": { 2945 | "pkg-dir": "2.0.0", 2946 | "resolve-cwd": "2.0.0" 2947 | } 2948 | }, 2949 | "imurmurhash": { 2950 | "version": "0.1.4", 2951 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2952 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2953 | "dev": true 2954 | }, 2955 | "indent-string": { 2956 | "version": "3.1.0", 2957 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", 2958 | "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", 2959 | "dev": true 2960 | }, 2961 | "inflight": { 2962 | "version": "1.0.6", 2963 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2964 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2965 | "dev": true, 2966 | "requires": { 2967 | "once": "1.4.0", 2968 | "wrappy": "1.0.2" 2969 | } 2970 | }, 2971 | "inherits": { 2972 | "version": "2.0.3", 2973 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2974 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2975 | "dev": true 2976 | }, 2977 | "ini": { 2978 | "version": "1.3.4", 2979 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 2980 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 2981 | "dev": true 2982 | }, 2983 | "inquirer": { 2984 | "version": "3.2.0", 2985 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.0.tgz", 2986 | "integrity": "sha512-4CyUYMP7lOBkiUU1rR24WGrfRX6SucwbY2Mqb1PdApU24wnTIk4TsnkQwV72dDdIKZ2ycLP+fWCV+tA7wwgoew==", 2987 | "dev": true, 2988 | "requires": { 2989 | "ansi-escapes": "2.0.0", 2990 | "chalk": "2.0.1", 2991 | "cli-cursor": "2.1.0", 2992 | "cli-width": "2.1.0", 2993 | "external-editor": "2.0.4", 2994 | "figures": "2.0.0", 2995 | "lodash": "4.17.4", 2996 | "mute-stream": "0.0.7", 2997 | "run-async": "2.3.0", 2998 | "rx-lite": "4.0.8", 2999 | "rx-lite-aggregates": "4.0.8", 3000 | "string-width": "2.1.0", 3001 | "strip-ansi": "4.0.0", 3002 | "through": "2.3.8" 3003 | } 3004 | }, 3005 | "invariant": { 3006 | "version": "2.2.2", 3007 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 3008 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 3009 | "dev": true, 3010 | "requires": { 3011 | "loose-envify": "1.3.1" 3012 | } 3013 | }, 3014 | "irregular-plurals": { 3015 | "version": "1.3.0", 3016 | "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", 3017 | "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", 3018 | "dev": true 3019 | }, 3020 | "is-arrayish": { 3021 | "version": "0.2.1", 3022 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 3023 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 3024 | "dev": true 3025 | }, 3026 | "is-binary-path": { 3027 | "version": "1.0.1", 3028 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 3029 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 3030 | "dev": true, 3031 | "requires": { 3032 | "binary-extensions": "1.8.0" 3033 | } 3034 | }, 3035 | "is-buffer": { 3036 | "version": "1.1.5", 3037 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 3038 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 3039 | "dev": true 3040 | }, 3041 | "is-builtin-module": { 3042 | "version": "1.0.0", 3043 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 3044 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 3045 | "dev": true, 3046 | "requires": { 3047 | "builtin-modules": "1.1.1" 3048 | } 3049 | }, 3050 | "is-ci": { 3051 | "version": "1.0.10", 3052 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", 3053 | "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", 3054 | "dev": true, 3055 | "requires": { 3056 | "ci-info": "1.0.0" 3057 | } 3058 | }, 3059 | "is-dotfile": { 3060 | "version": "1.0.3", 3061 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 3062 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 3063 | "dev": true 3064 | }, 3065 | "is-equal-shallow": { 3066 | "version": "0.1.3", 3067 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 3068 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 3069 | "dev": true, 3070 | "requires": { 3071 | "is-primitive": "2.0.0" 3072 | } 3073 | }, 3074 | "is-error": { 3075 | "version": "2.2.1", 3076 | "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", 3077 | "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", 3078 | "dev": true 3079 | }, 3080 | "is-extendable": { 3081 | "version": "0.1.1", 3082 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 3083 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 3084 | "dev": true 3085 | }, 3086 | "is-extglob": { 3087 | "version": "1.0.0", 3088 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 3089 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 3090 | "dev": true 3091 | }, 3092 | "is-finite": { 3093 | "version": "1.0.2", 3094 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 3095 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 3096 | "dev": true, 3097 | "requires": { 3098 | "number-is-nan": "1.0.1" 3099 | } 3100 | }, 3101 | "is-fullwidth-code-point": { 3102 | "version": "2.0.0", 3103 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3104 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3105 | "dev": true 3106 | }, 3107 | "is-generator-fn": { 3108 | "version": "1.0.0", 3109 | "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", 3110 | "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", 3111 | "dev": true 3112 | }, 3113 | "is-glob": { 3114 | "version": "2.0.1", 3115 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 3116 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 3117 | "dev": true, 3118 | "requires": { 3119 | "is-extglob": "1.0.0" 3120 | } 3121 | }, 3122 | "is-npm": { 3123 | "version": "1.0.0", 3124 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 3125 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", 3126 | "dev": true 3127 | }, 3128 | "is-number": { 3129 | "version": "2.1.0", 3130 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 3131 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 3132 | "dev": true, 3133 | "requires": { 3134 | "kind-of": "3.2.2" 3135 | } 3136 | }, 3137 | "is-obj": { 3138 | "version": "1.0.1", 3139 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 3140 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 3141 | "dev": true 3142 | }, 3143 | "is-observable": { 3144 | "version": "0.2.0", 3145 | "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", 3146 | "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", 3147 | "dev": true, 3148 | "requires": { 3149 | "symbol-observable": "0.2.4" 3150 | } 3151 | }, 3152 | "is-path-cwd": { 3153 | "version": "1.0.0", 3154 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 3155 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 3156 | "dev": true 3157 | }, 3158 | "is-path-in-cwd": { 3159 | "version": "1.0.0", 3160 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 3161 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 3162 | "dev": true, 3163 | "requires": { 3164 | "is-path-inside": "1.0.0" 3165 | } 3166 | }, 3167 | "is-path-inside": { 3168 | "version": "1.0.0", 3169 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 3170 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 3171 | "dev": true, 3172 | "requires": { 3173 | "path-is-inside": "1.0.2" 3174 | } 3175 | }, 3176 | "is-plain-obj": { 3177 | "version": "1.1.0", 3178 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 3179 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 3180 | "dev": true 3181 | }, 3182 | "is-posix-bracket": { 3183 | "version": "0.1.1", 3184 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 3185 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 3186 | "dev": true 3187 | }, 3188 | "is-primitive": { 3189 | "version": "2.0.0", 3190 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 3191 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 3192 | "dev": true 3193 | }, 3194 | "is-promise": { 3195 | "version": "2.1.0", 3196 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 3197 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 3198 | "dev": true 3199 | }, 3200 | "is-redirect": { 3201 | "version": "1.0.0", 3202 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 3203 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", 3204 | "dev": true 3205 | }, 3206 | "is-resolvable": { 3207 | "version": "1.0.0", 3208 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", 3209 | "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", 3210 | "dev": true, 3211 | "requires": { 3212 | "tryit": "1.0.3" 3213 | } 3214 | }, 3215 | "is-retry-allowed": { 3216 | "version": "1.1.0", 3217 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 3218 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", 3219 | "dev": true 3220 | }, 3221 | "is-stream": { 3222 | "version": "1.1.0", 3223 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 3224 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 3225 | "dev": true 3226 | }, 3227 | "is-url": { 3228 | "version": "1.2.2", 3229 | "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", 3230 | "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", 3231 | "dev": true 3232 | }, 3233 | "is-utf8": { 3234 | "version": "0.2.1", 3235 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 3236 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 3237 | "dev": true 3238 | }, 3239 | "isarray": { 3240 | "version": "1.0.0", 3241 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3242 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 3243 | "dev": true 3244 | }, 3245 | "isexe": { 3246 | "version": "2.0.0", 3247 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3248 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3249 | "dev": true 3250 | }, 3251 | "isobject": { 3252 | "version": "2.1.0", 3253 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3254 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3255 | "dev": true, 3256 | "requires": { 3257 | "isarray": "1.0.0" 3258 | } 3259 | }, 3260 | "js-string-escape": { 3261 | "version": "1.0.1", 3262 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 3263 | "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", 3264 | "dev": true 3265 | }, 3266 | "js-tokens": { 3267 | "version": "3.0.2", 3268 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 3269 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 3270 | "dev": true 3271 | }, 3272 | "js-yaml": { 3273 | "version": "3.9.0", 3274 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", 3275 | "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", 3276 | "dev": true, 3277 | "requires": { 3278 | "argparse": "1.0.9", 3279 | "esprima": "4.0.0" 3280 | } 3281 | }, 3282 | "jschardet": { 3283 | "version": "1.5.0", 3284 | "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", 3285 | "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==", 3286 | "dev": true 3287 | }, 3288 | "jsesc": { 3289 | "version": "0.5.0", 3290 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 3291 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 3292 | "dev": true 3293 | }, 3294 | "json-schema-traverse": { 3295 | "version": "0.3.1", 3296 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 3297 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 3298 | "dev": true 3299 | }, 3300 | "json-stable-stringify": { 3301 | "version": "1.0.1", 3302 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 3303 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 3304 | "dev": true, 3305 | "requires": { 3306 | "jsonify": "0.0.0" 3307 | } 3308 | }, 3309 | "json5": { 3310 | "version": "0.5.1", 3311 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 3312 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 3313 | "dev": true 3314 | }, 3315 | "jsonify": { 3316 | "version": "0.0.0", 3317 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 3318 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 3319 | "dev": true 3320 | }, 3321 | "kind-of": { 3322 | "version": "3.2.2", 3323 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3324 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3325 | "dev": true, 3326 | "requires": { 3327 | "is-buffer": "1.1.5" 3328 | } 3329 | }, 3330 | "last-line-stream": { 3331 | "version": "1.0.0", 3332 | "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", 3333 | "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", 3334 | "dev": true, 3335 | "requires": { 3336 | "through2": "2.0.3" 3337 | } 3338 | }, 3339 | "latest-version": { 3340 | "version": "3.1.0", 3341 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 3342 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 3343 | "dev": true, 3344 | "requires": { 3345 | "package-json": "4.0.1" 3346 | } 3347 | }, 3348 | "levn": { 3349 | "version": "0.3.0", 3350 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 3351 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 3352 | "dev": true, 3353 | "requires": { 3354 | "prelude-ls": "1.1.2", 3355 | "type-check": "0.3.2" 3356 | } 3357 | }, 3358 | "load-json-file": { 3359 | "version": "2.0.0", 3360 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 3361 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 3362 | "dev": true, 3363 | "requires": { 3364 | "graceful-fs": "4.1.11", 3365 | "parse-json": "2.2.0", 3366 | "pify": "2.3.0", 3367 | "strip-bom": "3.0.0" 3368 | } 3369 | }, 3370 | "locate-path": { 3371 | "version": "2.0.0", 3372 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 3373 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 3374 | "dev": true, 3375 | "requires": { 3376 | "p-locate": "2.0.0", 3377 | "path-exists": "3.0.0" 3378 | } 3379 | }, 3380 | "lodash": { 3381 | "version": "4.17.4", 3382 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 3383 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 3384 | "dev": true 3385 | }, 3386 | "lodash.clonedeep": { 3387 | "version": "4.5.0", 3388 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 3389 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 3390 | "dev": true 3391 | }, 3392 | "lodash.clonedeepwith": { 3393 | "version": "4.5.0", 3394 | "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", 3395 | "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", 3396 | "dev": true 3397 | }, 3398 | "lodash.cond": { 3399 | "version": "4.5.2", 3400 | "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", 3401 | "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", 3402 | "dev": true 3403 | }, 3404 | "lodash.debounce": { 3405 | "version": "4.0.8", 3406 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 3407 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", 3408 | "dev": true 3409 | }, 3410 | "lodash.difference": { 3411 | "version": "4.5.0", 3412 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", 3413 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", 3414 | "dev": true 3415 | }, 3416 | "lodash.flatten": { 3417 | "version": "4.4.0", 3418 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 3419 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", 3420 | "dev": true 3421 | }, 3422 | "lodash.flattendeep": { 3423 | "version": "4.4.0", 3424 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 3425 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 3426 | "dev": true 3427 | }, 3428 | "lodash.isequal": { 3429 | "version": "4.5.0", 3430 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 3431 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", 3432 | "dev": true 3433 | }, 3434 | "lodash.merge": { 3435 | "version": "4.6.0", 3436 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", 3437 | "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", 3438 | "dev": true 3439 | }, 3440 | "loose-envify": { 3441 | "version": "1.3.1", 3442 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 3443 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 3444 | "dev": true, 3445 | "requires": { 3446 | "js-tokens": "3.0.2" 3447 | } 3448 | }, 3449 | "loud-rejection": { 3450 | "version": "1.6.0", 3451 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 3452 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 3453 | "dev": true, 3454 | "requires": { 3455 | "currently-unhandled": "0.4.1", 3456 | "signal-exit": "3.0.2" 3457 | } 3458 | }, 3459 | "lowercase-keys": { 3460 | "version": "1.0.0", 3461 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 3462 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", 3463 | "dev": true 3464 | }, 3465 | "lru-cache": { 3466 | "version": "4.1.1", 3467 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 3468 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", 3469 | "dev": true, 3470 | "requires": { 3471 | "pseudomap": "1.0.2", 3472 | "yallist": "2.1.2" 3473 | } 3474 | }, 3475 | "make-dir": { 3476 | "version": "1.0.0", 3477 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", 3478 | "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", 3479 | "dev": true, 3480 | "requires": { 3481 | "pify": "2.3.0" 3482 | } 3483 | }, 3484 | "map-obj": { 3485 | "version": "1.0.1", 3486 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 3487 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 3488 | "dev": true 3489 | }, 3490 | "matcher": { 3491 | "version": "1.0.0", 3492 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", 3493 | "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", 3494 | "dev": true, 3495 | "requires": { 3496 | "escape-string-regexp": "1.0.5" 3497 | } 3498 | }, 3499 | "md5-hex": { 3500 | "version": "2.0.0", 3501 | "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", 3502 | "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", 3503 | "dev": true, 3504 | "requires": { 3505 | "md5-o-matic": "0.1.1" 3506 | } 3507 | }, 3508 | "md5-o-matic": { 3509 | "version": "0.1.1", 3510 | "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", 3511 | "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", 3512 | "dev": true 3513 | }, 3514 | "meow": { 3515 | "version": "3.7.0", 3516 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 3517 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 3518 | "dev": true, 3519 | "requires": { 3520 | "camelcase-keys": "2.1.0", 3521 | "decamelize": "1.2.0", 3522 | "loud-rejection": "1.6.0", 3523 | "map-obj": "1.0.1", 3524 | "minimist": "1.2.0", 3525 | "normalize-package-data": "2.4.0", 3526 | "object-assign": "4.1.1", 3527 | "read-pkg-up": "1.0.1", 3528 | "redent": "1.0.0", 3529 | "trim-newlines": "1.0.0" 3530 | }, 3531 | "dependencies": { 3532 | "find-up": { 3533 | "version": "1.1.2", 3534 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 3535 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 3536 | "dev": true, 3537 | "requires": { 3538 | "path-exists": "2.1.0", 3539 | "pinkie-promise": "2.0.1" 3540 | } 3541 | }, 3542 | "load-json-file": { 3543 | "version": "1.1.0", 3544 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 3545 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 3546 | "dev": true, 3547 | "requires": { 3548 | "graceful-fs": "4.1.11", 3549 | "parse-json": "2.2.0", 3550 | "pify": "2.3.0", 3551 | "pinkie-promise": "2.0.1", 3552 | "strip-bom": "2.0.0" 3553 | } 3554 | }, 3555 | "minimist": { 3556 | "version": "1.2.0", 3557 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 3558 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 3559 | "dev": true 3560 | }, 3561 | "path-exists": { 3562 | "version": "2.1.0", 3563 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 3564 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 3565 | "dev": true, 3566 | "requires": { 3567 | "pinkie-promise": "2.0.1" 3568 | } 3569 | }, 3570 | "path-type": { 3571 | "version": "1.1.0", 3572 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 3573 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 3574 | "dev": true, 3575 | "requires": { 3576 | "graceful-fs": "4.1.11", 3577 | "pify": "2.3.0", 3578 | "pinkie-promise": "2.0.1" 3579 | } 3580 | }, 3581 | "pinkie": { 3582 | "version": "2.0.4", 3583 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 3584 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 3585 | "dev": true 3586 | }, 3587 | "pinkie-promise": { 3588 | "version": "2.0.1", 3589 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 3590 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 3591 | "dev": true, 3592 | "requires": { 3593 | "pinkie": "2.0.4" 3594 | } 3595 | }, 3596 | "read-pkg": { 3597 | "version": "1.1.0", 3598 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 3599 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 3600 | "dev": true, 3601 | "requires": { 3602 | "load-json-file": "1.1.0", 3603 | "normalize-package-data": "2.4.0", 3604 | "path-type": "1.1.0" 3605 | } 3606 | }, 3607 | "read-pkg-up": { 3608 | "version": "1.0.1", 3609 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 3610 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 3611 | "dev": true, 3612 | "requires": { 3613 | "find-up": "1.1.2", 3614 | "read-pkg": "1.1.0" 3615 | } 3616 | }, 3617 | "strip-bom": { 3618 | "version": "2.0.0", 3619 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 3620 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 3621 | "dev": true, 3622 | "requires": { 3623 | "is-utf8": "0.2.1" 3624 | } 3625 | } 3626 | } 3627 | }, 3628 | "micromatch": { 3629 | "version": "2.3.11", 3630 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 3631 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 3632 | "dev": true, 3633 | "requires": { 3634 | "arr-diff": "2.0.0", 3635 | "array-unique": "0.2.1", 3636 | "braces": "1.8.5", 3637 | "expand-brackets": "0.1.5", 3638 | "extglob": "0.3.2", 3639 | "filename-regex": "2.0.1", 3640 | "is-extglob": "1.0.0", 3641 | "is-glob": "2.0.1", 3642 | "kind-of": "3.2.2", 3643 | "normalize-path": "2.1.1", 3644 | "object.omit": "2.0.1", 3645 | "parse-glob": "3.0.4", 3646 | "regex-cache": "0.4.3" 3647 | } 3648 | }, 3649 | "mimic-fn": { 3650 | "version": "1.1.0", 3651 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", 3652 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", 3653 | "dev": true 3654 | }, 3655 | "minimatch": { 3656 | "version": "3.0.4", 3657 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3658 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3659 | "dev": true, 3660 | "requires": { 3661 | "brace-expansion": "1.1.8" 3662 | } 3663 | }, 3664 | "minimist": { 3665 | "version": "0.0.8", 3666 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 3667 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 3668 | "dev": true 3669 | }, 3670 | "mkdirp": { 3671 | "version": "0.5.1", 3672 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 3673 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 3674 | "dev": true, 3675 | "requires": { 3676 | "minimist": "0.0.8" 3677 | } 3678 | }, 3679 | "ms": { 3680 | "version": "2.0.0", 3681 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3682 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3683 | "dev": true 3684 | }, 3685 | "multimatch": { 3686 | "version": "2.1.0", 3687 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", 3688 | "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", 3689 | "dev": true, 3690 | "requires": { 3691 | "array-differ": "1.0.0", 3692 | "array-union": "1.0.2", 3693 | "arrify": "1.0.1", 3694 | "minimatch": "3.0.4" 3695 | } 3696 | }, 3697 | "mute-stream": { 3698 | "version": "0.0.7", 3699 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 3700 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 3701 | "dev": true 3702 | }, 3703 | "nan": { 3704 | "version": "2.6.2", 3705 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 3706 | "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", 3707 | "dev": true, 3708 | "optional": true 3709 | }, 3710 | "natural-compare": { 3711 | "version": "1.4.0", 3712 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3713 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3714 | "dev": true 3715 | }, 3716 | "normalize-package-data": { 3717 | "version": "2.4.0", 3718 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 3719 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 3720 | "dev": true, 3721 | "requires": { 3722 | "hosted-git-info": "2.5.0", 3723 | "is-builtin-module": "1.0.0", 3724 | "semver": "5.3.0", 3725 | "validate-npm-package-license": "3.0.1" 3726 | } 3727 | }, 3728 | "normalize-path": { 3729 | "version": "2.1.1", 3730 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3731 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 3732 | "dev": true, 3733 | "requires": { 3734 | "remove-trailing-separator": "1.0.2" 3735 | } 3736 | }, 3737 | "npm-run-path": { 3738 | "version": "2.0.2", 3739 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 3740 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 3741 | "dev": true, 3742 | "requires": { 3743 | "path-key": "2.0.1" 3744 | } 3745 | }, 3746 | "number-is-nan": { 3747 | "version": "1.0.1", 3748 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 3749 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 3750 | "dev": true 3751 | }, 3752 | "object-assign": { 3753 | "version": "4.1.1", 3754 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3755 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 3756 | "dev": true 3757 | }, 3758 | "object.omit": { 3759 | "version": "2.0.1", 3760 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 3761 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 3762 | "dev": true, 3763 | "requires": { 3764 | "for-own": "0.1.5", 3765 | "is-extendable": "0.1.1" 3766 | } 3767 | }, 3768 | "observable-to-promise": { 3769 | "version": "0.5.0", 3770 | "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", 3771 | "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", 3772 | "dev": true, 3773 | "requires": { 3774 | "is-observable": "0.2.0", 3775 | "symbol-observable": "1.0.4" 3776 | }, 3777 | "dependencies": { 3778 | "symbol-observable": { 3779 | "version": "1.0.4", 3780 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", 3781 | "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", 3782 | "dev": true 3783 | } 3784 | } 3785 | }, 3786 | "once": { 3787 | "version": "1.4.0", 3788 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3789 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3790 | "dev": true, 3791 | "requires": { 3792 | "wrappy": "1.0.2" 3793 | } 3794 | }, 3795 | "onetime": { 3796 | "version": "2.0.1", 3797 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 3798 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 3799 | "dev": true, 3800 | "requires": { 3801 | "mimic-fn": "1.1.0" 3802 | } 3803 | }, 3804 | "option-chain": { 3805 | "version": "1.0.0", 3806 | "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", 3807 | "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", 3808 | "dev": true 3809 | }, 3810 | "optionator": { 3811 | "version": "0.8.2", 3812 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 3813 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 3814 | "dev": true, 3815 | "requires": { 3816 | "deep-is": "0.1.3", 3817 | "fast-levenshtein": "2.0.6", 3818 | "levn": "0.3.0", 3819 | "prelude-ls": "1.1.2", 3820 | "type-check": "0.3.2", 3821 | "wordwrap": "1.0.0" 3822 | } 3823 | }, 3824 | "os-homedir": { 3825 | "version": "1.0.2", 3826 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 3827 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 3828 | "dev": true 3829 | }, 3830 | "os-tmpdir": { 3831 | "version": "1.0.2", 3832 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3833 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3834 | "dev": true 3835 | }, 3836 | "p-finally": { 3837 | "version": "1.0.0", 3838 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3839 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 3840 | "dev": true 3841 | }, 3842 | "p-limit": { 3843 | "version": "1.1.0", 3844 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", 3845 | "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", 3846 | "dev": true 3847 | }, 3848 | "p-locate": { 3849 | "version": "2.0.0", 3850 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 3851 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 3852 | "dev": true, 3853 | "requires": { 3854 | "p-limit": "1.1.0" 3855 | } 3856 | }, 3857 | "package-hash": { 3858 | "version": "2.0.0", 3859 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", 3860 | "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", 3861 | "dev": true, 3862 | "requires": { 3863 | "graceful-fs": "4.1.11", 3864 | "lodash.flattendeep": "4.4.0", 3865 | "md5-hex": "2.0.0", 3866 | "release-zalgo": "1.0.0" 3867 | } 3868 | }, 3869 | "package-json": { 3870 | "version": "4.0.1", 3871 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 3872 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 3873 | "dev": true, 3874 | "requires": { 3875 | "got": "6.7.1", 3876 | "registry-auth-token": "3.3.1", 3877 | "registry-url": "3.1.0", 3878 | "semver": "5.3.0" 3879 | } 3880 | }, 3881 | "parse-glob": { 3882 | "version": "3.0.4", 3883 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 3884 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 3885 | "dev": true, 3886 | "requires": { 3887 | "glob-base": "0.3.0", 3888 | "is-dotfile": "1.0.3", 3889 | "is-extglob": "1.0.0", 3890 | "is-glob": "2.0.1" 3891 | } 3892 | }, 3893 | "parse-json": { 3894 | "version": "2.2.0", 3895 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 3896 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 3897 | "dev": true, 3898 | "requires": { 3899 | "error-ex": "1.3.1" 3900 | } 3901 | }, 3902 | "parse-ms": { 3903 | "version": "1.0.1", 3904 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", 3905 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 3906 | "dev": true 3907 | }, 3908 | "path-exists": { 3909 | "version": "3.0.0", 3910 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3911 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3912 | "dev": true 3913 | }, 3914 | "path-is-absolute": { 3915 | "version": "1.0.1", 3916 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3917 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3918 | "dev": true 3919 | }, 3920 | "path-is-inside": { 3921 | "version": "1.0.2", 3922 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 3923 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 3924 | "dev": true 3925 | }, 3926 | "path-key": { 3927 | "version": "2.0.1", 3928 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3929 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 3930 | "dev": true 3931 | }, 3932 | "path-parse": { 3933 | "version": "1.0.5", 3934 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 3935 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 3936 | "dev": true 3937 | }, 3938 | "path-type": { 3939 | "version": "2.0.0", 3940 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 3941 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 3942 | "dev": true, 3943 | "requires": { 3944 | "pify": "2.3.0" 3945 | } 3946 | }, 3947 | "pify": { 3948 | "version": "2.3.0", 3949 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 3950 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 3951 | "dev": true 3952 | }, 3953 | "pinkie": { 3954 | "version": "1.0.0", 3955 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", 3956 | "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", 3957 | "dev": true 3958 | }, 3959 | "pinkie-promise": { 3960 | "version": "1.0.0", 3961 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", 3962 | "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", 3963 | "dev": true, 3964 | "requires": { 3965 | "pinkie": "1.0.0" 3966 | } 3967 | }, 3968 | "pkg-conf": { 3969 | "version": "2.0.0", 3970 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", 3971 | "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", 3972 | "dev": true, 3973 | "requires": { 3974 | "find-up": "2.1.0", 3975 | "load-json-file": "2.0.0" 3976 | } 3977 | }, 3978 | "pkg-dir": { 3979 | "version": "2.0.0", 3980 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 3981 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 3982 | "dev": true, 3983 | "requires": { 3984 | "find-up": "2.1.0" 3985 | } 3986 | }, 3987 | "plur": { 3988 | "version": "2.1.2", 3989 | "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", 3990 | "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", 3991 | "dev": true, 3992 | "requires": { 3993 | "irregular-plurals": "1.3.0" 3994 | } 3995 | }, 3996 | "pluralize": { 3997 | "version": "4.0.0", 3998 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", 3999 | "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", 4000 | "dev": true 4001 | }, 4002 | "prelude-ls": { 4003 | "version": "1.1.2", 4004 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 4005 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 4006 | "dev": true 4007 | }, 4008 | "prepend-http": { 4009 | "version": "1.0.4", 4010 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 4011 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 4012 | "dev": true 4013 | }, 4014 | "preserve": { 4015 | "version": "0.2.0", 4016 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 4017 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 4018 | "dev": true 4019 | }, 4020 | "pretty-ms": { 4021 | "version": "2.1.0", 4022 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", 4023 | "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", 4024 | "dev": true, 4025 | "requires": { 4026 | "is-finite": "1.0.2", 4027 | "parse-ms": "1.0.1", 4028 | "plur": "1.0.0" 4029 | }, 4030 | "dependencies": { 4031 | "plur": { 4032 | "version": "1.0.0", 4033 | "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", 4034 | "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", 4035 | "dev": true 4036 | } 4037 | } 4038 | }, 4039 | "private": { 4040 | "version": "0.1.7", 4041 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 4042 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 4043 | "dev": true 4044 | }, 4045 | "process-nextick-args": { 4046 | "version": "1.0.7", 4047 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 4048 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 4049 | "dev": true 4050 | }, 4051 | "progress": { 4052 | "version": "2.0.0", 4053 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 4054 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 4055 | "dev": true 4056 | }, 4057 | "pseudomap": { 4058 | "version": "1.0.2", 4059 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 4060 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 4061 | "dev": true 4062 | }, 4063 | "randomatic": { 4064 | "version": "1.1.7", 4065 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 4066 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 4067 | "dev": true, 4068 | "requires": { 4069 | "is-number": "3.0.0", 4070 | "kind-of": "4.0.0" 4071 | }, 4072 | "dependencies": { 4073 | "is-number": { 4074 | "version": "3.0.0", 4075 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 4076 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 4077 | "dev": true, 4078 | "requires": { 4079 | "kind-of": "3.2.2" 4080 | }, 4081 | "dependencies": { 4082 | "kind-of": { 4083 | "version": "3.2.2", 4084 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 4085 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 4086 | "dev": true, 4087 | "requires": { 4088 | "is-buffer": "1.1.5" 4089 | } 4090 | } 4091 | } 4092 | }, 4093 | "kind-of": { 4094 | "version": "4.0.0", 4095 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 4096 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 4097 | "dev": true, 4098 | "requires": { 4099 | "is-buffer": "1.1.5" 4100 | } 4101 | } 4102 | } 4103 | }, 4104 | "rc": { 4105 | "version": "1.2.1", 4106 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", 4107 | "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", 4108 | "dev": true, 4109 | "requires": { 4110 | "deep-extend": "0.4.2", 4111 | "ini": "1.3.4", 4112 | "minimist": "1.2.0", 4113 | "strip-json-comments": "2.0.1" 4114 | }, 4115 | "dependencies": { 4116 | "minimist": { 4117 | "version": "1.2.0", 4118 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 4119 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 4120 | "dev": true 4121 | } 4122 | } 4123 | }, 4124 | "read-pkg": { 4125 | "version": "2.0.0", 4126 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 4127 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 4128 | "dev": true, 4129 | "requires": { 4130 | "load-json-file": "2.0.0", 4131 | "normalize-package-data": "2.4.0", 4132 | "path-type": "2.0.0" 4133 | } 4134 | }, 4135 | "read-pkg-up": { 4136 | "version": "2.0.0", 4137 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 4138 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 4139 | "dev": true, 4140 | "requires": { 4141 | "find-up": "2.1.0", 4142 | "read-pkg": "2.0.0" 4143 | } 4144 | }, 4145 | "readable-stream": { 4146 | "version": "2.3.3", 4147 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 4148 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 4149 | "dev": true, 4150 | "requires": { 4151 | "core-util-is": "1.0.2", 4152 | "inherits": "2.0.3", 4153 | "isarray": "1.0.0", 4154 | "process-nextick-args": "1.0.7", 4155 | "safe-buffer": "5.1.1", 4156 | "string_decoder": "1.0.3", 4157 | "util-deprecate": "1.0.2" 4158 | } 4159 | }, 4160 | "readdirp": { 4161 | "version": "2.1.0", 4162 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 4163 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 4164 | "dev": true, 4165 | "requires": { 4166 | "graceful-fs": "4.1.11", 4167 | "minimatch": "3.0.4", 4168 | "readable-stream": "2.3.3", 4169 | "set-immediate-shim": "1.0.1" 4170 | } 4171 | }, 4172 | "redent": { 4173 | "version": "1.0.0", 4174 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 4175 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 4176 | "dev": true, 4177 | "requires": { 4178 | "indent-string": "2.1.0", 4179 | "strip-indent": "1.0.1" 4180 | }, 4181 | "dependencies": { 4182 | "indent-string": { 4183 | "version": "2.1.0", 4184 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 4185 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 4186 | "dev": true, 4187 | "requires": { 4188 | "repeating": "2.0.1" 4189 | } 4190 | } 4191 | } 4192 | }, 4193 | "regenerate": { 4194 | "version": "1.3.2", 4195 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", 4196 | "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", 4197 | "dev": true 4198 | }, 4199 | "regenerator-runtime": { 4200 | "version": "0.10.5", 4201 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 4202 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 4203 | "dev": true 4204 | }, 4205 | "regex-cache": { 4206 | "version": "0.4.3", 4207 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 4208 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 4209 | "dev": true, 4210 | "requires": { 4211 | "is-equal-shallow": "0.1.3", 4212 | "is-primitive": "2.0.0" 4213 | } 4214 | }, 4215 | "regexpu-core": { 4216 | "version": "2.0.0", 4217 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 4218 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 4219 | "dev": true, 4220 | "requires": { 4221 | "regenerate": "1.3.2", 4222 | "regjsgen": "0.2.0", 4223 | "regjsparser": "0.1.5" 4224 | } 4225 | }, 4226 | "registry-auth-token": { 4227 | "version": "3.3.1", 4228 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", 4229 | "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", 4230 | "dev": true, 4231 | "requires": { 4232 | "rc": "1.2.1", 4233 | "safe-buffer": "5.1.1" 4234 | } 4235 | }, 4236 | "registry-url": { 4237 | "version": "3.1.0", 4238 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 4239 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 4240 | "dev": true, 4241 | "requires": { 4242 | "rc": "1.2.1" 4243 | } 4244 | }, 4245 | "regjsgen": { 4246 | "version": "0.2.0", 4247 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 4248 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 4249 | "dev": true 4250 | }, 4251 | "regjsparser": { 4252 | "version": "0.1.5", 4253 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 4254 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 4255 | "dev": true, 4256 | "requires": { 4257 | "jsesc": "0.5.0" 4258 | } 4259 | }, 4260 | "release-zalgo": { 4261 | "version": "1.0.0", 4262 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 4263 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 4264 | "dev": true, 4265 | "requires": { 4266 | "es6-error": "4.0.2" 4267 | } 4268 | }, 4269 | "remove-trailing-separator": { 4270 | "version": "1.0.2", 4271 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", 4272 | "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", 4273 | "dev": true 4274 | }, 4275 | "repeat-element": { 4276 | "version": "1.1.2", 4277 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 4278 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 4279 | "dev": true 4280 | }, 4281 | "repeat-string": { 4282 | "version": "1.6.1", 4283 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 4284 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 4285 | "dev": true 4286 | }, 4287 | "repeating": { 4288 | "version": "2.0.1", 4289 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 4290 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 4291 | "dev": true, 4292 | "requires": { 4293 | "is-finite": "1.0.2" 4294 | } 4295 | }, 4296 | "require-precompiled": { 4297 | "version": "0.1.0", 4298 | "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", 4299 | "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", 4300 | "dev": true 4301 | }, 4302 | "require-uncached": { 4303 | "version": "1.0.3", 4304 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 4305 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 4306 | "dev": true, 4307 | "requires": { 4308 | "caller-path": "0.1.0", 4309 | "resolve-from": "1.0.1" 4310 | }, 4311 | "dependencies": { 4312 | "resolve-from": { 4313 | "version": "1.0.1", 4314 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 4315 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 4316 | "dev": true 4317 | } 4318 | } 4319 | }, 4320 | "resolve": { 4321 | "version": "1.3.3", 4322 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", 4323 | "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", 4324 | "dev": true, 4325 | "requires": { 4326 | "path-parse": "1.0.5" 4327 | } 4328 | }, 4329 | "resolve-cwd": { 4330 | "version": "2.0.0", 4331 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", 4332 | "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", 4333 | "dev": true, 4334 | "requires": { 4335 | "resolve-from": "3.0.0" 4336 | } 4337 | }, 4338 | "resolve-from": { 4339 | "version": "3.0.0", 4340 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 4341 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 4342 | "dev": true 4343 | }, 4344 | "restore-cursor": { 4345 | "version": "2.0.0", 4346 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 4347 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 4348 | "dev": true, 4349 | "requires": { 4350 | "onetime": "2.0.1", 4351 | "signal-exit": "3.0.2" 4352 | } 4353 | }, 4354 | "rimraf": { 4355 | "version": "2.6.1", 4356 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 4357 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", 4358 | "dev": true, 4359 | "requires": { 4360 | "glob": "7.1.2" 4361 | } 4362 | }, 4363 | "run-async": { 4364 | "version": "2.3.0", 4365 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 4366 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 4367 | "dev": true, 4368 | "requires": { 4369 | "is-promise": "2.1.0" 4370 | } 4371 | }, 4372 | "rx-lite": { 4373 | "version": "4.0.8", 4374 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 4375 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 4376 | "dev": true 4377 | }, 4378 | "rx-lite-aggregates": { 4379 | "version": "4.0.8", 4380 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 4381 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 4382 | "dev": true, 4383 | "requires": { 4384 | "rx-lite": "4.0.8" 4385 | } 4386 | }, 4387 | "safe-buffer": { 4388 | "version": "5.1.1", 4389 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 4390 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 4391 | "dev": true 4392 | }, 4393 | "semver": { 4394 | "version": "5.3.0", 4395 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 4396 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 4397 | "dev": true 4398 | }, 4399 | "semver-diff": { 4400 | "version": "2.1.0", 4401 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 4402 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 4403 | "dev": true, 4404 | "requires": { 4405 | "semver": "5.3.0" 4406 | } 4407 | }, 4408 | "set-immediate-shim": { 4409 | "version": "1.0.1", 4410 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 4411 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 4412 | "dev": true 4413 | }, 4414 | "shebang-command": { 4415 | "version": "1.2.0", 4416 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 4417 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 4418 | "dev": true, 4419 | "requires": { 4420 | "shebang-regex": "1.0.0" 4421 | } 4422 | }, 4423 | "shebang-regex": { 4424 | "version": "1.0.0", 4425 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 4426 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 4427 | "dev": true 4428 | }, 4429 | "signal-exit": { 4430 | "version": "3.0.2", 4431 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 4432 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 4433 | "dev": true 4434 | }, 4435 | "slash": { 4436 | "version": "1.0.0", 4437 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 4438 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 4439 | "dev": true 4440 | }, 4441 | "slice-ansi": { 4442 | "version": "0.0.4", 4443 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 4444 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 4445 | "dev": true 4446 | }, 4447 | "slide": { 4448 | "version": "1.1.6", 4449 | "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", 4450 | "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", 4451 | "dev": true 4452 | }, 4453 | "sort-keys": { 4454 | "version": "2.0.0", 4455 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", 4456 | "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", 4457 | "dev": true, 4458 | "requires": { 4459 | "is-plain-obj": "1.1.0" 4460 | } 4461 | }, 4462 | "source-map": { 4463 | "version": "0.5.6", 4464 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 4465 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 4466 | "dev": true 4467 | }, 4468 | "source-map-support": { 4469 | "version": "0.4.15", 4470 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", 4471 | "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", 4472 | "dev": true, 4473 | "requires": { 4474 | "source-map": "0.5.6" 4475 | } 4476 | }, 4477 | "spdx-correct": { 4478 | "version": "1.0.2", 4479 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 4480 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 4481 | "dev": true, 4482 | "requires": { 4483 | "spdx-license-ids": "1.2.2" 4484 | } 4485 | }, 4486 | "spdx-expression-parse": { 4487 | "version": "1.0.4", 4488 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 4489 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 4490 | "dev": true 4491 | }, 4492 | "spdx-license-ids": { 4493 | "version": "1.2.2", 4494 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 4495 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 4496 | "dev": true 4497 | }, 4498 | "sprintf-js": { 4499 | "version": "1.0.3", 4500 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 4501 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 4502 | "dev": true 4503 | }, 4504 | "stack-utils": { 4505 | "version": "1.0.1", 4506 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", 4507 | "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", 4508 | "dev": true 4509 | }, 4510 | "string-width": { 4511 | "version": "2.1.0", 4512 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", 4513 | "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", 4514 | "dev": true, 4515 | "requires": { 4516 | "is-fullwidth-code-point": "2.0.0", 4517 | "strip-ansi": "4.0.0" 4518 | } 4519 | }, 4520 | "string_decoder": { 4521 | "version": "1.0.3", 4522 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 4523 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 4524 | "dev": true, 4525 | "requires": { 4526 | "safe-buffer": "5.1.1" 4527 | } 4528 | }, 4529 | "strip-ansi": { 4530 | "version": "4.0.0", 4531 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 4532 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 4533 | "dev": true, 4534 | "requires": { 4535 | "ansi-regex": "3.0.0" 4536 | }, 4537 | "dependencies": { 4538 | "ansi-regex": { 4539 | "version": "3.0.0", 4540 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 4541 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 4542 | "dev": true 4543 | } 4544 | } 4545 | }, 4546 | "strip-bom": { 4547 | "version": "3.0.0", 4548 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 4549 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 4550 | "dev": true 4551 | }, 4552 | "strip-bom-buf": { 4553 | "version": "1.0.0", 4554 | "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", 4555 | "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", 4556 | "dev": true, 4557 | "requires": { 4558 | "is-utf8": "0.2.1" 4559 | } 4560 | }, 4561 | "strip-eof": { 4562 | "version": "1.0.0", 4563 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 4564 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 4565 | "dev": true 4566 | }, 4567 | "strip-indent": { 4568 | "version": "1.0.1", 4569 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 4570 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 4571 | "dev": true, 4572 | "requires": { 4573 | "get-stdin": "4.0.1" 4574 | } 4575 | }, 4576 | "strip-json-comments": { 4577 | "version": "2.0.1", 4578 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 4579 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 4580 | "dev": true 4581 | }, 4582 | "supports-color": { 4583 | "version": "4.2.0", 4584 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", 4585 | "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", 4586 | "dev": true, 4587 | "requires": { 4588 | "has-flag": "2.0.0" 4589 | } 4590 | }, 4591 | "symbol-observable": { 4592 | "version": "0.2.4", 4593 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", 4594 | "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", 4595 | "dev": true 4596 | }, 4597 | "table": { 4598 | "version": "4.0.1", 4599 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", 4600 | "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", 4601 | "dev": true, 4602 | "requires": { 4603 | "ajv": "4.11.8", 4604 | "ajv-keywords": "1.5.1", 4605 | "chalk": "1.1.3", 4606 | "lodash": "4.17.4", 4607 | "slice-ansi": "0.0.4", 4608 | "string-width": "2.1.0" 4609 | }, 4610 | "dependencies": { 4611 | "ajv": { 4612 | "version": "4.11.8", 4613 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 4614 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 4615 | "dev": true, 4616 | "requires": { 4617 | "co": "4.6.0", 4618 | "json-stable-stringify": "1.0.1" 4619 | } 4620 | }, 4621 | "ansi-styles": { 4622 | "version": "2.2.1", 4623 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 4624 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 4625 | "dev": true 4626 | }, 4627 | "chalk": { 4628 | "version": "1.1.3", 4629 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 4630 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 4631 | "dev": true, 4632 | "requires": { 4633 | "ansi-styles": "2.2.1", 4634 | "escape-string-regexp": "1.0.5", 4635 | "has-ansi": "2.0.0", 4636 | "strip-ansi": "3.0.1", 4637 | "supports-color": "2.0.0" 4638 | } 4639 | }, 4640 | "strip-ansi": { 4641 | "version": "3.0.1", 4642 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4643 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 4644 | "dev": true, 4645 | "requires": { 4646 | "ansi-regex": "2.1.1" 4647 | } 4648 | }, 4649 | "supports-color": { 4650 | "version": "2.0.0", 4651 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 4652 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 4653 | "dev": true 4654 | } 4655 | } 4656 | }, 4657 | "term-size": { 4658 | "version": "1.2.0", 4659 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 4660 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 4661 | "dev": true, 4662 | "requires": { 4663 | "execa": "0.7.0" 4664 | } 4665 | }, 4666 | "text-table": { 4667 | "version": "0.2.0", 4668 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 4669 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 4670 | "dev": true 4671 | }, 4672 | "through": { 4673 | "version": "2.3.8", 4674 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 4675 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 4676 | "dev": true 4677 | }, 4678 | "through2": { 4679 | "version": "2.0.3", 4680 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 4681 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 4682 | "dev": true, 4683 | "requires": { 4684 | "readable-stream": "2.3.3", 4685 | "xtend": "4.0.1" 4686 | } 4687 | }, 4688 | "time-require": { 4689 | "version": "0.1.2", 4690 | "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", 4691 | "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", 4692 | "dev": true, 4693 | "requires": { 4694 | "chalk": "0.4.0", 4695 | "date-time": "0.1.1", 4696 | "pretty-ms": "0.2.2", 4697 | "text-table": "0.2.0" 4698 | }, 4699 | "dependencies": { 4700 | "ansi-styles": { 4701 | "version": "1.0.0", 4702 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", 4703 | "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", 4704 | "dev": true 4705 | }, 4706 | "chalk": { 4707 | "version": "0.4.0", 4708 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", 4709 | "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", 4710 | "dev": true, 4711 | "requires": { 4712 | "ansi-styles": "1.0.0", 4713 | "has-color": "0.1.7", 4714 | "strip-ansi": "0.1.1" 4715 | } 4716 | }, 4717 | "date-time": { 4718 | "version": "0.1.1", 4719 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", 4720 | "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", 4721 | "dev": true 4722 | }, 4723 | "parse-ms": { 4724 | "version": "0.1.2", 4725 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", 4726 | "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", 4727 | "dev": true 4728 | }, 4729 | "pretty-ms": { 4730 | "version": "0.2.2", 4731 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", 4732 | "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", 4733 | "dev": true, 4734 | "requires": { 4735 | "parse-ms": "0.1.2" 4736 | } 4737 | }, 4738 | "strip-ansi": { 4739 | "version": "0.1.1", 4740 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", 4741 | "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", 4742 | "dev": true 4743 | } 4744 | } 4745 | }, 4746 | "time-zone": { 4747 | "version": "1.0.0", 4748 | "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", 4749 | "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", 4750 | "dev": true 4751 | }, 4752 | "timed-out": { 4753 | "version": "4.0.1", 4754 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 4755 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 4756 | "dev": true 4757 | }, 4758 | "tmp": { 4759 | "version": "0.0.31", 4760 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", 4761 | "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", 4762 | "dev": true, 4763 | "requires": { 4764 | "os-tmpdir": "1.0.2" 4765 | } 4766 | }, 4767 | "to-fast-properties": { 4768 | "version": "1.0.3", 4769 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 4770 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 4771 | "dev": true 4772 | }, 4773 | "trim-newlines": { 4774 | "version": "1.0.0", 4775 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 4776 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 4777 | "dev": true 4778 | }, 4779 | "trim-off-newlines": { 4780 | "version": "1.0.1", 4781 | "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", 4782 | "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", 4783 | "dev": true 4784 | }, 4785 | "trim-right": { 4786 | "version": "1.0.1", 4787 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 4788 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 4789 | "dev": true 4790 | }, 4791 | "tryit": { 4792 | "version": "1.0.3", 4793 | "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", 4794 | "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", 4795 | "dev": true 4796 | }, 4797 | "type-check": { 4798 | "version": "0.3.2", 4799 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 4800 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4801 | "dev": true, 4802 | "requires": { 4803 | "prelude-ls": "1.1.2" 4804 | } 4805 | }, 4806 | "typedarray": { 4807 | "version": "0.0.6", 4808 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 4809 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 4810 | "dev": true 4811 | }, 4812 | "uid2": { 4813 | "version": "0.0.3", 4814 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", 4815 | "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", 4816 | "dev": true 4817 | }, 4818 | "unique-string": { 4819 | "version": "1.0.0", 4820 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 4821 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 4822 | "dev": true, 4823 | "requires": { 4824 | "crypto-random-string": "1.0.0" 4825 | } 4826 | }, 4827 | "unique-temp-dir": { 4828 | "version": "1.0.0", 4829 | "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", 4830 | "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", 4831 | "dev": true, 4832 | "requires": { 4833 | "mkdirp": "0.5.1", 4834 | "os-tmpdir": "1.0.2", 4835 | "uid2": "0.0.3" 4836 | } 4837 | }, 4838 | "unzip-response": { 4839 | "version": "2.0.1", 4840 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 4841 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", 4842 | "dev": true 4843 | }, 4844 | "update-notifier": { 4845 | "version": "2.2.0", 4846 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", 4847 | "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", 4848 | "dev": true, 4849 | "requires": { 4850 | "boxen": "1.2.0", 4851 | "chalk": "1.1.3", 4852 | "configstore": "3.1.0", 4853 | "import-lazy": "2.1.0", 4854 | "is-npm": "1.0.0", 4855 | "latest-version": "3.1.0", 4856 | "semver-diff": "2.1.0", 4857 | "xdg-basedir": "3.0.0" 4858 | }, 4859 | "dependencies": { 4860 | "ansi-styles": { 4861 | "version": "2.2.1", 4862 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 4863 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 4864 | "dev": true 4865 | }, 4866 | "chalk": { 4867 | "version": "1.1.3", 4868 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 4869 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 4870 | "dev": true, 4871 | "requires": { 4872 | "ansi-styles": "2.2.1", 4873 | "escape-string-regexp": "1.0.5", 4874 | "has-ansi": "2.0.0", 4875 | "strip-ansi": "3.0.1", 4876 | "supports-color": "2.0.0" 4877 | } 4878 | }, 4879 | "strip-ansi": { 4880 | "version": "3.0.1", 4881 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4882 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 4883 | "dev": true, 4884 | "requires": { 4885 | "ansi-regex": "2.1.1" 4886 | } 4887 | }, 4888 | "supports-color": { 4889 | "version": "2.0.0", 4890 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 4891 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 4892 | "dev": true 4893 | } 4894 | } 4895 | }, 4896 | "url-parse-lax": { 4897 | "version": "1.0.0", 4898 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 4899 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 4900 | "dev": true, 4901 | "requires": { 4902 | "prepend-http": "1.0.4" 4903 | } 4904 | }, 4905 | "util-deprecate": { 4906 | "version": "1.0.2", 4907 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4908 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4909 | "dev": true 4910 | }, 4911 | "validate-npm-package-license": { 4912 | "version": "3.0.1", 4913 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 4914 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 4915 | "dev": true, 4916 | "requires": { 4917 | "spdx-correct": "1.0.2", 4918 | "spdx-expression-parse": "1.0.4" 4919 | } 4920 | }, 4921 | "well-known-symbols": { 4922 | "version": "1.0.0", 4923 | "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", 4924 | "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", 4925 | "dev": true 4926 | }, 4927 | "which": { 4928 | "version": "1.2.14", 4929 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", 4930 | "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", 4931 | "dev": true, 4932 | "requires": { 4933 | "isexe": "2.0.0" 4934 | } 4935 | }, 4936 | "widest-line": { 4937 | "version": "1.0.0", 4938 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", 4939 | "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", 4940 | "dev": true, 4941 | "requires": { 4942 | "string-width": "1.0.2" 4943 | }, 4944 | "dependencies": { 4945 | "is-fullwidth-code-point": { 4946 | "version": "1.0.0", 4947 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 4948 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 4949 | "dev": true, 4950 | "requires": { 4951 | "number-is-nan": "1.0.1" 4952 | } 4953 | }, 4954 | "string-width": { 4955 | "version": "1.0.2", 4956 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 4957 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 4958 | "dev": true, 4959 | "requires": { 4960 | "code-point-at": "1.1.0", 4961 | "is-fullwidth-code-point": "1.0.0", 4962 | "strip-ansi": "3.0.1" 4963 | } 4964 | }, 4965 | "strip-ansi": { 4966 | "version": "3.0.1", 4967 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4968 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 4969 | "dev": true, 4970 | "requires": { 4971 | "ansi-regex": "2.1.1" 4972 | } 4973 | } 4974 | } 4975 | }, 4976 | "wordwrap": { 4977 | "version": "1.0.0", 4978 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 4979 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 4980 | "dev": true 4981 | }, 4982 | "wrappy": { 4983 | "version": "1.0.2", 4984 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4985 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4986 | "dev": true 4987 | }, 4988 | "write": { 4989 | "version": "0.2.1", 4990 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 4991 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 4992 | "dev": true, 4993 | "requires": { 4994 | "mkdirp": "0.5.1" 4995 | } 4996 | }, 4997 | "write-file-atomic": { 4998 | "version": "2.1.0", 4999 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", 5000 | "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", 5001 | "dev": true, 5002 | "requires": { 5003 | "graceful-fs": "4.1.11", 5004 | "imurmurhash": "0.1.4", 5005 | "slide": "1.1.6" 5006 | } 5007 | }, 5008 | "write-json-file": { 5009 | "version": "2.2.0", 5010 | "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", 5011 | "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", 5012 | "dev": true, 5013 | "requires": { 5014 | "detect-indent": "5.0.0", 5015 | "graceful-fs": "4.1.11", 5016 | "make-dir": "1.0.0", 5017 | "pify": "2.3.0", 5018 | "sort-keys": "1.1.2", 5019 | "write-file-atomic": "2.1.0" 5020 | }, 5021 | "dependencies": { 5022 | "detect-indent": { 5023 | "version": "5.0.0", 5024 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", 5025 | "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", 5026 | "dev": true 5027 | }, 5028 | "sort-keys": { 5029 | "version": "1.1.2", 5030 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 5031 | "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", 5032 | "dev": true, 5033 | "requires": { 5034 | "is-plain-obj": "1.1.0" 5035 | } 5036 | } 5037 | } 5038 | }, 5039 | "write-pkg": { 5040 | "version": "3.1.0", 5041 | "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", 5042 | "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", 5043 | "dev": true, 5044 | "requires": { 5045 | "sort-keys": "2.0.0", 5046 | "write-json-file": "2.2.0" 5047 | } 5048 | }, 5049 | "xdg-basedir": { 5050 | "version": "3.0.0", 5051 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 5052 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 5053 | "dev": true 5054 | }, 5055 | "xtend": { 5056 | "version": "4.0.1", 5057 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 5058 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 5059 | "dev": true 5060 | }, 5061 | "yallist": { 5062 | "version": "2.1.2", 5063 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 5064 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 5065 | "dev": true 5066 | } 5067 | } 5068 | } 5069 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend-interview-questions", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "lint": "eslint .", 8 | "pretest": "npm run lint", 9 | "tdd": "ava **/*.js -w", 10 | "test": "ava **/*.js" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+ssh://git@github.com/bcherny/frontend-interview-questions.git" 15 | }, 16 | "author": "Boris Cherny (https://performancejs.com)", 17 | "license": "MIT", 18 | "bugs": { 19 | "url": "https://github.com/bcherny/frontend-interview-questions/issues" 20 | }, 21 | "homepage": "https://github.com/bcherny/frontend-interview-questions#readme", 22 | "devDependencies": { 23 | "ava": "^0.21.0", 24 | "eslint": "^4.2.0", 25 | "eslint-config-standard": "^10.2.1", 26 | "eslint-plugin-import": "^2.7.0", 27 | "eslint-plugin-node": "^5.1.0", 28 | "eslint-plugin-promise": "^3.5.0", 29 | "eslint-plugin-standard": "^3.0.1" 30 | } 31 | } 32 | --------------------------------------------------------------------------------