From ab419cb9556c8e894d83e09b2362f9854b4d9ef8 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 11 Feb 2019 21:50:32 +0000 Subject: [PATCH 001/154] lesson-5 --- README.md | 10 ---------- chapter_two/index.html | 15 +++++++++++++++ chapter_two/sandbox.js | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) delete mode 100644 README.md create mode 100644 chapter_two/index.html create mode 100644 chapter_two/sandbox.js diff --git a/README.md b/README.md deleted file mode 100644 index 8c0f25b2..00000000 --- a/README.md +++ /dev/null @@ -1,10 +0,0 @@ -## Modern JavaScript - Novice to Ninja -All lecture files from the Modern JavaScript (Novice to Ninja) course on Udemy. - -### How to use this repository - -Each lesson in the course has it's own branch in the repository. To see the code for a specific lesson, just select that branch from the branch drop-down (top-left). E.g. The lesson-20 branch contains the final code for lesson 20 in the course. - -**Course link:** [Modern JavaScript - Novice to Ninja](https://pages.github.com/) - - diff --git a/chapter_two/index.html b/chapter_two/index.html new file mode 100644 index 00000000..8cdd1062 --- /dev/null +++ b/chapter_two/index.html @@ -0,0 +1,15 @@ + + + + + + JavaScript + + +

I am a page title

+ + + + \ No newline at end of file diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js new file mode 100644 index 00000000..0911aab9 --- /dev/null +++ b/chapter_two/sandbox.js @@ -0,0 +1 @@ +alert('hello, world'); \ No newline at end of file From e7df1437ca2cd365d810c4168bf231eb208ef032 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 07:51:45 +0000 Subject: [PATCH 002/154] lesson-6 --- chapter_two/sandbox.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 0911aab9..6e41f796 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1 +1,2 @@ -alert('hello, world'); \ No newline at end of file +console.log(1); +console.log(2); \ No newline at end of file From b904f58edb15bca8158e4495fad868f9e0e237bb Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 09:21:31 +0000 Subject: [PATCH 003/154] lesson-7 --- chapter_two/sandbox.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 6e41f796..4d895a6b 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,2 +1,14 @@ -console.log(1); -console.log(2); \ No newline at end of file +let age = 25; +let year = 2019; + +console.log(age, year); + +// age = 30; +// console.log(age); + +// const points = 100; +// points = 50; +// console.log(points); + +// var score = 75; +// console.log(score); From 01c317c52f8fc424ffc2edb1e695537f8b42523e Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 09:41:15 +0000 Subject: [PATCH 004/154] lesson-9 --- chapter_two/sandbox.js | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 4d895a6b..098492b8 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,14 +1,29 @@ -let age = 25; -let year = 2019; +// strings +console.log('hello, world'); -console.log(age, year); +let email = 'mario@thenetninja.co.uk'; +console.log(email); -// age = 30; -// console.log(age); +// string concatenation +let firstName = 'Brandon'; +let lastName = 'Sanderson'; + +let fullName = firstName + ' ' + lastName; + +console.log(fullName); + +// getting individual characters +console.log(fullName[2]); + +// string length +console.log(fullName.length); + +// string methods +console.log(fullName.toUpperCase()); +let result = fullName.toLocaleLowerCase(); +console.log(result); + +let index = email.indexOf('@'); +console.log('index of the @ sign:', index); -// const points = 100; -// points = 50; -// console.log(points); -// var score = 75; -// console.log(score); From f5375f92159ce6d3558ddfd79e7e10136fd977ab Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 09:58:47 +0000 Subject: [PATCH 005/154] lesson-10 --- chapter_two/sandbox.js | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 098492b8..35c986c1 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,29 +1,16 @@ -// strings -console.log('hello, world'); +// common string methods let email = 'mario@thenetninja.co.uk'; -console.log(email); -// string concatenation -let firstName = 'Brandon'; -let lastName = 'Sanderson'; +//let result = email.lastIndexOf('n'); -let fullName = firstName + ' ' + lastName; +//let result = email.slice(0,5); -console.log(fullName); +//let result = email.substr(5,12); -// getting individual characters -console.log(fullName[2]); +//let result = email.replace('m', 'w'); -// string length -console.log(fullName.length); +let result = email.replace('n', 'w'); -// string methods -console.log(fullName.toUpperCase()); -let result = fullName.toLocaleLowerCase(); console.log(result); -let index = email.indexOf('@'); -console.log('index of the @ sign:', index); - - From cd84c40d101e5d375ca0aca1864ebe61689155dd Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 10:50:16 +0000 Subject: [PATCH 006/154] lesson-11 --- chapter_two/index.html | 4 +--- chapter_two/sandbox.js | 46 +++++++++++++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/chapter_two/index.html b/chapter_two/index.html index 8cdd1062..6ff2be06 100644 --- a/chapter_two/index.html +++ b/chapter_two/index.html @@ -7,9 +7,7 @@

I am a page title

- + \ No newline at end of file diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 35c986c1..c94b1d95 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,16 +1,48 @@ -// common string methods +// numbers -let email = 'mario@thenetninja.co.uk'; +let radius = 10; +let pi = 3.14; -//let result = email.lastIndexOf('n'); +// console.log(radius, pi); -//let result = email.slice(0,5); +// math operators - +, -, *, /, **, % -//let result = email.substr(5,12); +// console.log(10 / 2); +// let result = radius % 3; +// let result = pi * radius**2; -//let result = email.replace('m', 'w'); +// order of operation - B I D M A S -let result = email.replace('n', 'w'); +// let result = 5 * (10 - 3)**2; +// console.log(result); + +// shorthands +let likes = 10; + +// likes = likes + 1; +// likes++; + +// likes = likes + 10; +// likes += 10; + +// likes *= 2; +// likes /= 2; + +// console.log(likes); + +// NaN - not a number + +// console.log(5 / 'hello'); +// console.log(5 * 'hello'); + +let result = 'the blog has ' + likes + ' likes.'; console.log(result); + + + + + + + From b8bef936d77c5e7ae976acc4279da823d4bc3793 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 11:04:09 +0000 Subject: [PATCH 007/154] lesson-12 --- chapter_two/sandbox.js | 51 +++++++++++++----------------------------- 1 file changed, 16 insertions(+), 35 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index c94b1d95..0640e4ed 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,45 +1,26 @@ -// numbers +// template strings +const title = 'Best reads of 2019'; +const author = 'Mario'; +const likes = 30; -let radius = 10; -let pi = 3.14; - -// console.log(radius, pi); - -// math operators - +, -, *, /, **, % - -// console.log(10 / 2); -// let result = radius % 3; -// let result = pi * radius**2; - -// order of operation - B I D M A S - -// let result = 5 * (10 - 3)**2; +// concatenation way +// let result = 'The blog called ' + title + ' by ' + author + ' has ' + likes + ' likes'; // console.log(result); -// shorthands -let likes = 10; - -// likes = likes + 1; -// likes++; +// template string way -// likes = likes + 10; -// likes += 10; - -// likes *= 2; -// likes /= 2; - -// console.log(likes); - -// NaN - not a number - -// console.log(5 / 'hello'); -// console.log(5 * 'hello'); - -let result = 'the blog has ' + likes + ' likes.'; -console.log(result); +// let result = `The blog called ${title} by ${author} has ${likes} likes`; +// console.log(result); +// creating html templates +let html = ` +

${title}

+

By ${author}

+ This blog has ${likes} likes +`; +console.log(html); From b4ff9bc531173b334c480603950bfe569d016176 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 11:47:12 +0000 Subject: [PATCH 008/154] lesson-13 --- chapter_two/sandbox.js | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 0640e4ed..0c07aa71 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,26 +1,31 @@ -// template strings -const title = 'Best reads of 2019'; -const author = 'Mario'; -const likes = 30; +// arrays -// concatenation way +let ninjas = ['shaun', 'ryu', 'chun-li']; -// let result = 'The blog called ' + title + ' by ' + author + ' has ' + likes + ' likes'; -// console.log(result); +// ninjas[1] = 'ken'; +// console.log(ninjas[1]); -// template string way +// let ages = [20, 25, 30, 35]; +// console.log(ages[2]); + +// let random = ['shaun', 'crystal', 30, 20]; + +// array length +// console.log(ninjas.length); + +// array methods + +// let result = ninjas.join(','); +// let result = ninjas.indexOf('chun-li'); +// let result = ninjas.concat(['ken', 'crystal']); +let result = ninjas.push('ken'); +let result = ninjas.pop(); + +console.log(result); +console.log(ninjas); -// let result = `The blog called ${title} by ${author} has ${likes} likes`; -// console.log(result); -// creating html templates -let html = ` -

${title}

-

By ${author}

- This blog has ${likes} likes -`; -console.log(html); From 9ec6f63264ebb280f9a0e2b325e57b26841463c5 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 11:57:34 +0000 Subject: [PATCH 009/154] lesson-14 --- chapter_two/sandbox.js | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 0c07aa71..8148ed18 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,28 +1,7 @@ -// arrays +// null & undefined +let age = null; -let ninjas = ['shaun', 'ryu', 'chun-li']; - -// ninjas[1] = 'ken'; -// console.log(ninjas[1]); - -// let ages = [20, 25, 30, 35]; -// console.log(ages[2]); - -// let random = ['shaun', 'crystal', 30, 20]; - -// array length -// console.log(ninjas.length); - -// array methods - -// let result = ninjas.join(','); -// let result = ninjas.indexOf('chun-li'); -// let result = ninjas.concat(['ken', 'crystal']); -let result = ninjas.push('ken'); -let result = ninjas.pop(); - -console.log(result); -console.log(ninjas); +console.log(age, age + 3, `the age is ${age}`); From fd44d9248ac9462c9e492febbcc84e2d9817b3c0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 12:17:15 +0000 Subject: [PATCH 010/154] lesson-15 --- chapter_two/sandbox.js | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 8148ed18..0d95495a 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,7 +1,37 @@ -// null & undefined -let age = null; +// booleans & comparisons +// console.log(true, false, 'true', 'false'); + +// methods can return booleans +// let email = 'luigi@thenetninja.co.uk'; +// let names = ['mario', 'luigi', 'toad']; + +// let result = email.includes('@'); +// let result = names.includes('luigi'); + +// console.log(result); + +// comparison operators +let age = 25; + +console.log(age == 25); +console.log(age == 30); +console.log(age != 30); +console.log(age > 20); +console.log(age < 20); +console.log(age <= 25); +console.log(age >= 25); + +let name = 'shaun'; + +console.log(name == 'shaun'); +console.log(name == 'Shaun'); +console.log(name > 'crystal'); +console.log(name > 'Shaun'); +console.log(name > 'Crystal'); + + + -console.log(age, age + 3, `the age is ${age}`); From bdbad720eec39c39d7ff56bc4712040fcb4c8e97 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 12:27:18 +0000 Subject: [PATCH 011/154] lesson-16 --- chapter_two/sandbox.js | 48 +++++++++--------------------------------- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 0d95495a..5950622a 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,43 +1,15 @@ -// booleans & comparisons -// console.log(true, false, 'true', 'false'); - -// methods can return booleans -// let email = 'luigi@thenetninja.co.uk'; -// let names = ['mario', 'luigi', 'toad']; - -// let result = email.includes('@'); -// let result = names.includes('luigi'); - -// console.log(result); - -// comparison operators let age = 25; -console.log(age == 25); -console.log(age == 30); -console.log(age != 30); -console.log(age > 20); -console.log(age < 20); -console.log(age <= 25); -console.log(age >= 25); - -let name = 'shaun'; - -console.log(name == 'shaun'); -console.log(name == 'Shaun'); -console.log(name > 'crystal'); -console.log(name > 'Shaun'); -console.log(name > 'Crystal'); - - - - - - - - - - +// loose comparison (different types can still be equal) +// console.log(age == 25); +// console.log(age == '25'); +// console.log(age != 25); +// console.log(age != '25'); +// strict comparison (different types cannot be equal) +// console.log(age === 25); +// console.log(age === '25'); +// console.log(age !== 25); +// console.log(age !== '25'); \ No newline at end of file From 35183c14b60ba8daaba9c69567b681a7fe7d7f1a Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 12:49:52 +0000 Subject: [PATCH 012/154] lesson-17 --- chapter_two/sandbox.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js index 5950622a..473f8919 100644 --- a/chapter_two/sandbox.js +++ b/chapter_two/sandbox.js @@ -1,15 +1,15 @@ -let age = 25; +// type conversion +// let score = '100'; -// loose comparison (different types can still be equal) +// score = Number(score); +// console.log(score + 1); +// console.log(typeof score); -// console.log(age == 25); -// console.log(age == '25'); -// console.log(age != 25); -// console.log(age != '25'); +// let result = Number('hello'); +// let result = String(50); +// let result = Boolean(100); +// let result = Boolean(0); +// let result = Boolean('0'); +let result = Boolean(''); -// strict comparison (different types cannot be equal) - -// console.log(age === 25); -// console.log(age === '25'); -// console.log(age !== 25); -// console.log(age !== '25'); \ No newline at end of file +console.log(result, typeof result); \ No newline at end of file From de50d2bfc2c7db0a232eba6fbed4e27af426c55b Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 13:10:01 +0000 Subject: [PATCH 013/154] lesson-19 --- {chapter_two => chapter_three}/index.html | 0 chapter_three/sandbox.js | 13 +++++++++++++ chapter_two/sandbox.js | 15 --------------- 3 files changed, 13 insertions(+), 15 deletions(-) rename {chapter_two => chapter_three}/index.html (100%) create mode 100644 chapter_three/sandbox.js delete mode 100644 chapter_two/sandbox.js diff --git a/chapter_two/index.html b/chapter_three/index.html similarity index 100% rename from chapter_two/index.html rename to chapter_three/index.html diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js new file mode 100644 index 00000000..01604c51 --- /dev/null +++ b/chapter_three/sandbox.js @@ -0,0 +1,13 @@ +// for loops + +// for(let i = 0; i < 5; i++){ +// console.log('loop: ', i); +// } + +const names = ['shaun', 'mario', 'luigi']; + +for(let i = 0; i < names.length; i++){ + // console.log(names[i]); + let html = `
${names[i]}
`; + console.log(html); +} \ No newline at end of file diff --git a/chapter_two/sandbox.js b/chapter_two/sandbox.js deleted file mode 100644 index 473f8919..00000000 --- a/chapter_two/sandbox.js +++ /dev/null @@ -1,15 +0,0 @@ -// type conversion -// let score = '100'; - -// score = Number(score); -// console.log(score + 1); -// console.log(typeof score); - -// let result = Number('hello'); -// let result = String(50); -// let result = Boolean(100); -// let result = Boolean(0); -// let result = Boolean('0'); -let result = Boolean(''); - -console.log(result, typeof result); \ No newline at end of file From cf0b823f34b29651472aa75fc0c151b41408a29f Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 13:47:02 +0000 Subject: [PATCH 014/154] lesson-20 --- chapter_three/sandbox.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index 01604c51..fbbde598 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,13 +1,14 @@ -// for loops +// while loops +const names = ['shaun', 'mario', 'luigi']; +let i = 0; -// for(let i = 0; i < 5; i++){ +// while(i < 5){ // console.log('loop: ', i); +// i++; // } -const names = ['shaun', 'mario', 'luigi']; +while(i < names.length){ + console.log(names[i]); + i++; +} -for(let i = 0; i < names.length; i++){ - // console.log(names[i]); - let html = `
${names[i]}
`; - console.log(html); -} \ No newline at end of file From eb3e1da302f4ca6212ce803f0a303feaf561513f Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:00:28 +0000 Subject: [PATCH 015/154] lesson-21 --- chapter_three/sandbox.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index fbbde598..882927c9 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,14 +1,8 @@ -// while loops -const names = ['shaun', 'mario', 'luigi']; -let i = 0; +// do while loops +let i = 5; -// while(i < 5){ -// console.log('loop: ', i); -// i++; -// } - -while(i < names.length){ - console.log(names[i]); +do{ + console.log('val of i is: ', i); i++; -} +} while(i < 5); From be5bc48fb1e2ff065e2ace9ba5d9c3efd3763f44 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:19:21 +0000 Subject: [PATCH 016/154] lesson-22 --- chapter_three/sandbox.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index 882927c9..34500ce9 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,8 +1,18 @@ -// do while loops -let i = 5; +// if statements +// const age = 25; -do{ - console.log('val of i is: ', i); - i++; -} while(i < 5); +// if(age > 20){ +// console.log('you are over 20 years old'); +// } +// const ninjas = ['shaun', 'ryu', 'chun-li', 'yoshi']; + +// if(ninjas.length > 3){ +// console.log("that's a lot of ninjas!"); +// } + +const password = 'p@ssword'; + +if(password.length >= 8){ + console.log('that password is long enough'); +} From 59bd310e7dd2dd507285bc1b390277c688d1ffda Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:24:11 +0000 Subject: [PATCH 017/154] lesson-23 --- chapter_three/sandbox.js | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index 34500ce9..b16f85ed 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,18 +1,10 @@ -// if statements -// const age = 25; +// else if statements +const password = 'p@ssword123456'; -// if(age > 20){ -// console.log('you are over 20 years old'); -// } - -// const ninjas = ['shaun', 'ryu', 'chun-li', 'yoshi']; - -// if(ninjas.length > 3){ -// console.log("that's a lot of ninjas!"); -// } - -const password = 'p@ssword'; - -if(password.length >= 8){ +if(password.length >= 12){ + console.log('that password is mighty strong'); +} else if(password.length >= 8){ console.log('that password is long enough'); +} else { + console.log('password should be at least 8 characters long'); } From 95655fc6fb0a6aa447952022016ff5d48ad6602e Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:33:00 +0000 Subject: [PATCH 018/154] lesson-24 --- chapter_three/sandbox.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index b16f85ed..f627ee4e 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,10 +1,10 @@ // else if statements -const password = 'p@ssword123456'; +const password = 'p@ss12'; -if(password.length >= 12){ +if(password.length >= 12 && password.includes('@')){ console.log('that password is mighty strong'); -} else if(password.length >= 8){ - console.log('that password is long enough'); +} else if(password.length >= 8 || password.includes('@') && password.length > 5){ + console.log('that password is strong enough'); } else { - console.log('password should be at least 8 characters long'); -} + console.log('that password is not strong enough'); +} \ No newline at end of file From a1d4bc66627799602b216376b8b98769053f7e25 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:49:56 +0000 Subject: [PATCH 019/154] lesson-25 --- chapter_three/sandbox.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index f627ee4e..393caa10 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,10 +1,10 @@ -// else if statements -const password = 'p@ss12'; +// Logical NOT +const user = false; -if(password.length >= 12 && password.includes('@')){ - console.log('that password is mighty strong'); -} else if(password.length >= 8 || password.includes('@') && password.length > 5){ - console.log('that password is strong enough'); -} else { - console.log('that password is not strong enough'); -} \ No newline at end of file +if(!user){ + // do something + console.log('you must be logged in to continue'); +} + +console.log(!true); +console.log(!false); \ No newline at end of file From cf01a95fe9126f182cc89dc43db6691e00889011 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 15:57:29 +0000 Subject: [PATCH 020/154] lesson-26 --- chapter_three/sandbox.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index 393caa10..ef3cc6ad 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,10 +1,17 @@ -// Logical NOT -const user = false; +// break & continue +const scores = [50, 25, 0, 30, 100, 20, 10]; -if(!user){ - // do something - console.log('you must be logged in to continue'); -} +for(let i = 0; i < scores.length; i++){ + + if(scores[i] === 0){ + continue; + } + + console.log('your score:', scores[i]); -console.log(!true); -console.log(!false); \ No newline at end of file + if(scores[i] === 100){ + console.log('congrats, you got the top score!'); + break; + } + +} From dfbd828a36451337f7ffc560f5e25d69d8ba51f5 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 16:28:47 +0000 Subject: [PATCH 021/154] lesson-27 --- chapter_three/sandbox.js | 44 +++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index ef3cc6ad..f6ba0207 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,17 +1,37 @@ -// break & continue -const scores = [50, 25, 0, 30, 100, 20, 10]; +// switch statements +const grade = 'D'; -for(let i = 0; i < scores.length; i++){ +switch(grade){ + case 'A': + console.log('you got an A!'); + break; + case 'B': + console.log('you got a B!'); + break; + case 'C': + console.log('you got a C!'); + break; + case 'D': + console.log('you got a D!'); + break; + case 'E': + console.log('you got an E!'); + break; + default: + console.log('not a valid grade'); +} - if(scores[i] === 0){ - continue; - } +// using if statements +// if(grade === 'A'){ - console.log('your score:', scores[i]); +// } else if(grade === 'B'){ - if(scores[i] === 100){ - console.log('congrats, you got the top score!'); - break; - } +// } else if(grade === 'C'){ -} +// } else if(grade === 'D'){ + +// } else if(grade === 'E'){ + +// } else { + +// } From 0a790dea26ae0dcd179067024b937a20395685a2 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 16:42:08 +0000 Subject: [PATCH 022/154] lesson-28 --- chapter_three/sandbox.js | 43 ++++++++++++---------------------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js index f6ba0207..20ef75b0 100644 --- a/chapter_three/sandbox.js +++ b/chapter_three/sandbox.js @@ -1,37 +1,20 @@ -// switch statements -const grade = 'D'; +// variables & block scope +let age = 30; -switch(grade){ - case 'A': - console.log('you got an A!'); - break; - case 'B': - console.log('you got a B!'); - break; - case 'C': - console.log('you got a C!'); - break; - case 'D': - console.log('you got a D!'); - break; - case 'E': - console.log('you got an E!'); - break; - default: - console.log('not a valid grade'); -} - -// using if statements -// if(grade === 'A'){ +if(true){ -// } else if(grade === 'B'){ + // age = 40; + let age = 40; + let name = 'shaun'; + console.log('inside 1st code block:', age, name); -// } else if(grade === 'C'){ + if(true){ -// } else if(grade === 'D'){ + let age = 50; + console.log('inside 2nd code block:', age, name); -// } else if(grade === 'E'){ + } -// } else { +} -// } +console.log('outside code block:', age, name); \ No newline at end of file From bda9d915bf91056d05f20c855ac6a9bd2320e994 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 16:56:15 +0000 Subject: [PATCH 023/154] lesson-30 --- {chapter_three => chapter_four}/index.html | 0 chapter_four/sandbox.js | 14 ++++++++++++++ chapter_three/sandbox.js | 20 -------------------- 3 files changed, 14 insertions(+), 20 deletions(-) rename {chapter_three => chapter_four}/index.html (100%) create mode 100644 chapter_four/sandbox.js delete mode 100644 chapter_three/sandbox.js diff --git a/chapter_three/index.html b/chapter_four/index.html similarity index 100% rename from chapter_three/index.html rename to chapter_four/index.html diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js new file mode 100644 index 00000000..ae5596e1 --- /dev/null +++ b/chapter_four/sandbox.js @@ -0,0 +1,14 @@ +// function declaration +function greet(){ + console.log('hello there'); +} + +// function expression +const speak = function(){ + console.log('good day!'); +}; + +// greet(); +// greet(); + +speak(); \ No newline at end of file diff --git a/chapter_three/sandbox.js b/chapter_three/sandbox.js deleted file mode 100644 index 20ef75b0..00000000 --- a/chapter_three/sandbox.js +++ /dev/null @@ -1,20 +0,0 @@ -// variables & block scope -let age = 30; - -if(true){ - - // age = 40; - let age = 40; - let name = 'shaun'; - console.log('inside 1st code block:', age, name); - - if(true){ - - let age = 50; - console.log('inside 2nd code block:', age, name); - - } - -} - -console.log('outside code block:', age, name); \ No newline at end of file From f1f5777a24dad3288c590bb489a9f38e17209480 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 12 Feb 2019 17:11:08 +0000 Subject: [PATCH 024/154] lesson-31 --- chapter_four/sandbox.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index ae5596e1..09c467f2 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,14 +1,9 @@ -// function declaration -function greet(){ - console.log('hello there'); -} +// arguments & parameters -// function expression -const speak = function(){ - console.log('good day!'); +const speak = function(name = 'luigi', time = 'night'){ + console.log(`good ${time}, ${name}!`); }; -// greet(); -// greet(); - -speak(); \ No newline at end of file +// speak('mario', 'morning'); +// speak(); +speak('shaun'); \ No newline at end of file From cdff15f768cd51cb6d1b746e32cdea36ab3d9a9b Mon Sep 17 00:00:00 2001 From: Shaun Date: Wed, 13 Feb 2019 09:17:18 +0000 Subject: [PATCH 025/154] lesson-32 --- chapter_four/sandbox.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 09c467f2..7b41a5f1 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,9 +1,13 @@ -// arguments & parameters +// return statements -const speak = function(name = 'luigi', time = 'night'){ - console.log(`good ${time}, ${name}!`); -}; +// const speak = function(name, time){ +// console.log(`good ${time}, ${name}!`); +// }; -// speak('mario', 'morning'); -// speak(); -speak('shaun'); \ No newline at end of file +const calcArea = function(radius){ + let area = 3.14 * radius**2; + return area; +} + +const area = calcArea(5); +console.log('area is:', area); \ No newline at end of file From 563c623bf1a4c99833a151e1487a86af9461c1e1 Mon Sep 17 00:00:00 2001 From: Shaun Date: Wed, 13 Feb 2019 09:37:19 +0000 Subject: [PATCH 026/154] lesson-33 --- chapter_four/sandbox.js | 44 ++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 7b41a5f1..4da9468a 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,13 +1,39 @@ -// return statements +// arrow functions -// const speak = function(name, time){ -// console.log(`good ${time}, ${name}!`); -// }; +// regular function +// const calcArea = function(radius){ +// return 3.14 * radius**2; +// } -const calcArea = function(radius){ - let area = 3.14 * radius**2; - return area; -} +// arrow function +const calcArea = radius => 3.14 * radius**2; const area = calcArea(5); -console.log('area is:', area); \ No newline at end of file +console.log('area is:', area); + +// practise arrow functions + +// const greet = function(){ +// return 'hello, world'; +// } + +const greet = () => 'hello, world'; + +// const bill = function(products, tax){ +// let total = 0; +// for(let i = 0; i < products.length; i++){ +// total += products[i] + products[i] * tax; +// } +// return total; +// } + +const bill = (products, tax) => { + let total = 0; + for(let i = 0; i < products.length; i++){ + total += products[i] + products[i] * tax; + } + return total; +} + +console.log(greet()); +console.log(bill([10,15,30], 0.2)); \ No newline at end of file From d573f797c799d343ea1a43a2326b3c75731a59e3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Wed, 13 Feb 2019 09:52:45 +0000 Subject: [PATCH 027/154] lesson-34 --- chapter_four/sandbox.js | 44 ++++++++++------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 4da9468a..456e50ff 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,39 +1,15 @@ -// arrow functions +const name = 'shaun'; -// regular function -// const calcArea = function(radius){ -// return 3.14 * radius**2; -// } +// function -// arrow function -const calcArea = radius => 3.14 * radius**2; +const greet = () => { + return 'hello'; +}; -const area = calcArea(5); -console.log('area is:', area); +let resultOne = greet(); +console.log(resultOne); -// practise arrow functions +// method -// const greet = function(){ -// return 'hello, world'; -// } - -const greet = () => 'hello, world'; - -// const bill = function(products, tax){ -// let total = 0; -// for(let i = 0; i < products.length; i++){ -// total += products[i] + products[i] * tax; -// } -// return total; -// } - -const bill = (products, tax) => { - let total = 0; - for(let i = 0; i < products.length; i++){ - total += products[i] + products[i] * tax; - } - return total; -} - -console.log(greet()); -console.log(bill([10,15,30], 0.2)); \ No newline at end of file +let resultTwo = name.toUpperCase(); +console.log(resultTwo); From ecfa54bf699d7a977a95db1a2d7546406d22b7c9 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 10:06:17 +0000 Subject: [PATCH 028/154] lesson-35 --- chapter_four/sandbox.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 456e50ff..9501bfc0 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,15 +1,6 @@ -const name = 'shaun'; +// callbacks & forEach +let people = ['mario', 'luigi', 'ryu', 'shaun', 'chun-li']; -// function - -const greet = () => { - return 'hello'; -}; - -let resultOne = greet(); -console.log(resultOne); - -// method - -let resultTwo = name.toUpperCase(); -console.log(resultTwo); +people.forEach(person => { + console.log(`hello ${person}`); +}); From 30c5d52c1224e87af3a31fa3dcea4824b5330b99 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 10:32:07 +0000 Subject: [PATCH 029/154] lesson-35 --- chapter_four/sandbox.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 9501bfc0..407ab4e5 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,6 +1,12 @@ // callbacks & forEach let people = ['mario', 'luigi', 'ryu', 'shaun', 'chun-li']; -people.forEach(person => { +const logPerson = person => { console.log(`hello ${person}`); -}); +} + +// people.forEach(person => { +// console.log(`hello ${person}`); +// }); + +people.forEach(logPerson); From aac6888973c977f8eac0852cab3786a1019afece Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 10:39:54 +0000 Subject: [PATCH 030/154] lesson-38 --- chapter_four/index.html | 2 +- chapter_four/sandbox.js | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/chapter_four/index.html b/chapter_four/index.html index 6ff2be06..f95165e5 100644 --- a/chapter_four/index.html +++ b/chapter_four/index.html @@ -6,7 +6,7 @@ JavaScript -

I am a page title

+

Objects

diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js index 407ab4e5..e9ddce44 100644 --- a/chapter_four/sandbox.js +++ b/chapter_four/sandbox.js @@ -1,12 +1,21 @@ -// callbacks & forEach -let people = ['mario', 'luigi', 'ryu', 'shaun', 'chun-li']; +// object literals -const logPerson = person => { - console.log(`hello ${person}`); -} +let user = { + name: 'crystal', + age: 30, + email: 'crystal@thenetninja.co.uk', + location: 'berlin', + blogs: ['why mac & cheese rules', '10 things to make with marmite'] +}; -// people.forEach(person => { -// console.log(`hello ${person}`); -// }); +console.log(user); +console.log(user.age); -people.forEach(logPerson); +user.age = 35; +console.log(user.age); + +console.log(user['name']); +user['name'] = 'chun-li'; +console.log(user['name']); + +console.log(typeof user); From dde0235a636f018d5000e5fb2bef3ad56c759d90 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 10:50:07 +0000 Subject: [PATCH 031/154] lesson-39 --- {chapter_four => chapter_five}/index.html | 0 chapter_five/sandbox.js | 25 +++++++++++++++++++++++ chapter_four/sandbox.js | 21 ------------------- 3 files changed, 25 insertions(+), 21 deletions(-) rename {chapter_four => chapter_five}/index.html (100%) create mode 100644 chapter_five/sandbox.js delete mode 100644 chapter_four/sandbox.js diff --git a/chapter_four/index.html b/chapter_five/index.html similarity index 100% rename from chapter_four/index.html rename to chapter_five/index.html diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js new file mode 100644 index 00000000..2b4c60f2 --- /dev/null +++ b/chapter_five/sandbox.js @@ -0,0 +1,25 @@ +// object literals + +let user = { + name: 'crystal', + age: 30, + email: 'crystal@thenetninja.co.uk', + location: 'berlin', + blogs: ['why mac & cheese rules', '10 things to make with marmite'], + login: function(){ + console.log('the user logged in'); + }, + logout: function(){ + console.log('the user logged out'); + }, + logBlogs: function(){ + // access the blogs here + } +}; + +user.login(); +user.logout(); + +const name = 'shaun'; +name.toUpperCase(); + diff --git a/chapter_four/sandbox.js b/chapter_four/sandbox.js deleted file mode 100644 index e9ddce44..00000000 --- a/chapter_four/sandbox.js +++ /dev/null @@ -1,21 +0,0 @@ -// object literals - -let user = { - name: 'crystal', - age: 30, - email: 'crystal@thenetninja.co.uk', - location: 'berlin', - blogs: ['why mac & cheese rules', '10 things to make with marmite'] -}; - -console.log(user); -console.log(user.age); - -user.age = 35; -console.log(user.age); - -console.log(user['name']); -user['name'] = 'chun-li'; -console.log(user['name']); - -console.log(typeof user); From 00e56d472900b4267301623422acfd31200ecd0e Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 11:12:25 +0000 Subject: [PATCH 032/154] lesson-40 --- chapter_five/sandbox.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js index 2b4c60f2..ea98487f 100644 --- a/chapter_five/sandbox.js +++ b/chapter_five/sandbox.js @@ -6,20 +6,21 @@ let user = { email: 'crystal@thenetninja.co.uk', location: 'berlin', blogs: ['why mac & cheese rules', '10 things to make with marmite'], - login: function(){ + login(){ console.log('the user logged in'); }, - logout: function(){ + logout(){ console.log('the user logged out'); }, - logBlogs: function(){ + logBlogs(){ // access the blogs here + // console.log(this); + console.log('this user has written these blogs:'); + this.blogs.forEach(blog => { + console.log(blog); + }) } }; -user.login(); -user.logout(); - -const name = 'shaun'; -name.toUpperCase(); - +// console.log(this); +user.logBlogs(); \ No newline at end of file From 85743ade5eaf8c8fd8b62de2ae30487ba3604698 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 11:23:52 +0000 Subject: [PATCH 033/154] lesson-41 --- chapter_five/sandbox.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js index ea98487f..41bce7a4 100644 --- a/chapter_five/sandbox.js +++ b/chapter_five/sandbox.js @@ -1,11 +1,19 @@ -// object literals +// const blogs = [ +// {title: 'why mac & cheese rules', likes: 30}, +// {title: '10 things to make with marmite', likes: 50} +// ]; + +// console.log(blogs[0].title); let user = { name: 'crystal', age: 30, email: 'crystal@thenetninja.co.uk', location: 'berlin', - blogs: ['why mac & cheese rules', '10 things to make with marmite'], + blogs: [ + {title: 'why mac & cheese rules', likes: 30}, + {title: '10 things to make with marmite', likes: 50} + ], login(){ console.log('the user logged in'); }, @@ -17,7 +25,7 @@ let user = { // console.log(this); console.log('this user has written these blogs:'); this.blogs.forEach(blog => { - console.log(blog); + console.log(`${blog.title} has ${blog.likes} likes`); }) } }; From 4f6f59ee06361eb2ec798323b00b0e18b7a5df67 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 11:31:31 +0000 Subject: [PATCH 034/154] lesson-42 --- chapter_five/sandbox.js | 47 ++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js index 41bce7a4..4c98657b 100644 --- a/chapter_five/sandbox.js +++ b/chapter_five/sandbox.js @@ -1,34 +1,19 @@ -// const blogs = [ -// {title: 'why mac & cheese rules', likes: 30}, -// {title: '10 things to make with marmite', likes: 50} -// ]; +// Math object -// console.log(blogs[0].title); +console.log(Math); +console.log(Math.PI); +console.log(Math.E); -let user = { - name: 'crystal', - age: 30, - email: 'crystal@thenetninja.co.uk', - location: 'berlin', - blogs: [ - {title: 'why mac & cheese rules', likes: 30}, - {title: '10 things to make with marmite', likes: 50} - ], - login(){ - console.log('the user logged in'); - }, - logout(){ - console.log('the user logged out'); - }, - logBlogs(){ - // access the blogs here - // console.log(this); - console.log('this user has written these blogs:'); - this.blogs.forEach(blog => { - console.log(`${blog.title} has ${blog.likes} likes`); - }) - } -}; +const area = 7.7; -// console.log(this); -user.logBlogs(); \ No newline at end of file +console.log(Math.round(area)); +console.log(Math.floor(area)); +console.log(Math.ceil(area)); +console.log(Math.trunc(area)); + +// random numbers + +const random = Math.random(); + +console.log(random); +console.log(Math.round(random * 100)); \ No newline at end of file From 57750b1aaec650abe246cdcca71e88fa22776d75 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 11:36:58 +0000 Subject: [PATCH 035/154] lesson-43 --- chapter_five/sandbox.js | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js index 4c98657b..10bc473b 100644 --- a/chapter_five/sandbox.js +++ b/chapter_five/sandbox.js @@ -1,19 +1,17 @@ -// Math object +// primitive values -console.log(Math); -console.log(Math.PI); -console.log(Math.E); +let scoreOne = 50; +let scoreTwo = scoreOne; +console.log(`scoreOne: ${scoreOne}`, `scoreTwo: ${scoreTwo}`); -const area = 7.7; +scoreOne = 100; +console.log(`scoreOne: ${scoreOne}`, `scoreTwo: ${scoreTwo}`); -console.log(Math.round(area)); -console.log(Math.floor(area)); -console.log(Math.ceil(area)); -console.log(Math.trunc(area)); +// reference values -// random numbers +userOne = { name: 'ryu', age: 30 }; +userTwo = userOne; +console.log(userOne, userTwo); -const random = Math.random(); - -console.log(random); -console.log(Math.round(random * 100)); \ No newline at end of file +userOne.name = 'chun-li'; +console.log(userOne, userTwo); \ No newline at end of file From 3cce4ec57a14d025986ced50303a481495ef13c8 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 11:55:17 +0000 Subject: [PATCH 036/154] lesson-46 --- chapter_five/sandbox.js | 17 ----------------- {chapter_five => chapter_six}/index.html | 10 +++++++++- chapter_six/sandbox.js | 12 ++++++++++++ 3 files changed, 21 insertions(+), 18 deletions(-) delete mode 100644 chapter_five/sandbox.js rename {chapter_five => chapter_six}/index.html (58%) create mode 100644 chapter_six/sandbox.js diff --git a/chapter_five/sandbox.js b/chapter_five/sandbox.js deleted file mode 100644 index 10bc473b..00000000 --- a/chapter_five/sandbox.js +++ /dev/null @@ -1,17 +0,0 @@ -// primitive values - -let scoreOne = 50; -let scoreTwo = scoreOne; -console.log(`scoreOne: ${scoreOne}`, `scoreTwo: ${scoreTwo}`); - -scoreOne = 100; -console.log(`scoreOne: ${scoreOne}`, `scoreTwo: ${scoreTwo}`); - -// reference values - -userOne = { name: 'ryu', age: 30 }; -userTwo = userOne; -console.log(userOne, userTwo); - -userOne.name = 'chun-li'; -console.log(userOne, userTwo); \ No newline at end of file diff --git a/chapter_five/index.html b/chapter_six/index.html similarity index 58% rename from chapter_five/index.html rename to chapter_six/index.html index f95165e5..b8c1bd88 100644 --- a/chapter_five/index.html +++ b/chapter_six/index.html @@ -6,7 +6,15 @@ JavaScript -

Objects

+

The DOM

+ +
+

hello, world

+

lorem ipsum

+

this is an error message

+
+ +
this is another eror message
diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js new file mode 100644 index 00000000..166b7d6a --- /dev/null +++ b/chapter_six/sandbox.js @@ -0,0 +1,12 @@ +// const para = document.querySelector('p'); +// const para = document.querySelector('.error'); +const para = document.querySelector('div.error'); + +console.log(para); + +// query multiple elements at once +const paras = document.querySelectorAll('p'); +const errors = document.querySelectorAll('.error'); + +console.log(paras, errors); +console.log(paras[1], errors[0]); \ No newline at end of file From fdb0140874671a5002eb75f12a3c5b51b6190a73 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 12:09:14 +0000 Subject: [PATCH 037/154] lesson-47 --- chapter_six/index.html | 2 +- chapter_six/sandbox.js | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index b8c1bd88..0f710f4f 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -6,7 +6,7 @@ JavaScript -

The DOM

+

The DOM

hello, world

diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 166b7d6a..724825f6 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,12 +1,13 @@ -// const para = document.querySelector('p'); -// const para = document.querySelector('.error'); -const para = document.querySelector('div.error'); +// get an element by ID +const title= document.getElementById('page-title'); +console.log(title); -console.log(para); +// get elements by their class name +const errors = document.getElementsByClassName('error'); +console.log(errors); +console.log(errors[0]); -// query multiple elements at once -const paras = document.querySelectorAll('p'); -const errors = document.querySelectorAll('.error'); - -console.log(paras, errors); -console.log(paras[1], errors[0]); \ No newline at end of file +// get elements by their tag name +const paras = document.getElementsByTagName('p'); +console.log(paras); +console.log(paras[1]); \ No newline at end of file From d82d1593c3fd810831b68d5af7931a90780ca269 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 12:24:41 +0000 Subject: [PATCH 038/154] lesson-48 --- chapter_six/index.html | 6 ++++-- chapter_six/sandbox.js | 37 ++++++++++++++++++++++++------------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index 0f710f4f..8fbcbcff 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -11,10 +11,12 @@

The DOM

hello, world

lorem ipsum

-

this is an error message

+

this is an error message

-
this is another eror message
+
+

this is the content

+
diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 724825f6..c9216929 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,13 +1,24 @@ -// get an element by ID -const title= document.getElementById('page-title'); -console.log(title); - -// get elements by their class name -const errors = document.getElementsByClassName('error'); -console.log(errors); -console.log(errors[0]); - -// get elements by their tag name -const paras = document.getElementsByTagName('p'); -console.log(paras); -console.log(paras[1]); \ No newline at end of file +const para = document.querySelector('p'); + +// console.log(para.innerText); +// para.innerText = 'ninjas are awesome'; + +const paras = document.querySelectorAll('p'); + +// paras.forEach(p => { +// console.log(p.innerText); +// p.innerText = 'new text!'; +// }); + +const content = document.querySelector('.content'); + +// console.log(content.innerHTML); +// content.innerHTML = '

this is a new h2

'; + +// content.innerHTML += '

this is an h2 added to the content

'; + +const people = ['mario', 'luigi', 'yoshi']; + +people.forEach(person => { + content.innerHTML += `

${person}

`; +}); \ No newline at end of file From 458d0f3620888b1dbdfa5c5b8976ec2230a8a17c Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 12:43:28 +0000 Subject: [PATCH 039/154] lesson-49 --- chapter_six/index.html | 12 +++--------- chapter_six/sandbox.js | 29 ++++++++--------------------- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index 8fbcbcff..a6865e52 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -6,17 +6,11 @@ JavaScript -

The DOM

+

The DOM

-
-

hello, world

-

lorem ipsum

-

this is an error message

-
+ Link to somewhere cool... -
-

this is the content

-
+

lorem ipsum

diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index c9216929..ccf4c487 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,24 +1,11 @@ -const para = document.querySelector('p'); +const link = document.querySelector('a'); -// console.log(para.innerText); -// para.innerText = 'ninjas are awesome'; +console.log(link.getAttribute('href')); +link.setAttribute('href', 'https://www.thenetninja.co.uk'); +link.textContent = 'The Net Ninja webiste'; -const paras = document.querySelectorAll('p'); +const mssg = document.querySelector('p'); -// paras.forEach(p => { -// console.log(p.innerText); -// p.innerText = 'new text!'; -// }); - -const content = document.querySelector('.content'); - -// console.log(content.innerHTML); -// content.innerHTML = '

this is a new h2

'; - -// content.innerHTML += '

this is an h2 added to the content

'; - -const people = ['mario', 'luigi', 'yoshi']; - -people.forEach(person => { - content.innerHTML += `

${person}

`; -}); \ No newline at end of file +console.log(mssg.getAttribute('class')); +mssg.setAttribute('class', 'success'); +mssg.setAttribute('style', 'color: green'); \ No newline at end of file From 910990a263d99f5e8aa225d7065823cf688c595c Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 13:01:27 +0000 Subject: [PATCH 040/154] lesson-50 --- chapter_six/index.html | 6 +----- chapter_six/sandbox.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index a6865e52..50827b53 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -6,11 +6,7 @@ JavaScript -

The DOM

- - Link to somewhere cool... - -

lorem ipsum

+

The DOM

diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index ccf4c487..30a53881 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,11 +1,11 @@ -const link = document.querySelector('a'); +const title = document.querySelector('h1'); -console.log(link.getAttribute('href')); -link.setAttribute('href', 'https://www.thenetninja.co.uk'); -link.textContent = 'The Net Ninja webiste'; +// title.setAttribute('style', 'margin: 50px;'); -const mssg = document.querySelector('p'); +console.log(title.style); +console.log(title.style.color); -console.log(mssg.getAttribute('class')); -mssg.setAttribute('class', 'success'); -mssg.setAttribute('style', 'color: green'); \ No newline at end of file +title.style.margin = '50px'; +title.style.color = 'crimson'; +title.style.fontSize = '60px'; +title.style.margin = ''; \ No newline at end of file From 0ed709b76cd2a92aee7d6118bd3d07d188be6c8f Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 15:25:20 +0000 Subject: [PATCH 041/154] lesson-51 --- chapter_six/index.html | 16 +++++++++++++++- chapter_six/sandbox.js | 20 ++++++++++++-------- chapter_six/styles.css | 11 +++++++++++ 3 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 chapter_six/styles.css diff --git a/chapter_six/index.html b/chapter_six/index.html index 50827b53..9eab55db 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -3,10 +3,24 @@ + JavaScript -

The DOM

+

The DOM

+ + + +

lorem error ipsum

+

lorem success ipsum

+

lorem ipsum lorem

+

lorem ipsum success

+

error lorem ipsum

+

lorem ipsum lorem

+

lorem ipsum error

+

success lorem ipsum

diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 30a53881..32464dab 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,11 +1,15 @@ -const title = document.querySelector('h1'); +// const content = document.querySelector('p'); -// title.setAttribute('style', 'margin: 50px;'); +// console.log(content.classList); +// content.classList.add('error'); +// content.classList.remove('success'); -console.log(title.style); -console.log(title.style.color); +const paras = document.querySelectorAll('p'); -title.style.margin = '50px'; -title.style.color = 'crimson'; -title.style.fontSize = '60px'; -title.style.margin = ''; \ No newline at end of file +paras.forEach(p => { + if(p.textContent.includes('error')){ + p.classList.add('error'); + } else if(p.textContent.includes('success')) { + p.classList.add('success'); + } +}) \ No newline at end of file diff --git a/chapter_six/styles.css b/chapter_six/styles.css new file mode 100644 index 00000000..e801b492 --- /dev/null +++ b/chapter_six/styles.css @@ -0,0 +1,11 @@ +.error{ + padding: 10px; + color: crimson; + border: 1px dotted crimson; +} + +.success{ + padding: 10px; + color: limegreen; + border: 1px dotted limegreen; +} \ No newline at end of file From aeb459f213f672e3373b2a53c795fd269042cc6b Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 15:55:31 +0000 Subject: [PATCH 042/154] lesson-52 --- chapter_six/index.html | 21 ++++++++------------- chapter_six/sandbox.js | 33 +++++++++++++++++++++------------ chapter_six/styles.css | 11 ----------- 3 files changed, 29 insertions(+), 36 deletions(-) delete mode 100644 chapter_six/styles.css diff --git a/chapter_six/index.html b/chapter_six/index.html index 9eab55db..ae357302 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -3,24 +3,19 @@ - JavaScript

The DOM

- - -

lorem error ipsum

-

lorem success ipsum

-

lorem ipsum lorem

-

lorem ipsum success

-

error lorem ipsum

-

lorem ipsum lorem

-

lorem ipsum error

-

success lorem ipsum

+
+

new sibling

+

article title

+

Lorem ipsum dolor sit amet consectetur adipisicing elit.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit.

+
written by the net ninja
+
diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 32464dab..35ad802d 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,15 +1,24 @@ -// const content = document.querySelector('p'); +const article = document.querySelector('article'); + +// console.log(article.children); +// console.log(Array.from(article.children)); +// console.log(article.children); + +Array.from(article.children).forEach(child => { + child.classList.add('article-element'); +}); + +const title = document.querySelector('h2'); + +console.log(title.parentElement); +console.log(title.parentElement.parentElement); +console.log(title.nextElementSibling); +console.log(title.previousElementSibling); + +// chaining +console.log(title.nextElementSibling.parentElement.children); + + -// console.log(content.classList); -// content.classList.add('error'); -// content.classList.remove('success'); -const paras = document.querySelectorAll('p'); -paras.forEach(p => { - if(p.textContent.includes('error')){ - p.classList.add('error'); - } else if(p.textContent.includes('success')) { - p.classList.add('success'); - } -}) \ No newline at end of file diff --git a/chapter_six/styles.css b/chapter_six/styles.css deleted file mode 100644 index e801b492..00000000 --- a/chapter_six/styles.css +++ /dev/null @@ -1,11 +0,0 @@ -.error{ - padding: 10px; - color: crimson; - border: 1px dotted crimson; -} - -.success{ - padding: 10px; - color: limegreen; - border: 1px dotted limegreen; -} \ No newline at end of file From 3e9e9b73dd496325e0c73939cbaeff42928d938f Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 17:10:11 +0000 Subject: [PATCH 043/154] lesson-53 --- chapter_six/index.html | 27 ++++++++++++++++++--------- chapter_six/sandbox.js | 34 ++++++++++++++++------------------ 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index ae357302..905330b7 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -4,18 +4,27 @@ JavaScript + -

The DOM

-
-

new sibling

-

article title

-

Lorem ipsum dolor sit amet consectetur adipisicing elit.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit.

-
written by the net ninja
-
+
    +
  • buy milk
  • +
  • read a book
  • +
  • play the guitar
  • +
  • pay the bills :(
  • +
+ + diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 35ad802d..4ca90c2c 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,23 +1,21 @@ -const article = document.querySelector('article'); - -// console.log(article.children); -// console.log(Array.from(article.children)); -// console.log(article.children); - -Array.from(article.children).forEach(child => { - child.classList.add('article-element'); +// const button = document.querySelector('button'); + +// button.addEventListener('click', () => { +// console.log('you clicked me'); +// }); + +const items = document.querySelectorAll('li'); + +items.forEach(item => { + item.addEventListener('click', e => { + // console.log('item clicked'); + // console.log(e); + // console.log(e.target); + // console.log(item); + e.target.style.textDecoration = 'line-through'; + }); }); -const title = document.querySelector('h2'); - -console.log(title.parentElement); -console.log(title.parentElement.parentElement); -console.log(title.nextElementSibling); -console.log(title.previousElementSibling); - -// chaining -console.log(title.nextElementSibling.parentElement.children); - From 3cb4c5047b7442183f0cacf49d2f8809545e1b0a Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 17:33:03 +0000 Subject: [PATCH 044/154] lesson-54 --- chapter_six/index.html | 2 +- chapter_six/sandbox.js | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index 905330b7..5025c61c 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -24,7 +24,7 @@
  • pay the bills :(
  • - + diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index 4ca90c2c..e15f0c98 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,22 +1,24 @@ -// const button = document.querySelector('button'); +const ul = document.querySelector('ul'); +// ul.remove(); -// button.addEventListener('click', () => { -// console.log('you clicked me'); -// }); +const button = document.querySelector('button'); + +button.addEventListener('click', () => { + const li = document.createElement('li'); + li.textContent = 'something new to do'; + //ul.appendChild(li); + ul.prepend(li); +}); const items = document.querySelectorAll('li'); items.forEach(item => { item.addEventListener('click', e => { - // console.log('item clicked'); - // console.log(e); - // console.log(e.target); - // console.log(item); - e.target.style.textDecoration = 'line-through'; + // e.target.style.textDecoration = 'line-through'; + e.target.remove(); }); }); - From 1b372195a2d89bc46396908cc60ddc080ec751ba Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 17:43:57 +0000 Subject: [PATCH 045/154] lesson-55 --- chapter_six/sandbox.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index e15f0c98..fc5b338f 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,22 +1,28 @@ const ul = document.querySelector('ul'); -// ul.remove(); - const button = document.querySelector('button'); button.addEventListener('click', () => { const li = document.createElement('li'); li.textContent = 'something new to do'; - //ul.appendChild(li); - ul.prepend(li); + ul.appendChild(li); }); -const items = document.querySelectorAll('li'); +// const items = document.querySelectorAll('li'); + +// items.forEach(item => { +// item.addEventListener('click', e => { +// console.log('event in LI'); +// e.stopPropagation(); +// e.target.remove(); +// }); +// }); -items.forEach(item => { - item.addEventListener('click', e => { - // e.target.style.textDecoration = 'line-through'; +ul.addEventListener('click', e => { + // console.log('event in UL'); + console.log(e.target, e); + if(e.target.tagName === 'LI'){ e.target.remove(); - }); + } }); From 9684721d7922da198ebc1ab5a0566d8205fbdcc1 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 18:23:59 +0000 Subject: [PATCH 046/154] lesson-56 --- chapter_six/index.html | 36 +++++++++++++++++++++++------------- chapter_six/sandbox.js | 35 +++++++++++------------------------ 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/chapter_six/index.html b/chapter_six/index.html index 5025c61c..19a5461e 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -5,26 +5,36 @@ JavaScript -
      -
    • buy milk
    • -
    • read a book
    • -
    • play the guitar
    • -
    • pay the bills :(
    • -
    +

    Lorem ipsum dolor sit, amet consectetur adipisicing elit.

    +
    move the mouse around this box
    - +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    +

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index fc5b338f..d4f63858 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,30 +1,17 @@ -const ul = document.querySelector('ul'); -const button = document.querySelector('button'); +const copy = document.querySelector('.copy-me'); -button.addEventListener('click', () => { - const li = document.createElement('li'); - li.textContent = 'something new to do'; - ul.appendChild(li); +copy.addEventListener('copy', () => { + console.log('OI! my content is copyrighted!!'); }); -// const items = document.querySelectorAll('li'); +const box = document.querySelector('.box'); -// items.forEach(item => { -// item.addEventListener('click', e => { -// console.log('event in LI'); -// e.stopPropagation(); -// e.target.remove(); -// }); -// }); - -ul.addEventListener('click', e => { - // console.log('event in UL'); - console.log(e.target, e); - if(e.target.tagName === 'LI'){ - e.target.remove(); - } +box.addEventListener('mousemove', e => { + // console.log(e); + // console.log(e.offsetX, e.offsetY); + box.textContent = `x pos - ${e.offsetX} y pos - ${e.offsetY}`; }); - - - +document.addEventListener('wheel', e => { + console.log(e.pageX, e.pageY); +}); \ No newline at end of file From 45f133a3281a12cf9c056ac1b86e894350be6142 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 15 Feb 2019 18:40:40 +0000 Subject: [PATCH 047/154] lesson-57 --- chapter_six/index.html | 40 +++++++++++++++------------------------ chapter_six/sandbox.js | 24 +++++++++++------------ chapter_six/styles.css | 43 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 chapter_six/styles.css diff --git a/chapter_six/index.html b/chapter_six/index.html index 19a5461e..2522b79b 100644 --- a/chapter_six/index.html +++ b/chapter_six/index.html @@ -3,39 +3,29 @@ + JavaScript -

    Lorem ipsum dolor sit, amet consectetur adipisicing elit.

    -
    move the mouse around this box
    + -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    -

    Lorem ipsum dolor sit amet consectetur, adipisicing elit.

    + + \ No newline at end of file diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js index d4f63858..6e8cd3a1 100644 --- a/chapter_six/sandbox.js +++ b/chapter_six/sandbox.js @@ -1,17 +1,17 @@ -const copy = document.querySelector('.copy-me'); +const button = document.querySelector('button'); +const popup = document.querySelector('.popup-wrapper'); +const close = document.querySelector('.popup-close'); -copy.addEventListener('copy', () => { - console.log('OI! my content is copyrighted!!'); +button.addEventListener('click', () => { + popup.style.display = 'block'; }); -const box = document.querySelector('.box'); - -box.addEventListener('mousemove', e => { - // console.log(e); - // console.log(e.offsetX, e.offsetY); - box.textContent = `x pos - ${e.offsetX} y pos - ${e.offsetY}`; +close.addEventListener('click', () => { + popup.style.display = 'none'; }); -document.addEventListener('wheel', e => { - console.log(e.pageX, e.pageY); -}); \ No newline at end of file +popup.addEventListener('click', (e) => { + if(e.target.className === 'popup-wrapper'){ + popup.style.display = 'none'; + } +}); diff --git a/chapter_six/styles.css b/chapter_six/styles.css new file mode 100644 index 00000000..ed9755b1 --- /dev/null +++ b/chapter_six/styles.css @@ -0,0 +1,43 @@ +button{ + display: block; + margin: 20px auto; + background: crimson; + color: white; + border: 0; + padding: 6px 10px; +} + +.popup-wrapper{ + background: rgba(0,0,0,0.5); + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: none; +} + +.popup{ + font-family: arial; + text-align: center; + width: 100%; + max-width: 300px; + margin: 10% auto; + padding: 20px; + background: white; + position: relative; +} + +.popup a{ + background: crimson; + color: white; + text-decoration: none; + padding: 6px 10px; +} + +.popup-close{ + position: absolute; + top: 5px; + right: 8px; + cursor: pointer; +} \ No newline at end of file From 26dcf8fdc56f009c985ae6d2fa2b15d233e0320b Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 09:45:54 +0000 Subject: [PATCH 048/154] lesson-59 --- chapter_seven/index.html | 33 ++++++++++++++++++++++++++++++ chapter_seven/sandbox.js | 9 +++++++++ chapter_six/index.html | 31 ----------------------------- chapter_six/sandbox.js | 17 ---------------- chapter_six/styles.css | 43 ---------------------------------------- 5 files changed, 42 insertions(+), 91 deletions(-) create mode 100644 chapter_seven/index.html create mode 100644 chapter_seven/sandbox.js delete mode 100644 chapter_six/index.html delete mode 100644 chapter_six/sandbox.js delete mode 100644 chapter_six/styles.css diff --git a/chapter_seven/index.html b/chapter_seven/index.html new file mode 100644 index 00000000..cebd825f --- /dev/null +++ b/chapter_seven/index.html @@ -0,0 +1,33 @@ + + + + + + JavaScript + + + + + + + + + \ No newline at end of file diff --git a/chapter_seven/sandbox.js b/chapter_seven/sandbox.js new file mode 100644 index 00000000..58cb8de7 --- /dev/null +++ b/chapter_seven/sandbox.js @@ -0,0 +1,9 @@ +const form = document.querySelector('.signup-form'); +// const username = document.querySelector('#username'); + +form.addEventListener('submit', e => { + e.preventDefault(); + // console.log('form submitted'); + // console.log(username.value); + console.log(form.username.value); +}); \ No newline at end of file diff --git a/chapter_six/index.html b/chapter_six/index.html deleted file mode 100644 index 2522b79b..00000000 --- a/chapter_six/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - JavaScript - - - - - - - - - - - \ No newline at end of file diff --git a/chapter_six/sandbox.js b/chapter_six/sandbox.js deleted file mode 100644 index 6e8cd3a1..00000000 --- a/chapter_six/sandbox.js +++ /dev/null @@ -1,17 +0,0 @@ -const button = document.querySelector('button'); -const popup = document.querySelector('.popup-wrapper'); -const close = document.querySelector('.popup-close'); - -button.addEventListener('click', () => { - popup.style.display = 'block'; -}); - -close.addEventListener('click', () => { - popup.style.display = 'none'; -}); - -popup.addEventListener('click', (e) => { - if(e.target.className === 'popup-wrapper'){ - popup.style.display = 'none'; - } -}); diff --git a/chapter_six/styles.css b/chapter_six/styles.css deleted file mode 100644 index ed9755b1..00000000 --- a/chapter_six/styles.css +++ /dev/null @@ -1,43 +0,0 @@ -button{ - display: block; - margin: 20px auto; - background: crimson; - color: white; - border: 0; - padding: 6px 10px; -} - -.popup-wrapper{ - background: rgba(0,0,0,0.5); - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: none; -} - -.popup{ - font-family: arial; - text-align: center; - width: 100%; - max-width: 300px; - margin: 10% auto; - padding: 20px; - background: white; - position: relative; -} - -.popup a{ - background: crimson; - color: white; - text-decoration: none; - padding: 6px 10px; -} - -.popup-close{ - position: absolute; - top: 5px; - right: 8px; - cursor: pointer; -} \ No newline at end of file From c83cd9afc24e193cfd12a80d8495036b6951ddc5 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 09:58:49 +0000 Subject: [PATCH 049/154] lesson-61 --- chapter_seven/sandbox.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/chapter_seven/sandbox.js b/chapter_seven/sandbox.js index 58cb8de7..69da7661 100644 --- a/chapter_seven/sandbox.js +++ b/chapter_seven/sandbox.js @@ -1,9 +1,23 @@ const form = document.querySelector('.signup-form'); -// const username = document.querySelector('#username'); form.addEventListener('submit', e => { e.preventDefault(); - // console.log('form submitted'); - // console.log(username.value); console.log(form.username.value); -}); \ No newline at end of file +}); + +// testing RegEx + +const username = 'shaunyp'; +const pattern = /^[a-z]{6,}$/; + +// let result = pattern.test(username); + +// if(result){ +// console.log('regex test passed :)'); +// } else { +// console.log('regex test failed :('); +// } + +let result = username.search(pattern); + +console.log(result); \ No newline at end of file From 522f7e2b3be11af54519995fc6b7c140834ab23d Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 10:20:16 +0000 Subject: [PATCH 050/154] lesson-62 --- chapter_seven/index.html | 1 + chapter_seven/sandbox.js | 28 ++++++++++------------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/chapter_seven/index.html b/chapter_seven/index.html index cebd825f..c77b3c50 100644 --- a/chapter_seven/index.html +++ b/chapter_seven/index.html @@ -26,6 +26,7 @@ diff --git a/chapter_seven/sandbox.js b/chapter_seven/sandbox.js index 69da7661..62aaa3d8 100644 --- a/chapter_seven/sandbox.js +++ b/chapter_seven/sandbox.js @@ -1,23 +1,15 @@ const form = document.querySelector('.signup-form'); +const feedback = document.querySelector('.feedback'); form.addEventListener('submit', e => { e.preventDefault(); - console.log(form.username.value); + + const username = form.username.value; + const usernamePattern = /^[a-zA-Z]{6,12}$/; + + if(usernamePattern.test(username)){ + feedback.textContent = 'that username is valid!' + } else { + feedback.textContent = 'username must contain only letters & be between 6 & 12 characters'; + } }); - -// testing RegEx - -const username = 'shaunyp'; -const pattern = /^[a-z]{6,}$/; - -// let result = pattern.test(username); - -// if(result){ -// console.log('regex test passed :)'); -// } else { -// console.log('regex test failed :('); -// } - -let result = username.search(pattern); - -console.log(result); \ No newline at end of file From 54edca10cb599adcfa8c840b0feb407fee7f54dd Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 10:33:27 +0000 Subject: [PATCH 051/154] lesson-63 --- chapter_seven/index.html | 6 ++++++ chapter_seven/sandbox.js | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/chapter_seven/index.html b/chapter_seven/index.html index c77b3c50..469934a0 100644 --- a/chapter_seven/index.html +++ b/chapter_seven/index.html @@ -19,6 +19,12 @@ margin: 10px auto; padding: 4px; } + .success{ + border: 2px solid limegreen; + } + .error{ + border: 2px solid crimson; + } diff --git a/chapter_seven/sandbox.js b/chapter_seven/sandbox.js index 62aaa3d8..d5e19e5d 100644 --- a/chapter_seven/sandbox.js +++ b/chapter_seven/sandbox.js @@ -1,11 +1,12 @@ const form = document.querySelector('.signup-form'); const feedback = document.querySelector('.feedback'); +const usernamePattern = /^[a-zA-Z]{6,12}$/; +// validation form.addEventListener('submit', e => { e.preventDefault(); - + const username = form.username.value; - const usernamePattern = /^[a-zA-Z]{6,12}$/; if(usernamePattern.test(username)){ feedback.textContent = 'that username is valid!' @@ -13,3 +14,15 @@ form.addEventListener('submit', e => { feedback.textContent = 'username must contain only letters & be between 6 & 12 characters'; } }); + +// live feedback +form.username.addEventListener('keyup', e => { + // console.log(e.target.value, form.username.value); + if(usernamePattern.test(e.target.value)){ + //console.log('passed'); + form.username.setAttribute('class', 'success'); + } else { + //console.log('failed'); + form.username.setAttribute('class', 'error'); + } +}) From 3ad28406b0568a9173af482bafde4bcbc5fef161 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 18:36:14 +0000 Subject: [PATCH 052/154] lesson-65 --- chapter_seven/index.html | 40 ------------------- chapter_seven/sandbox.js => ninja_quiz/app.js | 0 ninja_quiz/index.html | 15 +++++++ 3 files changed, 15 insertions(+), 40 deletions(-) delete mode 100644 chapter_seven/index.html rename chapter_seven/sandbox.js => ninja_quiz/app.js (100%) create mode 100644 ninja_quiz/index.html diff --git a/chapter_seven/index.html b/chapter_seven/index.html deleted file mode 100644 index 469934a0..00000000 --- a/chapter_seven/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - JavaScript - - - - - - - - - \ No newline at end of file diff --git a/chapter_seven/sandbox.js b/ninja_quiz/app.js similarity index 100% rename from chapter_seven/sandbox.js rename to ninja_quiz/app.js diff --git a/ninja_quiz/index.html b/ninja_quiz/index.html new file mode 100644 index 00000000..011d8f87 --- /dev/null +++ b/ninja_quiz/index.html @@ -0,0 +1,15 @@ + + + + + + Ninja Quiz + + + + + + + + + \ No newline at end of file From 6f6144c8fa1433e4df5ab6a9142720f471712f9f Mon Sep 17 00:00:00 2001 From: Shaun Date: Sat, 16 Feb 2019 18:45:15 +0000 Subject: [PATCH 053/154] lesson-65 --- ninja_quiz/index.html | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/ninja_quiz/index.html b/ninja_quiz/index.html index 011d8f87..71845024 100644 --- a/ninja_quiz/index.html +++ b/ninja_quiz/index.html @@ -8,7 +8,28 @@ - + + +
    +

    hello, world

    +

    hello, world

    +
    hello, world
    +
    From eec1d7a3369a78941ef09e117d6c4d13c7b0c145 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:19:15 +0000 Subject: [PATCH 054/154] lesson-65 --- ninja_quiz/app.js | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js index d5e19e5d..e69de29b 100644 --- a/ninja_quiz/app.js +++ b/ninja_quiz/app.js @@ -1,28 +0,0 @@ -const form = document.querySelector('.signup-form'); -const feedback = document.querySelector('.feedback'); -const usernamePattern = /^[a-zA-Z]{6,12}$/; - -// validation -form.addEventListener('submit', e => { - e.preventDefault(); - - const username = form.username.value; - - if(usernamePattern.test(username)){ - feedback.textContent = 'that username is valid!' - } else { - feedback.textContent = 'username must contain only letters & be between 6 & 12 characters'; - } -}); - -// live feedback -form.username.addEventListener('keyup', e => { - // console.log(e.target.value, form.username.value); - if(usernamePattern.test(e.target.value)){ - //console.log('passed'); - form.username.setAttribute('class', 'success'); - } else { - //console.log('failed'); - form.username.setAttribute('class', 'error'); - } -}) From 880b11a31b3589644fb579e5f7403023d7ce79ff Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:29:23 +0000 Subject: [PATCH 055/154] lesson-66 --- ninja_quiz/index.html | 80 +++++++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/ninja_quiz/index.html b/ninja_quiz/index.html index 71845024..8990cfd9 100644 --- a/ninja_quiz/index.html +++ b/ninja_quiz/index.html @@ -8,27 +8,69 @@ - +
    + + +
    +
    +

    On with the questions...

    -
    -

    hello, world

    -

    hello, world

    -
    hello, world
    +
    +
    +

    1. How do you give a ninja directions?

    +
    + + +
    +
    + + +
    +
    +
    +

    2. If a ninja has 3 apples, then gives one to Mario & one to Yoshi, how many apples does the ninja have left?

    +
    + + +
    +
    + + +
    +
    +
    +

    3. How do you know when you've met a ninja?

    +
    + + +
    +
    + + +
    +
    +
    +

    4. What's a ninja's favourite array method?

    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + +
    From 9fdd0b1a249ca6966ca0b260deda28233d39fcde Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:41:24 +0000 Subject: [PATCH 056/154] lesson-67 --- ninja_quiz/app.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js index e69de29b..9fda4d83 100644 --- a/ninja_quiz/app.js +++ b/ninja_quiz/app.js @@ -0,0 +1,20 @@ +const correctAnswers = ['B', 'B', 'B', 'B']; +const form = document.querySelector('.quiz-form'); + +form.addEventListener('submit', e => { + e.preventDefault(); + + let score = 0; + const userAnswers = [form.q1.value, form.q2.value, form.q3.value, form.q4.value]; + + // check the answers + userAnswers.forEach((answer, index) => { + if (answer === correctAnswers[index]){ + score += 25; + } + }); + + // log the score to console + console.log(score); + +}); From 0a92c5d3bd6c260baa8cbaea9e2b849a8e288b4f Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:43:16 +0000 Subject: [PATCH 057/154] lesson-68 --- ninja_quiz/app.js | 6 ++++-- ninja_quiz/index.html | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js index 9fda4d83..aacfbf94 100644 --- a/ninja_quiz/app.js +++ b/ninja_quiz/app.js @@ -1,5 +1,6 @@ const correctAnswers = ['B', 'B', 'B', 'B']; const form = document.querySelector('.quiz-form'); +const result = document.querySelector('.result'); form.addEventListener('submit', e => { e.preventDefault(); @@ -14,7 +15,8 @@ form.addEventListener('submit', e => { } }); - // log the score to console - console.log(score); + // show the result + result.querySelector('span').textContent = `${score}%`; + result.classList.remove('d-none'); }); diff --git a/ninja_quiz/index.html b/ninja_quiz/index.html index 8990cfd9..994a06f0 100644 --- a/ninja_quiz/index.html +++ b/ninja_quiz/index.html @@ -15,6 +15,13 @@

    Ninja Quiz

    + +
    +
    +

    You are 0% ninja

    +
    +
    +
    From be3b3ea3f24ea1f9d7e145c78147172cf5641a79 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:49:35 +0000 Subject: [PATCH 058/154] lesson-69 --- ninja_quiz/app.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js index aacfbf94..ac57c284 100644 --- a/ninja_quiz/app.js +++ b/ninja_quiz/app.js @@ -16,7 +16,25 @@ form.addEventListener('submit', e => { }); // show the result + scrollTo(0, 0); result.querySelector('span').textContent = `${score}%`; result.classList.remove('d-none'); }); + +// window object (the global object) + +// console.log(window); + +// console.log('hello'); +// window.console.log('hello'); + +// console.log(document.querySelector('form')); +// console.log(window.document.querySelector('form')); + +// // alert('hello'); +// // window.alert('hello again'); + +// setTimeout(() => { +// alert('hello, ninjas'); +// }, 3000); From 3eaaa6bf748e2a3f8560ccddf688bd48119af8a9 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 17 Feb 2019 08:51:07 +0000 Subject: [PATCH 059/154] lesson-70 --- ninja_quiz/app.js | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js index ac57c284..a236e02a 100644 --- a/ninja_quiz/app.js +++ b/ninja_quiz/app.js @@ -17,24 +17,16 @@ form.addEventListener('submit', e => { // show the result scrollTo(0, 0); - result.querySelector('span').textContent = `${score}%`; result.classList.remove('d-none'); -}); - -// window object (the global object) - -// console.log(window); - -// console.log('hello'); -// window.console.log('hello'); - -// console.log(document.querySelector('form')); -// console.log(window.document.querySelector('form')); - -// // alert('hello'); -// // window.alert('hello again'); + let output = 0; + const timer = setInterval(() => { + result.querySelector('span').textContent = `${output}%`; + if(output === score){ + clearInterval(timer); + } else { + output++; + } + }, 10); -// setTimeout(() => { -// alert('hello, ninjas'); -// }, 3000); +}); \ No newline at end of file From 4895d1d783911b39c2aea245ed8000eb3696ad11 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 12:23:15 +0000 Subject: [PATCH 060/154] lesson-71 --- chapter_nine/index.html | 12 ++++++ chapter_nine/sandbox.js | 14 +++++++ ninja_quiz/app.js | 32 ---------------- ninja_quiz/index.html | 85 ----------------------------------------- 4 files changed, 26 insertions(+), 117 deletions(-) create mode 100644 chapter_nine/index.html create mode 100644 chapter_nine/sandbox.js delete mode 100644 ninja_quiz/app.js delete mode 100644 ninja_quiz/index.html diff --git a/chapter_nine/index.html b/chapter_nine/index.html new file mode 100644 index 00000000..46008a24 --- /dev/null +++ b/chapter_nine/index.html @@ -0,0 +1,12 @@ + + + + + + Ninja Quiz + + +

    Array Methods

    + + + \ No newline at end of file diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js new file mode 100644 index 00000000..fed75069 --- /dev/null +++ b/chapter_nine/sandbox.js @@ -0,0 +1,14 @@ +const scores = [10, 30, 15, 25, 50, 40, 5]; + +// const highScores = scores.filter(score => score > 20); +// console.log(highScores); + +const users = [ + {name: 'shaun', premium: true}, + {name: 'yoshi', premium: false}, + {name: 'mario', premium: false}, + {name: 'chun-li', premium: true} +]; + +const premiumUsers = users.filter(user => user.premium); +console.log(premiumUsers); \ No newline at end of file diff --git a/ninja_quiz/app.js b/ninja_quiz/app.js deleted file mode 100644 index a236e02a..00000000 --- a/ninja_quiz/app.js +++ /dev/null @@ -1,32 +0,0 @@ -const correctAnswers = ['B', 'B', 'B', 'B']; -const form = document.querySelector('.quiz-form'); -const result = document.querySelector('.result'); - -form.addEventListener('submit', e => { - e.preventDefault(); - - let score = 0; - const userAnswers = [form.q1.value, form.q2.value, form.q3.value, form.q4.value]; - - // check the answers - userAnswers.forEach((answer, index) => { - if (answer === correctAnswers[index]){ - score += 25; - } - }); - - // show the result - scrollTo(0, 0); - result.classList.remove('d-none'); - - let output = 0; - const timer = setInterval(() => { - result.querySelector('span').textContent = `${output}%`; - if(output === score){ - clearInterval(timer); - } else { - output++; - } - }, 10); - -}); \ No newline at end of file diff --git a/ninja_quiz/index.html b/ninja_quiz/index.html deleted file mode 100644 index 994a06f0..00000000 --- a/ninja_quiz/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Ninja Quiz - - - - - -
    -
    -

    Ninja Quiz

    -
    -
    - - -
    -
    -

    You are 0% ninja

    -
    -
    - - -
    -
    -

    On with the questions...

    - -
    -
    -

    1. How do you give a ninja directions?

    -
    - - -
    -
    - - -
    -
    -
    -

    2. If a ninja has 3 apples, then gives one to Mario & one to Yoshi, how many apples does the ninja have left?

    -
    - - -
    -
    - - -
    -
    -
    -

    3. How do you know when you've met a ninja?

    -
    - - -
    -
    - - -
    -
    -
    -

    4. What's a ninja's favourite array method?

    -
    - - -
    -
    - - -
    -
    -
    - -
    -
    - -
    -
    - - - - \ No newline at end of file From e65c2b7c562b18309aedea8955698e0084a7c972 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 12:36:29 +0000 Subject: [PATCH 061/154] lesson-72 --- chapter_nine/sandbox.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js index fed75069..0fbedf99 100644 --- a/chapter_nine/sandbox.js +++ b/chapter_nine/sandbox.js @@ -1,14 +1,22 @@ -const scores = [10, 30, 15, 25, 50, 40, 5]; +const prices = [20, 10, 30, 25, 15, 40, 80, 5]; -// const highScores = scores.filter(score => score > 20); -// console.log(highScores); +// const salePrices = prices.map(price => price / 2); +// console.log(salePrices); -const users = [ - {name: 'shaun', premium: true}, - {name: 'yoshi', premium: false}, - {name: 'mario', premium: false}, - {name: 'chun-li', premium: true} +const products = [ + {name: 'gold star', price: 20}, + {name: 'mushroom', price: 40}, + {name: 'green shells', price: 30}, + {name: 'banana skin', price: 10}, + {name: 'red shells', price: 50} ]; -const premiumUsers = users.filter(user => user.premium); -console.log(premiumUsers); \ No newline at end of file +const saleProducts = products.map(product => { + if(product.price > 30){ + return {name: product.name, price: product.price / 2} + } else { + return product; + } +}); + +console.log(products, saleProducts); \ No newline at end of file From 42125d00ec27bded9d697c231f06bfcb63ecc9b0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 14:21:20 +0000 Subject: [PATCH 062/154] lesson-73 --- chapter_nine/sandbox.js | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js index 0fbedf99..d2b00180 100644 --- a/chapter_nine/sandbox.js +++ b/chapter_nine/sandbox.js @@ -1,22 +1,26 @@ -const prices = [20, 10, 30, 25, 15, 40, 80, 5]; +// const scores = [10, 20, 60, 40, 70, 90, 30]; -// const salePrices = prices.map(price => price / 2); -// console.log(salePrices); +// const result = scores.reduce((acc, curr) => { +// if(curr > 50){ +// acc++; +// } +// return acc; +// }, 0); -const products = [ - {name: 'gold star', price: 20}, - {name: 'mushroom', price: 40}, - {name: 'green shells', price: 30}, - {name: 'banana skin', price: 10}, - {name: 'red shells', price: 50} +// console.log(result); + +const scores = [ + {player: 'mario', score: 50}, + {player: 'yoshi', score: 30}, + {player: 'mario', score: 70}, + {player: 'crystal', score: 60} ]; -const saleProducts = products.map(product => { - if(product.price > 30){ - return {name: product.name, price: product.price / 2} - } else { - return product; +const marioTotal = scores.reduce((acc, curr) => { + if(curr.player === 'mario'){ + acc += curr.score; } -}); + return acc; +}, 0); -console.log(products, saleProducts); \ No newline at end of file +console.log(marioTotal); \ No newline at end of file From 7f4074e27a5372a8f3a690625dd2ef39783ee484 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 14:24:28 +0000 Subject: [PATCH 063/154] lesson-74 --- chapter_nine/sandbox.js | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js index d2b00180..5447fc28 100644 --- a/chapter_nine/sandbox.js +++ b/chapter_nine/sandbox.js @@ -1,26 +1,4 @@ -// const scores = [10, 20, 60, 40, 70, 90, 30]; +const scores = [10, 5, 0, 40, 60, 10, 20, 70]; -// const result = scores.reduce((acc, curr) => { -// if(curr > 50){ -// acc++; -// } -// return acc; -// }, 0); - -// console.log(result); - -const scores = [ - {player: 'mario', score: 50}, - {player: 'yoshi', score: 30}, - {player: 'mario', score: 70}, - {player: 'crystal', score: 60} -]; - -const marioTotal = scores.reduce((acc, curr) => { - if(curr.player === 'mario'){ - acc += curr.score; - } - return acc; -}, 0); - -console.log(marioTotal); \ No newline at end of file +const firstHighScore = scores.find(score => score > 50); +console.log(firstHighScore); From 2ecefac5b0ec6ef3b0c83c1b69ac2bd6237f6bd9 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 14:38:04 +0000 Subject: [PATCH 064/154] lesson-75 --- chapter_nine/sandbox.js | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js index 5447fc28..b6ed1b5b 100644 --- a/chapter_nine/sandbox.js +++ b/chapter_nine/sandbox.js @@ -1,4 +1,37 @@ -const scores = [10, 5, 0, 40, 60, 10, 20, 70]; +// example 1 - sorting strings +const names = ['mario', 'shaun', 'chun-li', 'yoshi', 'luigi']; + +// names.sort(); +names.reverse(); +console.log(names); + +// example 2 - sorting numbers +const scores = [10, 50, 20, 5, 35, 70, 45]; + +// scores.sort(); +scores.reverse(); +console.log(scores); + +// example 3 - sorting objects +const players = [ + {name: 'mario', score: 20}, + {name: 'luigi', score: 10}, + {name: 'chun-li', score: 50}, + {name: 'yoshi', score: 30}, + {name: 'shaun', score: 70} +]; + +// players.sort((a,b) => { +// if(a.score > b.score){ +// return -1; +// } else if (b.score > a.score){ +// return 1; +// } else { +// return 0; +// } +// }); + +players.sort((a,b) => b.score - a.score); + +console.log(players); -const firstHighScore = scores.find(score => score > 50); -console.log(firstHighScore); From 124126e9bc1201bfb518c7f984b5666b57f0bc6a Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 15:45:35 +0000 Subject: [PATCH 065/154] lesson-76 --- chapter_nine/sandbox.js | 46 +++++++++++++---------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js index b6ed1b5b..cb38fe5c 100644 --- a/chapter_nine/sandbox.js +++ b/chapter_nine/sandbox.js @@ -1,37 +1,19 @@ -// example 1 - sorting strings -const names = ['mario', 'shaun', 'chun-li', 'yoshi', 'luigi']; - -// names.sort(); -names.reverse(); -console.log(names); - -// example 2 - sorting numbers -const scores = [10, 50, 20, 5, 35, 70, 45]; - -// scores.sort(); -scores.reverse(); -console.log(scores); - -// example 3 - sorting objects -const players = [ - {name: 'mario', score: 20}, - {name: 'luigi', score: 10}, - {name: 'chun-li', score: 50}, - {name: 'yoshi', score: 30}, - {name: 'shaun', score: 70} +const products = [ + {name: 'gold star', price: 30}, + {name: 'green shell', price: 10}, + {name: 'red shell', price: 40}, + {name: 'banana skin', price: 5}, + {name: 'mushroom', price: 50} ]; -// players.sort((a,b) => { -// if(a.score > b.score){ -// return -1; -// } else if (b.score > a.score){ -// return 1; -// } else { -// return 0; -// } -// }); +// const filtered = products.filter(product => product.price > 20); -players.sort((a,b) => b.score - a.score); +// const promos = filtered.map(product => { +// return `the ${product.name} is ${product.price / 2} pounds`; +// }); -console.log(players); +const promos = products + .filter(product => product.price > 20) + .map(product => `the ${product.name} is ${product.price / 2} pounds`); +console.log(promos); From 2056eb0001d5d3508ebb405a0bb9ecae1c455e22 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 16:47:49 +0000 Subject: [PATCH 066/154] lesson-77 --- chapter_nine/index.html | 12 ------------ chapter_nine/sandbox.js | 19 ------------------- todos/app.js | 0 todos/index.html | 13 +++++++++++++ 4 files changed, 13 insertions(+), 31 deletions(-) delete mode 100644 chapter_nine/index.html delete mode 100644 chapter_nine/sandbox.js create mode 100644 todos/app.js create mode 100644 todos/index.html diff --git a/chapter_nine/index.html b/chapter_nine/index.html deleted file mode 100644 index 46008a24..00000000 --- a/chapter_nine/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Ninja Quiz - - -

    Array Methods

    - - - \ No newline at end of file diff --git a/chapter_nine/sandbox.js b/chapter_nine/sandbox.js deleted file mode 100644 index cb38fe5c..00000000 --- a/chapter_nine/sandbox.js +++ /dev/null @@ -1,19 +0,0 @@ -const products = [ - {name: 'gold star', price: 30}, - {name: 'green shell', price: 10}, - {name: 'red shell', price: 40}, - {name: 'banana skin', price: 5}, - {name: 'mushroom', price: 50} -]; - -// const filtered = products.filter(product => product.price > 20); - -// const promos = filtered.map(product => { -// return `the ${product.name} is ${product.price / 2} pounds`; -// }); - -const promos = products - .filter(product => product.price > 20) - .map(product => `the ${product.name} is ${product.price / 2} pounds`); - -console.log(promos); diff --git a/todos/app.js b/todos/app.js new file mode 100644 index 00000000..e69de29b diff --git a/todos/index.html b/todos/index.html new file mode 100644 index 00000000..63d0af1c --- /dev/null +++ b/todos/index.html @@ -0,0 +1,13 @@ + + + + + + + Ninja Quiz + + + + + + \ No newline at end of file From acec2df4ac5d5c3ed43cedf90e3ee826f784211f Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 18 Feb 2019 18:07:07 +0000 Subject: [PATCH 067/154] lesson-78 --- todos/index.html | 36 +++++++++++++++++++++++++++++++++++- todos/styles.css | 28 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 todos/styles.css diff --git a/todos/index.html b/todos/index.html index 63d0af1c..724478be 100644 --- a/todos/index.html +++ b/todos/index.html @@ -4,10 +4,44 @@ - Ninja Quiz + + + Todo List +
    + +
    +

    Todo List

    + +
    + +
      +
    • + text + +
    • +
    • + text + +
    • +
    • + text + +
    • +
    + +
    + + +
    + +
    + + \ No newline at end of file diff --git a/todos/styles.css b/todos/styles.css new file mode 100644 index 00000000..6b37c2e8 --- /dev/null +++ b/todos/styles.css @@ -0,0 +1,28 @@ +body{ + background: #352f5b; +} +.container{ + max-width: 400px; +} +.form-control{ + color: #fff !important; + border: none; + background: rgba(0,0,0,0.2); + max-width: 400px; +} +.form-control:focus{ + background: rgba(0,0,0,0.2); + border: none; + box-shadow: none; +} +li.list-group-item{ + background: #423a6f; +} +ul.todos{ + max-width: 400px; +} +.delete{ + cursor: pointer; +} + + From 1953c7dacfc7e56bd2d8ff5a794bbbadc467fd61 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 07:53:46 +0000 Subject: [PATCH 068/154] lesson-79 --- todos/app.js | 24 ++++++++++++++++++++++++ todos/styles.css | 19 +++++-------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/todos/app.js b/todos/app.js index e69de29b..0374dda1 100644 --- a/todos/app.js +++ b/todos/app.js @@ -0,0 +1,24 @@ +const addForm = document.querySelector('.add'); +const list = document.querySelector('.todos'); + +const generateTemplate = todo => { + const html = ` +
  • + ${todo} + +
  • + `; + list.innerHTML += html; +}; + +addForm.addEventListener('submit', e => { + + e.preventDefault(); + const todo = addForm.add.value; + + if(todo.length){ + generateTemplate(todo); + addForm.reset(); + } + +}); \ No newline at end of file diff --git a/todos/styles.css b/todos/styles.css index 6b37c2e8..b73aa38e 100644 --- a/todos/styles.css +++ b/todos/styles.css @@ -4,25 +4,16 @@ body{ .container{ max-width: 400px; } -.form-control{ - color: #fff !important; +input[type=text], +input[type=text]:focus{ + color: #fff; border: none; background: rgba(0,0,0,0.2); max-width: 400px; } -.form-control:focus{ - background: rgba(0,0,0,0.2); - border: none; - box-shadow: none; -} -li.list-group-item{ +.todos li{ background: #423a6f; } -ul.todos{ - max-width: 400px; -} .delete{ cursor: pointer; -} - - +} \ No newline at end of file From 1d54d0292b85e2fb7f46af7be53071429e80ef75 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 08:17:08 +0000 Subject: [PATCH 069/154] lesson-79 --- todos/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/todos/app.js b/todos/app.js index 0374dda1..55a7dd33 100644 --- a/todos/app.js +++ b/todos/app.js @@ -14,7 +14,7 @@ const generateTemplate = todo => { addForm.addEventListener('submit', e => { e.preventDefault(); - const todo = addForm.add.value; + const todo = addForm.add.value.trim(); if(todo.length){ generateTemplate(todo); From 7309f96aceb5dbbba7c97017ee797c68a02a17d7 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 08:31:51 +0000 Subject: [PATCH 070/154] lesson-80 --- todos/app.js | 12 +++++++++++- todos/index.html | 6 +++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/todos/app.js b/todos/app.js index 55a7dd33..8f8f5f41 100644 --- a/todos/app.js +++ b/todos/app.js @@ -11,6 +11,7 @@ const generateTemplate = todo => { list.innerHTML += html; }; +// add todos addForm.addEventListener('submit', e => { e.preventDefault(); @@ -21,4 +22,13 @@ addForm.addEventListener('submit', e => { addForm.reset(); } -}); \ No newline at end of file +}); + +// delete todos +list.addEventListener('click', e => { + + if(e.target.classList.contains('delete')){ + e.target.parentElement.remove(); + } + +}); diff --git a/todos/index.html b/todos/index.html index 724478be..2ae334fe 100644 --- a/todos/index.html +++ b/todos/index.html @@ -21,15 +21,15 @@

    Todo List

    • - text + play mariokart
    • - text + defeat ganon in zelda
    • - text + make a veggie pie
    From 9f9190e3a360638d54ac916c7b627b4ac6ea9d07 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 09:25:31 +0000 Subject: [PATCH 071/154] lesson-81 --- todos/app.js | 24 ++++++++++++++++++++++-- todos/styles.css | 3 +++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/todos/app.js b/todos/app.js index 8f8f5f41..8cd29a99 100644 --- a/todos/app.js +++ b/todos/app.js @@ -1,4 +1,5 @@ const addForm = document.querySelector('.add'); +const search = document.querySelector('.search input'); const list = document.querySelector('.todos'); const generateTemplate = todo => { @@ -11,7 +12,18 @@ const generateTemplate = todo => { list.innerHTML += html; }; -// add todos +const filterTodos = term => { + Array.from(list.children).forEach(todo => { + const text = todo.textContent.trim().toLowerCase(); + if(!text.includes(term)){ + todo.classList.add('filtered'); + } else { + todo.classList.remove('filtered'); + } + }); +}; + +// add todos event addForm.addEventListener('submit', e => { e.preventDefault(); @@ -24,7 +36,7 @@ addForm.addEventListener('submit', e => { }); -// delete todos +// delete todos event list.addEventListener('click', e => { if(e.target.classList.contains('delete')){ @@ -32,3 +44,11 @@ list.addEventListener('click', e => { } }); + +// filter todos event +search.addEventListener('keyup', () => { + + const term = search.value.trim().toLowerCase(); + filterTodos(term); + +}); diff --git a/todos/styles.css b/todos/styles.css index b73aa38e..b1cfa633 100644 --- a/todos/styles.css +++ b/todos/styles.css @@ -16,4 +16,7 @@ input[type=text]:focus{ } .delete{ cursor: pointer; +} +.filtered{ + display: none !important; } \ No newline at end of file From e0dc927d2e50a10bc77e7eb285581dae24796177 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 11:35:03 +0000 Subject: [PATCH 072/154] lesson-81 --- todos/app.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/todos/app.js b/todos/app.js index 8cd29a99..6451d736 100644 --- a/todos/app.js +++ b/todos/app.js @@ -13,14 +13,17 @@ const generateTemplate = todo => { }; const filterTodos = term => { - Array.from(list.children).forEach(todo => { - const text = todo.textContent.trim().toLowerCase(); - if(!text.includes(term)){ - todo.classList.add('filtered'); - } else { - todo.classList.remove('filtered'); - } - }); + + // add filtered class + Array.from(list.children) + .filter(todo => !todo.textContent.toLowerCase().includes(term)) + .forEach(todo => todo.classList.add('filtered')); + + // remove filtered class + Array.from(list.children) + .filter(todo => todo.textContent.toLowerCase().includes(term)) + .forEach(todo => todo.classList.remove('filtered')); + }; // add todos event From d8cc465cf6380df061acc64cab9e3d2ff45c4397 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 16:38:53 +0000 Subject: [PATCH 073/154] lesson-82 --- chapter_11/index.html | 13 ++++++++++ chapter_11/sandbox.js | 21 ++++++++++++++++ todos/app.js | 57 ------------------------------------------- todos/index.html | 47 ----------------------------------- todos/styles.css | 22 ----------------- 5 files changed, 34 insertions(+), 126 deletions(-) create mode 100644 chapter_11/index.html create mode 100644 chapter_11/sandbox.js delete mode 100644 todos/app.js delete mode 100644 todos/index.html delete mode 100644 todos/styles.css diff --git a/chapter_11/index.html b/chapter_11/index.html new file mode 100644 index 00000000..bfbde7b3 --- /dev/null +++ b/chapter_11/index.html @@ -0,0 +1,13 @@ + + + + + + Dates + + + + + + + \ No newline at end of file diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js new file mode 100644 index 00000000..06d2e263 --- /dev/null +++ b/chapter_11/sandbox.js @@ -0,0 +1,21 @@ +const now = new Date(); + +console.log(now); +console.log(typeof now); + +// years, months, days, times +console.log('getFullYear:', now.getFullYear()); +console.log('getMonth (0-based):', now.getMonth()); +console.log('getDate:', now.getDate()); +console.log('getDay (0-based):', now.getDay()); +console.log('getHours:', now.getHours()); +console.log('getMinutes:', now.getMinutes()); +console.log('getSeconds:', now.getSeconds()); + +// timestamps +console.log('timestamp:', now.getTime()); + +// date strings +console.log(now.toDateString()); +console.log(now.toTimeString()); +console.log(now.toLocaleString()); \ No newline at end of file diff --git a/todos/app.js b/todos/app.js deleted file mode 100644 index 6451d736..00000000 --- a/todos/app.js +++ /dev/null @@ -1,57 +0,0 @@ -const addForm = document.querySelector('.add'); -const search = document.querySelector('.search input'); -const list = document.querySelector('.todos'); - -const generateTemplate = todo => { - const html = ` -
  • - ${todo} - -
  • - `; - list.innerHTML += html; -}; - -const filterTodos = term => { - - // add filtered class - Array.from(list.children) - .filter(todo => !todo.textContent.toLowerCase().includes(term)) - .forEach(todo => todo.classList.add('filtered')); - - // remove filtered class - Array.from(list.children) - .filter(todo => todo.textContent.toLowerCase().includes(term)) - .forEach(todo => todo.classList.remove('filtered')); - -}; - -// add todos event -addForm.addEventListener('submit', e => { - - e.preventDefault(); - const todo = addForm.add.value.trim(); - - if(todo.length){ - generateTemplate(todo); - addForm.reset(); - } - -}); - -// delete todos event -list.addEventListener('click', e => { - - if(e.target.classList.contains('delete')){ - e.target.parentElement.remove(); - } - -}); - -// filter todos event -search.addEventListener('keyup', () => { - - const term = search.value.trim().toLowerCase(); - filterTodos(term); - -}); diff --git a/todos/index.html b/todos/index.html deleted file mode 100644 index 2ae334fe..00000000 --- a/todos/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - Todo List - - - -
    - -
    -

    Todo List

    - -
    - -
      -
    • - play mariokart - -
    • -
    • - defeat ganon in zelda - -
    • -
    • - make a veggie pie - -
    • -
    - -
    - - -
    - -
    - - - - - \ No newline at end of file diff --git a/todos/styles.css b/todos/styles.css deleted file mode 100644 index b1cfa633..00000000 --- a/todos/styles.css +++ /dev/null @@ -1,22 +0,0 @@ -body{ - background: #352f5b; -} -.container{ - max-width: 400px; -} -input[type=text], -input[type=text]:focus{ - color: #fff; - border: none; - background: rgba(0,0,0,0.2); - max-width: 400px; -} -.todos li{ - background: #423a6f; -} -.delete{ - cursor: pointer; -} -.filtered{ - display: none !important; -} \ No newline at end of file From a91f39e53753630359532b325a0eeb4b0ccfb88a Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 16:40:10 +0000 Subject: [PATCH 074/154] lesson-83 --- chapter_11/sandbox.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 06d2e263..6388db36 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -1,21 +1,20 @@ +//const before = new Date('02/01/2019 7:30:59'); +const before = new Date('February 1 2019 7:30:59'); const now = new Date(); -console.log(now); -console.log(typeof now); +const diff = now.getTime() - before.getTime(); +// const diff = now - before; -// years, months, days, times -console.log('getFullYear:', now.getFullYear()); -console.log('getMonth (0-based):', now.getMonth()); -console.log('getDate:', now.getDate()); -console.log('getDay (0-based):', now.getDay()); -console.log('getHours:', now.getHours()); -console.log('getMinutes:', now.getMinutes()); -console.log('getSeconds:', now.getSeconds()); +console.log(diff); -// timestamps -console.log('timestamp:', now.getTime()); +const mins = Math.round(diff / 1000 / 60); +const hours = Math.round(mins / 60); +const days = Math.round(hours / 24); -// date strings -console.log(now.toDateString()); -console.log(now.toTimeString()); -console.log(now.toLocaleString()); \ No newline at end of file +console.log(`the before date was ${mins} mins ago`); +console.log(`the before date was ${hours} hours ago`); +console.log(`the before date was ${days} days ago`); + +// converting timestamps to dates +const timestamp = 1675938474990; +console.log(new Date(timestamp)); \ No newline at end of file From feeef159eb0c87bcadb60e45d546eadac5220d30 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 16:45:25 +0000 Subject: [PATCH 075/154] lesson-84 --- chapter_11/index.html | 17 +++++++++++++++++ chapter_11/sandbox.js | 31 ++++++++++++++++--------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/chapter_11/index.html b/chapter_11/index.html index bfbde7b3..a8ecab67 100644 --- a/chapter_11/index.html +++ b/chapter_11/index.html @@ -4,9 +4,26 @@ Dates + +
    diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 6388db36..230c1bee 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -1,20 +1,21 @@ -//const before = new Date('02/01/2019 7:30:59'); -const before = new Date('February 1 2019 7:30:59'); -const now = new Date(); +const clock = document.querySelector('.clock'); -const diff = now.getTime() - before.getTime(); -// const diff = now - before; +const tick = () => { -console.log(diff); + const now = new Date(); + + const h = now.getHours(); + const m = now.getMinutes(); + const s = now.getSeconds(); -const mins = Math.round(diff / 1000 / 60); -const hours = Math.round(mins / 60); -const days = Math.round(hours / 24); + const html = ` + ${h} : + ${m} : + ${s} + `; -console.log(`the before date was ${mins} mins ago`); -console.log(`the before date was ${hours} hours ago`); -console.log(`the before date was ${days} days ago`); + clock.innerHTML = html; -// converting timestamps to dates -const timestamp = 1675938474990; -console.log(new Date(timestamp)); \ No newline at end of file +}; + +setInterval(tick, 1000); \ No newline at end of file From e0f884d9b41928754592106f9486a4439510c6ad Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 19 Feb 2019 17:06:12 +0000 Subject: [PATCH 076/154] lesson-85 --- chapter_11/index.html | 17 +---------------- chapter_11/sandbox.js | 28 +++++++++++----------------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/chapter_11/index.html b/chapter_11/index.html index a8ecab67..8f5c878d 100644 --- a/chapter_11/index.html +++ b/chapter_11/index.html @@ -4,27 +4,12 @@ Dates -
    + \ No newline at end of file diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 230c1bee..11fc742b 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -1,21 +1,15 @@ -const clock = document.querySelector('.clock'); +const now = new Date(); -const tick = () => { +console.log(dateFns.isToday(now)); - const now = new Date(); - - const h = now.getHours(); - const m = now.getMinutes(); - const s = now.getSeconds(); +// formatting options +console.log(dateFns.format(now, 'YYYY')); +console.log(dateFns.format(now, 'MMMM')); +console.log(dateFns.format(now, 'dddd')); +console.log(dateFns.format(now, 'Do')); +console.log(dateFns.format(now, 'dddd, Do MMMM, YYYY')); - const html = ` - ${h} : - ${m} : - ${s} - `; +// comparing dates +const before = new Date('February 1 2019 12:00:00'); - clock.innerHTML = html; - -}; - -setInterval(tick, 1000); \ No newline at end of file +console.log(dateFns.distanceInWords(now, before, {addSuffix: true})); From c943f33e40c737ede278415c03a87a54bc7151f8 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 11:00:30 +0000 Subject: [PATCH 077/154] lesson-87 --- chapter_11/index.html | 5 ++--- chapter_11/sandbox.js | 20 +++++++------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/chapter_11/index.html b/chapter_11/index.html index 8f5c878d..8266e47c 100644 --- a/chapter_11/index.html +++ b/chapter_11/index.html @@ -3,13 +3,12 @@ - Dates + Asynchronous JavaScript -
    +

    Async JavaScript

    - \ No newline at end of file diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 11fc742b..412d6b70 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -1,15 +1,9 @@ -const now = new Date(); +console.log(1); +console.log(2); -console.log(dateFns.isToday(now)); +setTimeout(() => { + console.log('callback function fired'); +}, 2000); -// formatting options -console.log(dateFns.format(now, 'YYYY')); -console.log(dateFns.format(now, 'MMMM')); -console.log(dateFns.format(now, 'dddd')); -console.log(dateFns.format(now, 'Do')); -console.log(dateFns.format(now, 'dddd, Do MMMM, YYYY')); - -// comparing dates -const before = new Date('February 1 2019 12:00:00'); - -console.log(dateFns.distanceInWords(now, before, {addSuffix: true})); +console.log(3); +console.log(4); \ No newline at end of file From 0a5f767db67e58afedbd926212b2d071926c785a Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 15:32:38 +0000 Subject: [PATCH 078/154] lesson-89 --- chapter_11/sandbox.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 412d6b70..0b5d3890 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -1,9 +1,14 @@ -console.log(1); -console.log(2); +const request = new XMLHttpRequest(); -setTimeout(() => { - console.log('callback function fired'); -}, 2000); +request.addEventListener('readystatechange', () => { + // console.log(request, request.readyState); + if(request.readyState === 4){ + // console.log(request); + console.log(request.responseText); + } else if(request.readyState === 4) { + console.log('error with request'); + } +}); -console.log(3); -console.log(4); \ No newline at end of file +request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); +request.send(); \ No newline at end of file From 0c4e97ff2e72afc1a171febc74fd269ffba74380 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:01:22 +0000 Subject: [PATCH 079/154] lesson-89 --- chapter_11/sandbox.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/chapter_11/sandbox.js b/chapter_11/sandbox.js index 0b5d3890..f299f114 100644 --- a/chapter_11/sandbox.js +++ b/chapter_11/sandbox.js @@ -5,9 +5,7 @@ request.addEventListener('readystatechange', () => { if(request.readyState === 4){ // console.log(request); console.log(request.responseText); - } else if(request.readyState === 4) { - console.log('error with request'); - } + } }); request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); From 9b3bd2e85d4d0037c16385643f041b9aeb2b3b60 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:01:49 +0000 Subject: [PATCH 080/154] lesson-89 --- {chapter_11 => chapter_12}/index.html | 0 {chapter_11 => chapter_12}/sandbox.js | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {chapter_11 => chapter_12}/index.html (100%) rename {chapter_11 => chapter_12}/sandbox.js (100%) diff --git a/chapter_11/index.html b/chapter_12/index.html similarity index 100% rename from chapter_11/index.html rename to chapter_12/index.html diff --git a/chapter_11/sandbox.js b/chapter_12/sandbox.js similarity index 100% rename from chapter_11/sandbox.js rename to chapter_12/sandbox.js From 8ce51bef8b8ab52e7fd4ef50983aa861d46f3fc0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:03:32 +0000 Subject: [PATCH 081/154] lesson-90 --- chapter_12/sandbox.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index f299f114..a99728d8 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,11 +1,12 @@ const request = new XMLHttpRequest(); request.addEventListener('readystatechange', () => { - // console.log(request, request.readyState); - if(request.readyState === 4){ - // console.log(request); + // console.log(request); + if(request.readyState === 4 && request.status === 200){ console.log(request.responseText); - } + } else if (request.readyState === 4){ + console.log('could not fetch the data'); + } }); request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); From 2559ac82464296416609455060aa0040c4c372d1 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:07:26 +0000 Subject: [PATCH 082/154] lesson-91 --- chapter_12/sandbox.js | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index a99728d8..cfb6e91a 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,13 +1,33 @@ -const request = new XMLHttpRequest(); - -request.addEventListener('readystatechange', () => { - // console.log(request); - if(request.readyState === 4 && request.status === 200){ - console.log(request.responseText); - } else if (request.readyState === 4){ - console.log('could not fetch the data'); +const getTodos = (callback) => { + + const request = new XMLHttpRequest(); + + request.addEventListener('readystatechange', () => { + + if(request.readyState === 4 && request.status === 200){ + callback(undefined, request.responseText); + } else if (request.readyState === 4){ + callback('could not fetch the data', undefined); + } + + }); + + request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); + request.send(); + +}; + +console.log(1); +console.log(2); + +getTodos((err, data) => { + console.log('callback function fired'); + if(err){ + console.log(err); + } else { + console.log(data); } }); -request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); -request.send(); \ No newline at end of file +console.log(3); +console.log(4); \ No newline at end of file From e61deeb8a48e635ffdf602e70c879abceedf6688 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:12:03 +0000 Subject: [PATCH 083/154] lesson-92 --- chapter_12/sandbox.js | 5 +++-- chapter_12/todos.json | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 chapter_12/todos.json diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index cfb6e91a..54e9daab 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -5,14 +5,15 @@ const getTodos = (callback) => { request.addEventListener('readystatechange', () => { if(request.readyState === 4 && request.status === 200){ - callback(undefined, request.responseText); + const data = JSON.parse(request.responseText); + callback(undefined, data); } else if (request.readyState === 4){ callback('could not fetch the data', undefined); } }); - request.open('GET', 'https://jsonplaceholder.typicode.com/todos/'); + request.open('GET', 'todos.json'); request.send(); }; diff --git a/chapter_12/todos.json b/chapter_12/todos.json new file mode 100644 index 00000000..b05007d9 --- /dev/null +++ b/chapter_12/todos.json @@ -0,0 +1,5 @@ +[ + {"text": "play mariokart", "author": "Shaun"}, + {"text": "buy some bread", "author": "Mario"}, + {"text": "do the plumming", "author": "Luigi"} +] \ No newline at end of file From d24b0ebf717fafecd1a652bd803d69da33a81af9 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:36:45 +0000 Subject: [PATCH 084/154] lesson-93 --- chapter_12/json/luigi.json | 5 +++++ chapter_12/json/mario.json | 5 +++++ chapter_12/json/shaun.json | 5 +++++ chapter_12/sandbox.js | 25 ++++++++++--------------- chapter_12/todos.json | 5 ----- 5 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 chapter_12/json/luigi.json create mode 100644 chapter_12/json/mario.json create mode 100644 chapter_12/json/shaun.json delete mode 100644 chapter_12/todos.json diff --git a/chapter_12/json/luigi.json b/chapter_12/json/luigi.json new file mode 100644 index 00000000..0a7cdf67 --- /dev/null +++ b/chapter_12/json/luigi.json @@ -0,0 +1,5 @@ +[ + {"text": "do the plumming", "author": "Luigi"}, + {"text": "avoid mario", "author": "Luigi"}, + {"text": "go kart racing", "author": "Luigi"} +] \ No newline at end of file diff --git a/chapter_12/json/mario.json b/chapter_12/json/mario.json new file mode 100644 index 00000000..5ab76086 --- /dev/null +++ b/chapter_12/json/mario.json @@ -0,0 +1,5 @@ +[ + {"text": "make fun of luigi", "author": "Mario"}, + {"text": "rescue peach (again)", "author": "Mario"}, + {"text": "go kart racing", "author": "Mario"} +] \ No newline at end of file diff --git a/chapter_12/json/shaun.json b/chapter_12/json/shaun.json new file mode 100644 index 00000000..838ef9af --- /dev/null +++ b/chapter_12/json/shaun.json @@ -0,0 +1,5 @@ +[ + {"text": "play mariokart", "author": "Shaun"}, + {"text": "buy some bread", "author": "Shaun"}, + {"text": "take a nap", "author": "Shaun"} +] \ No newline at end of file diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index 54e9daab..17b3d6a6 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,4 +1,4 @@ -const getTodos = (callback) => { +const getTodos = (resource, callback) => { const request = new XMLHttpRequest(); @@ -13,22 +13,17 @@ const getTodos = (callback) => { }); - request.open('GET', 'todos.json'); + request.open('GET', resource); request.send(); }; -console.log(1); -console.log(2); - -getTodos((err, data) => { - console.log('callback function fired'); - if(err){ - console.log(err); - } else { +getTodos('json/luigi.json', (err, data) => { + console.log(data); + getTodos('json/mario.json', (err, data) => { console.log(data); - } -}); - -console.log(3); -console.log(4); \ No newline at end of file + getTodos('json/shaun.json', (err, data) => { + console.log(data); + }); + }); +}); \ No newline at end of file diff --git a/chapter_12/todos.json b/chapter_12/todos.json deleted file mode 100644 index b05007d9..00000000 --- a/chapter_12/todos.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - {"text": "play mariokart", "author": "Shaun"}, - {"text": "buy some bread", "author": "Mario"}, - {"text": "do the plumming", "author": "Luigi"} -] \ No newline at end of file From b461abdd04d22b6134282f45ea905fe4298086c4 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:54:20 +0000 Subject: [PATCH 085/154] lesson-94 --- chapter_12/sandbox.js | 64 +++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index 17b3d6a6..c4baeb2d 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,29 +1,51 @@ -const getTodos = (resource, callback) => { +const getTodos = (resource) => { - const request = new XMLHttpRequest(); + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); - request.addEventListener('readystatechange', () => { + request.addEventListener('readystatechange', () => { + + if(request.readyState === 4 && request.status === 200){ + const data = JSON.parse(request.responseText); + resolve(data); + } else if (request.readyState === 4){ + reject('could not fetch the data'); + } + + }); + + request.open('GET', resource); + request.send(); + }); + +}; - if(request.readyState === 4 && request.status === 200){ - const data = JSON.parse(request.responseText); - callback(undefined, data); - } else if (request.readyState === 4){ - callback('could not fetch the data', undefined); - } +getTodos('json/luigi.json').then(data => { + console.log('promise resolved:', data); +}).catch(err => { + console.log('promise rejected:', err); +}); +// promise example +const getSomething = () => { + + return new Promise((resolve, reject) => { + // do something (fetch data) + // resolve('some data'); + reject('some error'); }); - - request.open('GET', resource); - request.send(); }; -getTodos('json/luigi.json', (err, data) => { - console.log(data); - getTodos('json/mario.json', (err, data) => { - console.log(data); - getTodos('json/shaun.json', (err, data) => { - console.log(data); - }); - }); -}); \ No newline at end of file +// getSomething().then(data => { +// console.log('promise resolved:', data); +// }, err => { +// console.log('promise rejected:', err); +// }); + +// getSomething().then(data => { +// console.log('promise resolved:', data); +// }).catch(err => { +// console.log('promise rejected:', err); +// }); + From 275f9278c43733fa778c851137e3cd2926efd0ad Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 16:58:47 +0000 Subject: [PATCH 086/154] lesson-95 --- chapter_12/sandbox.js | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index c4baeb2d..7b603bfc 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -21,31 +21,13 @@ const getTodos = (resource) => { }; getTodos('json/luigi.json').then(data => { - console.log('promise resolved:', data); + console.log('promise 1 resolved:', data); + return getTodos('json/mario.json'); +}).then(data => { + console.log('promise 2 resolved:', data); + return getTodos('json/shaun.json'); +}).then(data => { + console.log('promise 3 resolved:', data); }).catch(err => { console.log('promise rejected:', err); -}); - -// promise example -const getSomething = () => { - - return new Promise((resolve, reject) => { - // do something (fetch data) - // resolve('some data'); - reject('some error'); - }); - -}; - -// getSomething().then(data => { -// console.log('promise resolved:', data); -// }, err => { -// console.log('promise rejected:', err); -// }); - -// getSomething().then(data => { -// console.log('promise resolved:', data); -// }).catch(err => { -// console.log('promise rejected:', err); -// }); - +}); \ No newline at end of file From 868d9ca4c221dc038c87a5e373c1792d2ea12f3a Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 17:17:57 +0000 Subject: [PATCH 087/154] lesson-96 --- chapter_12/sandbox.js | 43 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index 7b603bfc..3fb4e394 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,33 +1,10 @@ -const getTodos = (resource) => { - - return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); - - request.addEventListener('readystatechange', () => { - - if(request.readyState === 4 && request.status === 200){ - const data = JSON.parse(request.responseText); - resolve(data); - } else if (request.readyState === 4){ - reject('could not fetch the data'); - } - - }); - - request.open('GET', resource); - request.send(); - }); - -}; - -getTodos('json/luigi.json').then(data => { - console.log('promise 1 resolved:', data); - return getTodos('json/mario.json'); -}).then(data => { - console.log('promise 2 resolved:', data); - return getTodos('json/shaun.json'); -}).then(data => { - console.log('promise 3 resolved:', data); -}).catch(err => { - console.log('promise rejected:', err); -}); \ No newline at end of file +// fetch API + +fetch('json/luigi.json').then(response => { + //console.log(response); + return response.json(); + }).then(data => { + console.log(data); + }).catch(err => { + console.log(err); + }); \ No newline at end of file From 06cdc27a846171630f76b23c7a1d7346cec65fe3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 17:26:31 +0000 Subject: [PATCH 088/154] lesson-97 --- chapter_12/sandbox.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index 3fb4e394..96bea4ca 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -1,10 +1,20 @@ -// fetch API - -fetch('json/luigi.json').then(response => { - //console.log(response); - return response.json(); - }).then(data => { - console.log(data); - }).catch(err => { - console.log(err); - }); \ No newline at end of file +// async & await + +const getTodos = async () => { + + let response = await fetch('json/luigi.json'); + let data = await response.json(); + return data; + +}; + +console.log(1); +console.log(2); + +getTodos() + .then(data => console.log('resolved:', data)); + +console.log(3); +console.log(4); + +// console.log(getTodos()); \ No newline at end of file From 27777e1e466b20796ce673563a2df60c6fc61ec4 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 21 Feb 2019 17:28:32 +0000 Subject: [PATCH 089/154] lesson-98 --- chapter_12/sandbox.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js index 96bea4ca..caa3cf02 100644 --- a/chapter_12/sandbox.js +++ b/chapter_12/sandbox.js @@ -3,18 +3,16 @@ const getTodos = async () => { let response = await fetch('json/luigi.json'); + + if(response.status !== 200){ + throw new Error('cannot fetch the data'); + } + let data = await response.json(); return data; }; -console.log(1); -console.log(2); - getTodos() - .then(data => console.log('resolved:', data)); - -console.log(3); -console.log(4); - -// console.log(getTodos()); \ No newline at end of file + .then(data => console.log('resolved:', data)) + .catch(err => console.log('rejected:', err.message)); \ No newline at end of file From 5a59bf296f74369a4a8b0b17987560e4477038e0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:15:53 +0000 Subject: [PATCH 090/154] lesson-99 --- chapter_12/index.html | 14 -------------- chapter_12/json/luigi.json | 5 ----- chapter_12/json/mario.json | 5 ----- chapter_12/json/shaun.json | 5 ----- chapter_12/sandbox.js | 18 ------------------ weather_app/index.html | 15 +++++++++++++++ weather_app/scripts/app.js | 0 weather_app/scripts/forecast.js | 0 weather_app/styles.css | 0 9 files changed, 15 insertions(+), 47 deletions(-) delete mode 100644 chapter_12/index.html delete mode 100644 chapter_12/json/luigi.json delete mode 100644 chapter_12/json/mario.json delete mode 100644 chapter_12/json/shaun.json delete mode 100644 chapter_12/sandbox.js create mode 100644 weather_app/index.html create mode 100644 weather_app/scripts/app.js create mode 100644 weather_app/scripts/forecast.js create mode 100644 weather_app/styles.css diff --git a/chapter_12/index.html b/chapter_12/index.html deleted file mode 100644 index 8266e47c..00000000 --- a/chapter_12/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - Asynchronous JavaScript - - - -

    Async JavaScript

    - - - - \ No newline at end of file diff --git a/chapter_12/json/luigi.json b/chapter_12/json/luigi.json deleted file mode 100644 index 0a7cdf67..00000000 --- a/chapter_12/json/luigi.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - {"text": "do the plumming", "author": "Luigi"}, - {"text": "avoid mario", "author": "Luigi"}, - {"text": "go kart racing", "author": "Luigi"} -] \ No newline at end of file diff --git a/chapter_12/json/mario.json b/chapter_12/json/mario.json deleted file mode 100644 index 5ab76086..00000000 --- a/chapter_12/json/mario.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - {"text": "make fun of luigi", "author": "Mario"}, - {"text": "rescue peach (again)", "author": "Mario"}, - {"text": "go kart racing", "author": "Mario"} -] \ No newline at end of file diff --git a/chapter_12/json/shaun.json b/chapter_12/json/shaun.json deleted file mode 100644 index 838ef9af..00000000 --- a/chapter_12/json/shaun.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - {"text": "play mariokart", "author": "Shaun"}, - {"text": "buy some bread", "author": "Shaun"}, - {"text": "take a nap", "author": "Shaun"} -] \ No newline at end of file diff --git a/chapter_12/sandbox.js b/chapter_12/sandbox.js deleted file mode 100644 index caa3cf02..00000000 --- a/chapter_12/sandbox.js +++ /dev/null @@ -1,18 +0,0 @@ -// async & await - -const getTodos = async () => { - - let response = await fetch('json/luigi.json'); - - if(response.status !== 200){ - throw new Error('cannot fetch the data'); - } - - let data = await response.json(); - return data; - -}; - -getTodos() - .then(data => console.log('resolved:', data)) - .catch(err => console.log('rejected:', err.message)); \ No newline at end of file diff --git a/weather_app/index.html b/weather_app/index.html new file mode 100644 index 00000000..f43e0895 --- /dev/null +++ b/weather_app/index.html @@ -0,0 +1,15 @@ + + + + + + + + Ninja Weather + + + + + + + \ No newline at end of file diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js new file mode 100644 index 00000000..e69de29b diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js new file mode 100644 index 00000000..e69de29b diff --git a/weather_app/styles.css b/weather_app/styles.css new file mode 100644 index 00000000..e69de29b From db4ce972ca007b9f6ccb869e71b92cf7f78d1356 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:26:21 +0000 Subject: [PATCH 091/154] lesson-100 --- weather_app/index.html | 26 ++++++++++++++++++++++++++ weather_app/styles.css | 8 ++++++++ 2 files changed, 34 insertions(+) diff --git a/weather_app/index.html b/weather_app/index.html index f43e0895..8d8835a3 100644 --- a/weather_app/index.html +++ b/weather_app/index.html @@ -8,6 +8,32 @@ Ninja Weather + +
    + +

    Weather Ninja

    + +
    + + +
    + +
    + +
    + +
    +
    +
    City name
    +
    Weather condition
    +
    + temp + °C +
    +
    +
    + +
    diff --git a/weather_app/styles.css b/weather_app/styles.css index e69de29b..00c07271 100644 --- a/weather_app/styles.css +++ b/weather_app/styles.css @@ -0,0 +1,8 @@ +body{ + background: #eeedec; + letter-spacing: 0.2em; + font-size: 0.8em; +} +.container{ + max-width: 400px; +} \ No newline at end of file From 934d1ce65143d1a00f4cdb96365bf0222656b44b Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:43:08 +0000 Subject: [PATCH 092/154] lesson-101 --- weather_app/scripts/forecast.js | 1 + 1 file changed, 1 insertion(+) diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js index e69de29b..1d512179 100644 --- a/weather_app/scripts/forecast.js +++ b/weather_app/scripts/forecast.js @@ -0,0 +1 @@ +const key = ' xvpOBAAypFh84YftzPvUCh8ZM80gbYIG'; \ No newline at end of file From 4cda4d5620a6e15927f23637ad828ed3d05ca07e Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:45:25 +0000 Subject: [PATCH 093/154] lesson-102 --- weather_app/scripts/forecast.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js index 1d512179..f78cb6f4 100644 --- a/weather_app/scripts/forecast.js +++ b/weather_app/scripts/forecast.js @@ -1 +1,18 @@ -const key = ' xvpOBAAypFh84YftzPvUCh8ZM80gbYIG'; \ No newline at end of file +const key = ' xvpOBAAypFh84YftzPvUCh8ZM80gbYIG'; + +// get city information +const getCity = async (city) => { + + const base = 'http://dataservice.accuweather.com/locations/v1/cities/search'; + const query = `?apikey=${key}&q=${city}`; + + const response = await fetch(base + query); + const data = await response.json(); + + return data[0]; + +}; + +getCity('manchester') + .then(data => console.log(data)) + .catch(err => console.log(err)); \ No newline at end of file From dbc38fe3572eb0f056002aad9dfd443d91987925 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:49:05 +0000 Subject: [PATCH 094/154] lesson-103 --- weather_app/scripts/forecast.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js index f78cb6f4..10498815 100644 --- a/weather_app/scripts/forecast.js +++ b/weather_app/scripts/forecast.js @@ -1,5 +1,18 @@ const key = ' xvpOBAAypFh84YftzPvUCh8ZM80gbYIG'; +// get weather information +const getWeather = async (id) => { + + const base = 'http://dataservice.accuweather.com/currentconditions/v1/'; + const query = `${id}?apikey=${key}`; + + const response = await fetch(base + query); + const data = await response.json(); + + return data[0]; + +}; + // get city information const getCity = async (city) => { @@ -13,6 +26,8 @@ const getCity = async (city) => { }; -getCity('manchester') - .then(data => console.log(data)) - .catch(err => console.log(err)); \ No newline at end of file +getCity('manchester').then(data => { + return getWeather(data.Key); +}).then(data => { + console.log(data); +}).catch(err => console.log(err)); \ No newline at end of file From e59f7e5bd6dc5f186cd4b5d5f0e2335020bd4fd3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 10:59:31 +0000 Subject: [PATCH 095/154] lesson-104 --- weather_app/scripts/app.js | 26 ++++++++++++++++++++++++++ weather_app/scripts/forecast.js | 8 +------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index e69de29b..b5b3e916 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -0,0 +1,26 @@ +const cityForm = document.querySelector('form'); + +const updateCity = async (city) => { + + const cityDets = await getCity(city); + const weather = await getWeather(cityDets.Key); + return { + cityDets: cityDets, + weather: weather + }; + +}; + +cityForm.addEventListener('submit', e => { + // prevent default action + e.preventDefault(); + + // get city value + const city = cityForm.city.value.trim(); + cityForm.reset(); + + // update the ui with new city + updateCity(city) + .then(data => console.log(data)) + .catch(err => console.log(err)); +}); \ No newline at end of file diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js index 10498815..84777858 100644 --- a/weather_app/scripts/forecast.js +++ b/weather_app/scripts/forecast.js @@ -24,10 +24,4 @@ const getCity = async (city) => { return data[0]; -}; - -getCity('manchester').then(data => { - return getWeather(data.Key); -}).then(data => { - console.log(data); -}).catch(err => console.log(err)); \ No newline at end of file +}; \ No newline at end of file From 5f82a5fb0eda9a7f2c7cdf64fd386d77315ab050 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 11:05:32 +0000 Subject: [PATCH 096/154] lesson-105 --- weather_app/scripts/app.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index b5b3e916..cc829a50 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -4,10 +4,7 @@ const updateCity = async (city) => { const cityDets = await getCity(city); const weather = await getWeather(cityDets.Key); - return { - cityDets: cityDets, - weather: weather - }; + return { cityDets, weather }; }; From 275114dd9b762e81751e58071911ef270a3c1e7d Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 11:09:37 +0000 Subject: [PATCH 097/154] lesson-106 --- weather_app/index.html | 11 ++--------- weather_app/scripts/app.js | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/weather_app/index.html b/weather_app/index.html index 8d8835a3..d1100667 100644 --- a/weather_app/index.html +++ b/weather_app/index.html @@ -18,19 +18,12 @@

    Weather Ninja

    -
    +
    -
    -
    City name
    -
    Weather condition
    -
    - temp - °C -
    -
    +
    diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index cc829a50..cf9b3eb5 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -1,4 +1,27 @@ const cityForm = document.querySelector('form'); +const card = document.querySelector('.card'); +const details = document.querySelector('.details'); + +const updateUI = (data) => { + + const cityDets = data.cityDets; + const weather = data.weather; + + // update details template + details.innerHTML = ` +
    ${cityDets.EnglishName}
    +
    ${weather.WeatherText}
    +
    + ${weather.Temperature.Metric.Value} + °C +
    + `; + + // remove the d-none class if present + if(card.classList.contains('d-none')){ + card.classList.remove('d-none'); + } +}; const updateCity = async (city) => { @@ -18,6 +41,6 @@ cityForm.addEventListener('submit', e => { // update the ui with new city updateCity(city) - .then(data => console.log(data)) + .then(data => updateUI(data)) .catch(err => console.log(err)); }); \ No newline at end of file From 0c3a1d4dca00533cb1f345d484052a86eaddf229 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 11:16:11 +0000 Subject: [PATCH 098/154] lesson-107 --- weather_app/scripts/app.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index cf9b3eb5..3ed0132f 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -3,9 +3,8 @@ const card = document.querySelector('.card'); const details = document.querySelector('.details'); const updateUI = (data) => { - - const cityDets = data.cityDets; - const weather = data.weather; + // destructure properties + const { cityDets, weather } = data; // update details template details.innerHTML = ` From 4fa8460583b40f180fbb42126cb2c35c628dc629 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 11:28:13 +0000 Subject: [PATCH 099/154] lesson-108 --- weather_app/img/day.svg | 14 ++++++++++ weather_app/img/icons/1.svg | 19 ++++++++++++++ weather_app/img/icons/11.svg | 13 +++++++++ weather_app/img/icons/12.svg | 13 +++++++++ weather_app/img/icons/13.svg | 22 ++++++++++++++++ weather_app/img/icons/14.svg | 21 +++++++++++++++ weather_app/img/icons/15.svg | 12 +++++++++ weather_app/img/icons/16.svg | 12 +++++++++ weather_app/img/icons/17.svg | 21 +++++++++++++++ weather_app/img/icons/18.svg | 14 ++++++++++ weather_app/img/icons/19.svg | 18 +++++++++++++ weather_app/img/icons/2.svg | 20 ++++++++++++++ weather_app/img/icons/20.svg | 19 ++++++++++++++ weather_app/img/icons/21.svg | 19 ++++++++++++++ weather_app/img/icons/22.svg | 15 +++++++++++ weather_app/img/icons/23.svg | 17 ++++++++++++ weather_app/img/icons/24.svg | 15 +++++++++++ weather_app/img/icons/25.svg | 17 ++++++++++++ weather_app/img/icons/26.svg | 17 ++++++++++++ weather_app/img/icons/27.svg | 18 +++++++++++++ weather_app/img/icons/3.svg | 20 ++++++++++++++ weather_app/img/icons/30.svg | 11 ++++++++ weather_app/img/icons/31.svg | 11 ++++++++ weather_app/img/icons/32.svg | 14 ++++++++++ weather_app/img/icons/33.svg | 11 ++++++++ weather_app/img/icons/34.svg | 11 ++++++++ weather_app/img/icons/35.svg | 16 +++++++++++ weather_app/img/icons/36.svg | 16 +++++++++++ weather_app/img/icons/37.svg | 17 ++++++++++++ weather_app/img/icons/38.svg | 16 +++++++++++ weather_app/img/icons/39.svg | 23 ++++++++++++++++ weather_app/img/icons/4.svg | 20 ++++++++++++++ weather_app/img/icons/40.svg | 23 ++++++++++++++++ weather_app/img/icons/41.svg | 18 +++++++++++++ weather_app/img/icons/42.svg | 18 +++++++++++++ weather_app/img/icons/43.svg | 21 +++++++++++++++ weather_app/img/icons/44.svg | 21 +++++++++++++++ weather_app/img/icons/5.svg | 21 +++++++++++++++ weather_app/img/icons/6.svg | 11 ++++++++ weather_app/img/icons/7.svg | 11 ++++++++ weather_app/img/icons/8.svg | 11 ++++++++ weather_app/img/night.svg | 51 ++++++++++++++++++++++++++++++++++++ weather_app/index.html | 2 +- weather_app/scripts/app.js | 14 ++++++++++ weather_app/styles.css | 7 +++++ 45 files changed, 750 insertions(+), 1 deletion(-) create mode 100644 weather_app/img/day.svg create mode 100644 weather_app/img/icons/1.svg create mode 100644 weather_app/img/icons/11.svg create mode 100644 weather_app/img/icons/12.svg create mode 100644 weather_app/img/icons/13.svg create mode 100644 weather_app/img/icons/14.svg create mode 100644 weather_app/img/icons/15.svg create mode 100644 weather_app/img/icons/16.svg create mode 100644 weather_app/img/icons/17.svg create mode 100644 weather_app/img/icons/18.svg create mode 100644 weather_app/img/icons/19.svg create mode 100644 weather_app/img/icons/2.svg create mode 100644 weather_app/img/icons/20.svg create mode 100644 weather_app/img/icons/21.svg create mode 100644 weather_app/img/icons/22.svg create mode 100644 weather_app/img/icons/23.svg create mode 100644 weather_app/img/icons/24.svg create mode 100644 weather_app/img/icons/25.svg create mode 100644 weather_app/img/icons/26.svg create mode 100644 weather_app/img/icons/27.svg create mode 100644 weather_app/img/icons/3.svg create mode 100644 weather_app/img/icons/30.svg create mode 100644 weather_app/img/icons/31.svg create mode 100644 weather_app/img/icons/32.svg create mode 100644 weather_app/img/icons/33.svg create mode 100644 weather_app/img/icons/34.svg create mode 100644 weather_app/img/icons/35.svg create mode 100644 weather_app/img/icons/36.svg create mode 100644 weather_app/img/icons/37.svg create mode 100644 weather_app/img/icons/38.svg create mode 100644 weather_app/img/icons/39.svg create mode 100644 weather_app/img/icons/4.svg create mode 100644 weather_app/img/icons/40.svg create mode 100644 weather_app/img/icons/41.svg create mode 100644 weather_app/img/icons/42.svg create mode 100644 weather_app/img/icons/43.svg create mode 100644 weather_app/img/icons/44.svg create mode 100644 weather_app/img/icons/5.svg create mode 100644 weather_app/img/icons/6.svg create mode 100644 weather_app/img/icons/7.svg create mode 100644 weather_app/img/icons/8.svg create mode 100644 weather_app/img/night.svg diff --git a/weather_app/img/day.svg b/weather_app/img/day.svg new file mode 100644 index 00000000..de48965e --- /dev/null +++ b/weather_app/img/day.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/weather_app/img/icons/1.svg b/weather_app/img/icons/1.svg new file mode 100644 index 00000000..00eaf5f6 --- /dev/null +++ b/weather_app/img/icons/1.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/weather_app/img/icons/11.svg b/weather_app/img/icons/11.svg new file mode 100644 index 00000000..2eb3dea2 --- /dev/null +++ b/weather_app/img/icons/11.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/weather_app/img/icons/12.svg b/weather_app/img/icons/12.svg new file mode 100644 index 00000000..724bb2f2 --- /dev/null +++ b/weather_app/img/icons/12.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/weather_app/img/icons/13.svg b/weather_app/img/icons/13.svg new file mode 100644 index 00000000..036d5270 --- /dev/null +++ b/weather_app/img/icons/13.svg @@ -0,0 +1,22 @@ + + + + + + diff --git a/weather_app/img/icons/14.svg b/weather_app/img/icons/14.svg new file mode 100644 index 00000000..eb4e4fc8 --- /dev/null +++ b/weather_app/img/icons/14.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/weather_app/img/icons/15.svg b/weather_app/img/icons/15.svg new file mode 100644 index 00000000..0e9b2c64 --- /dev/null +++ b/weather_app/img/icons/15.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/weather_app/img/icons/16.svg b/weather_app/img/icons/16.svg new file mode 100644 index 00000000..0e9b2c64 --- /dev/null +++ b/weather_app/img/icons/16.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/weather_app/img/icons/17.svg b/weather_app/img/icons/17.svg new file mode 100644 index 00000000..f01f2606 --- /dev/null +++ b/weather_app/img/icons/17.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/weather_app/img/icons/18.svg b/weather_app/img/icons/18.svg new file mode 100644 index 00000000..c7d0cc2c --- /dev/null +++ b/weather_app/img/icons/18.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/weather_app/img/icons/19.svg b/weather_app/img/icons/19.svg new file mode 100644 index 00000000..ebc775c0 --- /dev/null +++ b/weather_app/img/icons/19.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/weather_app/img/icons/2.svg b/weather_app/img/icons/2.svg new file mode 100644 index 00000000..c1fc09c0 --- /dev/null +++ b/weather_app/img/icons/2.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/weather_app/img/icons/20.svg b/weather_app/img/icons/20.svg new file mode 100644 index 00000000..888a922e --- /dev/null +++ b/weather_app/img/icons/20.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/weather_app/img/icons/21.svg b/weather_app/img/icons/21.svg new file mode 100644 index 00000000..888a922e --- /dev/null +++ b/weather_app/img/icons/21.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/weather_app/img/icons/22.svg b/weather_app/img/icons/22.svg new file mode 100644 index 00000000..c6d2fb5f --- /dev/null +++ b/weather_app/img/icons/22.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/weather_app/img/icons/23.svg b/weather_app/img/icons/23.svg new file mode 100644 index 00000000..e8851987 --- /dev/null +++ b/weather_app/img/icons/23.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/weather_app/img/icons/24.svg b/weather_app/img/icons/24.svg new file mode 100644 index 00000000..c6d2fb5f --- /dev/null +++ b/weather_app/img/icons/24.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/weather_app/img/icons/25.svg b/weather_app/img/icons/25.svg new file mode 100644 index 00000000..3bf11e15 --- /dev/null +++ b/weather_app/img/icons/25.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/weather_app/img/icons/26.svg b/weather_app/img/icons/26.svg new file mode 100644 index 00000000..77fbd77c --- /dev/null +++ b/weather_app/img/icons/26.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/weather_app/img/icons/27.svg b/weather_app/img/icons/27.svg new file mode 100644 index 00000000..367b602d --- /dev/null +++ b/weather_app/img/icons/27.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/weather_app/img/icons/3.svg b/weather_app/img/icons/3.svg new file mode 100644 index 00000000..c1fc09c0 --- /dev/null +++ b/weather_app/img/icons/3.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/weather_app/img/icons/30.svg b/weather_app/img/icons/30.svg new file mode 100644 index 00000000..b45d03f5 --- /dev/null +++ b/weather_app/img/icons/30.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/31.svg b/weather_app/img/icons/31.svg new file mode 100644 index 00000000..caf0fd15 --- /dev/null +++ b/weather_app/img/icons/31.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/32.svg b/weather_app/img/icons/32.svg new file mode 100644 index 00000000..03e12e54 --- /dev/null +++ b/weather_app/img/icons/32.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/weather_app/img/icons/33.svg b/weather_app/img/icons/33.svg new file mode 100644 index 00000000..a3d7f863 --- /dev/null +++ b/weather_app/img/icons/33.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/34.svg b/weather_app/img/icons/34.svg new file mode 100644 index 00000000..a3d7f863 --- /dev/null +++ b/weather_app/img/icons/34.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/35.svg b/weather_app/img/icons/35.svg new file mode 100644 index 00000000..ee057b31 --- /dev/null +++ b/weather_app/img/icons/35.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/weather_app/img/icons/36.svg b/weather_app/img/icons/36.svg new file mode 100644 index 00000000..ee057b31 --- /dev/null +++ b/weather_app/img/icons/36.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/weather_app/img/icons/37.svg b/weather_app/img/icons/37.svg new file mode 100644 index 00000000..f1f462a9 --- /dev/null +++ b/weather_app/img/icons/37.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/weather_app/img/icons/38.svg b/weather_app/img/icons/38.svg new file mode 100644 index 00000000..ee057b31 --- /dev/null +++ b/weather_app/img/icons/38.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/weather_app/img/icons/39.svg b/weather_app/img/icons/39.svg new file mode 100644 index 00000000..8bb77cad --- /dev/null +++ b/weather_app/img/icons/39.svg @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/weather_app/img/icons/4.svg b/weather_app/img/icons/4.svg new file mode 100644 index 00000000..c1fc09c0 --- /dev/null +++ b/weather_app/img/icons/4.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/weather_app/img/icons/40.svg b/weather_app/img/icons/40.svg new file mode 100644 index 00000000..8bb77cad --- /dev/null +++ b/weather_app/img/icons/40.svg @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/weather_app/img/icons/41.svg b/weather_app/img/icons/41.svg new file mode 100644 index 00000000..b17070b5 --- /dev/null +++ b/weather_app/img/icons/41.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/weather_app/img/icons/42.svg b/weather_app/img/icons/42.svg new file mode 100644 index 00000000..b17070b5 --- /dev/null +++ b/weather_app/img/icons/42.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/weather_app/img/icons/43.svg b/weather_app/img/icons/43.svg new file mode 100644 index 00000000..e90922c1 --- /dev/null +++ b/weather_app/img/icons/43.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/weather_app/img/icons/44.svg b/weather_app/img/icons/44.svg new file mode 100644 index 00000000..952452dd --- /dev/null +++ b/weather_app/img/icons/44.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/weather_app/img/icons/5.svg b/weather_app/img/icons/5.svg new file mode 100644 index 00000000..6564301c --- /dev/null +++ b/weather_app/img/icons/5.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/weather_app/img/icons/6.svg b/weather_app/img/icons/6.svg new file mode 100644 index 00000000..3ca9a4c8 --- /dev/null +++ b/weather_app/img/icons/6.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/7.svg b/weather_app/img/icons/7.svg new file mode 100644 index 00000000..3ca9a4c8 --- /dev/null +++ b/weather_app/img/icons/7.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/icons/8.svg b/weather_app/img/icons/8.svg new file mode 100644 index 00000000..3ca9a4c8 --- /dev/null +++ b/weather_app/img/icons/8.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/weather_app/img/night.svg b/weather_app/img/night.svg new file mode 100644 index 00000000..73823b3d --- /dev/null +++ b/weather_app/img/night.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/weather_app/index.html b/weather_app/index.html index d1100667..59757644 100644 --- a/weather_app/index.html +++ b/weather_app/index.html @@ -21,7 +21,7 @@

    Weather Ninja

    - +
    diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index 3ed0132f..1171bf9b 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -1,6 +1,8 @@ const cityForm = document.querySelector('form'); const card = document.querySelector('.card'); const details = document.querySelector('.details'); +const time = document.querySelector('img.time'); +const icon = document.querySelector('.icon img'); const updateUI = (data) => { // destructure properties @@ -16,6 +18,18 @@ const updateUI = (data) => {
    `; + // update the night/day & icon images + const iconSrc = `img/icons/${weather.WeatherIcon}.svg`; + icon.setAttribute('src', iconSrc); + + let timeSrc = null; + if(weather.IsDayTime){ + timeSrc = 'img/day.svg'; + } else { + timeSrc = 'img/night.svg'; + } + time.setAttribute('src', timeSrc); + // remove the d-none class if present if(card.classList.contains('d-none')){ card.classList.remove('d-none'); diff --git a/weather_app/styles.css b/weather_app/styles.css index 00c07271..4d056139 100644 --- a/weather_app/styles.css +++ b/weather_app/styles.css @@ -5,4 +5,11 @@ body{ } .container{ max-width: 400px; +} +.icon{ + position: relative; + top: -50px; + border-radius: 50%; + width: 100px; + margin-bottom: -50px; } \ No newline at end of file From 14efdc5a363f9e351041efff4f045978ad3642b9 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 11:30:15 +0000 Subject: [PATCH 100/154] lesson-109 --- weather_app/scripts/app.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index 1171bf9b..3233f2f2 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -22,12 +22,7 @@ const updateUI = (data) => { const iconSrc = `img/icons/${weather.WeatherIcon}.svg`; icon.setAttribute('src', iconSrc); - let timeSrc = null; - if(weather.IsDayTime){ - timeSrc = 'img/day.svg'; - } else { - timeSrc = 'img/night.svg'; - } + const timeSrc = weather.IsDayTime ? 'img/day.svg' : 'img/night.svg'; time.setAttribute('src', timeSrc); // remove the d-none class if present From 92180305d3a2f16265ef2057bc3d7aeb872315a0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 14:31:58 +0000 Subject: [PATCH 101/154] lesson-114 --- weather_app/scripts/app.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js index 3233f2f2..aa2f9c57 100644 --- a/weather_app/scripts/app.js +++ b/weather_app/scripts/app.js @@ -51,4 +51,14 @@ cityForm.addEventListener('submit', e => { updateCity(city) .then(data => updateUI(data)) .catch(err => console.log(err)); -}); \ No newline at end of file + + // set local storage + localStorage.setItem('city', city); + +}); + +if(localStorage.getItem('city')){ + updateCity(localStorage.getItem('city')) + .then(data => updateUI(data)) + .catch(err => console.log(err)); +} \ No newline at end of file From 1af00b45d8099ac707c594d45ecbe311ac911580 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 14:39:21 +0000 Subject: [PATCH 102/154] lesson-111 --- chapter_14/index.html | 12 +++++++ chapter_14/sandbox.js | 18 ++++++++++ weather_app/img/day.svg | 14 -------- weather_app/img/icons/1.svg | 19 ---------- weather_app/img/icons/11.svg | 13 ------- weather_app/img/icons/12.svg | 13 ------- weather_app/img/icons/13.svg | 22 ------------ weather_app/img/icons/14.svg | 21 ----------- weather_app/img/icons/15.svg | 12 ------- weather_app/img/icons/16.svg | 12 ------- weather_app/img/icons/17.svg | 21 ----------- weather_app/img/icons/18.svg | 14 -------- weather_app/img/icons/19.svg | 18 ---------- weather_app/img/icons/2.svg | 20 ----------- weather_app/img/icons/20.svg | 19 ---------- weather_app/img/icons/21.svg | 19 ---------- weather_app/img/icons/22.svg | 15 -------- weather_app/img/icons/23.svg | 17 --------- weather_app/img/icons/24.svg | 15 -------- weather_app/img/icons/25.svg | 17 --------- weather_app/img/icons/26.svg | 17 --------- weather_app/img/icons/27.svg | 18 ---------- weather_app/img/icons/3.svg | 20 ----------- weather_app/img/icons/30.svg | 11 ------ weather_app/img/icons/31.svg | 11 ------ weather_app/img/icons/32.svg | 14 -------- weather_app/img/icons/33.svg | 11 ------ weather_app/img/icons/34.svg | 11 ------ weather_app/img/icons/35.svg | 16 --------- weather_app/img/icons/36.svg | 16 --------- weather_app/img/icons/37.svg | 17 --------- weather_app/img/icons/38.svg | 16 --------- weather_app/img/icons/39.svg | 23 ------------ weather_app/img/icons/4.svg | 20 ----------- weather_app/img/icons/40.svg | 23 ------------ weather_app/img/icons/41.svg | 18 ---------- weather_app/img/icons/42.svg | 18 ---------- weather_app/img/icons/43.svg | 21 ----------- weather_app/img/icons/44.svg | 21 ----------- weather_app/img/icons/5.svg | 21 ----------- weather_app/img/icons/6.svg | 11 ------ weather_app/img/icons/7.svg | 11 ------ weather_app/img/icons/8.svg | 11 ------ weather_app/img/night.svg | 51 -------------------------- weather_app/index.html | 34 ------------------ weather_app/scripts/app.js | 64 --------------------------------- weather_app/scripts/forecast.js | 27 -------------- weather_app/styles.css | 15 -------- 48 files changed, 30 insertions(+), 868 deletions(-) create mode 100644 chapter_14/index.html create mode 100644 chapter_14/sandbox.js delete mode 100644 weather_app/img/day.svg delete mode 100644 weather_app/img/icons/1.svg delete mode 100644 weather_app/img/icons/11.svg delete mode 100644 weather_app/img/icons/12.svg delete mode 100644 weather_app/img/icons/13.svg delete mode 100644 weather_app/img/icons/14.svg delete mode 100644 weather_app/img/icons/15.svg delete mode 100644 weather_app/img/icons/16.svg delete mode 100644 weather_app/img/icons/17.svg delete mode 100644 weather_app/img/icons/18.svg delete mode 100644 weather_app/img/icons/19.svg delete mode 100644 weather_app/img/icons/2.svg delete mode 100644 weather_app/img/icons/20.svg delete mode 100644 weather_app/img/icons/21.svg delete mode 100644 weather_app/img/icons/22.svg delete mode 100644 weather_app/img/icons/23.svg delete mode 100644 weather_app/img/icons/24.svg delete mode 100644 weather_app/img/icons/25.svg delete mode 100644 weather_app/img/icons/26.svg delete mode 100644 weather_app/img/icons/27.svg delete mode 100644 weather_app/img/icons/3.svg delete mode 100644 weather_app/img/icons/30.svg delete mode 100644 weather_app/img/icons/31.svg delete mode 100644 weather_app/img/icons/32.svg delete mode 100644 weather_app/img/icons/33.svg delete mode 100644 weather_app/img/icons/34.svg delete mode 100644 weather_app/img/icons/35.svg delete mode 100644 weather_app/img/icons/36.svg delete mode 100644 weather_app/img/icons/37.svg delete mode 100644 weather_app/img/icons/38.svg delete mode 100644 weather_app/img/icons/39.svg delete mode 100644 weather_app/img/icons/4.svg delete mode 100644 weather_app/img/icons/40.svg delete mode 100644 weather_app/img/icons/41.svg delete mode 100644 weather_app/img/icons/42.svg delete mode 100644 weather_app/img/icons/43.svg delete mode 100644 weather_app/img/icons/44.svg delete mode 100644 weather_app/img/icons/5.svg delete mode 100644 weather_app/img/icons/6.svg delete mode 100644 weather_app/img/icons/7.svg delete mode 100644 weather_app/img/icons/8.svg delete mode 100644 weather_app/img/night.svg delete mode 100644 weather_app/index.html delete mode 100644 weather_app/scripts/app.js delete mode 100644 weather_app/scripts/forecast.js delete mode 100644 weather_app/styles.css diff --git a/chapter_14/index.html b/chapter_14/index.html new file mode 100644 index 00000000..61623adc --- /dev/null +++ b/chapter_14/index.html @@ -0,0 +1,12 @@ + + + + + + Local Storage + + + + + + \ No newline at end of file diff --git a/chapter_14/sandbox.js b/chapter_14/sandbox.js new file mode 100644 index 00000000..6103599a --- /dev/null +++ b/chapter_14/sandbox.js @@ -0,0 +1,18 @@ +// store data in local storage +localStorage.setItem('name', 'mario'); +localStorage.setItem('age', '50'); + +// get data from local storage +let name = localStorage.getItem('name'); +let age = localStorage.getItem('age'); + +console.log(name, age); + +// updating data +localStorage.setItem('name', 'luigi'); +localStorage.age = '40'; + +name = localStorage.getItem('name'); +age = localStorage.getItem('age'); + +console.log(name, age); diff --git a/weather_app/img/day.svg b/weather_app/img/day.svg deleted file mode 100644 index de48965e..00000000 --- a/weather_app/img/day.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/weather_app/img/icons/1.svg b/weather_app/img/icons/1.svg deleted file mode 100644 index 00eaf5f6..00000000 --- a/weather_app/img/icons/1.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/11.svg b/weather_app/img/icons/11.svg deleted file mode 100644 index 2eb3dea2..00000000 --- a/weather_app/img/icons/11.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/12.svg b/weather_app/img/icons/12.svg deleted file mode 100644 index 724bb2f2..00000000 --- a/weather_app/img/icons/12.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/13.svg b/weather_app/img/icons/13.svg deleted file mode 100644 index 036d5270..00000000 --- a/weather_app/img/icons/13.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/14.svg b/weather_app/img/icons/14.svg deleted file mode 100644 index eb4e4fc8..00000000 --- a/weather_app/img/icons/14.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/15.svg b/weather_app/img/icons/15.svg deleted file mode 100644 index 0e9b2c64..00000000 --- a/weather_app/img/icons/15.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/16.svg b/weather_app/img/icons/16.svg deleted file mode 100644 index 0e9b2c64..00000000 --- a/weather_app/img/icons/16.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/17.svg b/weather_app/img/icons/17.svg deleted file mode 100644 index f01f2606..00000000 --- a/weather_app/img/icons/17.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/18.svg b/weather_app/img/icons/18.svg deleted file mode 100644 index c7d0cc2c..00000000 --- a/weather_app/img/icons/18.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/19.svg b/weather_app/img/icons/19.svg deleted file mode 100644 index ebc775c0..00000000 --- a/weather_app/img/icons/19.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/2.svg b/weather_app/img/icons/2.svg deleted file mode 100644 index c1fc09c0..00000000 --- a/weather_app/img/icons/2.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/20.svg b/weather_app/img/icons/20.svg deleted file mode 100644 index 888a922e..00000000 --- a/weather_app/img/icons/20.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/weather_app/img/icons/21.svg b/weather_app/img/icons/21.svg deleted file mode 100644 index 888a922e..00000000 --- a/weather_app/img/icons/21.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/weather_app/img/icons/22.svg b/weather_app/img/icons/22.svg deleted file mode 100644 index c6d2fb5f..00000000 --- a/weather_app/img/icons/22.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/23.svg b/weather_app/img/icons/23.svg deleted file mode 100644 index e8851987..00000000 --- a/weather_app/img/icons/23.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/24.svg b/weather_app/img/icons/24.svg deleted file mode 100644 index c6d2fb5f..00000000 --- a/weather_app/img/icons/24.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/25.svg b/weather_app/img/icons/25.svg deleted file mode 100644 index 3bf11e15..00000000 --- a/weather_app/img/icons/25.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/26.svg b/weather_app/img/icons/26.svg deleted file mode 100644 index 77fbd77c..00000000 --- a/weather_app/img/icons/26.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/27.svg b/weather_app/img/icons/27.svg deleted file mode 100644 index 367b602d..00000000 --- a/weather_app/img/icons/27.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/3.svg b/weather_app/img/icons/3.svg deleted file mode 100644 index c1fc09c0..00000000 --- a/weather_app/img/icons/3.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/30.svg b/weather_app/img/icons/30.svg deleted file mode 100644 index b45d03f5..00000000 --- a/weather_app/img/icons/30.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/31.svg b/weather_app/img/icons/31.svg deleted file mode 100644 index caf0fd15..00000000 --- a/weather_app/img/icons/31.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/32.svg b/weather_app/img/icons/32.svg deleted file mode 100644 index 03e12e54..00000000 --- a/weather_app/img/icons/32.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/33.svg b/weather_app/img/icons/33.svg deleted file mode 100644 index a3d7f863..00000000 --- a/weather_app/img/icons/33.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/34.svg b/weather_app/img/icons/34.svg deleted file mode 100644 index a3d7f863..00000000 --- a/weather_app/img/icons/34.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/35.svg b/weather_app/img/icons/35.svg deleted file mode 100644 index ee057b31..00000000 --- a/weather_app/img/icons/35.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/36.svg b/weather_app/img/icons/36.svg deleted file mode 100644 index ee057b31..00000000 --- a/weather_app/img/icons/36.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/37.svg b/weather_app/img/icons/37.svg deleted file mode 100644 index f1f462a9..00000000 --- a/weather_app/img/icons/37.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/38.svg b/weather_app/img/icons/38.svg deleted file mode 100644 index ee057b31..00000000 --- a/weather_app/img/icons/38.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/39.svg b/weather_app/img/icons/39.svg deleted file mode 100644 index 8bb77cad..00000000 --- a/weather_app/img/icons/39.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/weather_app/img/icons/4.svg b/weather_app/img/icons/4.svg deleted file mode 100644 index c1fc09c0..00000000 --- a/weather_app/img/icons/4.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/40.svg b/weather_app/img/icons/40.svg deleted file mode 100644 index 8bb77cad..00000000 --- a/weather_app/img/icons/40.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/weather_app/img/icons/41.svg b/weather_app/img/icons/41.svg deleted file mode 100644 index b17070b5..00000000 --- a/weather_app/img/icons/41.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/42.svg b/weather_app/img/icons/42.svg deleted file mode 100644 index b17070b5..00000000 --- a/weather_app/img/icons/42.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/43.svg b/weather_app/img/icons/43.svg deleted file mode 100644 index e90922c1..00000000 --- a/weather_app/img/icons/43.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/44.svg b/weather_app/img/icons/44.svg deleted file mode 100644 index 952452dd..00000000 --- a/weather_app/img/icons/44.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/5.svg b/weather_app/img/icons/5.svg deleted file mode 100644 index 6564301c..00000000 --- a/weather_app/img/icons/5.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/6.svg b/weather_app/img/icons/6.svg deleted file mode 100644 index 3ca9a4c8..00000000 --- a/weather_app/img/icons/6.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/7.svg b/weather_app/img/icons/7.svg deleted file mode 100644 index 3ca9a4c8..00000000 --- a/weather_app/img/icons/7.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/icons/8.svg b/weather_app/img/icons/8.svg deleted file mode 100644 index 3ca9a4c8..00000000 --- a/weather_app/img/icons/8.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/weather_app/img/night.svg b/weather_app/img/night.svg deleted file mode 100644 index 73823b3d..00000000 --- a/weather_app/img/night.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/weather_app/index.html b/weather_app/index.html deleted file mode 100644 index 59757644..00000000 --- a/weather_app/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - Ninja Weather - - - -
    - -

    Weather Ninja

    - -
    - - -
    - -
    - -
    - -
    -
    -
    - -
    - - - - - \ No newline at end of file diff --git a/weather_app/scripts/app.js b/weather_app/scripts/app.js deleted file mode 100644 index aa2f9c57..00000000 --- a/weather_app/scripts/app.js +++ /dev/null @@ -1,64 +0,0 @@ -const cityForm = document.querySelector('form'); -const card = document.querySelector('.card'); -const details = document.querySelector('.details'); -const time = document.querySelector('img.time'); -const icon = document.querySelector('.icon img'); - -const updateUI = (data) => { - // destructure properties - const { cityDets, weather } = data; - - // update details template - details.innerHTML = ` -
    ${cityDets.EnglishName}
    -
    ${weather.WeatherText}
    -
    - ${weather.Temperature.Metric.Value} - °C -
    - `; - - // update the night/day & icon images - const iconSrc = `img/icons/${weather.WeatherIcon}.svg`; - icon.setAttribute('src', iconSrc); - - const timeSrc = weather.IsDayTime ? 'img/day.svg' : 'img/night.svg'; - time.setAttribute('src', timeSrc); - - // remove the d-none class if present - if(card.classList.contains('d-none')){ - card.classList.remove('d-none'); - } -}; - -const updateCity = async (city) => { - - const cityDets = await getCity(city); - const weather = await getWeather(cityDets.Key); - return { cityDets, weather }; - -}; - -cityForm.addEventListener('submit', e => { - // prevent default action - e.preventDefault(); - - // get city value - const city = cityForm.city.value.trim(); - cityForm.reset(); - - // update the ui with new city - updateCity(city) - .then(data => updateUI(data)) - .catch(err => console.log(err)); - - // set local storage - localStorage.setItem('city', city); - -}); - -if(localStorage.getItem('city')){ - updateCity(localStorage.getItem('city')) - .then(data => updateUI(data)) - .catch(err => console.log(err)); -} \ No newline at end of file diff --git a/weather_app/scripts/forecast.js b/weather_app/scripts/forecast.js deleted file mode 100644 index 84777858..00000000 --- a/weather_app/scripts/forecast.js +++ /dev/null @@ -1,27 +0,0 @@ -const key = ' xvpOBAAypFh84YftzPvUCh8ZM80gbYIG'; - -// get weather information -const getWeather = async (id) => { - - const base = 'http://dataservice.accuweather.com/currentconditions/v1/'; - const query = `${id}?apikey=${key}`; - - const response = await fetch(base + query); - const data = await response.json(); - - return data[0]; - -}; - -// get city information -const getCity = async (city) => { - - const base = 'http://dataservice.accuweather.com/locations/v1/cities/search'; - const query = `?apikey=${key}&q=${city}`; - - const response = await fetch(base + query); - const data = await response.json(); - - return data[0]; - -}; \ No newline at end of file diff --git a/weather_app/styles.css b/weather_app/styles.css deleted file mode 100644 index 4d056139..00000000 --- a/weather_app/styles.css +++ /dev/null @@ -1,15 +0,0 @@ -body{ - background: #eeedec; - letter-spacing: 0.2em; - font-size: 0.8em; -} -.container{ - max-width: 400px; -} -.icon{ - position: relative; - top: -50px; - border-radius: 50%; - width: 100px; - margin-bottom: -50px; -} \ No newline at end of file From 957f5972dccc36f4f2ae03980bc726bd545c2357 Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 14:43:05 +0000 Subject: [PATCH 103/154] lesson-112 --- chapter_14/sandbox.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/chapter_14/sandbox.js b/chapter_14/sandbox.js index 6103599a..a678d8cd 100644 --- a/chapter_14/sandbox.js +++ b/chapter_14/sandbox.js @@ -8,11 +8,13 @@ let age = localStorage.getItem('age'); console.log(name, age); -// updating data -localStorage.setItem('name', 'luigi'); -localStorage.age = '40'; +// deleting data from local storage +localStorage.removeItem('name'); +localStorage.clear(); name = localStorage.getItem('name'); age = localStorage.getItem('age'); console.log(name, age); + + From 31c7dfc3e9c5cd3f7966060e4f5d019b842dda9c Mon Sep 17 00:00:00 2001 From: Shaun Date: Mon, 25 Feb 2019 14:47:48 +0000 Subject: [PATCH 104/154] lesson-113 --- chapter_14/sandbox.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/chapter_14/sandbox.js b/chapter_14/sandbox.js index a678d8cd..bf97e983 100644 --- a/chapter_14/sandbox.js +++ b/chapter_14/sandbox.js @@ -1,20 +1,13 @@ -// store data in local storage -localStorage.setItem('name', 'mario'); -localStorage.setItem('age', '50'); +const todos = [ + {text: 'play mariokart', author: 'shaun'}, + {text: 'buy some milk', author: 'mario'}, + {text: 'buy some bread', author: 'luigi'} +]; -// get data from local storage -let name = localStorage.getItem('name'); -let age = localStorage.getItem('age'); - -console.log(name, age); - -// deleting data from local storage -localStorage.removeItem('name'); -localStorage.clear(); - -name = localStorage.getItem('name'); -age = localStorage.getItem('age'); - -console.log(name, age); +// console.log(JSON.stringify(todos)); +localStorage.setItem('todos', JSON.stringify(todos)); +const stored = localStorage.getItem('todos'); +// console.log(stored); +console.log(JSON.parse(stored)); \ No newline at end of file From c561a07d3a72307fa6ebb3dbd129f6563be82b61 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 08:10:09 +0000 Subject: [PATCH 105/154] lesson-116 --- chapter_14/sandbox.js | 13 ------------- {chapter_14 => chapter_15}/index.html | 4 ++-- chapter_15/sandbox.js | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 15 deletions(-) delete mode 100644 chapter_14/sandbox.js rename {chapter_14 => chapter_15}/index.html (74%) create mode 100644 chapter_15/sandbox.js diff --git a/chapter_14/sandbox.js b/chapter_14/sandbox.js deleted file mode 100644 index bf97e983..00000000 --- a/chapter_14/sandbox.js +++ /dev/null @@ -1,13 +0,0 @@ -const todos = [ - {text: 'play mariokart', author: 'shaun'}, - {text: 'buy some milk', author: 'mario'}, - {text: 'buy some bread', author: 'luigi'} -]; - -// console.log(JSON.stringify(todos)); -localStorage.setItem('todos', JSON.stringify(todos)); - -const stored = localStorage.getItem('todos'); -// console.log(stored); - -console.log(JSON.parse(stored)); \ No newline at end of file diff --git a/chapter_14/index.html b/chapter_15/index.html similarity index 74% rename from chapter_14/index.html rename to chapter_15/index.html index 61623adc..d5716d3a 100644 --- a/chapter_14/index.html +++ b/chapter_15/index.html @@ -3,10 +3,10 @@ - Local Storage + Object Oriented JavaScript - +

    Object Oriented JavaScript

    \ No newline at end of file diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js new file mode 100644 index 00000000..02a6d0c2 --- /dev/null +++ b/chapter_15/sandbox.js @@ -0,0 +1,26 @@ +const userOne = { + username: 'ryu', + email: 'ryu@thenetninja.co.uk', + login(){ + console.log('the user logged in'); + }, + logout(){ + console.log('the user logged out'); + } +}; + +console.log(userOne.email, userOne.username); +userOne.login(); + +const userTwo = { + username: 'chun-li', + email: 'chun.li@thenetninja.co.uk', + login(){ + console.log('the user logged in'); + }, + logout(){ + console.log('the user logged out'); + } +}; + +// const userThree = new User('shaun', 'shaun@thenetninja.co.uk'); \ No newline at end of file From 4d6220a066ad1cf9b9f7ce0f0f2f8ebda967004c Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 08:16:38 +0000 Subject: [PATCH 106/154] lesson-117 --- chapter_15/sandbox.js | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 02a6d0c2..480d0684 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,26 +1,3 @@ -const userOne = { - username: 'ryu', - email: 'ryu@thenetninja.co.uk', - login(){ - console.log('the user logged in'); - }, - logout(){ - console.log('the user logged out'); - } -}; - -console.log(userOne.email, userOne.username); -userOne.login(); - -const userTwo = { - username: 'chun-li', - email: 'chun.li@thenetninja.co.uk', - login(){ - console.log('the user logged in'); - }, - logout(){ - console.log('the user logged out'); - } -}; - -// const userThree = new User('shaun', 'shaun@thenetninja.co.uk'); \ No newline at end of file +class User { + +} \ No newline at end of file From 94ad5748ff01ec7e74baca253f5698eb655e6d81 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 08:27:12 +0000 Subject: [PATCH 107/154] lesson-118 --- chapter_15/sandbox.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 480d0684..94ff7a9a 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,3 +1,17 @@ class User { - -} \ No newline at end of file + constructor(username, email){ + // this.username = 'mario'; + this.username = username; + this.email = email; + } +} + +const userOne = new User('luigi', 'luigi@thenetninja.co.uk'); +const userTwo = new User('mario', 'mario@thenetninja.co.uk'); + +console.log(userOne, userTwo); + +// the 'new' keyword +// 1 - it creates a new empty object {} +// 2 - it binds the value of 'this' to the new empty object +// 3 - it calls the constructor function to 'build' the object \ No newline at end of file From 7198799b7c05cd71477e6ccdde0a5f07e5c384f3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 08:44:32 +0000 Subject: [PATCH 108/154] lesson-119 --- chapter_15/sandbox.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 94ff7a9a..034d26ac 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,17 +1,33 @@ class User { constructor(username, email){ - // this.username = 'mario'; this.username = username; this.email = email; + this.score = 0; + } + login(){ + console.log(`${this.username} just logged in`); + return this; + } + logout(){ + console.log(`${this.username} just logged out`); + return this; + } + incScore(){ + this.score += 1; + console.log(`${this.username} has a score of ${this.score}`); + return this; } } const userOne = new User('luigi', 'luigi@thenetninja.co.uk'); const userTwo = new User('mario', 'mario@thenetninja.co.uk'); -console.log(userOne, userTwo); +// userOne.login(); +// userOne.logout(); +// userTwo.login(); +// userTwo.logout(); -// the 'new' keyword -// 1 - it creates a new empty object {} -// 2 - it binds the value of 'this' to the new empty object -// 3 - it calls the constructor function to 'build' the object \ No newline at end of file +userTwo.login() + .incScore() + .incScore() + .logout(); From 874362e1b1067141743b8765bba560b18d7ca271 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 09:30:56 +0000 Subject: [PATCH 109/154] lesson-120 --- chapter_15/sandbox.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 034d26ac..c74fb3f3 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -19,15 +19,21 @@ class User { } } +class Admin extends User { + deleteUser(user){ + users = users.filter(u => u.username !== user.username); + return this; // allow method chaining + } +} + const userOne = new User('luigi', 'luigi@thenetninja.co.uk'); const userTwo = new User('mario', 'mario@thenetninja.co.uk'); +const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk'); + +console.log(userOne, userThree); -// userOne.login(); -// userOne.logout(); -// userTwo.login(); -// userTwo.logout(); +let users = [userOne, userTwo, userThree]; +console.log(users); -userTwo.login() - .incScore() - .incScore() - .logout(); +userThree.deleteUser(userTwo); +console.log(users); \ No newline at end of file From dc148eaed22cb051a69483ca88a44a1fcce9f76e Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 09:33:33 +0000 Subject: [PATCH 110/154] lesson-121 --- chapter_15/sandbox.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index c74fb3f3..0e17393d 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -20,6 +20,10 @@ class User { } class Admin extends User { + constructor(username, email, title){ + super(username, email); + this.title = title; + } deleteUser(user){ users = users.filter(u => u.username !== user.username); return this; // allow method chaining @@ -28,12 +32,6 @@ class Admin extends User { const userOne = new User('luigi', 'luigi@thenetninja.co.uk'); const userTwo = new User('mario', 'mario@thenetninja.co.uk'); -const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk'); - -console.log(userOne, userThree); - -let users = [userOne, userTwo, userThree]; -console.log(users); +const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk', 'black-belt ninja'); -userThree.deleteUser(userTwo); -console.log(users); \ No newline at end of file +console.log(userOne, userThree); \ No newline at end of file From 419129149c19e56224a8f9d59938563f74ee4c1a Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 09:45:02 +0000 Subject: [PATCH 111/154] lesson-122 --- chapter_15/sandbox.js | 54 +++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 0e17393d..981f3fc3 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,37 +1,25 @@ -class User { - constructor(username, email){ - this.username = username; - this.email = email; - this.score = 0; - } - login(){ - console.log(`${this.username} just logged in`); - return this; - } - logout(){ - console.log(`${this.username} just logged out`); - return this; - } - incScore(){ - this.score += 1; - console.log(`${this.username} has a score of ${this.score}`); - return this; - } -} +// constructor functions +// class User { +// constructor(username){ +// this.username = username; +// } +// } -class Admin extends User { - constructor(username, email, title){ - super(username, email); - this.title = title; - } - deleteUser(user){ - users = users.filter(u => u.username !== user.username); - return this; // allow method chaining - } +function User(username, email){ + this.username = username; + this.email = email; + this.login = function(){ + console.log(`${this.username} has logged in`); + }; } -const userOne = new User('luigi', 'luigi@thenetninja.co.uk'); -const userTwo = new User('mario', 'mario@thenetninja.co.uk'); -const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk', 'black-belt ninja'); +const userOne = new User('ryu', 'ryu@thenetninja.co.uk'); +const userTwo = new User('chun-li', 'chun.li@thenetninja.co.uk'); + +console.log(userOne, userTwo); +userOne.login(); -console.log(userOne, userThree); \ No newline at end of file +// the 'new' keyword +// 1 - it creates a new empty object {} +// 2 - it binds the value of 'this' to the new empty object +// 3 - it calls the constructor function to 'build' the object \ No newline at end of file From 48a0595418ed5b1a8d6bcfcf0566d6ac602fc23c Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 10:01:40 +0000 Subject: [PATCH 112/154] lesson-123 --- chapter_15/sandbox.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 981f3fc3..2e9b717a 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,25 +1,21 @@ -// constructor functions -// class User { -// constructor(username){ -// this.username = username; -// } -// } - function User(username, email){ this.username = username; this.email = email; - this.login = function(){ - console.log(`${this.username} has logged in`); - }; } +User.prototype.login = function(){ + console.log(`${this.username} has logged in`); + return this; +}; + +User.prototype.logout = function(){ + console.log(`${this.username} has logged out`); + return this; +}; + const userOne = new User('ryu', 'ryu@thenetninja.co.uk'); const userTwo = new User('chun-li', 'chun.li@thenetninja.co.uk'); -console.log(userOne, userTwo); -userOne.login(); +console.log(userOne); -// the 'new' keyword -// 1 - it creates a new empty object {} -// 2 - it binds the value of 'this' to the new empty object -// 3 - it calls the constructor function to 'build' the object \ No newline at end of file +userOne.login().logout(); \ No newline at end of file From f378d4e0690cc9893127a5cf336ee514d6f7bab2 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 10:10:11 +0000 Subject: [PATCH 113/154] lesson-124 --- chapter_15/sandbox.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 2e9b717a..e3952e33 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -13,9 +13,19 @@ User.prototype.logout = function(){ return this; }; +// admin +function Admin(username, email){ + User.call(this, username, email); +} + +Admin.prototype = Object.create(User.prototype); + +Admin.prototype.deleteUser = function(user){ + // delete the user +}; + const userOne = new User('ryu', 'ryu@thenetninja.co.uk'); const userTwo = new User('chun-li', 'chun.li@thenetninja.co.uk'); +const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk'); -console.log(userOne); - -userOne.login().logout(); \ No newline at end of file +console.log(userThree); \ No newline at end of file From 1e6a6112a6ea35f26d550e1640aed9c9c04cd98d Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 14:41:45 +0000 Subject: [PATCH 114/154] lesson-129 --- chapter_15/index.html | 42 ++++++++++++++++++++++++++++++++++++++++-- chapter_15/sandbox.js | 31 ------------------------------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/chapter_15/index.html b/chapter_15/index.html index d5716d3a..e11112b0 100644 --- a/chapter_15/index.html +++ b/chapter_15/index.html @@ -3,10 +3,48 @@ - Object Oriented JavaScript + + Databases (Firebase) + -

    Object Oriented JavaScript

    + +
    +

    Recipes

    +
      +
    • Mushroom pie
    • +
    • Veg curry
    • +
    +
    + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index e3952e33..e69de29b 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,31 +0,0 @@ -function User(username, email){ - this.username = username; - this.email = email; -} - -User.prototype.login = function(){ - console.log(`${this.username} has logged in`); - return this; -}; - -User.prototype.logout = function(){ - console.log(`${this.username} has logged out`); - return this; -}; - -// admin -function Admin(username, email){ - User.call(this, username, email); -} - -Admin.prototype = Object.create(User.prototype); - -Admin.prototype.deleteUser = function(user){ - // delete the user -}; - -const userOne = new User('ryu', 'ryu@thenetninja.co.uk'); -const userTwo = new User('chun-li', 'chun.li@thenetninja.co.uk'); -const userThree = new Admin('shaun', 'shaun@thenetninja.co.uk'); - -console.log(userThree); \ No newline at end of file From 55f5fe54b8d4b2747f1dc100dec4d82df66b841c Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 15:02:40 +0000 Subject: [PATCH 115/154] lesson-130 --- chapter_15/index.html | 5 +---- chapter_15/sandbox.js | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/chapter_15/index.html b/chapter_15/index.html index e11112b0..9379e76d 100644 --- a/chapter_15/index.html +++ b/chapter_15/index.html @@ -15,10 +15,7 @@

    Recipes

    -
      -
    • Mushroom pie
    • -
    • Veg curry
    • -
    +
      diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index e69de29b..9236bdc8 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -0,0 +1,23 @@ +const list = document.querySelector('ul'); + +const addRecipe = (recipe) => { + let time = recipe.created_at.toDate(); + let html = ` +
    • +
      ${recipe.title}
      +
      ${time}
      +
    • + `; + + list.innerHTML += html; +}; + +db.collection('recipes').get().then(snapshot => { + // console.log(snapshot); + snapshot.docs.forEach(doc => { + // console.log(doc.data()); + addRecipe(doc.data()); + }); +}).catch(err => { + console.log(err); +}); \ No newline at end of file From 47c21bc0e85a561f07a59e14c02deac4f6fccd2a Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 15:12:34 +0000 Subject: [PATCH 116/154] lesson-131 --- chapter_15/sandbox.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index 9236bdc8..b44220a0 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,4 +1,5 @@ const list = document.querySelector('ul'); +const form = document.querySelector('form'); const addRecipe = (recipe) => { let time = recipe.created_at.toDate(); @@ -12,12 +13,28 @@ const addRecipe = (recipe) => { list.innerHTML += html; }; +// get documents db.collection('recipes').get().then(snapshot => { - // console.log(snapshot); snapshot.docs.forEach(doc => { - // console.log(doc.data()); addRecipe(doc.data()); }); }).catch(err => { console.log(err); +}); + +// save documents +form.addEventListener('submit', e => { + e.preventDefault(); + + const now = new Date(); + const recipe = { + title: form.recipe.value, + created_at: firebase.firestore.Timestamp.fromDate(now) + }; + + db.collection('recipes').add(recipe).then(() => { + console.log('recipe added'); + }).catch(err => { + console.log(err); + }); }); \ No newline at end of file From 23febb17b07cd49d81ca9b4c43ed11abd48f26b8 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 15:23:43 +0000 Subject: [PATCH 117/154] lesson-132 --- chapter_15/sandbox.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index b44220a0..ea37c7aa 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -1,12 +1,13 @@ const list = document.querySelector('ul'); const form = document.querySelector('form'); -const addRecipe = (recipe) => { +const addRecipe = (recipe, id) => { let time = recipe.created_at.toDate(); let html = ` -
    • +
    • ${recipe.title}
      ${time}
      +
    • `; @@ -16,7 +17,7 @@ const addRecipe = (recipe) => { // get documents db.collection('recipes').get().then(snapshot => { snapshot.docs.forEach(doc => { - addRecipe(doc.data()); + addRecipe(doc.data(), doc.id); }); }).catch(err => { console.log(err); @@ -37,4 +38,16 @@ form.addEventListener('submit', e => { }).catch(err => { console.log(err); }); +}); + +// deleting data +list.addEventListener('click', e => { + // console.log(e) + if(e.target.tagName === 'BUTTON'){ + const id = e.target.parentElement.getAttribute('data-id'); + // console.log(id); + db.collection('recipes').doc(id).delete().then(() => { + console.log('recipe deleted'); + }); + } }); \ No newline at end of file From 79b79ec2c403e8aa7bc31ad8ac6532db2d155b89 Mon Sep 17 00:00:00 2001 From: Shaun Date: Thu, 28 Feb 2019 16:20:24 +0000 Subject: [PATCH 118/154] lesson-133 --- chapter_15/sandbox.js | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/chapter_15/sandbox.js b/chapter_15/sandbox.js index ea37c7aa..1f2384d1 100644 --- a/chapter_15/sandbox.js +++ b/chapter_15/sandbox.js @@ -14,13 +14,27 @@ const addRecipe = (recipe, id) => { list.innerHTML += html; }; -// get documents -db.collection('recipes').get().then(snapshot => { - snapshot.docs.forEach(doc => { - addRecipe(doc.data(), doc.id); +const deleteRecipe = (id) => { + const recipes = document.querySelectorAll('li'); + recipes.forEach(recipe => { + if(recipe.getAttribute('data-id') === id){ + recipe.remove(); + } + }); +}; + +// real-time listener +db.collection('recipes').onSnapshot(snapshot => { + console.log(snapshot.docChanges()); + snapshot.docChanges().forEach(change => { + const doc = change.doc; + if(change.type === 'added'){ + // console.log(doc); + addRecipe(doc.data(), doc.id) + } else if (change.type === 'removed'){ + deleteRecipe(doc.id); + } }); -}).catch(err => { - console.log(err); }); // save documents @@ -34,7 +48,8 @@ form.addEventListener('submit', e => { }; db.collection('recipes').add(recipe).then(() => { - console.log('recipe added'); + //console.log('recipe added'); + form.reset(); }).catch(err => { console.log(err); }); @@ -42,12 +57,10 @@ form.addEventListener('submit', e => { // deleting data list.addEventListener('click', e => { - // console.log(e) if(e.target.tagName === 'BUTTON'){ const id = e.target.parentElement.getAttribute('data-id'); - // console.log(id); db.collection('recipes').doc(id).delete().then(() => { - console.log('recipe deleted'); + // console.log('recipe deleted'); }); } }); \ No newline at end of file From 6e469dd8f224c759b30f348a1a4e1f64ad8a76ab Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 10:48:51 +0000 Subject: [PATCH 119/154] lesson-133 --- {chapter_15 => chapter_16}/index.html | 0 {chapter_15 => chapter_16}/sandbox.js | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {chapter_15 => chapter_16}/index.html (100%) rename {chapter_15 => chapter_16}/sandbox.js (100%) diff --git a/chapter_15/index.html b/chapter_16/index.html similarity index 100% rename from chapter_15/index.html rename to chapter_16/index.html diff --git a/chapter_15/sandbox.js b/chapter_16/sandbox.js similarity index 100% rename from chapter_15/sandbox.js rename to chapter_16/sandbox.js From 82cfd41abac53fbfb7ed3091d7e13739a370c5b4 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:01:42 +0000 Subject: [PATCH 120/154] lesson-134 --- chapter_16/index.html | 1 + chapter_16/sandbox.js | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/chapter_16/index.html b/chapter_16/index.html index 9379e76d..9e0c1092 100644 --- a/chapter_16/index.html +++ b/chapter_16/index.html @@ -25,6 +25,7 @@

      Recipes

      +
      diff --git a/chapter_16/sandbox.js b/chapter_16/sandbox.js index 1f2384d1..84388832 100644 --- a/chapter_16/sandbox.js +++ b/chapter_16/sandbox.js @@ -1,5 +1,6 @@ const list = document.querySelector('ul'); const form = document.querySelector('form'); +const button = document.querySelector('button'); const addRecipe = (recipe, id) => { let time = recipe.created_at.toDate(); @@ -24,12 +25,10 @@ const deleteRecipe = (id) => { }; // real-time listener -db.collection('recipes').onSnapshot(snapshot => { - console.log(snapshot.docChanges()); +const unsub = db.collection('recipes').onSnapshot(snapshot => { snapshot.docChanges().forEach(change => { const doc = change.doc; if(change.type === 'added'){ - // console.log(doc); addRecipe(doc.data(), doc.id) } else if (change.type === 'removed'){ deleteRecipe(doc.id); @@ -63,4 +62,9 @@ list.addEventListener('click', e => { // console.log('recipe deleted'); }); } +}); + +button.addEventListener('click', e => { + unsub(); + console.log('unsubscribed'); }); \ No newline at end of file From c447692a1d05987767c99469f2932f733bbebfd4 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:07:04 +0000 Subject: [PATCH 121/154] lesson-135 --- chapter_16/index.html | 48 ----------------------------- chapter_16/sandbox.js | 70 ------------------------------------------- 2 files changed, 118 deletions(-) delete mode 100644 chapter_16/index.html delete mode 100644 chapter_16/sandbox.js diff --git a/chapter_16/index.html b/chapter_16/index.html deleted file mode 100644 index 9e0c1092..00000000 --- a/chapter_16/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - Databases (Firebase) - - - - -
      -

      Recipes

      -
        -
        - -
        - -
        - -
        -
        -
        - -
        - - - - - - - \ No newline at end of file diff --git a/chapter_16/sandbox.js b/chapter_16/sandbox.js deleted file mode 100644 index 84388832..00000000 --- a/chapter_16/sandbox.js +++ /dev/null @@ -1,70 +0,0 @@ -const list = document.querySelector('ul'); -const form = document.querySelector('form'); -const button = document.querySelector('button'); - -const addRecipe = (recipe, id) => { - let time = recipe.created_at.toDate(); - let html = ` -
      • -
        ${recipe.title}
        -
        ${time}
        - -
      • - `; - - list.innerHTML += html; -}; - -const deleteRecipe = (id) => { - const recipes = document.querySelectorAll('li'); - recipes.forEach(recipe => { - if(recipe.getAttribute('data-id') === id){ - recipe.remove(); - } - }); -}; - -// real-time listener -const unsub = db.collection('recipes').onSnapshot(snapshot => { - snapshot.docChanges().forEach(change => { - const doc = change.doc; - if(change.type === 'added'){ - addRecipe(doc.data(), doc.id) - } else if (change.type === 'removed'){ - deleteRecipe(doc.id); - } - }); -}); - -// save documents -form.addEventListener('submit', e => { - e.preventDefault(); - - const now = new Date(); - const recipe = { - title: form.recipe.value, - created_at: firebase.firestore.Timestamp.fromDate(now) - }; - - db.collection('recipes').add(recipe).then(() => { - //console.log('recipe added'); - form.reset(); - }).catch(err => { - console.log(err); - }); -}); - -// deleting data -list.addEventListener('click', e => { - if(e.target.tagName === 'BUTTON'){ - const id = e.target.parentElement.getAttribute('data-id'); - db.collection('recipes').doc(id).delete().then(() => { - // console.log('recipe deleted'); - }); - } -}); - -button.addEventListener('click', e => { - unsub(); - console.log('unsubscribed'); -}); \ No newline at end of file From 9787088d310c0dfa5397af2a6685196dcd64208d Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:08:37 +0000 Subject: [PATCH 122/154] lesson-135 --- chat_project/index.html | 16 ++++++++++++++++ chat_project/scripts/app.js | 0 chat_project/scripts/chat.js | 0 chat_project/scripts/ui.js | 0 chat_project/styles.css | 0 5 files changed, 16 insertions(+) create mode 100644 chat_project/index.html create mode 100644 chat_project/scripts/app.js create mode 100644 chat_project/scripts/chat.js create mode 100644 chat_project/scripts/ui.js create mode 100644 chat_project/styles.css diff --git a/chat_project/index.html b/chat_project/index.html new file mode 100644 index 00000000..93c76a29 --- /dev/null +++ b/chat_project/index.html @@ -0,0 +1,16 @@ + + + + + + + + Ninja Chat + + + + + + + + \ No newline at end of file diff --git a/chat_project/scripts/app.js b/chat_project/scripts/app.js new file mode 100644 index 00000000..e69de29b diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js new file mode 100644 index 00000000..e69de29b diff --git a/chat_project/scripts/ui.js b/chat_project/scripts/ui.js new file mode 100644 index 00000000..e69de29b diff --git a/chat_project/styles.css b/chat_project/styles.css new file mode 100644 index 00000000..e69de29b From d2f37b24867219e30d13c73d00033b06240abfbf Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:17:36 +0000 Subject: [PATCH 123/154] lesson-136 --- chat_project/index.html | 42 +++++++++++++++++++++++++++++++++++++++++ chat_project/styles.css | 12 ++++++++++++ 2 files changed, 54 insertions(+) diff --git a/chat_project/index.html b/chat_project/index.html index 93c76a29..1efe5c10 100644 --- a/chat_project/index.html +++ b/chat_project/index.html @@ -8,6 +8,48 @@ Ninja Chat + + +
        +

        Ninja Chat

        + +
        +
        Choose a chatroom:
        + + + + +
        + +
        +
          +
          + +
          +
          +
          +
          Your message:
          +
          + +
          + +
          +
          +
          + +
          +
          +
          +
          Update name:
          +
          + +
          + +
          +
          +
          +
          +
          diff --git a/chat_project/styles.css b/chat_project/styles.css index e69de29b..06fac902 100644 --- a/chat_project/styles.css +++ b/chat_project/styles.css @@ -0,0 +1,12 @@ +.container{ + max-width: 600px; +} +.btn{ + background: #43d9be; + color: white; + outline: none !important; + box-shadow: none !important; +} +.btn:focus{ + outline: none !important; +} \ No newline at end of file From af7d98cf5768b23f382fe5d9472340e383c53b34 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:33:01 +0000 Subject: [PATCH 124/154] lesson-137 --- chat_project/index.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/chat_project/index.html b/chat_project/index.html index 1efe5c10..f61017a1 100644 --- a/chat_project/index.html +++ b/chat_project/index.html @@ -51,6 +51,22 @@

          Ninja Chat

          + + + + From 835dfd1ce0a03517d438ceb9288ec5b1e0de440e Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 11:42:11 +0000 Subject: [PATCH 125/154] lesson-138 --- chat_project/scripts/chat.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index e69de29b..b2bcff38 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -0,0 +1,26 @@ +class Chatroom { + constructor(room, username){ + this.room = room; + this.username = username; + this.chats = db.collection('chats'); + } + async addChat(message){ + // format a chat object + const now = new Date(); + const chat = { + message: message, + username: this.username, + room: this.room, + created_at: firebase.firestore.Timestamp.fromDate(now) + }; + // save the chat document + const response = await this.chats.add(chat); + return response; + } +} + +const chatroom = new Chatroom('gaming', 'shaun'); + +chatroom.addChat('hello everyone') + .then(() => console.log('chat added')) + .catch(err => console.log(err)); \ No newline at end of file From adb150e11674012b3d2a43e513b1bd2e1ee48166 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 12:49:30 +0000 Subject: [PATCH 126/154] lesson-139 --- chat_project/scripts/chat.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index b2bcff38..2ee42310 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -1,3 +1,8 @@ +// adding new chat documents +// setting up a real-time listener to get new chats +// updating the username +// updating the room + class Chatroom { constructor(room, username){ this.room = room; @@ -17,10 +22,20 @@ class Chatroom { const response = await this.chats.add(chat); return response; } + getChats(callback){ + this.chats + .onSnapshot(snapshot => { + snapshot.docChanges().forEach(change => { + if(change.type === 'added'){ + callback(change.doc.data()); + } + }); + }); + } } const chatroom = new Chatroom('gaming', 'shaun'); -chatroom.addChat('hello everyone') - .then(() => console.log('chat added')) - .catch(err => console.log(err)); \ No newline at end of file +chatroom.getChats(data => { + console.log(data); +}); \ No newline at end of file From aa3cf5b267e8048a62af8187d726dd5554127da6 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 13:03:48 +0000 Subject: [PATCH 127/154] lesson-140 --- chat_project/scripts/chat.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index 2ee42310..7445af39 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -24,6 +24,8 @@ class Chatroom { } getChats(callback){ this.chats + .where('room', '==', this.room) + .orderBy('created_at') .onSnapshot(snapshot => { snapshot.docChanges().forEach(change => { if(change.type === 'added'){ From 52dfcea2dcf18870d8fd739c581e704342640fa3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 13:28:16 +0000 Subject: [PATCH 128/154] lesson-141 --- chat_project/scripts/chat.js | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index 7445af39..cc4cc1e2 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -1,13 +1,9 @@ -// adding new chat documents -// setting up a real-time listener to get new chats -// updating the username -// updating the room - class Chatroom { constructor(room, username){ this.room = room; this.username = username; this.chats = db.collection('chats'); + this.unsub; } async addChat(message){ // format a chat object @@ -23,9 +19,9 @@ class Chatroom { return response; } getChats(callback){ - this.chats + this.unsub = this.chats .where('room', '==', this.room) - .orderBy('created_at') + .orderBy('created_at', 'desc') .onSnapshot(snapshot => { snapshot.docChanges().forEach(change => { if(change.type === 'added'){ @@ -34,10 +30,29 @@ class Chatroom { }); }); } + updateName(username){ + this.username = username; + localStorage.username = username; + } + updateRoom(room){ + if(this.unsub){ + this.unsub(); + this.room = room; + console.log('room updated'); + } + } } const chatroom = new Chatroom('gaming', 'shaun'); chatroom.getChats(data => { console.log(data); -}); \ No newline at end of file +}); + +setTimeout(() => { + chatroom.updateRoom('general'); + chatroom.updateName('yoshi'); + chatroom.getChats(data => console.log(data)); + chatroom.addChat('hello'); +}, 3000); + From 7151c01a6acca9366d32c055783848290f974206 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 13:31:41 +0000 Subject: [PATCH 129/154] lesson-141 --- chat_project/scripts/chat.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index cc4cc1e2..707204ef 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -21,7 +21,7 @@ class Chatroom { getChats(callback){ this.unsub = this.chats .where('room', '==', this.room) - .orderBy('created_at', 'desc') + .orderBy('created_at') .onSnapshot(snapshot => { snapshot.docChanges().forEach(change => { if(change.type === 'added'){ @@ -32,7 +32,6 @@ class Chatroom { } updateName(username){ this.username = username; - localStorage.username = username; } updateRoom(room){ if(this.unsub){ From ed859187530edf1cd3a7485ee0664dab990c7daa Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 13:41:05 +0000 Subject: [PATCH 130/154] lesson-141 --- chat_project/scripts/chat.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index 707204ef..34833dd0 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -34,10 +34,10 @@ class Chatroom { this.username = username; } updateRoom(room){ + this.room = room; + console.log('room updated'); if(this.unsub){ this.unsub(); - this.room = room; - console.log('room updated'); } } } @@ -52,6 +52,5 @@ setTimeout(() => { chatroom.updateRoom('general'); chatroom.updateName('yoshi'); chatroom.getChats(data => console.log(data)); - chatroom.addChat('hello'); }, 3000); From 221a77fbc516f84ae8316d36a3a99fdb661027b6 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 14:50:11 +0000 Subject: [PATCH 131/154] lesson-142 --- chat_project/scripts/app.js | 9 +++++++++ chat_project/scripts/chat.js | 13 ------------- chat_project/scripts/ui.js | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/chat_project/scripts/app.js b/chat_project/scripts/app.js index e69de29b..1d29043c 100644 --- a/chat_project/scripts/app.js +++ b/chat_project/scripts/app.js @@ -0,0 +1,9 @@ +// dom queries +const chatList = document.querySelector('.chat-list'); + +// class instances +const chatUI = new ChatUI(chatList); +const chatroom = new Chatroom('gaming', 'shaun'); + +// get chats & render +chatroom.getChats(data => chatUI.render(data)); diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js index 34833dd0..078c85f5 100644 --- a/chat_project/scripts/chat.js +++ b/chat_project/scripts/chat.js @@ -41,16 +41,3 @@ class Chatroom { } } } - -const chatroom = new Chatroom('gaming', 'shaun'); - -chatroom.getChats(data => { - console.log(data); -}); - -setTimeout(() => { - chatroom.updateRoom('general'); - chatroom.updateName('yoshi'); - chatroom.getChats(data => console.log(data)); -}, 3000); - diff --git a/chat_project/scripts/ui.js b/chat_project/scripts/ui.js index e69de29b..5c543469 100644 --- a/chat_project/scripts/ui.js +++ b/chat_project/scripts/ui.js @@ -0,0 +1,18 @@ +// render new chat templates to the DOM +// clear the list of chats (when the room changes) + +class ChatUI { + constructor(list){ + this.list = list; + } + render(data){ + const html = ` +
        • + ${data.username} + ${data.message} +
          ${data.created_at.toDate()} +
        • + `; + this.list.innerHTML += html; + } +} \ No newline at end of file From 121a83750c813a031fcf89dee6b4796dd6bbaaa3 Mon Sep 17 00:00:00 2001 From: Shaun Date: Fri, 1 Mar 2019 14:58:58 +0000 Subject: [PATCH 132/154] lesson-143 --- chat_project/index.html | 2 +- chat_project/scripts/chat.js | 2 +- chat_project/scripts/ui.js | 6 +++++- chat_project/styles.css | 9 ++++++++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/chat_project/index.html b/chat_project/index.html index f61017a1..abd58de1 100644 --- a/chat_project/index.html +++ b/chat_project/index.html @@ -51,7 +51,7 @@

          Ninja Chat

          - + + + \ No newline at end of file diff --git a/chapter_18/sandbox.js b/chapter_18/sandbox.js new file mode 100644 index 00000000..8c17302f --- /dev/null +++ b/chapter_18/sandbox.js @@ -0,0 +1,18 @@ +// rest parameter +const double = (...nums) => { + console.log(nums); + return nums.map(num => num*2); +}; + +const result = double(1,3,5,7,2,4,6,8); +console.log(result); + +// spread syntax (arrays) +const people = ['shaun', 'ryu', 'chun-li']; +const members = ['mario', 'luigi', ...people]; +console.log(members); + +// spread syntax (objects) +const person = { name: 'shaun', age: 30, job: 'net ninja' }; +const personClone = { ...person, location: 'manchester' }; +console.log(person, personClone); \ No newline at end of file diff --git a/chat_project/index.html b/chat_project/index.html deleted file mode 100644 index bde65f14..00000000 --- a/chat_project/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - Ninja Chat - - - - -
          -

          Ninja Chat

          - -
          -
          Choose a chatroom:
          - - - - -
          - -
          -
            -
            - -
            -
            -
            -
            Your message:
            -
            - -
            - -
            -
            -
            - -
            -
            -
            -
            Update name:
            -
            - -
            - -
            -
            -
            -
            -
            - - - - - - - - - - \ No newline at end of file diff --git a/chat_project/scripts/app.js b/chat_project/scripts/app.js deleted file mode 100644 index f0499d81..00000000 --- a/chat_project/scripts/app.js +++ /dev/null @@ -1,47 +0,0 @@ -// dom queries -const chatList = document.querySelector('.chat-list'); -const newChatForm = document.querySelector('.new-chat'); -const newNameForm = document.querySelector('.new-name'); -const updateMssg = document.querySelector('.update-mssg'); -const rooms = document.querySelector('.chat-rooms'); - -// add a new chat -newChatForm.addEventListener('submit', e => { - e.preventDefault(); - const message = newChatForm.message.value.trim(); - chatroom.addChat(message) - .then(() => newChatForm.reset()) - .catch(err => console.log(err)); -}); - -// update the username -newNameForm.addEventListener('submit', e => { - e.preventDefault(); - // update name via chatroom - const newName = newNameForm.name.value.trim(); - chatroom.updateName(newName); - // reset the form - newNameForm.reset(); - // show then hide the update message - updateMssg.innerText = `Your name was updated to ${newName}`; - setTimeout(() => updateMssg.innerText = '', 3000); -}); - -// update the chat room -rooms.addEventListener('click', e => { - if(e.target.tagName === 'BUTTON'){ - chatUI.clear(); - chatroom.updateRoom(e.target.getAttribute('id')); - chatroom.getChats(chat => chatUI.render(chat)); - } -}); - -// check local storage for name -const username = localStorage.username ? localStorage.username : 'anon'; - -// class instances -const chatUI = new ChatUI(chatList); -const chatroom = new Chatroom('gaming', username); - -// get chats & render -chatroom.getChats(data => chatUI.render(data)); diff --git a/chat_project/scripts/chat.js b/chat_project/scripts/chat.js deleted file mode 100644 index ef59697f..00000000 --- a/chat_project/scripts/chat.js +++ /dev/null @@ -1,44 +0,0 @@ -class Chatroom { - constructor(room, username){ - this.room = room; - this.username = username; - this.chats = db.collection('chats'); - this.unsub; - } - async addChat(message){ - // format a chat object - const now = new Date(); - const chat = { - message: message, - username: this.username, - room: this.room, - created_at: firebase.firestore.Timestamp.fromDate(now) - }; - // save the chat document - const response = await this.chats.add(chat); - return response; - } - getChats(callback){ - this.unsub = this.chats - .where('room', '==', this.room) - .orderBy('created_at') - .onSnapshot(snapshot => { - snapshot.docChanges().forEach(change => { - if(change.type === 'added'){ - callback(change.doc.data()); - } - }); - }); - } - updateName(username){ - this.username = username; - localStorage.username = username; - } - updateRoom(room){ - this.room = room; - console.log('room updated'); - if(this.unsub){ - this.unsub(); - } - } -} \ No newline at end of file diff --git a/chat_project/scripts/ui.js b/chat_project/scripts/ui.js deleted file mode 100644 index 1b7f4a71..00000000 --- a/chat_project/scripts/ui.js +++ /dev/null @@ -1,22 +0,0 @@ -class ChatUI { - constructor(list){ - this.list = list; - } - clear(){ - this.list.innerHTML = ''; - } - render(data){ - const when = dateFns.distanceInWordsToNow( - data.created_at.toDate(), - { addSuffix:true } - ); - const html = ` -
          • - ${data.username} - ${data.message} -
            ${when} -
          • - `; - this.list.innerHTML += html; - } -} \ No newline at end of file diff --git a/chat_project/styles.css b/chat_project/styles.css deleted file mode 100644 index 6c43da50..00000000 --- a/chat_project/styles.css +++ /dev/null @@ -1,19 +0,0 @@ -.container{ - max-width: 600px; -} -.btn{ - background: #43d9be; - color: white; - outline: none !important; - box-shadow: none !important; -} -.btn:focus{ - outline: none !important; -} -.username{ - font-weight: bold; -} -.time{ - font-size: 0.7em; - color: #999; -} From a84fc677a9dcc391d58ef1d14970a4694f430a00 Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 3 Mar 2019 12:20:06 +0000 Subject: [PATCH 139/154] lesson-149 --- chapter_18/sandbox.js | 45 ++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/chapter_18/sandbox.js b/chapter_18/sandbox.js index 8c17302f..8fa29458 100644 --- a/chapter_18/sandbox.js +++ b/chapter_18/sandbox.js @@ -1,18 +1,33 @@ -// rest parameter -const double = (...nums) => { - console.log(nums); - return nums.map(num => num*2); -}; +// sets +const namesArray = ['ryu', 'chun-li', 'ryu', 'shaun']; +console.log(namesArray); -const result = double(1,3,5,7,2,4,6,8); -console.log(result); +// const namesSet = new Set(['ryu', 'chun-li', 'ryu', 'shaun']); +const namesSet = new Set(namesArray); +console.log(namesSet); -// spread syntax (arrays) -const people = ['shaun', 'ryu', 'chun-li']; -const members = ['mario', 'luigi', ...people]; -console.log(members); +// const uniqueNames = [...namesSet]; +const uniqueNames = [...new Set(namesArray)]; +console.log(uniqueNames); -// spread syntax (objects) -const person = { name: 'shaun', age: 30, job: 'net ninja' }; -const personClone = { ...person, location: 'manchester' }; -console.log(person, personClone); \ No newline at end of file +const ages = new Set(); +ages.add(20); +ages.add(25).add(30); +ages.add(25); +ages.delete(30) + +console.log(ages, ages.size); +console.log(ages.has(30), ages.has(20)); + +ages.clear(); +console.log(ages); + +const ninjas = new Set([ + {name: 'shaun', age: 30}, + {name: 'crystal', age: 29}, + {name: 'chun-li', age: 32} +]); + +ninjas.forEach(ninja => { + console.log(ninja.name, ninja.age); +}); From f5c10e688b497b299bba3c5df6c3f09cc0c0dc4e Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 3 Mar 2019 12:23:54 +0000 Subject: [PATCH 140/154] lesson-150 --- chapter_18/sandbox.js | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/chapter_18/sandbox.js b/chapter_18/sandbox.js index 8fa29458..20b34e58 100644 --- a/chapter_18/sandbox.js +++ b/chapter_18/sandbox.js @@ -1,33 +1,19 @@ -// sets -const namesArray = ['ryu', 'chun-li', 'ryu', 'shaun']; -console.log(namesArray); +// symbols -// const namesSet = new Set(['ryu', 'chun-li', 'ryu', 'shaun']); -const namesSet = new Set(namesArray); -console.log(namesSet); +const symbolOne = Symbol('a generic name'); +const symbolTwo = Symbol('a generic name'); -// const uniqueNames = [...namesSet]; -const uniqueNames = [...new Set(namesArray)]; -console.log(uniqueNames); +console.log(symbolOne, typeof symbolOne); +console.log(symbolOne === symbolTwo); -const ages = new Set(); -ages.add(20); -ages.add(25).add(30); -ages.add(25); -ages.delete(30) +const ninja = {}; -console.log(ages, ages.size); -console.log(ages.has(30), ages.has(20)); +ninja.age = 30; +ninja['belt'] = 'orange'; +ninja['belt'] = 'black'; -ages.clear(); -console.log(ages); +ninja[symbolOne] = 'ryu'; +ninja[symbolTwo] = 'shaun'; -const ninjas = new Set([ - {name: 'shaun', age: 30}, - {name: 'crystal', age: 29}, - {name: 'chun-li', age: 32} -]); - -ninjas.forEach(ninja => { - console.log(ninja.name, ninja.age); -}); +console.log(ninja); +console.log(ninja[symbolOne], ninja[symbolTwo]); \ No newline at end of file From 64c801794aab7b7e87b97021759a60cb9de33330 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 15:00:56 +0000 Subject: [PATCH 141/154] lesson-153 --- chapter_18/sandbox.js | 19 - chapter_19/.babelrc | 3 + chapter_19/.gitignore | 10 + {chapter_18 => chapter_19}/index.html | 4 +- chapter_19/package-lock.json | 3021 +++++++++++++++++++++++++ chapter_19/package.json | 16 + 6 files changed, 3052 insertions(+), 21 deletions(-) delete mode 100644 chapter_18/sandbox.js create mode 100644 chapter_19/.babelrc create mode 100644 chapter_19/.gitignore rename {chapter_18 => chapter_19}/index.html (76%) create mode 100644 chapter_19/package-lock.json create mode 100644 chapter_19/package.json diff --git a/chapter_18/sandbox.js b/chapter_18/sandbox.js deleted file mode 100644 index 20b34e58..00000000 --- a/chapter_18/sandbox.js +++ /dev/null @@ -1,19 +0,0 @@ -// symbols - -const symbolOne = Symbol('a generic name'); -const symbolTwo = Symbol('a generic name'); - -console.log(symbolOne, typeof symbolOne); -console.log(symbolOne === symbolTwo); - -const ninja = {}; - -ninja.age = 30; -ninja['belt'] = 'orange'; -ninja['belt'] = 'black'; - -ninja[symbolOne] = 'ryu'; -ninja[symbolTwo] = 'shaun'; - -console.log(ninja); -console.log(ninja[symbolOne], ninja[symbolTwo]); \ No newline at end of file diff --git a/chapter_19/.babelrc b/chapter_19/.babelrc new file mode 100644 index 00000000..8645dc43 --- /dev/null +++ b/chapter_19/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/babel-env"] +} \ No newline at end of file diff --git a/chapter_19/.gitignore b/chapter_19/.gitignore new file mode 100644 index 00000000..de011701 --- /dev/null +++ b/chapter_19/.gitignore @@ -0,0 +1,10 @@ +# Dependency directories +node_modules/ + +# Logs +logs +*.log +npm-debug.log* + +# Optional npm cache directory +.npm \ No newline at end of file diff --git a/chapter_18/index.html b/chapter_19/index.html similarity index 76% rename from chapter_18/index.html rename to chapter_19/index.html index e76bf59a..ee3de60f 100644 --- a/chapter_18/index.html +++ b/chapter_19/index.html @@ -3,10 +3,10 @@ - More ES6!! + Webpack & Babel - + \ No newline at end of file diff --git a/chapter_19/package-lock.json b/chapter_19/package-lock.json new file mode 100644 index 00000000..1f52dd57 --- /dev/null +++ b/chapter_19/package-lock.json @@ -0,0 +1,3021 @@ +{ + "name": "chapter_19", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/cli": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz", + "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==", + "dev": true, + "requires": { + "chokidar": "^2.0.3", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "output-file-sync": "^2.0.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz", + "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.3.4", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.3.4", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.3.4", + "@babel/types": "^7.3.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz", + "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", + "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-define-map": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", + "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", + "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.10" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz", + "integrity": "sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.3.4", + "@babel/types": "^7.3.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "dev": true, + "requires": { + "@babel/template": "^7.1.2", + "@babel/traverse": "^7.1.5", + "@babel/types": "^7.3.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz", + "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz", + "integrity": "sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", + "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.2.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz", + "integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz", + "integrity": "sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz", + "integrity": "sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.1.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.3.4", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", + "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", + "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", + "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", + "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", + "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz", + "integrity": "sha512-VZ4+jlGOF36S7TjKs8g4ojp4MEI+ebCQZdswWb/T9I4X84j8OtFAyjXjt/M16iIm5RIZn0UMQgg/VgIwo/87vw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", + "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz", + "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.1.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz", + "integrity": "sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", + "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz", + "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.3.4", + "@babel/plugin-transform-classes": "^7.3.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.3.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.3.4", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz", + "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.3.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.3.4", + "@babel/types": "^7.3.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz", + "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "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==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz", + "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000939", + "electron-to-chromium": "^1.3.113", + "node-releases": "^1.1.8" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000941", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz", + "integrity": "sha512-4vzGb2MfZcO20VMPj1j6nRAixhmtlhkypM4fL4zhgzEucQIYiRzSqPcWIu1OF8i0FETD93FMIPWfUJCAcFvrqA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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=", + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "electron-to-chromium": { + "version": "1.3.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", + "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==", + "dev": true + }, + "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=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.9.tgz", + "integrity": "sha512-oic3GT4OtbWWKfRolz5Syw0Xus0KRFxeorLNj0s93ofX6PWyuzKjsiGxsCtWktBwwmTF6DdRRf2KreGqeOk5KA==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "output-file-sync": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true, + "optional": true + }, + "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=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.0.tgz", + "integrity": "sha512-tlYkVh6F/QXtosuyOZV2SkOtA248fjMAUWjGf8aYBvQK1ZMarbMvFBvkguSt93HhdXh20m15sc4b5EIBxXLHQQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true + }, + "regexpu-core": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.2.tgz", + "integrity": "sha512-CgGxXmuX0Cf57z7KahSHe4kaNY8gBRCFFEretQ5AHsnlLx/5VdCrQOoOz1POxLdZjPbwE5ncTspPJwp2WHPcHA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "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=", + "dev": true, + "optional": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true, + "optional": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/chapter_19/package.json b/chapter_19/package.json new file mode 100644 index 00000000..d0a3c51a --- /dev/null +++ b/chapter_19/package.json @@ -0,0 +1,16 @@ +{ + "name": "chapter_19", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", + "@babel/preset-env": "^7.3.4" + } +} From 8d5b9d40472685d0e269a4ce5cef9a6efc62faa8 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 15:15:20 +0000 Subject: [PATCH 142/154] lesson-154 --- chapter_19/.babelrc | 2 +- chapter_19/after.js | 7 +++++++ chapter_19/before.js | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 chapter_19/after.js create mode 100644 chapter_19/before.js diff --git a/chapter_19/.babelrc b/chapter_19/.babelrc index 8645dc43..8aa924d7 100644 --- a/chapter_19/.babelrc +++ b/chapter_19/.babelrc @@ -1,3 +1,3 @@ { - "presets": ["@babel/babel-env"] + "presets": ["@babel/preset-env"] } \ No newline at end of file diff --git a/chapter_19/after.js b/chapter_19/after.js new file mode 100644 index 00000000..fc736eea --- /dev/null +++ b/chapter_19/after.js @@ -0,0 +1,7 @@ +"use strict"; + +var greet = function greet(name) { + console.log("hello ".concat(name)); +}; + +greet(); diff --git a/chapter_19/before.js b/chapter_19/before.js new file mode 100644 index 00000000..8aca3248 --- /dev/null +++ b/chapter_19/before.js @@ -0,0 +1,5 @@ +const greet = (name) => { + console.log(`hello ${name}`); +}; + +greet(); \ No newline at end of file From ab93d5a0517f9379bd31692c1268677c6f110a2a Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 15:29:37 +0000 Subject: [PATCH 143/154] lesson-155 --- chapter_19/before.js | 5 ----- chapter_19/{after.js => dist/assets/bundle.js} | 4 +++- chapter_19/{ => dist}/index.html | 2 +- chapter_19/package.json | 2 +- chapter_19/src/index.js | 7 +++++++ 5 files changed, 12 insertions(+), 8 deletions(-) delete mode 100644 chapter_19/before.js rename chapter_19/{after.js => dist/assets/bundle.js} (66%) rename chapter_19/{ => dist}/index.html (84%) create mode 100644 chapter_19/src/index.js diff --git a/chapter_19/before.js b/chapter_19/before.js deleted file mode 100644 index 8aca3248..00000000 --- a/chapter_19/before.js +++ /dev/null @@ -1,5 +0,0 @@ -const greet = (name) => { - console.log(`hello ${name}`); -}; - -greet(); \ No newline at end of file diff --git a/chapter_19/after.js b/chapter_19/dist/assets/bundle.js similarity index 66% rename from chapter_19/after.js rename to chapter_19/dist/assets/bundle.js index fc736eea..81b6d1f9 100644 --- a/chapter_19/after.js +++ b/chapter_19/dist/assets/bundle.js @@ -4,4 +4,6 @@ var greet = function greet(name) { console.log("hello ".concat(name)); }; -greet(); +greet('mario'); +greet('luigi'); +greet('link'); diff --git a/chapter_19/index.html b/chapter_19/dist/index.html similarity index 84% rename from chapter_19/index.html rename to chapter_19/dist/index.html index ee3de60f..2a8fdedf 100644 --- a/chapter_19/index.html +++ b/chapter_19/dist/index.html @@ -7,6 +7,6 @@ - + \ No newline at end of file diff --git a/chapter_19/package.json b/chapter_19/package.json index d0a3c51a..d821afd4 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js" }, "author": "", "license": "ISC", diff --git a/chapter_19/src/index.js b/chapter_19/src/index.js new file mode 100644 index 00000000..a7fdd097 --- /dev/null +++ b/chapter_19/src/index.js @@ -0,0 +1,7 @@ +const greet = name => { + console.log(`hello ${name}`); +}; + +greet('mario'); +greet('luigi'); +greet('link'); \ No newline at end of file From 7a3012845eb6536adcc6987e86058078a4fc7d32 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 15:46:20 +0000 Subject: [PATCH 144/154] lesson-157 --- chapter_19/webpack.config.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 chapter_19/webpack.config.js diff --git a/chapter_19/webpack.config.js b/chapter_19/webpack.config.js new file mode 100644 index 00000000..d30331a8 --- /dev/null +++ b/chapter_19/webpack.config.js @@ -0,0 +1,9 @@ +const path = require('path'); + +module.exports = { + entry: './src/index.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'bundle.js' + } +}; \ No newline at end of file From 0758162c9bd8829ba5e9c08a3b83286bc7a15e78 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 15:54:07 +0000 Subject: [PATCH 145/154] lesson-159 --- chapter_19/dist/bundle.js | 1 + chapter_19/package-lock.json | 2158 +++++++++++++++++++++++++++++++++- chapter_19/package.json | 7 +- 3 files changed, 2134 insertions(+), 32 deletions(-) create mode 100644 chapter_19/dist/bundle.js diff --git a/chapter_19/dist/bundle.js b/chapter_19/dist/bundle.js new file mode 100644 index 00000000..7b876955 --- /dev/null +++ b/chapter_19/dist/bundle.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){const n=e=>{console.log(`hello ${e}`)};n("mario"),n("luigi"),n("link")}]); \ No newline at end of file diff --git a/chapter_19/package-lock.json b/chapter_19/package-lock.json index 1f52dd57..3024b5ed 100644 --- a/chapter_19/package-lock.json +++ b/chapter_19/package-lock.json @@ -776,6 +776,236 @@ "to-fast-properties": "^2.0.0" } }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -790,7 +1020,6 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -801,13 +1030,18 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, - "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } } } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -832,6 +1066,43 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -842,8 +1113,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true, - "optional": true + "dev": true }, "atob": { "version": "2.1.2", @@ -912,12 +1182,35 @@ } } }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, "binary-extensions": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", - "dev": true, - "optional": true + "dev": true + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true }, "brace-expansion": { "version": "1.1.11", @@ -958,6 +1251,83 @@ } } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz", @@ -969,6 +1339,57 @@ "node-releases": "^1.1.8" } }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -986,6 +1407,12 @@ "unset-value": "^1.0.0" } }, + "camelcase": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true + }, "caniuse-lite": { "version": "1.0.30000941", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz", @@ -1008,7 +1435,6 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", "dev": true, - "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -1024,6 +1450,31 @@ "upath": "^1.1.0" } }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1047,6 +1498,23 @@ } } }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "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=", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1078,6 +1546,12 @@ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -1090,6 +1564,33 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -1099,6 +1600,20 @@ "safe-buffer": "~5.1.1" } }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -1109,8 +1624,88 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, - "optional": true + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true }, "debug": { "version": "2.6.9", @@ -1121,6 +1716,12 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -1168,24 +1769,175 @@ } } }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "electron-to-chromium": { "version": "1.3.113", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==", "dev": true }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "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=", "dev": true }, + "eslint-scope": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", + "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1221,6 +1973,15 @@ } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -1307,6 +2068,24 @@ } } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1330,6 +2109,59 @@ } } }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1345,12 +2177,34 @@ "map-cache": "^0.2.2" } }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1398,12 +2252,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1418,17 +2274,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1545,7 +2404,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1557,6 +2417,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1571,6 +2432,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1578,12 +2440,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -1602,6 +2466,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1682,7 +2547,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1694,6 +2560,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1815,6 +2682,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1886,6 +2754,21 @@ } } }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -1911,7 +2794,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, - "optional": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -1922,13 +2804,36 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, - "optional": true, "requires": { "is-extglob": "^2.1.0" } } } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", @@ -1979,6 +2884,86 @@ } } }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1995,6 +2980,18 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -2004,6 +3001,12 @@ "loose-envify": "^1.0.0" } }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2029,7 +3032,6 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, - "optional": true, "requires": { "binary-extensions": "^1.0.0" } @@ -2091,12 +3093,17 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, - "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -2136,6 +3143,12 @@ "isobject": "^3.0.1" } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -2148,6 +3161,12 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -2172,6 +3191,18 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", @@ -2195,6 +3226,59 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", @@ -2210,6 +3294,39 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -2225,6 +3342,38 @@ "object-visit": "^1.0.0" } }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2246,6 +3395,34 @@ "to-regex": "^3.0.2" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2261,6 +3438,24 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -2291,6 +3486,20 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2323,6 +3532,57 @@ "to-regex": "^3.0.1" } }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, "node-releases": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.9.tgz", @@ -2336,8 +3596,22 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, - "optional": true + "requires": { + "path-key": "^2.0.0" + } + }, + "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=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -2397,6 +3671,23 @@ "wrappy": "1" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, "output-file-sync": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", @@ -2408,18 +3699,108 @@ "mkdirp": "^0.5.1" } }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true, - "optional": true + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -2427,12 +3808,46 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -2445,19 +3860,119 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, - "optional": true + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, - "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2473,7 +3988,6 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, - "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -2561,8 +4075,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true + "dev": true }, "repeat-element": { "version": "1.1.3", @@ -2576,6 +4089,18 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "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=", + "dev": true + }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", @@ -2585,6 +4110,31 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -2597,6 +4147,34 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2612,12 +4190,35 @@ "ret": "~0.1.10" } }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, + "serialize-javascript": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -2641,6 +4242,43 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -2754,6 +4392,12 @@ } } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -2773,6 +4417,24 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -2788,6 +4450,15 @@ "extend-shallow": "^3.0.0" } }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -2809,16 +4480,79 @@ } } }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "optional": true, "requires": { "safe-buffer": "~5.1.0" } }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2828,6 +4562,86 @@ "has-flag": "^3.0.0" } }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "dev": true + }, + "terser": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", + "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.9" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -2882,6 +4696,24 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -2945,6 +4777,24 @@ } } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -2989,8 +4839,16 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, - "optional": true + "requires": { + "punycode": "^2.1.0" + } }, "urix": { "version": "0.1.0", @@ -2998,24 +4856,264 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", "dev": true, - "optional": true + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.29.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", + "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz", + "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.4" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/chapter_19/package.json b/chapter_19/package.json index d821afd4..4f192df8 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -4,13 +4,16 @@ "description": "", "main": "index.js", "scripts": { - "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js" + "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", + "webpack": "node_modules/.bin/webpack" }, "author": "", "license": "ISC", "devDependencies": { "@babel/cli": "^7.2.3", "@babel/core": "^7.3.4", - "@babel/preset-env": "^7.3.4" + "@babel/preset-env": "^7.3.4", + "webpack": "^4.29.6", + "webpack-cli": "^3.2.3" } } From 66e2fafb8d1c64f857ad8eaefc67b7a36846bc6f Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:23:43 +0000 Subject: [PATCH 146/154] lesson-159 --- chapter_19/dist/assets/bundle.js | 10 +--------- chapter_19/dist/bundle.js | 2 +- chapter_19/package.json | 2 +- chapter_19/src/dom.js | 21 +++++++++++++++++++++ chapter_19/src/index.js | 14 ++++++++------ chapter_19/webpack.config.js | 2 +- 6 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 chapter_19/src/dom.js diff --git a/chapter_19/dist/assets/bundle.js b/chapter_19/dist/assets/bundle.js index 81b6d1f9..7b670949 100644 --- a/chapter_19/dist/assets/bundle.js +++ b/chapter_19/dist/assets/bundle.js @@ -1,9 +1 @@ -"use strict"; - -var greet = function greet(name) { - console.log("hello ".concat(name)); -}; - -greet('mario'); -greet('luigi'); -greet('link'); +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t),console.log("dom.js file");const o=document.querySelector("body");console.log("index.js file"),(e=>{const t=document.createElement("h1");t.textContent=e,o.appendChild(t)})("hello, world from index.js"),o.style.background="peachpuff",console.log("mario@thenetninja.co.uk")}]); \ No newline at end of file diff --git a/chapter_19/dist/bundle.js b/chapter_19/dist/bundle.js index 7b876955..9812cfd2 100644 --- a/chapter_19/dist/bundle.js +++ b/chapter_19/dist/bundle.js @@ -1 +1 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){const n=e=>{console.log(`hello ${e}`)};n("mario"),n("luigi"),n("link")}]); \ No newline at end of file +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);n(1);console.log("index.js file")},function(e,t){console.log("dom.js file");const n=document.querySelector("body");n.style.background="peachpuff",(e=>{const t=document.createElement("h1");t.textContent=e,n.appendChild(t)})("hello, world from dom.js")}]); \ No newline at end of file diff --git a/chapter_19/package.json b/chapter_19/package.json index 4f192df8..90162f2f 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", - "webpack": "node_modules/.bin/webpack" + "webpack": "node_modules/.bin/webpack -w" }, "author": "", "license": "ISC", diff --git a/chapter_19/src/dom.js b/chapter_19/src/dom.js new file mode 100644 index 00000000..6b65bad5 --- /dev/null +++ b/chapter_19/src/dom.js @@ -0,0 +1,21 @@ +console.log('dom.js file'); + +// dom queries +const body = document.querySelector('body'); + +const styleBody = () => { + body.style.background = 'peachpuff'; +}; + +const addTitle = (text) => { + const title = document.createElement('h1'); + title.textContent = text; + body.appendChild(title); +}; + +const contact = 'mario@thenetninja.co.uk'; + +// styleBody(); +// addTitle('hello, world from dom.js'); + +export { styleBody, addTitle, contact }; \ No newline at end of file diff --git a/chapter_19/src/index.js b/chapter_19/src/index.js index a7fdd097..2e671082 100644 --- a/chapter_19/src/index.js +++ b/chapter_19/src/index.js @@ -1,7 +1,9 @@ -const greet = name => { - console.log(`hello ${name}`); -}; +// import './dom'; +import { styleBody, addTitle, contact } from './dom'; -greet('mario'); -greet('luigi'); -greet('link'); \ No newline at end of file +console.log('index.js file'); + +addTitle('hello, world from index.js'); +styleBody(); + +console.log(contact); \ No newline at end of file diff --git a/chapter_19/webpack.config.js b/chapter_19/webpack.config.js index d30331a8..54fb3e25 100644 --- a/chapter_19/webpack.config.js +++ b/chapter_19/webpack.config.js @@ -3,7 +3,7 @@ const path = require('path'); module.exports = { entry: './src/index.js', output: { - path: path.resolve(__dirname, 'dist'), + path: path.resolve(__dirname, 'dist/assets'), filename: 'bundle.js' } }; \ No newline at end of file From 0f1465b51a683cc69ccd9760794a466b21bb04fc Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:32:41 +0000 Subject: [PATCH 147/154] lesson-160 --- chapter_19/dist/assets/bundle.js | 2 +- chapter_19/src/data.js | 15 +++++++++++++++ chapter_19/src/index.js | 12 ++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 chapter_19/src/data.js diff --git a/chapter_19/dist/assets/bundle.js b/chapter_19/dist/assets/bundle.js index 7b670949..85aa39ce 100644 --- a/chapter_19/dist/assets/bundle.js +++ b/chapter_19/dist/assets/bundle.js @@ -1 +1 @@ -!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t),console.log("dom.js file");const o=document.querySelector("body");console.log("index.js file"),(e=>{const t=document.createElement("h1");t.textContent=e,o.appendChild(t)})("hello, world from index.js"),o.style.background="peachpuff",console.log("mario@thenetninja.co.uk")}]); \ No newline at end of file +!function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";t.r(r);const n=[{name:"mario",premium:!0},{name:"luigi",premium:!1},{name:"yoshi",premium:!0},{name:"toad",premium:!0},{name:"peach",premium:!1}],o=(e=>e.filter(e=>e.premium))(n);console.log(n,o)}]); \ No newline at end of file diff --git a/chapter_19/src/data.js b/chapter_19/src/data.js new file mode 100644 index 00000000..896a9ecc --- /dev/null +++ b/chapter_19/src/data.js @@ -0,0 +1,15 @@ +const users = [ + { name: 'mario', premium: true }, + { name: 'luigi', premium: false }, + { name: 'yoshi', premium: true }, + { name: 'toad', premium: true }, + { name: 'peach', premium: false } +]; + +// export default users; + +const getPremUsers = (users) => { + return users.filter(user => user.premium); +}; + +export { getPremUsers, users as default }; \ No newline at end of file diff --git a/chapter_19/src/index.js b/chapter_19/src/index.js index 2e671082..63977ce9 100644 --- a/chapter_19/src/index.js +++ b/chapter_19/src/index.js @@ -1,9 +1,5 @@ -// import './dom'; -import { styleBody, addTitle, contact } from './dom'; +// import { styleBody, addTitle, contact } from './dom'; +import users, { getPremUsers } from './data'; -console.log('index.js file'); - -addTitle('hello, world from index.js'); -styleBody(); - -console.log(contact); \ No newline at end of file +const premUsers = getPremUsers(users); +console.log(users, premUsers); From 0552d031d87e4f08e34a4b317132a2358578c4bc Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:35:41 +0000 Subject: [PATCH 148/154] lesson-161 --- chapter_19/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter_19/package.json b/chapter_19/package.json index 90162f2f..4f192df8 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", - "webpack": "node_modules/.bin/webpack -w" + "webpack": "node_modules/.bin/webpack" }, "author": "", "license": "ISC", From 963ef493c720e7d0243b15b81929105289d3e4a6 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:36:10 +0000 Subject: [PATCH 149/154] lesson-161 --- chapter_19/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter_19/package.json b/chapter_19/package.json index 4f192df8..90162f2f 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", - "webpack": "node_modules/.bin/webpack" + "webpack": "node_modules/.bin/webpack -w" }, "author": "", "license": "ISC", From 78cd705c59d1a99bea4ac08d66fa5a760845dd09 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:43:28 +0000 Subject: [PATCH 150/154] lesson-162 --- chapter_19/package-lock.json | 1224 +++++++++++++++++++++++++++++++++- chapter_19/package.json | 6 +- chapter_19/src/data.js | 3 +- chapter_19/webpack.config.js | 4 + 4 files changed, 1226 insertions(+), 11 deletions(-) diff --git a/chapter_19/package-lock.json b/chapter_19/package-lock.json index 3024b5ed..20799d44 100644 --- a/chapter_19/package-lock.json +++ b/chapter_19/package-lock.json @@ -964,6 +964,16 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, "acorn": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", @@ -1000,6 +1010,18 @@ "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", "dev": true }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -1060,6 +1082,27 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1109,6 +1152,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", @@ -1188,6 +1237,12 @@ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -1212,6 +1267,38 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1356,6 +1443,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -1368,6 +1461,12 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, "cacache": { "version": "11.3.2", "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", @@ -1558,6 +1657,30 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, + "compressible": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", + "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", + "dev": true, + "requires": { + "mime-db": ">= 1.38.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1576,6 +1699,12 @@ "typedarray": "^0.0.6" } }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1591,6 +1720,18 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -1600,6 +1741,18 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -1728,6 +1881,22 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "default-gateway": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.1.2.tgz", + "integrity": "sha512-xhJUAp3u02JsBGovj0V6B6uYhKCUOmiNc8xGmReUwGu77NmvcpxPVB0pCielxMFumO7CmXBG02XjM8HB97k8Hw==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -1769,6 +1938,26 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1779,12 +1968,24 @@ "minimalistic-assert": "^1.0.0" } }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -1796,6 +1997,31 @@ "randombytes": "^2.0.0" } }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -1814,6 +2040,12 @@ "stream-shift": "^1.0.0" } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, "electron-to-chromium": { "version": "1.3.113", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", @@ -1841,6 +2073,12 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -1870,6 +2108,12 @@ "prr": "~1.0.1" } }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1907,12 +2151,33 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, "events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", "dev": true }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -1982,6 +2247,52 @@ "homedir-polyfill": "^1.0.1" } }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + } + } + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2080,6 +2391,15 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -2109,6 +2429,21 @@ } } }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, "find-cache-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", @@ -2162,12 +2497,44 @@ "readable-stream": "^2.3.6" } }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2177,6 +2544,12 @@ "map-cache": "^0.2.2" } }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2231,7 +2604,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2646,7 +3020,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2702,6 +3077,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2745,12 +3121,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2840,12 +3218,39 @@ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2924,12 +3329,86 @@ "parse-passwd": "^1.0.0" } }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", @@ -2986,6 +3465,24 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "internal-ip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.2.0.tgz", + "integrity": "sha512-ZY8Rk+hlvFeuMmG5uH1MXhhdeMntmIaxaInvAmzMq/SHV8rv4Kh+6GiQNNDQd0wZFrcO+FiTBo8lui/osKOyJw==", + "dev": true, + "requires": { + "default-gateway": "^4.0.1", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + } + } + }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -3007,6 +3504,24 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3128,6 +3643,30 @@ } } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -3155,6 +3694,12 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3203,6 +3748,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", @@ -3220,6 +3771,12 @@ } } }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -3285,6 +3842,12 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -3353,6 +3916,12 @@ "safe-buffer": "^5.1.2" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, "mem": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", @@ -3374,10 +3943,22 @@ "readable-stream": "^2.0.1" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -3405,6 +3986,27 @@ "brorand": "^1.0.1" } }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -3506,6 +4108,22 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, "nan": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", @@ -3532,6 +4150,12 @@ "to-regex": "^3.0.1" } }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, "neo-async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", @@ -3544,6 +4168,12 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, "node-libs-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", @@ -3613,6 +4243,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -3662,6 +4298,27 @@ "isobject": "^3.0.1" } }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3671,6 +4328,24 @@ "wrappy": "1" } }, + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -3735,6 +4410,12 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", @@ -3778,6 +4459,12 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -3808,6 +4495,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -3820,6 +4513,12 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -3839,6 +4538,21 @@ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -3848,6 +4562,17 @@ "find-up": "^3.0.0" } }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -3878,6 +4603,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -3937,6 +4672,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -3949,6 +4690,12 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -3968,6 +4715,24 @@ "safe-buffer": "^5.1.0" } }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -4101,6 +4866,12 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", @@ -4190,6 +4961,12 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -4201,18 +4978,81 @@ "ajv-keywords": "^3.1.0" } }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, "serialize-javascript": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", "dev": true }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -4248,6 +5088,12 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -4392,6 +5238,56 @@ } } }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -4441,6 +5337,78 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "readable-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -4480,6 +5448,12 @@ } } }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -4627,6 +5601,12 @@ "xtend": "~4.0.1" } }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -4708,6 +5688,16 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -4795,6 +5785,12 @@ "imurmurhash": "^0.1.4" } }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -4874,6 +5870,16 @@ } } }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -4895,12 +5901,30 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, "v8-compile-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", "dev": true }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -4921,6 +5945,15 @@ "neo-async": "^2.5.0" } }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, "webpack": { "version": "4.29.6", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", @@ -4972,6 +6005,159 @@ "yargs": "^12.0.4" } }, + "webpack-dev-middleware": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.0.tgz", + "integrity": "sha512-oeXA3m+5gbYbDBGo4SvKpAHJJEGMoekUbHgo1RK7CP1sz7/WOSeu/dWJtSTk+rzDCLkPwQhGocgIq6lQqOyOwg==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz", + "integrity": "sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^4.1.1", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.2.0", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.5.1", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, "webpack-sources": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", @@ -4990,6 +6176,22 @@ } } }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -5067,6 +6269,12 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/chapter_19/package.json b/chapter_19/package.json index 90162f2f..a36d4562 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -5,7 +5,8 @@ "main": "index.js", "scripts": { "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", - "webpack": "node_modules/.bin/webpack -w" + "webpack": "node_modules/.bin/webpack -w", + "serve": "webpack-dev-server" }, "author": "", "license": "ISC", @@ -14,6 +15,7 @@ "@babel/core": "^7.3.4", "@babel/preset-env": "^7.3.4", "webpack": "^4.29.6", - "webpack-cli": "^3.2.3" + "webpack-cli": "^3.2.3", + "webpack-dev-server": "^3.2.1" } } diff --git a/chapter_19/src/data.js b/chapter_19/src/data.js index 896a9ecc..82b4780d 100644 --- a/chapter_19/src/data.js +++ b/chapter_19/src/data.js @@ -3,7 +3,8 @@ const users = [ { name: 'luigi', premium: false }, { name: 'yoshi', premium: true }, { name: 'toad', premium: true }, - { name: 'peach', premium: false } + { name: 'peach', premium: false }, + { name: 'bowser', premium: false } ]; // export default users; diff --git a/chapter_19/webpack.config.js b/chapter_19/webpack.config.js index 54fb3e25..65f85f19 100644 --- a/chapter_19/webpack.config.js +++ b/chapter_19/webpack.config.js @@ -5,5 +5,9 @@ module.exports = { output: { path: path.resolve(__dirname, 'dist/assets'), filename: 'bundle.js' + }, + devServer: { + contentBase: path.resolve(__dirname, 'dist'), + publicPath: '/assets/' } }; \ No newline at end of file From 23ed16759132f9bee0394b30b59777feaf71391c Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:47:37 +0000 Subject: [PATCH 151/154] lesson-163 --- chapter_19/dist/assets/bundle.js | 2 +- chapter_19/package.json | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/chapter_19/dist/assets/bundle.js b/chapter_19/dist/assets/bundle.js index 85aa39ce..5abbeed7 100644 --- a/chapter_19/dist/assets/bundle.js +++ b/chapter_19/dist/assets/bundle.js @@ -1 +1 @@ -!function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";t.r(r);const n=[{name:"mario",premium:!0},{name:"luigi",premium:!1},{name:"yoshi",premium:!0},{name:"toad",premium:!0},{name:"peach",premium:!1}],o=(e=>e.filter(e=>e.premium))(n);console.log(n,o)}]); \ No newline at end of file +!function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";t.r(r);const n=[{name:"mario",premium:!0},{name:"luigi",premium:!1},{name:"yoshi",premium:!0},{name:"toad",premium:!0},{name:"peach",premium:!1},{name:"bowser",premium:!1}],o=(e=>e.filter(e=>e.premium))(n);console.log(n,o)}]); \ No newline at end of file diff --git a/chapter_19/package.json b/chapter_19/package.json index a36d4562..45187108 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -4,9 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "babel": "node_modules/.bin/babel ./src/index.js -w -o ./dist/assets/bundle.js", - "webpack": "node_modules/.bin/webpack -w", - "serve": "webpack-dev-server" + "build": "node_modules/.bin/webpack --mode production", + "serve": "webpack-dev-server --mode development" }, "author": "", "license": "ISC", From 1cea8cf7f8934a0f416592929979eb5e8ecb9e2f Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:50:45 +0000 Subject: [PATCH 152/154] lesson-164 --- chapter_19/.babelrc | 3 - chapter_19/dist/assets/bundle.js | 2 +- chapter_19/dist/bundle.js | 1 - chapter_19/package-lock.json | 164 +++++++++++++++++++++++++------ chapter_19/package.json | 1 + chapter_19/webpack.config.js | 12 +++ 6 files changed, 148 insertions(+), 35 deletions(-) delete mode 100644 chapter_19/.babelrc delete mode 100644 chapter_19/dist/bundle.js diff --git a/chapter_19/.babelrc b/chapter_19/.babelrc deleted file mode 100644 index 8aa924d7..00000000 --- a/chapter_19/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env"] -} \ No newline at end of file diff --git a/chapter_19/dist/assets/bundle.js b/chapter_19/dist/assets/bundle.js index 5abbeed7..852b596f 100644 --- a/chapter_19/dist/assets/bundle.js +++ b/chapter_19/dist/assets/bundle.js @@ -1 +1 @@ -!function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){"use strict";t.r(r);const n=[{name:"mario",premium:!0},{name:"luigi",premium:!1},{name:"yoshi",premium:!0},{name:"toad",premium:!0},{name:"peach",premium:!1},{name:"bowser",premium:!1}],o=(e=>e.filter(e=>e.premium))(n);console.log(n,o)}]); \ No newline at end of file +!function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p="",n(n.s=0)}([function(e,r,n){"use strict";n.r(r);var t=[{name:"mario",premium:!0},{name:"luigi",premium:!1},{name:"yoshi",premium:!0},{name:"toad",premium:!0},{name:"peach",premium:!1},{name:"bowser",premium:!1}],o=function(e){return e.filter(function(e){return e.premium})}(t);console.log(t,o)}]); \ No newline at end of file diff --git a/chapter_19/dist/bundle.js b/chapter_19/dist/bundle.js deleted file mode 100644 index 9812cfd2..00000000 --- a/chapter_19/dist/bundle.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);n(1);console.log("index.js file")},function(e,t){console.log("dom.js file");const n=document.querySelector("body");n.style.background="peachpuff",(e=>{const t=document.createElement("h1");t.textContent=e,n.appendChild(t)})("hello, world from dom.js")}]); \ No newline at end of file diff --git a/chapter_19/package-lock.json b/chapter_19/package-lock.json index 20799d44..90538690 100644 --- a/chapter_19/package-lock.json +++ b/chapter_19/package-lock.json @@ -1170,6 +1170,18 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1897,6 +1909,15 @@ "ip-regex": "^2.1.0" } }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -2108,6 +2129,31 @@ "prr": "~1.0.1" } }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2604,8 +2650,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2626,14 +2671,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2648,20 +2691,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2778,8 +2818,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2791,7 +2830,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2806,7 +2844,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2814,14 +2851,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2840,7 +2875,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2921,8 +2955,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2934,7 +2967,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3020,8 +3052,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -3057,7 +3088,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3077,7 +3107,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3121,17 +3150,21 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -3251,12 +3284,27 @@ "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3557,6 +3605,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -3577,6 +3631,12 @@ } } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3682,12 +3742,30 @@ "isobject": "^3.0.1" } }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4280,6 +4358,12 @@ } } }, + "object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -4289,6 +4373,16 @@ "isobject": "^3.0.0" } }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -5901,6 +5995,16 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/chapter_19/package.json b/chapter_19/package.json index 45187108..79239c6b 100644 --- a/chapter_19/package.json +++ b/chapter_19/package.json @@ -13,6 +13,7 @@ "@babel/cli": "^7.2.3", "@babel/core": "^7.3.4", "@babel/preset-env": "^7.3.4", + "babel-loader": "^8.0.5", "webpack": "^4.29.6", "webpack-cli": "^3.2.3", "webpack-dev-server": "^3.2.1" diff --git a/chapter_19/webpack.config.js b/chapter_19/webpack.config.js index 65f85f19..79d5f7a0 100644 --- a/chapter_19/webpack.config.js +++ b/chapter_19/webpack.config.js @@ -9,5 +9,17 @@ module.exports = { devServer: { contentBase: path.resolve(__dirname, 'dist'), publicPath: '/assets/' + }, + module: { + rules: [{ + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + }] } }; \ No newline at end of file From 2d7eacd242caa6fcd33dc897b1dd65e2c3adf0f0 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:52:55 +0000 Subject: [PATCH 153/154] lesson-165 --- chapter_19/dist/index.html | 2 +- chapter_19/src/data.js | 16 ---------------- chapter_19/src/dom.js | 21 --------------------- chapter_19/src/index.js | 4 ---- 4 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 chapter_19/src/data.js delete mode 100644 chapter_19/src/dom.js diff --git a/chapter_19/dist/index.html b/chapter_19/dist/index.html index 2a8fdedf..cc7efcc3 100644 --- a/chapter_19/dist/index.html +++ b/chapter_19/dist/index.html @@ -3,7 +3,7 @@ - Webpack & Babel + diff --git a/chapter_19/src/data.js b/chapter_19/src/data.js deleted file mode 100644 index 82b4780d..00000000 --- a/chapter_19/src/data.js +++ /dev/null @@ -1,16 +0,0 @@ -const users = [ - { name: 'mario', premium: true }, - { name: 'luigi', premium: false }, - { name: 'yoshi', premium: true }, - { name: 'toad', premium: true }, - { name: 'peach', premium: false }, - { name: 'bowser', premium: false } -]; - -// export default users; - -const getPremUsers = (users) => { - return users.filter(user => user.premium); -}; - -export { getPremUsers, users as default }; \ No newline at end of file diff --git a/chapter_19/src/dom.js b/chapter_19/src/dom.js deleted file mode 100644 index 6b65bad5..00000000 --- a/chapter_19/src/dom.js +++ /dev/null @@ -1,21 +0,0 @@ -console.log('dom.js file'); - -// dom queries -const body = document.querySelector('body'); - -const styleBody = () => { - body.style.background = 'peachpuff'; -}; - -const addTitle = (text) => { - const title = document.createElement('h1'); - title.textContent = text; - body.appendChild(title); -}; - -const contact = 'mario@thenetninja.co.uk'; - -// styleBody(); -// addTitle('hello, world from dom.js'); - -export { styleBody, addTitle, contact }; \ No newline at end of file diff --git a/chapter_19/src/index.js b/chapter_19/src/index.js index 63977ce9..8b137891 100644 --- a/chapter_19/src/index.js +++ b/chapter_19/src/index.js @@ -1,5 +1 @@ -// import { styleBody, addTitle, contact } from './dom'; -import users, { getPremUsers } from './data'; -const premUsers = getPremUsers(users); -console.log(users, premUsers); From f99dabe4402ac01395baed2b4d2b2afbf75542d5 Mon Sep 17 00:00:00 2001 From: Shaun Date: Tue, 5 Mar 2019 16:54:48 +0000 Subject: [PATCH 154/154] lesson-165 --- {chapter_19 => boilerplate}/.gitignore | 0 {chapter_19 => boilerplate}/dist/assets/bundle.js | 0 {chapter_19 => boilerplate}/dist/index.html | 0 {chapter_19 => boilerplate}/package-lock.json | 0 {chapter_19 => boilerplate}/package.json | 0 {chapter_19 => boilerplate}/src/index.js | 0 {chapter_19 => boilerplate}/webpack.config.js | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {chapter_19 => boilerplate}/.gitignore (100%) rename {chapter_19 => boilerplate}/dist/assets/bundle.js (100%) rename {chapter_19 => boilerplate}/dist/index.html (100%) rename {chapter_19 => boilerplate}/package-lock.json (100%) rename {chapter_19 => boilerplate}/package.json (100%) rename {chapter_19 => boilerplate}/src/index.js (100%) rename {chapter_19 => boilerplate}/webpack.config.js (100%) diff --git a/chapter_19/.gitignore b/boilerplate/.gitignore similarity index 100% rename from chapter_19/.gitignore rename to boilerplate/.gitignore diff --git a/chapter_19/dist/assets/bundle.js b/boilerplate/dist/assets/bundle.js similarity index 100% rename from chapter_19/dist/assets/bundle.js rename to boilerplate/dist/assets/bundle.js diff --git a/chapter_19/dist/index.html b/boilerplate/dist/index.html similarity index 100% rename from chapter_19/dist/index.html rename to boilerplate/dist/index.html diff --git a/chapter_19/package-lock.json b/boilerplate/package-lock.json similarity index 100% rename from chapter_19/package-lock.json rename to boilerplate/package-lock.json diff --git a/chapter_19/package.json b/boilerplate/package.json similarity index 100% rename from chapter_19/package.json rename to boilerplate/package.json diff --git a/chapter_19/src/index.js b/boilerplate/src/index.js similarity index 100% rename from chapter_19/src/index.js rename to boilerplate/src/index.js diff --git a/chapter_19/webpack.config.js b/boilerplate/webpack.config.js similarity index 100% rename from chapter_19/webpack.config.js rename to boilerplate/webpack.config.js