├── .gitignore
├── .npmrc
├── 02 - Starter Files and Tooling Setup
└── test-START.html
├── 03 - CSS Grid Fundamentals
├── css-grid-fundamentals-FINISHED.html
└── css-grid-fundamentals-START.html
├── 04 - CSS Grid Dev Tools
├── Line Meanings.png
├── dev-tools-FINISHED.html
└── dev-tools-START.html
├── 05 - CSS Grid Implicit vs Explicit Tracks
├── implicit-vs-explicit-FINISHED.html
└── implicit-vs-explicit-START.html
├── 06 - CSS grid-auto-flow Explained
├── autoflow-FINISHED.html
└── autoflow-START.html
├── 07 - Sizing tracks in CSS Grid
├── sizing-tracks-FINISHED.html
└── sizing-tracks-START.html
├── 08 - CSS Grid repeat function
├── repeat-FINISHED.html
└── repeat-START.html
├── 09 - Sizing Grid Items
├── sizing-items-FINISHED.html
└── sizing-items-START.html
├── 10 - Placing Grid Items
├── placing-FINISHED.html
└── placing-START.html
├── 11 - Spanning and Placing Cardio
├── get-sweaty-FINISHED.html
└── get-sweaty-START.html
├── 12 - auto-fit and auto-fill
├── auto-fit-and-auto-fill-FINISHED.html
└── auto-fit-and-auto-fill-START.html
├── 13 - Using minmax() for Responsive Grids
├── minmax-FINISHED.html
└── minmax-START.html
├── 14 - Grid Template Areas
├── area-line-names-FINISHED.html
├── area-line-names-START.html
├── areas-FINISHED.html
└── areas-START.html
├── 15 - Naming Lines in CSS Grid
├── naming-lines-FINISHED.html
└── naming-lines-START.html
├── 16 - grid-auto-flow dense Block Fitting
├── dense-FINISHED.html
└── dense-START.html
├── 17 - CSS Grid Alignment + Centering
├── alignment-and-centering-FINISHED.html
└── alignment-and-centering-START.html
├── 18 - Re-ordering Grid Items
├── order-FINISH.html
└── order-START.html
├── 19 - Nesting Grid with Album Layouts
├── albums-FINISHED.html
└── albums-START.html
├── 20 - CSS Grid Image Gallery
├── image-gallery-FINISHED.html
├── image-gallery-START.html
└── images
│ ├── 1.jpg
│ ├── 10.jpg
│ ├── 11.jpg
│ ├── 12.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ ├── 5.jpg
│ ├── 6.jpg
│ ├── 7.jpg
│ ├── 8.jpg
│ └── 9.jpg
├── 21 - Flexbox vs CSS Grid
├── axis-flipping-FINISHED.html
├── axis-flipping-START.html
├── controls-on-right-FINISHED.html
├── controls-on-right-START.html
├── flex-on-item-FINISHED.html
├── flex-on-item-START.html
├── perfectly-centered-FINISHED.html
├── perfectly-centered-START.html
├── self-control-FINISHED.html
├── self-control-START.html
├── stacked-layout-FINISHED.html
├── stacked-layout-START.html
├── unknown-content-size-FINISHED.html
├── unknown-content-size-START.html
├── unknown-number-of-items-FINISHED.html
├── unknown-number-of-items-START.html
├── variable-widths-each-row-FINISHED.html
└── variable-widths-each-row-START.html
├── 22 - Recreating Codepen
├── codepen-FINISHED.html
├── codepen-START.html
├── style-FINISHED.css
└── style-START.css
├── 23 - Bootstrappy Grid with CSS Variables
├── grid-FINISHED.html
└── grid-START.html
├── 24 - Responisve Website
├── images
│ ├── queso-taco.png
│ └── taco.jpg
├── responsive-FINISHED.css
├── responsive-FINISHED.html
├── responsive-START.css
└── responsive-START.html
├── 25 - Full Bleed Blog Layout
├── full-bleed-blog-FINISHED.html
└── full-bleed-blog-START.html
├── assets
├── images
│ ├── flower.png
│ └── topography.svg
└── style.css
├── package-lock.json
├── package.json
└── readme.md
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .DS_Store
3 | haters
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | fund=false
2 | audit=false
3 | legacy-peer-deps=true
4 |
--------------------------------------------------------------------------------
/02 - Starter Files and Tooling Setup/test-START.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
16 | Chapter Three: The Great American Game
17 |
18 | Dear Diary,
19 |
20 | Grandfather's creaky as his front porch, loads his shotgun beneath the awning, spittoon restless for rain, carpenter's
21 | chair against the whistling air. Rocking, back and forth, rocking snap shot picture - worth it, just like the movies
22 |
23 |
28 |
29 |
30 | She said that he loved baseball, and James Earl Jones; said that he's got god talking inside of his thoughts while he's
31 | rounding those bases on his way back home
32 |
33 |
34 | "If you build it, they will come"
35 |
36 |
37 | If you build it, they will come (and baby listens to what the Lord say). But I've been getting pretty worn, building
38 | for nearly a decade
39 |
40 |
41 |
42 | Super Nice Photo
43 |
44 |
45 |
46 | In a perfect world we shouldn’t have been allowed to lose sight of what it means to love wholly. I’ve got a Polaroid
47 | hanging on my wall that a friend took of me and my angel. I remember the day like it’s something I can touch, but it’s
48 | stuck in the square between the borders of the film, and I can run my fingers over our faces, but I can’t get back
49 | to the places we were
50 |
51 |
52 |
53 | You’ve got a pain deep in your bones, son.
54 |
55 | "You’ve got a pain deep in your bones, son. It compels you forward like you’re tied to a slave master’s cruel hand, and
56 | it's the same pain that drives that oppressor’s heart of stone, so you’ve grown to love the man. You keep pouring yourself
57 | out, again and again, into legible lines through a crooked pen." Yeah, it’s painful, but it’s familiar – so habit breeds
58 | comfort, and I don’t know what I’d do without him
59 |
60 |
61 |
You can listen to this song on
62 | YouTube
63 |
64 |
65 |
66 | So in the early morning, when you’ve fallen asleep in our home, I drift back into the memories that I’ve claimed as my
67 | own, and wonder if tonight will be a night I’ll hang on my wall like I did before we stopped taking photos, out of
68 | the habit of being comfortable with not trying at all
69 |
70 | In a perfect world, we’ll have albums labeled Seasons, with chapter headings, and we’ll staple them to the cork-board
71 | that hangs at the foot of the bed. There’s longevity in a memory spilt out in pen, and if a picture is worth a thousand
72 | words then I’ve written down every one of them
73 |
74 | I work hard, scarred, toil through that soil for the youth I see in my friends, but these journals are moments in time,
75 | snapshots of our lives, and in retrospect, age is an overexposed photo that the memories can't mend
76 |
77 |
78 |
79 |
Buy the album on
80 | BandCamp
81 |
82 |
Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae totam quia vel eveniet porro, rem ducimus quam incidunt,
83 | dicta laborum quod earum tempore natus placeat neque aspernatur pariatur iusto quos.
84 |
85 | I know my sweet seductress, and her name is Depression. I wrote best beneath that demon’s destructive oppression
86 |
87 |
88 | In those Polaroids, she drove the ink into the canvas like a slave beneath his master’s cruel hand, and I hated that
89 | whip but always wondered what I’d do without it, so I grew to love the man
90 |
91 | Oh, I wept for change! I begged for movement and the good Lord, he answered my prayers, but you don’t know how to breathe
92 | easy when you let go of your habits, even if your comforts left you gasping for air
93 |
94 |
95 |
96 |
97 | Super Nice Photo
98 |
99 |
100 | Dear Time
101 |
102 | Grandfather's as creaky as his front porch, scent like oil in the gun barrel, dip-can kicked over the railing, sandpaper
103 | hands stuck behind thumb tacks on my wall. I’ve got an ache in my chest for every season I miss and it gets worse when
104 | the snow starts to fall. There are butterflies alive in that couple’s eyes a few years since forgotten by all, and
105 | sometimes, if the phone starts to ring, I can still hear their wings when you call
106 |
107 | But I begged for movement and I got what I asked for, and I can picture the answer like it came yesterday. And in the
108 | land of the gods, I think that things are timeless, but we are still prone to decay
109 |
110 | You know I still lift up hope of certain smiles in those photos for us when I pray
111 |
112 |
113 | "Idle hands build nothing that you can call your own"
114 |
115 |
116 | Time is a cruel lover, and she breaks her house apart at its bones. You know comfort is no good reason for standing still,
117 | and idle hands build nothing that you can call your own.
118 |
119 |
120 | — Levi The Poet
121 |
122 |
123 |
124 |
125 |
204 |
205 |
206 |
--------------------------------------------------------------------------------
/25 - Full Bleed Blog Layout/full-bleed-blog-START.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
17 | Chapter Three: The Great American Game
18 |
19 | Dear Diary,
20 |
21 | Grandfather's creaky as his front porch, loads his shotgun beneath the awning, spittoon restless for rain, carpenter's
22 | chair against the whistling air. Rocking, back and forth, rocking snap shot picture - worth it, just like the movies
23 |
24 |
29 |
30 |
31 | She said that he loved baseball, and James Earl Jones; said that he's got god talking inside of his thoughts while he's
32 | rounding those bases on his way back home
33 |
34 |
35 | "If you build it, they will come"
36 |
37 |
38 | If you build it, they will come (and baby listens to what the Lord say). But I've been getting pretty worn, building
39 | for nearly a decade
40 |
41 |
42 |
43 | Super Nice Photo
44 |
45 |
46 |
47 | In a perfect world we shouldn’t have been allowed to lose sight of what it means to love wholly. I’ve got a Polaroid
48 | hanging on my wall that a friend took of me and my angel. I remember the day like it’s something I can touch, but it’s
49 | stuck in the square between the borders of the film, and I can run my fingers over our faces, but I can’t get back
50 | to the places we were
51 |
52 |
53 |
54 | You’ve got a pain deep in your bones, son.
55 |
56 | "You’ve got a pain deep in your bones, son. It compels you forward like you’re tied to a slave master’s cruel hand, and
57 | it's the same pain that drives that oppressor’s heart of stone, so you’ve grown to love the man. You keep pouring yourself
58 | out, again and again, into legible lines through a crooked pen." Yeah, it’s painful, but it’s familiar – so habit breeds
59 | comfort, and I don’t know what I’d do without him
60 |
61 |
62 |
You can listen to this song on
63 | YouTube
64 |
65 |
66 |
67 | So in the early morning, when you’ve fallen asleep in our home, I drift back into the memories that I’ve claimed as my
68 | own, and wonder if tonight will be a night I’ll hang on my wall like I did before we stopped taking photos, out of
69 | the habit of being comfortable with not trying at all
70 |
71 | In a perfect world, we’ll have albums labeled Seasons, with chapter headings, and we’ll staple them to the cork-board
72 | that hangs at the foot of the bed. There’s longevity in a memory spilt out in pen, and if a picture is worth a thousand
73 | words then I’ve written down every one of them
74 |
75 | I work hard, scarred, toil through that soil for the youth I see in my friends, but these journals are moments in time,
76 | snapshots of our lives, and in retrospect, age is an overexposed photo that the memories can't mend
77 |
78 |
79 |
80 |
Buy the album on
81 | BandCamp
82 |
83 |
Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae totam quia vel eveniet porro, rem ducimus quam incidunt,
84 | dicta laborum quod earum tempore natus placeat neque aspernatur pariatur iusto quos.
85 |
86 | I know my sweet seductress, and her name is Depression. I wrote best beneath that demon’s destructive oppression
87 |
88 |
89 | In those Polaroids, she drove the ink into the canvas like a slave beneath his master’s cruel hand, and I hated that
90 | whip but always wondered what I’d do without it, so I grew to love the man
91 |
92 | Oh, I wept for change! I begged for movement and the good Lord, he answered my prayers, but you don’t know how to breathe
93 | easy when you let go of your habits, even if your comforts left you gasping for air
94 |
95 |
96 |
97 |
98 | Super Nice Photo
99 |
100 |
101 | Dear Time
102 |
103 | Grandfather's as creaky as his front porch, scent like oil in the gun barrel, dip-can kicked over the railing, sandpaper
104 | hands stuck behind thumb tacks on my wall. I’ve got an ache in my chest for every season I miss and it gets worse when
105 | the snow starts to fall. There are butterflies alive in that couple’s eyes a few years since forgotten by all, and
106 | sometimes, if the phone starts to ring, I can still hear their wings when you call
107 |
108 | But I begged for movement and I got what I asked for, and I can picture the answer like it came yesterday. And in the
109 | land of the gods, I think that things are timeless, but we are still prone to decay
110 |
111 | You know I still lift up hope of certain smiles in those photos for us when I pray
112 |
113 |
114 | "Idle hands build nothing that you can call your own"
115 |
116 |
117 | Time is a cruel lover, and she breaks her house apart at its bones. You know comfort is no good reason for standing still,
118 | and idle hands build nothing that you can call your own.
119 |
120 |
121 | — Levi The Poet
122 |
123 |
124 |
125 |
126 |
158 |
159 |
160 |
161 |
--------------------------------------------------------------------------------
/assets/images/flower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/assets/images/flower.png
--------------------------------------------------------------------------------
/assets/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | Oh Hello!
3 |
4 | These are some base styles so that our tutorial looks good.
5 |
6 | Let's go through the important bits real quick
7 | */
8 | :root {
9 | --yellow: #ffc600;
10 | --black: #272727;
11 | }
12 |
13 | html {
14 | /* border-box box model allows us to add padding and border to our elements without increasing their size */
15 | box-sizing: border-box;
16 | /* A system font stack so things load nice and quick! */
17 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
18 | Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
19 | font-weight: 900;
20 | font-size: 10px;
21 | color: var(--black);
22 | text-shadow: 0 2px 0 rgba(0, 0, 0, 0.07);
23 | }
24 |
25 | /*
26 | WAT IS THIS?!
27 | We inherit box-sizing: border-box; from our selector
28 | Apparently this is a bit better than applying box-sizing: border-box; directly to the * selector
29 | */
30 | *,
31 | *:before,
32 | *:after {
33 | box-sizing: inherit;
34 | }
35 |
36 | body {
37 | background-image: url("./images/topography.svg"),
38 | linear-gradient(110deg, #f93d66, #6d47d9);
39 | background-size: 340px, auto;
40 | min-height: calc(100vh - 100px);
41 | margin: 50px;
42 | /* background: white; */
43 | background-attachment: fixed;
44 | letter-spacing: -1px;
45 | }
46 |
47 | h1,
48 | h2,
49 | h3,
50 | h4,
51 | h5,
52 | h6 {
53 | margin: 0 0 5px 0;
54 | }
55 | /* Each item in our grid will contain numbers */
56 | .item {
57 | /* We center the contents of these items. You can also do this with flexbox too! */
58 | display: grid;
59 | justify-content: center;
60 | align-items: center;
61 | border: 5px solid rgba(0, 0, 0, 0.03);
62 | border-radius: 3px;
63 | font-size: 35px;
64 | background-color: var(--yellow); /* best colour */
65 | }
66 |
67 | .item p {
68 | margin: 0 0 5px 0;
69 | }
70 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "css-grid",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.7",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11 | "dev": true,
12 | "requires": {
13 | "mime-types": "~2.1.24",
14 | "negotiator": "0.6.2"
15 | }
16 | },
17 | "after": {
18 | "version": "0.8.2",
19 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
20 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
21 | "dev": true
22 | },
23 | "ansi-regex": {
24 | "version": "2.1.1",
25 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
26 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
27 | "dev": true
28 | },
29 | "ansi-styles": {
30 | "version": "2.2.1",
31 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
32 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
33 | "dev": true
34 | },
35 | "anymatch": {
36 | "version": "3.1.1",
37 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
38 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
39 | "dev": true,
40 | "requires": {
41 | "normalize-path": "^3.0.0",
42 | "picomatch": "^2.0.4"
43 | }
44 | },
45 | "arraybuffer.slice": {
46 | "version": "0.0.7",
47 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
48 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
49 | "dev": true
50 | },
51 | "async": {
52 | "version": "1.5.2",
53 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
54 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
55 | "dev": true
56 | },
57 | "async-each-series": {
58 | "version": "0.1.1",
59 | "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz",
60 | "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=",
61 | "dev": true
62 | },
63 | "async-limiter": {
64 | "version": "1.0.1",
65 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
66 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
67 | "dev": true
68 | },
69 | "axios": {
70 | "version": "0.19.0",
71 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
72 | "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
73 | "dev": true,
74 | "requires": {
75 | "follow-redirects": "1.5.10",
76 | "is-buffer": "^2.0.2"
77 | },
78 | "dependencies": {
79 | "follow-redirects": {
80 | "version": "1.5.10",
81 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
82 | "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
83 | "dev": true,
84 | "requires": {
85 | "debug": "=3.1.0"
86 | }
87 | }
88 | }
89 | },
90 | "backo2": {
91 | "version": "1.0.2",
92 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
93 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
94 | "dev": true
95 | },
96 | "balanced-match": {
97 | "version": "1.0.0",
98 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
99 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
100 | "dev": true
101 | },
102 | "base64-arraybuffer": {
103 | "version": "0.1.4",
104 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
105 | "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=",
106 | "dev": true
107 | },
108 | "base64id": {
109 | "version": "1.0.0",
110 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
111 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
112 | "dev": true
113 | },
114 | "batch": {
115 | "version": "0.6.1",
116 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
117 | "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
118 | "dev": true
119 | },
120 | "better-assert": {
121 | "version": "1.0.2",
122 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
123 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
124 | "dev": true,
125 | "requires": {
126 | "callsite": "1.0.0"
127 | }
128 | },
129 | "binary-extensions": {
130 | "version": "2.1.0",
131 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
132 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
133 | "dev": true
134 | },
135 | "blob": {
136 | "version": "0.0.5",
137 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
138 | "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
139 | "dev": true
140 | },
141 | "brace-expansion": {
142 | "version": "1.1.11",
143 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
144 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
145 | "dev": true,
146 | "requires": {
147 | "balanced-match": "^1.0.0",
148 | "concat-map": "0.0.1"
149 | }
150 | },
151 | "braces": {
152 | "version": "3.0.2",
153 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
154 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
155 | "dev": true,
156 | "requires": {
157 | "fill-range": "^7.0.1"
158 | }
159 | },
160 | "browser-sync": {
161 | "version": "2.26.13",
162 | "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.13.tgz",
163 | "integrity": "sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w==",
164 | "dev": true,
165 | "requires": {
166 | "browser-sync-client": "^2.26.13",
167 | "browser-sync-ui": "^2.26.13",
168 | "bs-recipes": "1.3.4",
169 | "bs-snippet-injector": "^2.0.1",
170 | "chokidar": "^3.4.1",
171 | "connect": "3.6.6",
172 | "connect-history-api-fallback": "^1",
173 | "dev-ip": "^1.0.1",
174 | "easy-extender": "^2.3.4",
175 | "eazy-logger": "3.1.0",
176 | "etag": "^1.8.1",
177 | "fresh": "^0.5.2",
178 | "fs-extra": "3.0.1",
179 | "http-proxy": "^1.18.1",
180 | "immutable": "^3",
181 | "localtunnel": "^2.0.0",
182 | "micromatch": "^4.0.2",
183 | "opn": "5.3.0",
184 | "portscanner": "2.1.1",
185 | "qs": "6.2.3",
186 | "raw-body": "^2.3.2",
187 | "resp-modifier": "6.0.2",
188 | "rx": "4.1.0",
189 | "send": "0.16.2",
190 | "serve-index": "1.9.1",
191 | "serve-static": "1.13.2",
192 | "server-destroy": "1.0.1",
193 | "socket.io": "2.1.1",
194 | "ua-parser-js": "^0.7.18",
195 | "yargs": "^15.4.1"
196 | }
197 | },
198 | "browser-sync-client": {
199 | "version": "2.26.13",
200 | "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.13.tgz",
201 | "integrity": "sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ==",
202 | "dev": true,
203 | "requires": {
204 | "etag": "1.8.1",
205 | "fresh": "0.5.2",
206 | "mitt": "^1.1.3",
207 | "rxjs": "^5.5.6"
208 | }
209 | },
210 | "browser-sync-ui": {
211 | "version": "2.26.13",
212 | "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz",
213 | "integrity": "sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA==",
214 | "dev": true,
215 | "requires": {
216 | "async-each-series": "0.1.1",
217 | "connect-history-api-fallback": "^1",
218 | "immutable": "^3",
219 | "server-destroy": "1.0.1",
220 | "socket.io-client": "^2.0.4",
221 | "stream-throttle": "^0.1.3"
222 | }
223 | },
224 | "bs-recipes": {
225 | "version": "1.3.4",
226 | "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz",
227 | "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=",
228 | "dev": true
229 | },
230 | "bs-snippet-injector": {
231 | "version": "2.0.1",
232 | "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz",
233 | "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=",
234 | "dev": true
235 | },
236 | "bytes": {
237 | "version": "3.1.0",
238 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
239 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
240 | "dev": true
241 | },
242 | "callsite": {
243 | "version": "1.0.0",
244 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
245 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
246 | "dev": true
247 | },
248 | "camelcase": {
249 | "version": "5.3.1",
250 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
251 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
252 | "dev": true
253 | },
254 | "chalk": {
255 | "version": "1.1.3",
256 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
257 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
258 | "dev": true,
259 | "requires": {
260 | "ansi-styles": "^2.2.1",
261 | "escape-string-regexp": "^1.0.2",
262 | "has-ansi": "^2.0.0",
263 | "strip-ansi": "^3.0.0",
264 | "supports-color": "^2.0.0"
265 | }
266 | },
267 | "chokidar": {
268 | "version": "3.4.3",
269 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
270 | "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
271 | "dev": true,
272 | "requires": {
273 | "anymatch": "~3.1.1",
274 | "braces": "~3.0.2",
275 | "fsevents": "~2.1.2",
276 | "glob-parent": "~5.1.0",
277 | "is-binary-path": "~2.1.0",
278 | "is-glob": "~4.0.1",
279 | "normalize-path": "~3.0.0",
280 | "readdirp": "~3.5.0"
281 | }
282 | },
283 | "cliui": {
284 | "version": "5.0.0",
285 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
286 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
287 | "dev": true,
288 | "requires": {
289 | "string-width": "^3.1.0",
290 | "strip-ansi": "^5.2.0",
291 | "wrap-ansi": "^5.1.0"
292 | },
293 | "dependencies": {
294 | "ansi-regex": {
295 | "version": "4.1.0",
296 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
297 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
298 | "dev": true
299 | },
300 | "strip-ansi": {
301 | "version": "5.2.0",
302 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
303 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
304 | "dev": true,
305 | "requires": {
306 | "ansi-regex": "^4.1.0"
307 | }
308 | }
309 | }
310 | },
311 | "color-convert": {
312 | "version": "1.9.3",
313 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
314 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
315 | "dev": true,
316 | "requires": {
317 | "color-name": "1.1.3"
318 | }
319 | },
320 | "color-name": {
321 | "version": "1.1.3",
322 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
323 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
324 | "dev": true
325 | },
326 | "commander": {
327 | "version": "2.20.3",
328 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
329 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
330 | "dev": true
331 | },
332 | "component-bind": {
333 | "version": "1.0.0",
334 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
335 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
336 | "dev": true
337 | },
338 | "component-emitter": {
339 | "version": "1.3.0",
340 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
341 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
342 | "dev": true
343 | },
344 | "component-inherit": {
345 | "version": "0.0.3",
346 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
347 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
348 | "dev": true
349 | },
350 | "concat-map": {
351 | "version": "0.0.1",
352 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
353 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
354 | "dev": true
355 | },
356 | "connect": {
357 | "version": "3.6.6",
358 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
359 | "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
360 | "dev": true,
361 | "requires": {
362 | "debug": "2.6.9",
363 | "finalhandler": "1.1.0",
364 | "parseurl": "~1.3.2",
365 | "utils-merge": "1.0.1"
366 | },
367 | "dependencies": {
368 | "debug": {
369 | "version": "2.6.9",
370 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
371 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
372 | "dev": true,
373 | "requires": {
374 | "ms": "2.0.0"
375 | }
376 | }
377 | }
378 | },
379 | "connect-history-api-fallback": {
380 | "version": "1.6.0",
381 | "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
382 | "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
383 | "dev": true
384 | },
385 | "cookie": {
386 | "version": "0.3.1",
387 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
388 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
389 | "dev": true
390 | },
391 | "debug": {
392 | "version": "3.1.0",
393 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
394 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
395 | "dev": true,
396 | "requires": {
397 | "ms": "2.0.0"
398 | }
399 | },
400 | "decamelize": {
401 | "version": "1.2.0",
402 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
403 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
404 | "dev": true
405 | },
406 | "depd": {
407 | "version": "1.1.2",
408 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
409 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
410 | "dev": true
411 | },
412 | "destroy": {
413 | "version": "1.0.4",
414 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
415 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
416 | "dev": true
417 | },
418 | "dev-ip": {
419 | "version": "1.0.1",
420 | "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
421 | "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=",
422 | "dev": true
423 | },
424 | "dlv": {
425 | "version": "1.1.3",
426 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
427 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
428 | "dev": true
429 | },
430 | "easy-extender": {
431 | "version": "2.3.4",
432 | "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz",
433 | "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==",
434 | "dev": true,
435 | "requires": {
436 | "lodash": "^4.17.10"
437 | }
438 | },
439 | "eazy-logger": {
440 | "version": "3.1.0",
441 | "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz",
442 | "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==",
443 | "dev": true,
444 | "requires": {
445 | "tfunk": "^4.0.0"
446 | }
447 | },
448 | "ee-first": {
449 | "version": "1.1.1",
450 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
451 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
452 | "dev": true
453 | },
454 | "emoji-regex": {
455 | "version": "7.0.3",
456 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
457 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
458 | "dev": true
459 | },
460 | "encodeurl": {
461 | "version": "1.0.2",
462 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
463 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
464 | "dev": true
465 | },
466 | "engine.io": {
467 | "version": "3.2.1",
468 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
469 | "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==",
470 | "dev": true,
471 | "requires": {
472 | "accepts": "~1.3.4",
473 | "base64id": "1.0.0",
474 | "cookie": "0.3.1",
475 | "debug": "~3.1.0",
476 | "engine.io-parser": "~2.1.0",
477 | "ws": "~3.3.1"
478 | },
479 | "dependencies": {
480 | "base64-arraybuffer": {
481 | "version": "0.1.5",
482 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
483 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
484 | "dev": true
485 | },
486 | "engine.io-parser": {
487 | "version": "2.1.3",
488 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
489 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
490 | "dev": true,
491 | "requires": {
492 | "after": "0.8.2",
493 | "arraybuffer.slice": "~0.0.7",
494 | "base64-arraybuffer": "0.1.5",
495 | "blob": "0.0.5",
496 | "has-binary2": "~1.0.2"
497 | }
498 | },
499 | "ws": {
500 | "version": "3.3.3",
501 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
502 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
503 | "dev": true,
504 | "requires": {
505 | "async-limiter": "~1.0.0",
506 | "safe-buffer": "~5.1.0",
507 | "ultron": "~1.1.0"
508 | }
509 | }
510 | }
511 | },
512 | "engine.io-client": {
513 | "version": "3.4.4",
514 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz",
515 | "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==",
516 | "dev": true,
517 | "requires": {
518 | "component-emitter": "~1.3.0",
519 | "component-inherit": "0.0.3",
520 | "debug": "~3.1.0",
521 | "engine.io-parser": "~2.2.0",
522 | "has-cors": "1.1.0",
523 | "indexof": "0.0.1",
524 | "parseqs": "0.0.6",
525 | "parseuri": "0.0.6",
526 | "ws": "~6.1.0",
527 | "xmlhttprequest-ssl": "~1.5.4",
528 | "yeast": "0.1.2"
529 | }
530 | },
531 | "engine.io-parser": {
532 | "version": "2.2.1",
533 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
534 | "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
535 | "dev": true,
536 | "requires": {
537 | "after": "0.8.2",
538 | "arraybuffer.slice": "~0.0.7",
539 | "base64-arraybuffer": "0.1.4",
540 | "blob": "0.0.5",
541 | "has-binary2": "~1.0.2"
542 | }
543 | },
544 | "escape-html": {
545 | "version": "1.0.3",
546 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
547 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
548 | "dev": true
549 | },
550 | "escape-string-regexp": {
551 | "version": "1.0.5",
552 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
553 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
554 | "dev": true
555 | },
556 | "etag": {
557 | "version": "1.8.1",
558 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
559 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
560 | "dev": true
561 | },
562 | "eventemitter3": {
563 | "version": "4.0.7",
564 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
565 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
566 | "dev": true
567 | },
568 | "fill-range": {
569 | "version": "7.0.1",
570 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
571 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
572 | "dev": true,
573 | "requires": {
574 | "to-regex-range": "^5.0.1"
575 | }
576 | },
577 | "finalhandler": {
578 | "version": "1.1.0",
579 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
580 | "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
581 | "dev": true,
582 | "requires": {
583 | "debug": "2.6.9",
584 | "encodeurl": "~1.0.1",
585 | "escape-html": "~1.0.3",
586 | "on-finished": "~2.3.0",
587 | "parseurl": "~1.3.2",
588 | "statuses": "~1.3.1",
589 | "unpipe": "~1.0.0"
590 | },
591 | "dependencies": {
592 | "debug": {
593 | "version": "2.6.9",
594 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
595 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
596 | "dev": true,
597 | "requires": {
598 | "ms": "2.0.0"
599 | }
600 | }
601 | }
602 | },
603 | "find-up": {
604 | "version": "3.0.0",
605 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
606 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
607 | "dev": true,
608 | "requires": {
609 | "locate-path": "^3.0.0"
610 | }
611 | },
612 | "follow-redirects": {
613 | "version": "1.13.0",
614 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
615 | "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
616 | "dev": true
617 | },
618 | "fresh": {
619 | "version": "0.5.2",
620 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
621 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
622 | "dev": true
623 | },
624 | "fs-extra": {
625 | "version": "3.0.1",
626 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
627 | "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
628 | "dev": true,
629 | "requires": {
630 | "graceful-fs": "^4.1.2",
631 | "jsonfile": "^3.0.0",
632 | "universalify": "^0.1.0"
633 | }
634 | },
635 | "fsevents": {
636 | "version": "2.1.3",
637 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
638 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
639 | "dev": true,
640 | "optional": true
641 | },
642 | "get-caller-file": {
643 | "version": "2.0.5",
644 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
645 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
646 | "dev": true
647 | },
648 | "glob-parent": {
649 | "version": "5.1.1",
650 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
651 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
652 | "dev": true,
653 | "requires": {
654 | "is-glob": "^4.0.1"
655 | }
656 | },
657 | "graceful-fs": {
658 | "version": "4.2.4",
659 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
660 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
661 | "dev": true
662 | },
663 | "has-ansi": {
664 | "version": "2.0.0",
665 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
666 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
667 | "dev": true,
668 | "requires": {
669 | "ansi-regex": "^2.0.0"
670 | }
671 | },
672 | "has-binary2": {
673 | "version": "1.0.3",
674 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
675 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
676 | "dev": true,
677 | "requires": {
678 | "isarray": "2.0.1"
679 | }
680 | },
681 | "has-cors": {
682 | "version": "1.1.0",
683 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
684 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
685 | "dev": true
686 | },
687 | "http-errors": {
688 | "version": "1.7.3",
689 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
690 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
691 | "dev": true,
692 | "requires": {
693 | "depd": "~1.1.2",
694 | "inherits": "2.0.4",
695 | "setprototypeof": "1.1.1",
696 | "statuses": ">= 1.5.0 < 2",
697 | "toidentifier": "1.0.0"
698 | },
699 | "dependencies": {
700 | "statuses": {
701 | "version": "1.5.0",
702 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
703 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
704 | "dev": true
705 | }
706 | }
707 | },
708 | "http-proxy": {
709 | "version": "1.18.1",
710 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
711 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
712 | "dev": true,
713 | "requires": {
714 | "eventemitter3": "^4.0.0",
715 | "follow-redirects": "^1.0.0",
716 | "requires-port": "^1.0.0"
717 | }
718 | },
719 | "iconv-lite": {
720 | "version": "0.4.24",
721 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
722 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
723 | "dev": true,
724 | "requires": {
725 | "safer-buffer": ">= 2.1.2 < 3"
726 | }
727 | },
728 | "immutable": {
729 | "version": "3.8.2",
730 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
731 | "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=",
732 | "dev": true
733 | },
734 | "indexof": {
735 | "version": "0.0.1",
736 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
737 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
738 | "dev": true
739 | },
740 | "inherits": {
741 | "version": "2.0.4",
742 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
743 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
744 | "dev": true
745 | },
746 | "is-binary-path": {
747 | "version": "2.1.0",
748 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
749 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
750 | "dev": true,
751 | "requires": {
752 | "binary-extensions": "^2.0.0"
753 | }
754 | },
755 | "is-buffer": {
756 | "version": "2.0.5",
757 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
758 | "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
759 | "dev": true
760 | },
761 | "is-extglob": {
762 | "version": "2.1.1",
763 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
764 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
765 | "dev": true
766 | },
767 | "is-fullwidth-code-point": {
768 | "version": "2.0.0",
769 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
770 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
771 | "dev": true
772 | },
773 | "is-glob": {
774 | "version": "4.0.1",
775 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
776 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
777 | "dev": true,
778 | "requires": {
779 | "is-extglob": "^2.1.1"
780 | }
781 | },
782 | "is-number": {
783 | "version": "7.0.0",
784 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
785 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
786 | "dev": true
787 | },
788 | "is-number-like": {
789 | "version": "1.0.8",
790 | "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
791 | "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
792 | "dev": true,
793 | "requires": {
794 | "lodash.isfinite": "^3.3.2"
795 | }
796 | },
797 | "is-wsl": {
798 | "version": "1.1.0",
799 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
800 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
801 | "dev": true
802 | },
803 | "isarray": {
804 | "version": "2.0.1",
805 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
806 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
807 | "dev": true
808 | },
809 | "jsonfile": {
810 | "version": "3.0.1",
811 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
812 | "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
813 | "dev": true,
814 | "requires": {
815 | "graceful-fs": "^4.1.6"
816 | }
817 | },
818 | "limiter": {
819 | "version": "1.1.5",
820 | "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
821 | "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==",
822 | "dev": true
823 | },
824 | "localtunnel": {
825 | "version": "2.0.0",
826 | "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.0.tgz",
827 | "integrity": "sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==",
828 | "dev": true,
829 | "requires": {
830 | "axios": "0.19.0",
831 | "debug": "4.1.1",
832 | "openurl": "1.1.1",
833 | "yargs": "13.3.0"
834 | },
835 | "dependencies": {
836 | "debug": {
837 | "version": "4.1.1",
838 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
839 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
840 | "dev": true,
841 | "requires": {
842 | "ms": "^2.1.1"
843 | }
844 | },
845 | "ms": {
846 | "version": "2.1.2",
847 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
848 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
849 | "dev": true
850 | },
851 | "yargs": {
852 | "version": "13.3.0",
853 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
854 | "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
855 | "dev": true,
856 | "requires": {
857 | "cliui": "^5.0.0",
858 | "find-up": "^3.0.0",
859 | "get-caller-file": "^2.0.1",
860 | "require-directory": "^2.1.1",
861 | "require-main-filename": "^2.0.0",
862 | "set-blocking": "^2.0.0",
863 | "string-width": "^3.0.0",
864 | "which-module": "^2.0.0",
865 | "y18n": "^4.0.0",
866 | "yargs-parser": "^13.1.1"
867 | }
868 | }
869 | }
870 | },
871 | "locate-path": {
872 | "version": "3.0.0",
873 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
874 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
875 | "dev": true,
876 | "requires": {
877 | "p-locate": "^3.0.0",
878 | "path-exists": "^3.0.0"
879 | }
880 | },
881 | "lodash": {
882 | "version": "4.17.20",
883 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
884 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
885 | "dev": true
886 | },
887 | "lodash.isfinite": {
888 | "version": "3.3.2",
889 | "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
890 | "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=",
891 | "dev": true
892 | },
893 | "micromatch": {
894 | "version": "4.0.2",
895 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
896 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
897 | "dev": true,
898 | "requires": {
899 | "braces": "^3.0.1",
900 | "picomatch": "^2.0.5"
901 | }
902 | },
903 | "mime": {
904 | "version": "1.4.1",
905 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
906 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
907 | "dev": true
908 | },
909 | "mime-db": {
910 | "version": "1.44.0",
911 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
912 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
913 | "dev": true
914 | },
915 | "mime-types": {
916 | "version": "2.1.27",
917 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
918 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
919 | "dev": true,
920 | "requires": {
921 | "mime-db": "1.44.0"
922 | }
923 | },
924 | "minimatch": {
925 | "version": "3.0.4",
926 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
927 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
928 | "dev": true,
929 | "requires": {
930 | "brace-expansion": "^1.1.7"
931 | }
932 | },
933 | "mitt": {
934 | "version": "1.2.0",
935 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz",
936 | "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==",
937 | "dev": true
938 | },
939 | "ms": {
940 | "version": "2.0.0",
941 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
942 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
943 | "dev": true
944 | },
945 | "negotiator": {
946 | "version": "0.6.2",
947 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
948 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
949 | "dev": true
950 | },
951 | "normalize-path": {
952 | "version": "3.0.0",
953 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
954 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
955 | "dev": true
956 | },
957 | "object-component": {
958 | "version": "0.0.3",
959 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
960 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
961 | "dev": true
962 | },
963 | "on-finished": {
964 | "version": "2.3.0",
965 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
966 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
967 | "dev": true,
968 | "requires": {
969 | "ee-first": "1.1.1"
970 | }
971 | },
972 | "openurl": {
973 | "version": "1.1.1",
974 | "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz",
975 | "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=",
976 | "dev": true
977 | },
978 | "opn": {
979 | "version": "5.3.0",
980 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
981 | "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
982 | "dev": true,
983 | "requires": {
984 | "is-wsl": "^1.1.0"
985 | }
986 | },
987 | "p-limit": {
988 | "version": "2.3.0",
989 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
990 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
991 | "dev": true,
992 | "requires": {
993 | "p-try": "^2.0.0"
994 | }
995 | },
996 | "p-locate": {
997 | "version": "3.0.0",
998 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
999 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
1000 | "dev": true,
1001 | "requires": {
1002 | "p-limit": "^2.0.0"
1003 | }
1004 | },
1005 | "p-try": {
1006 | "version": "2.2.0",
1007 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1008 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1009 | "dev": true
1010 | },
1011 | "parseqs": {
1012 | "version": "0.0.6",
1013 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
1014 | "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
1015 | "dev": true
1016 | },
1017 | "parseuri": {
1018 | "version": "0.0.6",
1019 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
1020 | "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
1021 | "dev": true
1022 | },
1023 | "parseurl": {
1024 | "version": "1.3.3",
1025 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1026 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1027 | "dev": true
1028 | },
1029 | "path-exists": {
1030 | "version": "3.0.0",
1031 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1032 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
1033 | "dev": true
1034 | },
1035 | "picomatch": {
1036 | "version": "2.2.2",
1037 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
1038 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
1039 | "dev": true
1040 | },
1041 | "portscanner": {
1042 | "version": "2.1.1",
1043 | "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz",
1044 | "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=",
1045 | "dev": true,
1046 | "requires": {
1047 | "async": "1.5.2",
1048 | "is-number-like": "^1.0.3"
1049 | }
1050 | },
1051 | "qs": {
1052 | "version": "6.2.3",
1053 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz",
1054 | "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=",
1055 | "dev": true
1056 | },
1057 | "range-parser": {
1058 | "version": "1.2.1",
1059 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1060 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1061 | "dev": true
1062 | },
1063 | "raw-body": {
1064 | "version": "2.4.1",
1065 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz",
1066 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
1067 | "dev": true,
1068 | "requires": {
1069 | "bytes": "3.1.0",
1070 | "http-errors": "1.7.3",
1071 | "iconv-lite": "0.4.24",
1072 | "unpipe": "1.0.0"
1073 | }
1074 | },
1075 | "readdirp": {
1076 | "version": "3.5.0",
1077 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
1078 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
1079 | "dev": true,
1080 | "requires": {
1081 | "picomatch": "^2.2.1"
1082 | }
1083 | },
1084 | "require-directory": {
1085 | "version": "2.1.1",
1086 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1087 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
1088 | "dev": true
1089 | },
1090 | "require-main-filename": {
1091 | "version": "2.0.0",
1092 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
1093 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
1094 | "dev": true
1095 | },
1096 | "requires-port": {
1097 | "version": "1.0.0",
1098 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
1099 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
1100 | "dev": true
1101 | },
1102 | "resp-modifier": {
1103 | "version": "6.0.2",
1104 | "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz",
1105 | "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=",
1106 | "dev": true,
1107 | "requires": {
1108 | "debug": "^2.2.0",
1109 | "minimatch": "^3.0.2"
1110 | },
1111 | "dependencies": {
1112 | "debug": {
1113 | "version": "2.6.9",
1114 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1115 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1116 | "dev": true,
1117 | "requires": {
1118 | "ms": "2.0.0"
1119 | }
1120 | }
1121 | }
1122 | },
1123 | "run-script-os": {
1124 | "version": "1.1.3",
1125 | "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.3.tgz",
1126 | "integrity": "sha512-xPlzE6533nvWVea5z7e5J7+JAIepfpxTu/HLGxcjJYlemVukOCWJBaRCod/DWXJFRIWEFOgSGbjd2m1QWTJi5w==",
1127 | "dev": true
1128 | },
1129 | "rx": {
1130 | "version": "4.1.0",
1131 | "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
1132 | "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
1133 | "dev": true
1134 | },
1135 | "rxjs": {
1136 | "version": "5.5.12",
1137 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
1138 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
1139 | "dev": true,
1140 | "requires": {
1141 | "symbol-observable": "1.0.1"
1142 | }
1143 | },
1144 | "safe-buffer": {
1145 | "version": "5.1.2",
1146 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1147 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1148 | "dev": true
1149 | },
1150 | "safer-buffer": {
1151 | "version": "2.1.2",
1152 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1153 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1154 | "dev": true
1155 | },
1156 | "send": {
1157 | "version": "0.16.2",
1158 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
1159 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
1160 | "dev": true,
1161 | "requires": {
1162 | "debug": "2.6.9",
1163 | "depd": "~1.1.2",
1164 | "destroy": "~1.0.4",
1165 | "encodeurl": "~1.0.2",
1166 | "escape-html": "~1.0.3",
1167 | "etag": "~1.8.1",
1168 | "fresh": "0.5.2",
1169 | "http-errors": "~1.6.2",
1170 | "mime": "1.4.1",
1171 | "ms": "2.0.0",
1172 | "on-finished": "~2.3.0",
1173 | "range-parser": "~1.2.0",
1174 | "statuses": "~1.4.0"
1175 | },
1176 | "dependencies": {
1177 | "debug": {
1178 | "version": "2.6.9",
1179 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1180 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1181 | "dev": true,
1182 | "requires": {
1183 | "ms": "2.0.0"
1184 | }
1185 | },
1186 | "http-errors": {
1187 | "version": "1.6.3",
1188 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
1189 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
1190 | "dev": true,
1191 | "requires": {
1192 | "depd": "~1.1.2",
1193 | "inherits": "2.0.3",
1194 | "setprototypeof": "1.1.0",
1195 | "statuses": ">= 1.4.0 < 2"
1196 | }
1197 | },
1198 | "inherits": {
1199 | "version": "2.0.3",
1200 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1201 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1202 | "dev": true
1203 | },
1204 | "setprototypeof": {
1205 | "version": "1.1.0",
1206 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
1207 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
1208 | "dev": true
1209 | },
1210 | "statuses": {
1211 | "version": "1.4.0",
1212 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
1213 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
1214 | "dev": true
1215 | }
1216 | }
1217 | },
1218 | "serve-index": {
1219 | "version": "1.9.1",
1220 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
1221 | "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
1222 | "dev": true,
1223 | "requires": {
1224 | "accepts": "~1.3.4",
1225 | "batch": "0.6.1",
1226 | "debug": "2.6.9",
1227 | "escape-html": "~1.0.3",
1228 | "http-errors": "~1.6.2",
1229 | "mime-types": "~2.1.17",
1230 | "parseurl": "~1.3.2"
1231 | },
1232 | "dependencies": {
1233 | "debug": {
1234 | "version": "2.6.9",
1235 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1236 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1237 | "dev": true,
1238 | "requires": {
1239 | "ms": "2.0.0"
1240 | }
1241 | },
1242 | "http-errors": {
1243 | "version": "1.6.3",
1244 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
1245 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
1246 | "dev": true,
1247 | "requires": {
1248 | "depd": "~1.1.2",
1249 | "inherits": "2.0.3",
1250 | "setprototypeof": "1.1.0",
1251 | "statuses": ">= 1.4.0 < 2"
1252 | }
1253 | },
1254 | "inherits": {
1255 | "version": "2.0.3",
1256 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1257 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1258 | "dev": true
1259 | },
1260 | "setprototypeof": {
1261 | "version": "1.1.0",
1262 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
1263 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
1264 | "dev": true
1265 | },
1266 | "statuses": {
1267 | "version": "1.5.0",
1268 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1269 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
1270 | "dev": true
1271 | }
1272 | }
1273 | },
1274 | "serve-static": {
1275 | "version": "1.13.2",
1276 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
1277 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
1278 | "dev": true,
1279 | "requires": {
1280 | "encodeurl": "~1.0.2",
1281 | "escape-html": "~1.0.3",
1282 | "parseurl": "~1.3.2",
1283 | "send": "0.16.2"
1284 | }
1285 | },
1286 | "server-destroy": {
1287 | "version": "1.0.1",
1288 | "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
1289 | "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=",
1290 | "dev": true
1291 | },
1292 | "set-blocking": {
1293 | "version": "2.0.0",
1294 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1295 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
1296 | "dev": true
1297 | },
1298 | "setprototypeof": {
1299 | "version": "1.1.1",
1300 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1301 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
1302 | "dev": true
1303 | },
1304 | "socket.io": {
1305 | "version": "2.1.1",
1306 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
1307 | "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
1308 | "dev": true,
1309 | "requires": {
1310 | "debug": "~3.1.0",
1311 | "engine.io": "~3.2.0",
1312 | "has-binary2": "~1.0.2",
1313 | "socket.io-adapter": "~1.1.0",
1314 | "socket.io-client": "2.1.1",
1315 | "socket.io-parser": "~3.2.0"
1316 | },
1317 | "dependencies": {
1318 | "base64-arraybuffer": {
1319 | "version": "0.1.5",
1320 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
1321 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
1322 | "dev": true
1323 | },
1324 | "component-emitter": {
1325 | "version": "1.2.1",
1326 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
1327 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
1328 | "dev": true
1329 | },
1330 | "engine.io-client": {
1331 | "version": "3.2.1",
1332 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
1333 | "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
1334 | "dev": true,
1335 | "requires": {
1336 | "component-emitter": "1.2.1",
1337 | "component-inherit": "0.0.3",
1338 | "debug": "~3.1.0",
1339 | "engine.io-parser": "~2.1.1",
1340 | "has-cors": "1.1.0",
1341 | "indexof": "0.0.1",
1342 | "parseqs": "0.0.5",
1343 | "parseuri": "0.0.5",
1344 | "ws": "~3.3.1",
1345 | "xmlhttprequest-ssl": "~1.5.4",
1346 | "yeast": "0.1.2"
1347 | }
1348 | },
1349 | "engine.io-parser": {
1350 | "version": "2.1.3",
1351 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
1352 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
1353 | "dev": true,
1354 | "requires": {
1355 | "after": "0.8.2",
1356 | "arraybuffer.slice": "~0.0.7",
1357 | "base64-arraybuffer": "0.1.5",
1358 | "blob": "0.0.5",
1359 | "has-binary2": "~1.0.2"
1360 | }
1361 | },
1362 | "parseqs": {
1363 | "version": "0.0.5",
1364 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
1365 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
1366 | "dev": true,
1367 | "requires": {
1368 | "better-assert": "~1.0.0"
1369 | }
1370 | },
1371 | "parseuri": {
1372 | "version": "0.0.5",
1373 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
1374 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
1375 | "dev": true,
1376 | "requires": {
1377 | "better-assert": "~1.0.0"
1378 | }
1379 | },
1380 | "socket.io-client": {
1381 | "version": "2.1.1",
1382 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
1383 | "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
1384 | "dev": true,
1385 | "requires": {
1386 | "backo2": "1.0.2",
1387 | "base64-arraybuffer": "0.1.5",
1388 | "component-bind": "1.0.0",
1389 | "component-emitter": "1.2.1",
1390 | "debug": "~3.1.0",
1391 | "engine.io-client": "~3.2.0",
1392 | "has-binary2": "~1.0.2",
1393 | "has-cors": "1.1.0",
1394 | "indexof": "0.0.1",
1395 | "object-component": "0.0.3",
1396 | "parseqs": "0.0.5",
1397 | "parseuri": "0.0.5",
1398 | "socket.io-parser": "~3.2.0",
1399 | "to-array": "0.1.4"
1400 | }
1401 | },
1402 | "socket.io-parser": {
1403 | "version": "3.2.0",
1404 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
1405 | "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
1406 | "dev": true,
1407 | "requires": {
1408 | "component-emitter": "1.2.1",
1409 | "debug": "~3.1.0",
1410 | "isarray": "2.0.1"
1411 | }
1412 | },
1413 | "ws": {
1414 | "version": "3.3.3",
1415 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
1416 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
1417 | "dev": true,
1418 | "requires": {
1419 | "async-limiter": "~1.0.0",
1420 | "safe-buffer": "~5.1.0",
1421 | "ultron": "~1.1.0"
1422 | }
1423 | }
1424 | }
1425 | },
1426 | "socket.io-adapter": {
1427 | "version": "1.1.2",
1428 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
1429 | "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==",
1430 | "dev": true
1431 | },
1432 | "socket.io-client": {
1433 | "version": "2.3.1",
1434 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.1.tgz",
1435 | "integrity": "sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ==",
1436 | "dev": true,
1437 | "requires": {
1438 | "backo2": "1.0.2",
1439 | "component-bind": "1.0.0",
1440 | "component-emitter": "~1.3.0",
1441 | "debug": "~3.1.0",
1442 | "engine.io-client": "~3.4.0",
1443 | "has-binary2": "~1.0.2",
1444 | "indexof": "0.0.1",
1445 | "parseqs": "0.0.6",
1446 | "parseuri": "0.0.6",
1447 | "socket.io-parser": "~3.3.0",
1448 | "to-array": "0.1.4"
1449 | }
1450 | },
1451 | "socket.io-parser": {
1452 | "version": "3.3.1",
1453 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz",
1454 | "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==",
1455 | "dev": true,
1456 | "requires": {
1457 | "component-emitter": "~1.3.0",
1458 | "debug": "~3.1.0",
1459 | "isarray": "2.0.1"
1460 | }
1461 | },
1462 | "statuses": {
1463 | "version": "1.3.1",
1464 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
1465 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
1466 | "dev": true
1467 | },
1468 | "stream-throttle": {
1469 | "version": "0.1.3",
1470 | "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz",
1471 | "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=",
1472 | "dev": true,
1473 | "requires": {
1474 | "commander": "^2.2.0",
1475 | "limiter": "^1.0.5"
1476 | }
1477 | },
1478 | "string-width": {
1479 | "version": "3.1.0",
1480 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1481 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1482 | "dev": true,
1483 | "requires": {
1484 | "emoji-regex": "^7.0.1",
1485 | "is-fullwidth-code-point": "^2.0.0",
1486 | "strip-ansi": "^5.1.0"
1487 | },
1488 | "dependencies": {
1489 | "ansi-regex": {
1490 | "version": "4.1.0",
1491 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1492 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1493 | "dev": true
1494 | },
1495 | "strip-ansi": {
1496 | "version": "5.2.0",
1497 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1498 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1499 | "dev": true,
1500 | "requires": {
1501 | "ansi-regex": "^4.1.0"
1502 | }
1503 | }
1504 | }
1505 | },
1506 | "strip-ansi": {
1507 | "version": "3.0.1",
1508 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1509 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1510 | "dev": true,
1511 | "requires": {
1512 | "ansi-regex": "^2.0.0"
1513 | }
1514 | },
1515 | "supports-color": {
1516 | "version": "2.0.0",
1517 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1518 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1519 | "dev": true
1520 | },
1521 | "symbol-observable": {
1522 | "version": "1.0.1",
1523 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
1524 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
1525 | "dev": true
1526 | },
1527 | "tfunk": {
1528 | "version": "4.0.0",
1529 | "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz",
1530 | "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==",
1531 | "dev": true,
1532 | "requires": {
1533 | "chalk": "^1.1.3",
1534 | "dlv": "^1.1.3"
1535 | }
1536 | },
1537 | "to-array": {
1538 | "version": "0.1.4",
1539 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
1540 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
1541 | "dev": true
1542 | },
1543 | "to-regex-range": {
1544 | "version": "5.0.1",
1545 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1546 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1547 | "dev": true,
1548 | "requires": {
1549 | "is-number": "^7.0.0"
1550 | }
1551 | },
1552 | "toidentifier": {
1553 | "version": "1.0.0",
1554 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1555 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
1556 | "dev": true
1557 | },
1558 | "ua-parser-js": {
1559 | "version": "0.7.22",
1560 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz",
1561 | "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==",
1562 | "dev": true
1563 | },
1564 | "ultron": {
1565 | "version": "1.1.1",
1566 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
1567 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
1568 | "dev": true
1569 | },
1570 | "universalify": {
1571 | "version": "0.1.2",
1572 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1573 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1574 | "dev": true
1575 | },
1576 | "unpipe": {
1577 | "version": "1.0.0",
1578 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1579 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
1580 | "dev": true
1581 | },
1582 | "utils-merge": {
1583 | "version": "1.0.1",
1584 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1585 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
1586 | "dev": true
1587 | },
1588 | "which-module": {
1589 | "version": "2.0.0",
1590 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
1591 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
1592 | "dev": true
1593 | },
1594 | "wrap-ansi": {
1595 | "version": "5.1.0",
1596 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
1597 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
1598 | "dev": true,
1599 | "requires": {
1600 | "ansi-styles": "^3.2.0",
1601 | "string-width": "^3.0.0",
1602 | "strip-ansi": "^5.0.0"
1603 | },
1604 | "dependencies": {
1605 | "ansi-regex": {
1606 | "version": "4.1.0",
1607 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1608 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1609 | "dev": true
1610 | },
1611 | "ansi-styles": {
1612 | "version": "3.2.1",
1613 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1614 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1615 | "dev": true,
1616 | "requires": {
1617 | "color-convert": "^1.9.0"
1618 | }
1619 | },
1620 | "strip-ansi": {
1621 | "version": "5.2.0",
1622 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1623 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1624 | "dev": true,
1625 | "requires": {
1626 | "ansi-regex": "^4.1.0"
1627 | }
1628 | }
1629 | }
1630 | },
1631 | "ws": {
1632 | "version": "6.1.4",
1633 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
1634 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
1635 | "dev": true,
1636 | "requires": {
1637 | "async-limiter": "~1.0.0"
1638 | }
1639 | },
1640 | "xmlhttprequest-ssl": {
1641 | "version": "1.5.5",
1642 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
1643 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
1644 | "dev": true
1645 | },
1646 | "y18n": {
1647 | "version": "4.0.1",
1648 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
1649 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
1650 | "dev": true
1651 | },
1652 | "yargs": {
1653 | "version": "15.4.1",
1654 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
1655 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
1656 | "dev": true,
1657 | "requires": {
1658 | "cliui": "^6.0.0",
1659 | "decamelize": "^1.2.0",
1660 | "find-up": "^4.1.0",
1661 | "get-caller-file": "^2.0.1",
1662 | "require-directory": "^2.1.1",
1663 | "require-main-filename": "^2.0.0",
1664 | "set-blocking": "^2.0.0",
1665 | "string-width": "^4.2.0",
1666 | "which-module": "^2.0.0",
1667 | "y18n": "^4.0.0",
1668 | "yargs-parser": "^18.1.2"
1669 | },
1670 | "dependencies": {
1671 | "ansi-regex": {
1672 | "version": "5.0.0",
1673 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
1674 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
1675 | "dev": true
1676 | },
1677 | "ansi-styles": {
1678 | "version": "4.3.0",
1679 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1680 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1681 | "dev": true,
1682 | "requires": {
1683 | "color-convert": "^2.0.1"
1684 | }
1685 | },
1686 | "cliui": {
1687 | "version": "6.0.0",
1688 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
1689 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
1690 | "dev": true,
1691 | "requires": {
1692 | "string-width": "^4.2.0",
1693 | "strip-ansi": "^6.0.0",
1694 | "wrap-ansi": "^6.2.0"
1695 | }
1696 | },
1697 | "color-convert": {
1698 | "version": "2.0.1",
1699 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1700 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1701 | "dev": true,
1702 | "requires": {
1703 | "color-name": "~1.1.4"
1704 | }
1705 | },
1706 | "color-name": {
1707 | "version": "1.1.4",
1708 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1709 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1710 | "dev": true
1711 | },
1712 | "emoji-regex": {
1713 | "version": "8.0.0",
1714 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1715 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1716 | "dev": true
1717 | },
1718 | "find-up": {
1719 | "version": "4.1.0",
1720 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1721 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1722 | "dev": true,
1723 | "requires": {
1724 | "locate-path": "^5.0.0",
1725 | "path-exists": "^4.0.0"
1726 | }
1727 | },
1728 | "is-fullwidth-code-point": {
1729 | "version": "3.0.0",
1730 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1731 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1732 | "dev": true
1733 | },
1734 | "locate-path": {
1735 | "version": "5.0.0",
1736 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
1737 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
1738 | "dev": true,
1739 | "requires": {
1740 | "p-locate": "^4.1.0"
1741 | }
1742 | },
1743 | "p-locate": {
1744 | "version": "4.1.0",
1745 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1746 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1747 | "dev": true,
1748 | "requires": {
1749 | "p-limit": "^2.2.0"
1750 | }
1751 | },
1752 | "path-exists": {
1753 | "version": "4.0.0",
1754 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1755 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1756 | "dev": true
1757 | },
1758 | "string-width": {
1759 | "version": "4.2.0",
1760 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
1761 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
1762 | "dev": true,
1763 | "requires": {
1764 | "emoji-regex": "^8.0.0",
1765 | "is-fullwidth-code-point": "^3.0.0",
1766 | "strip-ansi": "^6.0.0"
1767 | }
1768 | },
1769 | "strip-ansi": {
1770 | "version": "6.0.0",
1771 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1772 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1773 | "dev": true,
1774 | "requires": {
1775 | "ansi-regex": "^5.0.0"
1776 | }
1777 | },
1778 | "wrap-ansi": {
1779 | "version": "6.2.0",
1780 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
1781 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
1782 | "dev": true,
1783 | "requires": {
1784 | "ansi-styles": "^4.0.0",
1785 | "string-width": "^4.1.0",
1786 | "strip-ansi": "^6.0.0"
1787 | }
1788 | },
1789 | "yargs-parser": {
1790 | "version": "18.1.3",
1791 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
1792 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
1793 | "dev": true,
1794 | "requires": {
1795 | "camelcase": "^5.0.0",
1796 | "decamelize": "^1.2.0"
1797 | }
1798 | }
1799 | }
1800 | },
1801 | "yargs-parser": {
1802 | "version": "13.1.2",
1803 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
1804 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
1805 | "dev": true,
1806 | "requires": {
1807 | "camelcase": "^5.0.0",
1808 | "decamelize": "^1.2.0"
1809 | }
1810 | },
1811 | "yeast": {
1812 | "version": "0.1.2",
1813 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
1814 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
1815 | "dev": true
1816 | }
1817 | }
1818 | }
1819 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "css-grid",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "run-script-os",
8 | "start:win32": "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser \"C:\\Program Files\\Firefox Developer Edition\\firefox.exe\"",
9 | "//": "Hello! If you are having trouble running this command. Try changing Firefox Developer Edition to FirefoxDeveloperEdition",
10 | "start:darwin:linux": "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser 'Firefox Developer Edition'"
11 | },
12 | "author": "",
13 | "license": "ISC",
14 | "devDependencies": {
15 | "browser-sync": "^2.26.13",
16 | "run-script-os": "^1.1.5"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # CSS Grid Video Course
4 |
5 | Hey! These are the starter files and finished solutions. Grab the full course over at [CSSGrid.io](https://CSSGrid.io).
6 |
7 | ## Course FAQ
8 |
9 | ### Q: I'm getting "This is meant to be run from within npm script."
10 |
11 | Not sure why this is happening, but try these commands instead:
12 |
13 | **windows:** `npm run start:win32`
14 |
15 | **mac and linux:** `start:darwin:linux`
16 |
17 | Very few people get this, but please contact me if you find out why `npm start` command isn't running.
18 |
19 | ### Q: I'm getting Browsersync Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false)
20 |
21 | This is because some versions of Firefox are "FirefoxDeveloperEdition" and some new downloads are "Firefox Developer Edition". If you had downloaded the browser before the course, just remove the spaces from the package.json command so it says "FirefoxDeveloperEdition"
22 |
23 | ### Q: I can't see the lines / numbers of Firefox' CSS Grid Inspection Tools
24 |
25 | Make sure to turn off both "Use recommended performance settings" & "Use hardware acceleration when available“ within Preferences > Performance
26 |
27 | ## Community CSS Grid Content
28 |
29 | Feel free to submit a PR adding a link to your own recaps, guides or reviews!
30 |
31 | * [Course Review](https://www.bencodezen.io/blog/review-css-grid-with-wes-bos/) by [@bencodezen](https://www.twitter.com/bencodezen)
32 | * [Recap and lessons learned](https://marcokuehbauch.com/blog/learning-css-grid/) by [@mkuehb](https://twitter.com/Mkuehb)
33 | * [cssgrid.io course review](https://krzysztofzuraw.com/blog/2020/css-grid-io-course) by [@krzysztof_zuraw](https://twitter.com/krzysztof_zuraw)
34 | * My [gh-page](https://herminiotorres.github.io/cssgrid) by [@herminiotorres](https://twitter.com/herminiotorres)
35 |
36 | ## A note on Pull Requests
37 |
38 | These are meant to be 1:1 copies of what is done in the video. If you found a better / different way to do things, great, but I will be keeping them the same as the videos.
39 |
40 | The starter files + solutions will be updated if/when the videos are updated.
41 |
42 | Thanks!
43 |
44 | ## Live editable examples
45 |
46 | I recommend you use the files in the repo, but if you prefer to use JSFiddle instead, here are all the starter files ready to go:
47 |
48 | 02. [Starter Files and Tooling Setup](https://jsfiddle.net/6qvwur9q/)
49 | 03. [CSS Grid Fundamentals](https://jsfiddle.net/qxxpgg4j/)
50 | 04. [CSS Grid Dev Tools](https://jsfiddle.net/b55x8vh2/)
51 | 05. [CSS Grid Implicit vs Explicit Tracks](https://jsfiddle.net/mon8xdgb/)
52 | 06. [CSS grid-auto-flow Explained](https://jsfiddle.net/Loq4uj16/)
53 | 07. [Sizing tracks in CSS Grid](https://jsfiddle.net/q8h3r8yb/)
54 | 08. [CSS Grid repeat function](https://jsfiddle.net/8f8xyx86/)
55 | 09. [Sizing Grid Items](https://jsfiddle.net/wqs6tcuk/)
56 | 10. [Placing Grid Items](https://jsfiddle.net/hs5xhvpp/)
57 | 11. [Spanning and Placing Cardio](https://jsfiddle.net/2z7z6o9k/)
58 | 12. [auto-fit and auto-fill](https://jsfiddle.net/d1pLngzx/)
59 | 13. [Using minmax() for Responsive Grids](https://jsfiddle.net/xthszm2j/)
60 | 14. Grid Template Areas:
61 | - [Area Line Names](https://jsfiddle.net/tkyxomht/)
62 | - [Areas](https://jsfiddle.net/p0sn7L7v/)
63 | 15. [Naming Lines in CSS Grid](https://jsfiddle.net/ygpmn0xh/)
64 | 16. [grid-auto-flow dense Block Fitting](https://jsfiddle.net/sxj83p70/)
65 | 17. [CSS Grid Alignment + Centering](https://jsfiddle.net/eyL9a2gv/)
66 | 18. [Re-ordering Grid Items](https://jsfiddle.net/uscf9mk0/)
67 | 19. [Nesting Grid with Album Layouts](https://jsfiddle.net/yn7jak0y/)
68 | 20. [CSS Grid Image Gallery](https://jsfiddle.net/cbjzped2/)
69 | 21. Flexbox vs CSS Grid:
70 | - [Axis Flipping](https://jsfiddle.net/pt8hym9s/)
71 | - [Controls on Right](https://jsfiddle.net/4o7gavuj/)
72 | - [Flex on Item](https://jsfiddle.net/1u264ftd/)
73 | - [Perfectly Centered](https://jsfiddle.net/sgbrtrjo/)
74 | - [Self Control](https://jsfiddle.net/c6gg8pkn/)
75 | - [Stacked Layout](https://jsfiddle.net/mnfm1sw0/)
76 | - [Unknown Content Size](https://jsfiddle.net/4ze02bkj/)
77 | - [Unknown Number of Items](https://jsfiddle.net/Lg7r3jmy/)
78 | - [Variable Widths on Each Row](https://jsfiddle.net/qymhootd/)
79 | 22. [Recreating Codepen](https://jsfiddle.net/br6n54qt/)
80 | 23. [Bootstrappy Grid with CSS Variables](https://jsfiddle.net/gLLht2hd/)
81 | 24. [Responsive Website](https://jsfiddle.net/bh16ofp8/)
82 | 25. [Full Bleed Blog Layout](https://jsfiddle.net/j8w6v3mh/)
83 |
--------------------------------------------------------------------------------