From a84878d668339a7c8d550f185541b756af3d31ab Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 10 Jul 2017 11:37:56 -0500 Subject: [PATCH 01/29] updated longestString.js --- longestString/longestString.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/longestString/longestString.js b/longestString/longestString.js index e36a1c1..fb317b6 100644 --- a/longestString/longestString.js +++ b/longestString/longestString.js @@ -1,4 +1,18 @@ /* * Write a function that accepts an array of strings. * Return the longest string in the array. - */ \ No newline at end of file + */ + +const longestString = (arr) => { + let longest = arr[0]; + for (let i = 0; i < arr.length; i++) { + if (arr[i].length > longest.length) { + longest = arr[i]; + } + } + return longest; +}; + +console.log(longestString(["latoyya", "smith", "Lambda School", "mom"])); + +console.log(longestString(["latoyya", "asdfghj", "Lambda", "1234567"])); \ No newline at end of file From 9343e00d8fc1489be2871e50430d914f001a9f89 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 10 Jul 2017 11:39:55 -0500 Subject: [PATCH 02/29] updated longestString.js --- longestString/longestString.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/longestString/longestString.js b/longestString/longestString.js index fb317b6..a241cc6 100644 --- a/longestString/longestString.js +++ b/longestString/longestString.js @@ -13,6 +13,6 @@ const longestString = (arr) => { return longest; }; -console.log(longestString(["latoyya", "smith", "Lambda School", "mom"])); +// console.log(longestString(["latoyya", "smith", "Lambda School", "mom"])); -console.log(longestString(["latoyya", "asdfghj", "Lambda", "1234567"])); \ No newline at end of file +// console.log(longestString(["latoyya", "asdfghj", "Lambda", "1234567"])); \ No newline at end of file From fe6c58f1eceed1a51122540d8a60a061ca21c9c0 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 11 Jul 2017 14:21:34 -0500 Subject: [PATCH 03/29] updated isUnique.js --- isUnique/isUnique.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/isUnique/isUnique.js b/isUnique/isUnique.js index 3fae3d2..8c8fe3f 100644 --- a/isUnique/isUnique.js +++ b/isUnique/isUnique.js @@ -4,7 +4,15 @@ */ const isUnique = (str) => { - + for (let i = 0; i < str.length; i++) { + let temp = str[i]; + for(let j = i + 1; j <= str.length - 1; j++) { + if(temp === str[j]) { + return false; + } + } + } + return true; }; console.log(isUnique('abcdhijklmnopqrstuv')); // true From 264d7910e49accf4f9a592673b0b00cfe08fe108 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Wed, 12 Jul 2017 12:19:33 -0500 Subject: [PATCH 04/29] completed reverseCase.js --- reverseCase/reverseCase.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/reverseCase/reverseCase.js b/reverseCase/reverseCase.js index 93067ae..960e0ab 100644 --- a/reverseCase/reverseCase.js +++ b/reverseCase/reverseCase.js @@ -5,3 +5,31 @@ */ +const reverseString = (str) => { + let newString = ''; + for (let i = 0; i < str.length; i++) { + if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) { + newString += str.charAt(i).toLowerCase(); + } else { + newString += str.charAt(i).toUpperCase(); + } + } + return newString; +}; + +console.log(reverseString('Hello World')); +console.log(reverseString('Hello World My NamE is LAtoyYa SmitH')); + + +/* +The charCodeAt() method returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index. The first 128 Unicode code points are a direct match of the ASCII character encoding + +/* +ASCII UPPERCASE CHARACTERS and VALUE +"65": "A", "66": "B", "67": "C", "68": "D", "69": "E", "70": "F", "71": "G", "72": "H", "73": "I", "74": "J", "75": "K", "76": "L", "77": "M", "78": "N", "79": "O", "80": "P", "81": "Q", "82": "R", "83": "S", "84": "T", "85": "U", "86": "V", "87": "W", "88": "X", "89": "Y", "90": "Z", +*/ + +/* +ASCII LOWERCASE CHARACTERS and VALUE +"97": "a", "98": "b", "99": "c", "100": "d", "101": "e", "102": "f", "103": "g", "104": "h", "105": "i", "106": "j", "107": "k", "108": "l", "109": "m", "110": "n", "111": "o", "112": "p", "113": "q", "114": "r", "115": "s", "116": "t", "117": "u", "118": "v", "119": "w", "120": "x", "121": "y", "122": "z" +*/ \ No newline at end of file From 8ff940bdc673cfba3c2a8cc0d43c98a114abb9f0 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 14 Jul 2017 01:36:44 -0500 Subject: [PATCH 05/29] completed exercise --- .../largestPrimePalindrome.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/largestPrimePalindrome/largestPrimePalindrome.js b/largestPrimePalindrome/largestPrimePalindrome.js index 1d15751..43e7ce9 100644 --- a/largestPrimePalindrome/largestPrimePalindrome.js +++ b/largestPrimePalindrome/largestPrimePalindrome.js @@ -6,3 +6,26 @@ * Extra credit: Modify the function to look for the largest prime palindrome less than any provided number. * Extra credit 2: How can you improve the time complexity? (Google: Sieve of Eratosthenes) */ + +const largestPrimePalindrome = () => { + + const isPalindrome = num => { + return num == num.toString().split('').reverse().join(''); + }; + + const isPrime = num => { + for(let i = 2; i < num; i++) { + if(num % i === 0) { + return false; + } + } + return num !== 1; + }; + + for (let i = 920; i < 1000; i++) { + if (isPalindrome(i) && isPrime(i)) { + return i; + } + } +} +console.log(largestPrimePalindrome()); \ No newline at end of file From d2515ab2bc84f3ef315b71810190a20008c79344 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 17 Jul 2017 08:59:23 -0500 Subject: [PATCH 06/29] completed evenOccurences.js --- evenOccurences/evenOccurences.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/evenOccurences/evenOccurences.js b/evenOccurences/evenOccurences.js index 35da569..5be22b1 100644 --- a/evenOccurences/evenOccurences.js +++ b/evenOccurences/evenOccurences.js @@ -11,5 +11,21 @@ * */ const evenOccurence = (arr) => { - // Your code here. + let newObj = {}; + arr.forEach(num => { + newObj[num] = newObj[num] + 1 || 1; + }); + + for (let i = 0; i < arr.length; i++) { + let current = arr[i]; + + if (newObj[current] % 2 === 0) { + return current; + } + } + return null; }; + + + +console.log(evenOccurence([1,7,2,4,5,1,6,8,9,6,4,1])); \ No newline at end of file From a6106658e16486d8a72536f672b4a98302a4c409 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 17 Jul 2017 15:33:47 -0500 Subject: [PATCH 07/29] completed callbackPractice.js --- callbackPractice/callbackPractice.js | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/callbackPractice/callbackPractice.js b/callbackPractice/callbackPractice.js index 931c19d..143444f 100644 --- a/callbackPractice/callbackPractice.js +++ b/callbackPractice/callbackPractice.js @@ -20,24 +20,40 @@ const foods = ['pineapple', 'mango', 'ribeye', 'curry', 'tacos', 'ribeye', 'mango']; +const firstItem = (arr, cb) => { + cb(arr[0]); +}; + firstItem(foods, (firstItem) => { console.log(`The first item is ${firstItem}.`); }); // Write a function called getLength that passes the length of the array into the callback +const getLength = (arr, cb) => { + cb(arr.length); +}; + getLength(foods, (length) => { console.log(`The length of the array is ${length}.`); }); // Write a function called last which passes the last item of the array into the callback +const last = (arr, cb) => { + cb(arr[arr.length - 1]); +}; + last(foods, (lastItem) => { console.log(`The last item in the array is ${lastItem}.`); }); // Write a function called sumNums that adds two numbers and passes the result to the callback +const sumNums = (x, y, cb) => { + let sum = x + y; + cb(sum); +}; sumNums(5, 10, (sum) => { console.log(`The sum is ${sum}.`); @@ -45,6 +61,11 @@ sumNums(5, 10, (sum) => { // Write a function called multiplyNums that adds two numbers and passes the result to the callback +const multiplyNums = (x, y, cb) => { + let product = x * y; + cb(product); +}; + multiplyNums(5, 10, (product) => { console.log(`The product is ${product}.`); }); @@ -52,6 +73,13 @@ multiplyNums(5, 10, (product) => { // Write a function called contains that checks if an item is present inside of the given array. // Pass true to the callback if it is, otherwise pass false +const contains = (arr, item, cb) => { + if (arr.indexOf(item) !== -1) { + return cb(item); + } + return cb(!item); +}; + contains(foods, 'ribeye', (result) => { console.log(result ? 'ribeye is in the array' : 'ribeye is not in the array'); }); @@ -59,12 +87,28 @@ contains(foods, 'ribeye', (result) => { // Write a function called removeDuplicates that removes all duplicate values from the given array. // Pass the array to the callback function. Do not mutate the original array. +const removeDuplicates = (arr, cb) => { + var temp = []; + for (i = 0; i < arr.length; i++) { + if (temp.indexOf(arr[i]) === -1) { + temp.push(arr[i]); + } + } + cb(temp); +}; + removeDuplicates(foods, (uniqueFoods) => { console.log(`foods with duplicates removed: ${uniqueFoods}`); }); // Write a function called forEach that iterates over the provided array and passes the value and index into the callback. +const forEach = (arr, cb) => { + for (var i = 0; i < arr.length; i++){ + cb(arr[i], i); + } +}; + forEach(foods, (value, index) => { console.log(`${value} is at index ${index}.`); }); From bab7f407d198e45c6295bf5cdbc53c93346e4b98 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 18 Jul 2017 13:29:40 -0500 Subject: [PATCH 08/29] completed forLoopTimeout.js --- forLoopTimeout/forLoopTimeout.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/forLoopTimeout/forLoopTimeout.js b/forLoopTimeout/forLoopTimeout.js index ea85835..e6a72e2 100644 --- a/forLoopTimeout/forLoopTimeout.js +++ b/forLoopTimeout/forLoopTimeout.js @@ -11,3 +11,35 @@ for (var i = 1; i <= 10; i++) { console.log(i); }, 0); } + +/* + The variable i is being passed by reference into setTimeout and not the actual value. After 10 seconds the value of i has already been + incremented to 11 and passed to console.log(). + The function only executes one time after the provided time interval expires and by that time the i value has already finished it's increments which causes setTimeout to be passed 11. +*/ + + +/* + + Fix 1 + setTimeout() needs to receive the actual value of i and not the reference after each iteration of the for loop + + for (var i = 1; i <= 10; i++) { + setTimeout(function(i) { + return function() { + console.log(i); + }; }(i), 0*i); + } + + + Fix 2 + Change var to let so the value of i is constantly changing + + for (let i = 1; i <= 10; i++) { + setTimeout(function() { + // From looking at the code you would assume it would print 1 - 10 + // It doesn't. Why? How can you make it print 1 - 10. + console.log(i); + }, 0); + } +*/ \ No newline at end of file From b84dbe4c58d5a5aa51e50c770237d8ced8a87a6e Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Wed, 19 Jul 2017 20:55:08 -0500 Subject: [PATCH 09/29] completed binarySearch.js --- binarySearch/binarySearch.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/binarySearch/binarySearch.js b/binarySearch/binarySearch.js index b7a345b..e7c459c 100644 --- a/binarySearch/binarySearch.js +++ b/binarySearch/binarySearch.js @@ -10,6 +10,23 @@ * * console.log(index); // 1 **/ -const binarySearch = (nums, target) => { +const binarySearch = (nums, target) => { + let start = 0; + let end = nums.length - 1; + + while(start <= end) { + let mid = (Math.floor((start + end) / 2)); + if(nums[mid] === target) { + return mid; + } else if(target < nums[mid]) { + end = mid - 1; + } else { + start = mid + 1; + } + } + return -1; }; + +const index = binarySearch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2); +console.log(index); From e57c4bb4477dc7efe6873cf4d74d9cd4dae4ad09 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 24 Jul 2017 12:14:25 -0500 Subject: [PATCH 10/29] updated array.js --- array/array.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/array/array.js b/array/array.js index 7460fa2..7c5122a 100644 --- a/array/array.js +++ b/array/array.js @@ -7,3 +7,35 @@ * How do these operations compare to that of a linked list? * How does the time complexity of insertion and deletion compare to that of a linked list? */ + + class Array { + constructor() { + this.storage = {}; + this.count = 0; + } + push(value) { + this.storage[this.count] = value; + this.count++; + } + + pop() { + this.count--; + delete this.storage[this.count]; + return this.storage[this.count]; + } + + get(index) { + return this.storage[index]; + } + + delete(index) { + if(index < 0 || index >= this.count) + return undefined; + const deletedValue = this.storage[index]; + for(let i = index; i < this.count; i++) { + this.storage[i] = this.storage[i + 1]; + } + this.storage--; + return deletedValue; + } + } From d11a127126d0653b28ddde71aa848b7b3ee7b5bb Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 24 Jul 2017 12:16:18 -0500 Subject: [PATCH 11/29] added waterJugs.md --- brainTeasers/waterJugs.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/brainTeasers/waterJugs.md b/brainTeasers/waterJugs.md index 5787394..b79cc80 100644 --- a/brainTeasers/waterJugs.md +++ b/brainTeasers/waterJugs.md @@ -1,3 +1,14 @@ You have a five-quart jug, a three-quart jug, and an unlimited supply of water (but no measuring cups). How would you come up with exactly four quarts of water? Note that the jugs are oddly shaped, such that filling up exactly "half" of the jug would be impossible. + +5 Quart | 3 Quart +------------------ + 0 | 3 + 3 | 0 + 3 | 3 + 5 | 1 + 0 | 1 + 1 | 0 + 1 | 3 + 4 | 0 \ No newline at end of file From c158ab12d9562eb47bea89a1a64a99943c07406b Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 25 Jul 2017 09:40:42 -0500 Subject: [PATCH 12/29] completed exercise --- stringCompression/stringCompression.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/stringCompression/stringCompression.js b/stringCompression/stringCompression.js index 48db571..1eeedd1 100644 --- a/stringCompression/stringCompression.js +++ b/stringCompression/stringCompression.js @@ -4,3 +4,29 @@ // If the "compressed" string would not become smaller than the original string, // your method should return the original string. // You can assume the string has only uppercase and lowercase letters (a - z). + +const compression = (str) => { + let newStr = ''; + let count = 1; + for (let i = 0; i < str.length - 1; i++) { + if (str.charAt(i) == str.charAt(i + 1)) { + count++; + } else { + newStr = newStr + str.charAt(i) + count; + count = 1; + } + } + newStr = newStr + str.charAt(str.length - 1) + count; + if(newStr.length < str.length) { + return newStr; + } else { + return str; + } + //return newStr.length < str.length ? newStr : str; + } + + console.log(compression('a')); // a + console.log(compression('abc')); // abc + console.log(compression('aaa')); // a3 + console.log(compression('aaaccc')); //a3c3 + console.log(compression('aabcccccaaa')); //a2b1c5a3 \ No newline at end of file From ccb70902fc7c9c4c58301f81eb00b6edf862e75f Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 25 Jul 2017 09:42:47 -0500 Subject: [PATCH 13/29] completed array.js --- array/array.js | 1 + 1 file changed, 1 insertion(+) diff --git a/array/array.js b/array/array.js index 7c5122a..d68f59f 100644 --- a/array/array.js +++ b/array/array.js @@ -39,3 +39,4 @@ return deletedValue; } } + From 58b04b0f7904230e6ae7c4b4f8c50699166b2f59 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 28 Jul 2017 11:08:31 -0500 Subject: [PATCH 14/29] uploaded operators.js --- operators/operators.js | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/operators/operators.js b/operators/operators.js index b6dbed4..1123659 100644 --- a/operators/operators.js +++ b/operators/operators.js @@ -4,3 +4,49 @@ * Now for the tricky part: you can only use the + and - operators to implement these functions. * For division just drop the remainder. */ + + // Tai's Solution +const multiply = (x, y) => { + const absX = x < 0 ? 0 - x: x; + const absY = y < 0 ? 0 - y: y; + let product = 0; + for (let i = 0; i < absX; i++) product += absY; + if (x < 0 && y < 0) return product; + if (x < 0 || y < 0) return 0 - product; + return product; +}; + +const divide = (x, y) => { + if (y === 0) return NaN; + let absX = x < 0 ? 0 - x: x; + let absY = y < 0 ? 0 - y: y; + let quotient = 0; + while (absX > 0) { + absX -= absY; + if (absX >= 0) quotient += 1; + } + if (x < 0 && y < 0) return quotient; + if (x < 0 || y < 0) return 0 - quotient; + return quotient; +}; + +const modulo = (x, y) => { + if (y === 0) return NaN; + let absX = x < 0 ? 0 - x: x; + let absY = y < 0 ? 0 - y: y; + while (absX >= absY) absX -= absY; + if (x < 0 || y < 0) return 0 - absX; + return absX; +}; + +console.log(multiply(15, 10)); // 150 +console.log(multiply(15, 0)); // 0 +console.log(multiply(-15, 10)); // -150 +console.log(multiply(-15, -10)); // 150 +console.log(divide(15, 5)); // 3 +console.log(divide(15, 0)); // NaN +console.log(modulo(15, 0)); // NaN +console.log(modulo(15, 7)); // 1 +console.log(modulo(15, -7)); // -1 +console.log(modulo(-15, 7)); // -1 +console.log(modulo(-15, -7)); // 1 \ No newline at end of file From 1e07b6e706a5853951a2d84319ade976d1fa59d5 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 28 Jul 2017 11:10:00 -0500 Subject: [PATCH 15/29] uploaded constructors.js --- constructors/constructors.js | 160 ++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 1 deletion(-) diff --git a/constructors/constructors.js b/constructors/constructors.js index 34310c9..f352540 100644 --- a/constructors/constructors.js +++ b/constructors/constructors.js @@ -21,4 +21,162 @@ * * This is how you would structure the game objects in an actual game * application in Unity or another similar framework. - */ \ No newline at end of file + */ + + class NPC { + constructor(options) { + this.name = options.name; + this.hp = options.hp; + this.strength = options.strength; + this.speed = options.speed; + } + destroy() { + console.log(`${this.name} was removed from the game`); + } + } + + class Humanoid extends NPC { + constructor(options) { + super(options); + this.height = options.height; + this.sex = options.sex; + } + walk() { + console.log(`${this.name} walked`); + } + } + + class Human extends Humanoid { + constructor(options) { + super(options); + this.occupation = options.occupation; + this.language = options.language; + this.clan = options.clan; + } + shootGun() { + console.log('boom!'); + } + } + + class Elf extends Humanoid { + constructor(options){ + super(options); + this.occupation = options.occupation; + this.language = options.language; + this.house = options.house; + } + shootBow() { + console.log('twang!'); + } + } +/////////////////////////////////////////////////////////// + class Animal extends NPC { + constructor(options) { + super(options); + this.species = options.species; + this.habitat = options.habitat; + this.territory = options.territory; + } + walk() { + console.log(`${this.name} walked`); + } + } + + class Bear extends Animal { + constructor(options) { + super(options); + this.type = options.type; + this.diet = options.diet; + this.color = options.color; + } + hunt() { + console.log(`${this.name} hunts for prey during the day.`) + } + } +/////////////////////////////////////////////////////////////////// + +class Plant extends NPC { + constructor(options) { + super (options); + this.region = options.region; + this.season = options.season; + this.poison = options.poison; + } +} + +class FleshEatingDaisy extends Plant { + constructor(options) { + super(options); + this.color = options.color; + this.lifespan = options.lifespan; + } + sprayPoison() { + console.log(`Becareful ${this.name} is releasing it's poison`) + } +} + +const kiss = new FleshEatingDaisy({ + name: 'Kiss of Death', + hp: 30, + strength: 30, + speed: 'stationary', + region: 'Amazon Rainforest', + season: 'Spring', + poison: 'yes', + color: 'Inviting Yellow', + lifespan: '3 poison sprays' +}); + +console.log(kiss); + + const maximus = new Bear({ + name: 'Maximus Grizzly', + hp: 75, + strength: 90, + speed: 65, + species: 'Grizzly Bear', + habitat: 'Treetop Forest', + territory: 'California Hills', + type: 'Black Grizzly Bear', + diet: 'Salmon', + color: 'Black' + }); + + const legolas = new Elf({ + hp: 30, + strength: 5, + speed: 10, + height: 85, + sex: 'male', + occupation: 'Craftsman', + language: 'High Elvish', + house: 'Keebler', + name: 'Legolas' + }); + + const bob = new Human({ + hp: 50, + strength: 10, + speed: 5, + height: 80, + sex: 'male', + name: 'Bob the strong', + occupation: 'Blacksmith', + language: 'English', + clan: 'McDonald' + }); + +// console.log(maximus); +// maximus.hunt(); +// maximus.walk(); +// maximus.destroy(); + +// console.log(bob); +// bob.shootGun(); +// bob.walk(); +// bob.destroy(); + +// console.log(legolas); +// legolas.shootBow(); +// legolas.walk(); +// legolas.destroy(); \ No newline at end of file From 864070b4b426660a8885f42474181e2509a5a7da Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 28 Jul 2017 11:10:49 -0500 Subject: [PATCH 16/29] completed queueStack.js --- queueStack/queueStack.js | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/queueStack/queueStack.js b/queueStack/queueStack.js index 5a05207..a959a9e 100644 --- a/queueStack/queueStack.js +++ b/queueStack/queueStack.js @@ -2,3 +2,71 @@ * Write a stack class. Once you're done, * implement a queue using two stacks. */ + + class Stack { + constructor() { + this.stack = []; + } + + add(value) { + this.stack.push(value); + } + + remove() { + return this.stack.pop(); + } + get size() { + return this.stack.length; + } +} + +/* Stack Test + +const stack = new Stack; + +stack.add(10); +stack.add(9); +stack.add(8); +console.log(stack.remove()); +console.log(stack.remove()); + +console.log(stack); +*/ + +class Queue { + constructor() { + this.stack1 = new Stack(); + this.stack2 = new Stack(); + } + + enqueue(value) { + this.stack1.add(value); + } + + dequeue() { + if(!this.stack2.size) { + if(!this.stack1.size) { + return undefined; + } + while(this.stack1.size) { + this.stack2.add(this.stack1.remove()); + } + } + return this.stack2.remove(); + } +} + +const queue = new Queue(); + +queue.enqueue(1); +queue.enqueue(2); +queue.enqueue(3); +queue.enqueue(4); +queue.enqueue(5); +console.log(queue.dequeue()); +console.log(queue.dequeue()); +console.log(queue.dequeue()); +//console.log(queue.dequeue()); +//console.log(queue.dequeue()); + +console.log(queue); \ No newline at end of file From 7377ee7c44387d22613267fb4da813bbac345647 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 31 Jul 2017 09:29:39 -0500 Subject: [PATCH 17/29] uploaded bubblesort.js --- bubbleSort/bubbleSort.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/bubbleSort/bubbleSort.js b/bubbleSort/bubbleSort.js index 69211d2..ffac0c3 100644 --- a/bubbleSort/bubbleSort.js +++ b/bubbleSort/bubbleSort.js @@ -22,5 +22,25 @@ */ const bubbleSort = (arr) => { - //code here + if(arguments.length === 0 || !Array.isArray(arr)) { + return 'Invalid input array'; + } + for(let i = (arr.length - 1); i >= 0; i--) { + for(let j = (arr.length - 1); j > 0; j--) { + if (arr[j] < arr[j - 1]) { + let temp = arr[j]; + arr[j] = arr[j - 1]; + arr[j - 1] = temp; + } + } + } + return arr; }; + +console.log(bubbleSort([1, 2, 3])); // [1, 2, 3] +console.log(bubbleSort([2, 1, 3])); // [1, 2, 3] +console.log(bubbleSort([])); // Invalid input array +console.log(bubbleSort({foo: 123})); // Invalid input array +console.log(bubbleSort('foobar')); // Invalid input array +console.log(bubbleSort(undefined)); // Invalid input array +console.log(bubbleSort([161, 48, 56, 545, 2, 77])); // [2, 48, 56, 77, 161, 545] From 184f9b814eba830866f6fb03f7c7e0b20309c1a8 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 1 Aug 2017 12:06:25 -0500 Subject: [PATCH 18/29] completes allAnagrams --- allAnagrams/allAnagrams.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/allAnagrams/allAnagrams.js b/allAnagrams/allAnagrams.js index a214c6a..5806ad4 100644 --- a/allAnagrams/allAnagrams.js +++ b/allAnagrams/allAnagrams.js @@ -10,4 +10,25 @@ * example usage: * const anagrams = allAnagrams('abc'); * console.log(anagrams); // [ 'abc', 'acb', 'bac', 'bca', 'cab', 'cba' ] - */ \ No newline at end of file + */ + + let allAnagrams = (word, anagram = '', anagrams = []) => { + if(!word) { + anagrams.push(anagram); + return; + } + for (let i = 0; i < word.length; i++) { + anagram += word[i]; + allAnagrams(word.slice(0, i) + word.slice(i + 1), anagram, anagrams); + anagram = anagram.slice(0, anagram.length - 1); + } + return [...new Set(anagrams)]; + }; + + + console.log(allAnagrams('abc')); // [ 'abc', 'acb', 'bac', 'bca', 'cab', 'cba' ] + console.log(allAnagrams('ab')); // [ 'ab', 'ba' ] + console.log(allAnagrams('1234')); // [ '1234','1243','1324', '1342', '1423', '1432', '2134', '2143', '2314', '2341', + //'2413', '2431', '3124', '3142', '3214', '3241', '3412', '3421', '4123', '4132', '4213', '4231', '4312', '4321' ] + + // input! - factorial \ No newline at end of file From 47fc02bb38db105f8cc94bd53fb790e4b3952333 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Wed, 2 Aug 2017 11:36:58 -0500 Subject: [PATCH 19/29] uploaded insertionSort.js --- insertionSort/insertionSort.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/insertionSort/insertionSort.js b/insertionSort/insertionSort.js index d8b0db9..7447de4 100644 --- a/insertionSort/insertionSort.js +++ b/insertionSort/insertionSort.js @@ -12,5 +12,22 @@ const insertionSort = (array) => { // Your code goes here. Feel free to add helper functions if needed. + // if (array.length === 0) { + // return 'Nothing to sort, the array is empty' + // }; + for(let i = 1; i < array.length; i++) { + let key = array[i]; + let j = i - 1; + while (j >= 0 && array[j] > key) { + array[j+1] = array[j]; + j = j -1; + } + array[j + 1] = key; + // console.log(array); + } return array; -}; \ No newline at end of file +}; + +console.log(insertionSort([2, 1, 3, 7, 4, 2, 9, 3, 8])); // [ 1, 2, 2, 3, 3, 4, 7, 8, 9 ] +console.log(insertionSort([])); // [] +console.log(insertionSort([1])); // [ 1 ] From bf621d9adf720308ab53582a5b9bc50f3559e7d7 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 4 Aug 2017 10:36:40 -0500 Subject: [PATCH 20/29] completed rotateImage.js --- rotateImage/rotateImage.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/rotateImage/rotateImage.js b/rotateImage/rotateImage.js index a75ea9e..1c35c3c 100644 --- a/rotateImage/rotateImage.js +++ b/rotateImage/rotateImage.js @@ -1,2 +1,30 @@ // Given an image represented by an NxN matrix, where each pixel in the image is an integer from 0 - 9, // write a method to rotate the image by 90 degrees. Can you do this in place? + +/** + * 0 1 2 6 3 0 + * 3 4 5 ===> 7 4 1 + * 6 7 8 8 5 2 + */ + + +const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; + console.log(matrix); + + function rotate(matrix, len) { + var n = len; + var temp; + + for(var i = 0; i < n/2; i++) { + for(var j = i; j < n-i-1; j++) { + temp = matrix[i][j]; + matrix[i][j] = matrix[j][n-i-1]; + matrix[j][n-i-1] = matrix[n-i-1][n-j-1]; + matrix[n-i-1][n-j-1] = matrix[n-j-1][i]; + matrix[n-j-1][i] = temp; + } + } + + return matrix + } + console.log(rotate(matrix, matrix[0].length)); \ No newline at end of file From 1c830f1d8cdb242e99b8d8b7cfcf7a91777daafe Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Fri, 4 Aug 2017 10:38:20 -0500 Subject: [PATCH 21/29] completed logicGates.js --- logicGates/logicGates.js | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/logicGates/logicGates.js b/logicGates/logicGates.js index 6433782..5e60ae8 100644 --- a/logicGates/logicGates.js +++ b/logicGates/logicGates.js @@ -11,23 +11,78 @@ const NAND = (x, y) => { // You can use whatever JS operators that you would like: &&, ||, ! + if(!(x && y)) { + return 1; + } else { + return 0; + } }; +console.log('===== NAND ====='); +console.log('0 0 | ' + NAND(0,0)); +console.log('0 1 | ' + NAND(0,1)); +console.log('1 0 | ' + NAND(1,0)); +console.log('1 1 | ' + NAND(1,1)); const NOT = (n) => { // Do not use !, &&, or || + if(NAND(n, n)) { + return 1; + } else { + return 0; + } + }; +console.log('===== NOT ====='); +console.log('0 | ' + NOT(0)); +console.log('1 | ' + NOT(1)); + const AND = (x, y) => { // Do not use &&, ||, or ! // You can use any of the functions that you have already written + if (NAND(x, y) === 1) { + return 0; + } else { + return 1; + } }; +console.log('===== AND ====='); +console.log('0 0 | ' + AND(0,0)); +console.log('0 1 | ' + AND(0,1)); +console.log('1 0 | ' + AND(1,0)); +console.log('1 1 | ' + AND(1,1)); + const OR = (x, y) => { // Do not use ||, &&, or ! // You can use any of the functions that you have already written + if(NAND(x,x)) { + if(NAND(y,y)) { + return 0; + } + } + return 1; }; +console.log('===== OR ====='); +console.log('0 0 | ' + OR(0,0)); +console.log('0 1 | ' + OR(0,1)); +console.log('1 0 | ' + OR(1,0)); +console.log('1 1 | ' + OR(1,1)); + const XOR = (x, y) => { // Do not use ||, &&, or ! // You can use any of the functions that you have already written + if(NAND(x, NAND(x,y))) { + if(NAND(NAND(x, y), y)) { + return 0; + } + } + return 1; }; + +console.log('===== XOR ====='); +console.log('0 0 | ' + XOR(0,0)); +console.log('0 1 | ' + XOR(0,1)); +console.log('1 0 | ' + XOR(1,0)); +console.log('1 1 | ' + XOR(1,1)); \ No newline at end of file From 3f75aa40571f2a553746a4adef3cb4a42a511a56 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 8 Aug 2017 10:31:05 -0500 Subject: [PATCH 22/29] completed rockPaperScissors.js --- rockPaperScissors/rockPaperScissors.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/rockPaperScissors/rockPaperScissors.js b/rockPaperScissors/rockPaperScissors.js index 9f54ca2..220731a 100644 --- a/rockPaperScissors/rockPaperScissors.js +++ b/rockPaperScissors/rockPaperScissors.js @@ -10,6 +10,22 @@ * ...etc... * */ -const rockPaperScissors = () => { +const rockPaperScissors = (numOfRounds) => { // TODO: your solution here -}; \ No newline at end of file + const choices = ['rock', 'paper', 'scissors']; + const outcome = []; + const possibleCombos = (roundsRemaining, gamesPlayed) => { + if(roundsRemaining === 0) { + outcome.push(gamesPlayed); + return; + } + for(let i = 0; i < choices.length; i++) { + const oneChoice = choices[i]; + possibleCombos(roundsRemaining - 1, gamesPlayed.concat(oneChoice)); + } + } + possibleCombos(numOfRounds, []); + return outcome; +}; + +console.log(rockPaperScissors(3)); \ No newline at end of file From 2b8afff33413f56a72ae7ba279a3b5c7e3fb2e41 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 8 Aug 2017 10:37:35 -0500 Subject: [PATCH 23/29] uploaded parallel.js --- parallel/parallel.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/parallel/parallel.js b/parallel/parallel.js index 9998dea..eb03a9d 100644 --- a/parallel/parallel.js +++ b/parallel/parallel.js @@ -38,3 +38,37 @@ * * */ + + //********Tai's Solution **********// + +const parallel = (functions, cb) => { + const values = []; + let remainingItems = functions.length; + functions.forEach((func, i) => { + func((value) => { + values[i] = value; + remainingItems--; + if(remainingItems === 0) cb(values); + }); + }); +}; + + +parallel([ + function(callback){ + setTimeout(function(){ + callback('one'); + }, 200); + }, + function(callback){ + setTimeout(function(){ + callback('two'); + }, 100); + } + ], + // optional callback + (results) => { + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. + console.log(results); // ['one', 'two'] + }); \ No newline at end of file From 30bf5e564c4b1b66e0545e16e209c607f5fc2a7e Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Thu, 10 Aug 2017 10:06:46 -0500 Subject: [PATCH 24/29] completed quickSort --- quickSort/quickSort.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/quickSort/quickSort.js b/quickSort/quickSort.js index 7af4064..f3ff037 100644 --- a/quickSort/quickSort.js +++ b/quickSort/quickSort.js @@ -4,6 +4,34 @@ * https://en.wikipedia.org/wiki/Quicksort * https://www.khanacademy.org/computing/computer-science/algorithms#quick-sort */ -const quickSort = (nums) => { +const quickSort = (nums, sort) => { + const length = nums.length; + + if(!sort) { + sort = (a, b) => { + return a > b; + }; + } + if(length === 0 || length === 1) { + return nums; + } -}; \ No newline at end of file + var swapLeft = []; + var swapRight = []; + var pivot = nums[0]; + + for(let i = 1; i < length; i++) { + if(sort(nums[i], pivot)) { + swapRight.push(nums[i]); + } else { + swapLeft.push(nums[i]); + } + } + return quickSort(swapLeft).concat(pivot, quickSort(swapRight)); +}; + + +console.log(quickSort([66, 646,323, 484, 4, 8, 99, 656, 26, 5])); // [ 4, 5, 8, 26, 66, 99, 323, 484, 646, 656 ] +console.log(quickSort([46, 646, 99, 26, 5])); // [ 5, 26, 46, 99, 646 ] +console.log(quickSort([8])); // [8] +console.log(quickSort([])); // [] \ No newline at end of file From 2f72fdbc64331e5f168c491453f591fb44e9e9aa Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Thu, 10 Aug 2017 10:39:36 -0500 Subject: [PATCH 25/29] completed selectionSort.js --- selectionSort/selectionSort.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/selectionSort/selectionSort.js b/selectionSort/selectionSort.js index feefe83..602e35b 100644 --- a/selectionSort/selectionSort.js +++ b/selectionSort/selectionSort.js @@ -7,5 +7,27 @@ */ const selectionSort = (arr) => { + let smallest , temp; + const length = arr.length; + if(length === 0 || length === 1) { + return arr; + } + for(let i = 0; i < length; i++) { + smallest = i; + for(let j = i + 1; j < length; j++) { + if(arr[j] < arr[smallest]) { + smallest = j; + } + } + temp = arr[i]; + arr[i] = arr[smallest]; + arr[smallest] = temp; + } + return arr; +}; -}; \ No newline at end of file +console.log('\nTime Complexity O(n^2)'); +console.log(selectionSort([16, 98, 87, 87, 55, 99, 36, 100, 187])); // [16, 36, 55, 87, 87, 98, 99, 100, 107] +console.log(selectionSort([44, 87, 32, 21, 3])); // [3, 21, 32, 44, 87] +console.log(selectionSort([25])); // [25] +console.log(selectionSort([])); // [] \ No newline at end of file From f184aa9d28b02bb6e72f0c7be8b3666563769405 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 14 Aug 2017 08:53:24 -0500 Subject: [PATCH 26/29] completed rotatedArray.js --- rotatedArray/rotatedArray.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/rotatedArray/rotatedArray.js b/rotatedArray/rotatedArray.js index ae1f0f7..22a8d5d 100644 --- a/rotatedArray/rotatedArray.js +++ b/rotatedArray/rotatedArray.js @@ -13,4 +13,36 @@ * rotatedArraySearch([4, 5, 6, 0, 1, 2, 3], 100) === null * * Target time complexity: O(log(n)) - */ \ No newline at end of file + */ + + const rotatedArraySearch = (arr, target) => { + let leftEndpint = 0; + let rightEndpoint = arr.length - 1; + + while (leftEndpint <= rightEndpoint) { + let midPoint = Math.floor((leftEndpint + rightEndpoint) / 2); + if (arr[midPoint] === target) { + return midPoint; + } + if (arr[leftEndpint] < arr[midPoint]) { + if (arr[leftEndpint] <= target && target < arr[midPoint]) { + rightEndpoint = midPoint - 1; + } else { + leftEndpint = midPoint + 1; + } + } else { + if (arr[midPoint] <= target && target < arr[rightEndpoint]) { + leftEndpint = midPoint + 1; + } else { + rightEndpoint = midPoint - 1; + } + } + } + return null; + } + + console.log(rotatedArraySearch([4, 5, 6, 0, 1, 2, 3], 2)); // 5 + + console.log(rotatedArraySearch([4, 5, 6, 0, 1, 2, 3], 100)); // null + + console.log(rotatedArraySearch([4, 5, 6, 7, 1, 2, 3, ], 7)); // 3 \ No newline at end of file From f79f81704dce048789458ea725a8994440ded423 Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Mon, 14 Aug 2017 12:20:19 -0500 Subject: [PATCH 27/29] completed linkedListCycle.js --- linkedListCycle/linkedListCycle.js | 32 +++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/linkedListCycle/linkedListCycle.js b/linkedListCycle/linkedListCycle.js index 03864f1..7faef66 100644 --- a/linkedListCycle/linkedListCycle.js +++ b/linkedListCycle/linkedListCycle.js @@ -28,4 +28,34 @@ * Constraint 2: Do this in constant space * Constraint 3: Do not mutate the original nodes in any way * Hint: Search for Floyd's Tortoise and Hare algorithm. - */ \ No newline at end of file + */ + + class Node { + constructor(value) { + this.value = value; + this.next = null; + } +} + +const hasCycle = (head) => { + let fastPtr = head; + let slowPtr = head; + + while (fastPtr !== null && fastPtr.next !== null) { + fastPtr = fastPtr.next.next; + slowPtr = slowPtr.next; + if (slowPtr === fastPtr) { + return true; + } + } + return false; +} + +const nodeA = new Node('A'); +const nodeB = nodeA.next = new Node('B'); +const nodeC = nodeB.next = new Node('C'); +const nodeD = nodeC.next = new Node('D'); +const nodeE = nodeD.next = new Node('E'); +console.log(hasCycle(nodeA)); // => false +nodeE.next = nodeB; +console.log(hasCycle(nodeA)); // => true \ No newline at end of file From 58ed42f194395ce92930f919740aa47b56fde44d Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 15 Aug 2017 09:42:11 -0500 Subject: [PATCH 28/29] completed blueSquares.js --- blueSquares/index.html | 32 ++++++++++++++++++++++++++++++++ blueSquares/script.js | 7 +++++++ blueSquares/styles.css | 18 ++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 blueSquares/index.html create mode 100644 blueSquares/script.js create mode 100644 blueSquares/styles.css diff --git a/blueSquares/index.html b/blueSquares/index.html new file mode 100644 index 0000000..9d9149f --- /dev/null +++ b/blueSquares/index.html @@ -0,0 +1,32 @@ + + + + + + + + Lambda University | blueSquares + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/blueSquares/script.js b/blueSquares/script.js new file mode 100644 index 0000000..f9e97a6 --- /dev/null +++ b/blueSquares/script.js @@ -0,0 +1,7 @@ +'use strict'; + +$(document).ready(function() { + $('.squares').click(function() { + $(this).toggleClass('clicked'); + }); +}); \ No newline at end of file diff --git a/blueSquares/styles.css b/blueSquares/styles.css new file mode 100644 index 0000000..a70f133 --- /dev/null +++ b/blueSquares/styles.css @@ -0,0 +1,18 @@ +.square { + display: -webkit-flex; + display: flex; + width: 100%; + -webkit-justify-content: center; + justify-content: center; +} + +.squares { + background-color: #FF0000; + width: 200px; + height: 200px; + margin: 5px; +} + +.clicked { + background: #0000FF; +} From 3adb878486981a8b24eccffbd34d9236301ba1dc Mon Sep 17 00:00:00 2001 From: Latoyya Smith Date: Tue, 22 Aug 2017 13:35:38 -0500 Subject: [PATCH 29/29] updated files --- fizzBuzzTesting/fizzBuzz.js | 12 +- fizzBuzzTesting/package-lock.json | 1741 +++++++++++++++++++++++ fizzBuzzTesting/package.json | 17 + fizzBuzzTesting/tests/fizzBuzz.tests.js | 24 + 4 files changed, 1793 insertions(+), 1 deletion(-) create mode 100644 fizzBuzzTesting/package-lock.json create mode 100644 fizzBuzzTesting/package.json create mode 100644 fizzBuzzTesting/tests/fizzBuzz.tests.js diff --git a/fizzBuzzTesting/fizzBuzz.js b/fizzBuzzTesting/fizzBuzz.js index a49221b..cb72f2b 100644 --- a/fizzBuzzTesting/fizzBuzz.js +++ b/fizzBuzzTesting/fizzBuzz.js @@ -9,6 +9,16 @@ */ const fizzBuzz = (num) => { - + // if num is divisible by 3 return 'fizz' + // if num is divisible by 5 return 'buzz' + // if num is divisible by 3 & 5 return 'fizzbuzz' + // otherwise return num + if (num % 15 === 0) return 'fizzbuzz'; + if (num % 3 === 0) return 'fizz'; + if (num % 5 === 0) return 'buzz'; + return num; }; +module.exports = fizzBuzz; + + diff --git a/fizzBuzzTesting/package-lock.json b/fizzBuzzTesting/package-lock.json new file mode 100644 index 0000000..b3e9b49 --- /dev/null +++ b/fizzBuzzTesting/package-lock.json @@ -0,0 +1,1741 @@ +{ + "name": "fizzbuzztesting", + "version": "1.0.0", + "lockfileVersion": 1, + "dependencies": { + "abab": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=" + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=" + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==" + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=" + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=" + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=" + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=" + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=" + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=" + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + }, + "babel-plugin-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", + "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=" + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=" + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=" + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=" + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=" + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=" + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=" + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=" + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=" + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-type-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=" + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" + }, + "core-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", + "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=" + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=" + }, + "diff": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=" + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "optional": true + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "exec-sh": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", + "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=" + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "handlebars": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=" + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=" + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=" + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "html-encoding-sniffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=" + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", + "integrity": "sha1-/MC0YeKzvaceMFFVE4I4doJX2d4=" + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==" + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==" + }, + "istanbul-lib-instrument": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", + "integrity": "sha1-6f2SDkdn89Ge3HZeLWs/XMvQ7qg=" + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==" + }, + "istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==" + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "dependencies": { + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=" + } + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=" + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=" + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=" + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=" + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=" + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=" + }, + "jest-haste-map": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", + "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=" + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=" + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=" + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=" + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=" + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=" + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=" + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=" + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=" + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "jest-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=" + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=" + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", + "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=" + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=" + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" + }, + "mime-db": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", + "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=" + }, + "mime-types": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=" + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==" + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=" + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=" + }, + "p-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", + "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=" + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==" + } + } + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + } + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=" + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", + "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==" + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=" + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=" + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=" + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==" + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "worker-farm": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.0.tgz", + "integrity": "sha512-DHRiUggxtbruaTwnLDm2/BRDKZIoOYvrgYUj5Bam4fU6Gtvc0FaEyoswFPBjMXAweGW2H4BDNIpy//1yXXuaqQ==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + } + } +} diff --git a/fizzBuzzTesting/package.json b/fizzBuzzTesting/package.json new file mode 100644 index 0000000..a30f91d --- /dev/null +++ b/fizzBuzzTesting/package.json @@ -0,0 +1,17 @@ +{ + "name": "fizzbuzztesting", + "version": "1.0.0", + "description": "", + "main": "fizzBuzz.js", + "directories": { + "test": "tests" + }, + "scripts": { + "test": "jest --watch" + }, + "author": "", + "license": "ISC", + "dependencies": { + "jest": "^20.0.4" + } +} diff --git a/fizzBuzzTesting/tests/fizzBuzz.tests.js b/fizzBuzzTesting/tests/fizzBuzz.tests.js new file mode 100644 index 0000000..22f3683 --- /dev/null +++ b/fizzBuzzTesting/tests/fizzBuzz.tests.js @@ -0,0 +1,24 @@ +const fizzBuzz = require('../fizzBuzz'); + +describe('fizzBuzz', () => { + it('should return `fizzbuzz` if num is divisible by both 3 and 5 with no remainder', () => { + expect(fizzBuzz(15)).toEqual('fizzbuzz'); + expect(fizzBuzz(30)).toEqual('fizzbuzz'); + expect(fizzBuzz(45)).toEqual('fizzbuzz'); + }); + it('should return `fizz` if num is divisible by 3 with no remainder', () => { + expect(fizzBuzz(6)).toEqual('fizz'); + expect(fizzBuzz(9)).toEqual('fizz'); + expect(fizzBuzz(12)).toEqual('fizz'); + }); + it('should `buzz` if num is divisible by 5 with no remainder', () => { + expect(fizzBuzz(10)).toEqual('buzz'); + expect(fizzBuzz(20)).toEqual('buzz'); + expect(fizzBuzz(25)).toEqual('buzz'); + }); + it('should return num if number is not divisible by 3 or 5', () => { + expect(fizzBuzz(8)).toEqual(); + expect(fizzBuzz(26)).toEqual(26); + expect(fizzBuzz(37)).toEqual(37); + }); + }); \ No newline at end of file