Add resources pages and new guide

pull/1331/head
Kamran Ahmed 5 years ago
parent 2d15290566
commit cf648924cf
  1. 14
      components/roadmap-header/index.js
  2. 35
      components/roadmap-resources/index.js
  3. 21
      components/roadmap-resources/style.js
  4. 7
      content/authors.json
  5. 10
      content/guides.json
  6. 62
      content/guides/what-is-internet.md
  7. 161
      content/roadmaps.json
  8. 15
      content/roadmaps/1-frontend/0-About/0-Summary.md
  9. 20
      content/roadmaps/1-frontend/0-About/1-Basic-Skills.md
  10. 12
      content/roadmaps/1-frontend/0-About/3-Job-Titles.md
  11. 15
      content/roadmaps/1-frontend/1-Learn/1-Job-Ready.md
  12. 0
      content/roadmaps/1-frontend/1-Learn/2-Write-Better-CSS.md
  13. 0
      content/roadmaps/1-frontend/1-Learn/3-Build-Tools.md
  14. 0
      content/roadmaps/1-frontend/1-Learn/4-Modern-Applications.md
  15. 0
      content/roadmaps/1-frontend/1-Learn/5-Automated-Testing.md
  16. 0
      content/roadmaps/1-frontend/1-Learn/6-Static-Type-Checkers.md
  17. 0
      content/roadmaps/1-frontend/1-Learn/7-Server-Side-Rendering.md
  18. 0
      content/roadmaps/1-frontend/1-Learn/8-Go-Beyond.md
  19. 0
      content/roadmaps/1-frontend/landscape.md
  20. 3
      content/roadmaps/1-frontend/meta.json
  21. 16
      content/roadmaps/1-frontend/resources.md
  22. 0
      content/roadmaps/2-backend/1-Landscape/0-Summary.md
  23. 0
      content/roadmaps/2-backend/1-Landscape/1-Junior.md
  24. 0
      content/roadmaps/2-backend/1-Landscape/2-Intermediate.md
  25. 0
      content/roadmaps/2-backend/1-Landscape/3-Senior.md
  26. 0
      content/roadmaps/2-backend/landscape.md
  27. 3
      content/roadmaps/2-backend/meta.json
  28. 7
      content/roadmaps/2-backend/resources.md
  29. 0
      content/roadmaps/3-devops/1-Landscape/1-Junior.md
  30. 0
      content/roadmaps/3-devops/1-Landscape/2-Intermediate.md
  31. 0
      content/roadmaps/3-devops/1-Landscape/3-Senior.md
  32. 0
      content/roadmaps/3-devops/landscape.md
  33. 3
      content/roadmaps/3-devops/meta.json
  34. 7
      content/roadmaps/3-devops/resources.md
  35. 0
      content/roadmaps/4-fullstack/landscape.md
  36. 3
      content/roadmaps/4-fullstack/meta.json
  37. 7
      content/roadmaps/4-fullstack/resources.md
  38. 0
      content/roadmaps/5-qa/landscape.md
  39. 3
      content/roadmaps/5-qa/meta.json
  40. 7
      content/roadmaps/5-qa/resources.md
  41. 38
      pages/[roadmap]/resources.js
  42. BIN
      public/authors/dmytrobol.png
  43. BIN
      public/roadmaps/frontend/beginner-1.png
  44. 140
      public/sitemap.xml
  45. 2
      scripts/roadmaps-meta.js
  46. 59
      test/path-map.spec.js
  47. 121
      yarn.lock

@ -6,7 +6,7 @@ import { Description, Header, Title, MenuItemLink, MenuItems } from './style';
import Link from 'next/link'; import Link from 'next/link';
import classNames from 'classnames'; import classNames from 'classnames';
const RoadmapHeader = ({ roadmap }) => ( const RoadmapHeader = ({ roadmap, page = 'landscape' }) => (
<Header> <Header>
<Title>{ roadmap.title }</Title> <Title>{ roadmap.title }</Title>
<Description>{ roadmap.description }</Description> <Description>{ roadmap.description }</Description>
@ -43,15 +43,17 @@ const RoadmapHeader = ({ roadmap }) => (
</BadgesList> </BadgesList>
<MenuItems className="border-bottom"> <MenuItems className="border-bottom">
<div className='d-none'>
<Link href={ `${roadmap.url}` } passHref> <Link href={ `${roadmap.url}` } passHref>
<MenuItemLink className={ classNames({ active: true, }) }>Landscape</MenuItemLink> <MenuItemLink className={ classNames({ active: page === 'landscape', }) }>Landscape</MenuItemLink>
</Link> </Link>
<Link href={ `${roadmap.url}/resources` } passHref> <Link href={ `${roadmap.url}/resources` } passHref>
<MenuItemLink className={ classNames({ active: false, }) }>Resources</MenuItemLink> <MenuItemLink className={ classNames({ active: page === 'resources', }) }>Resources</MenuItemLink>
</Link>
<Link href={ `${roadmap.url}/resources` } passHref>
<MenuItemLink className={ classNames({ active: false, }) }>Project Ideas</MenuItemLink>
</Link> </Link>
{/*<Link href={ `${roadmap.url}/resources` } passHref>*/}
{/* <MenuItemLink className={ classNames({ active: false, }) }>Project Ideas</MenuItemLink>*/}
{/*</Link>*/}
</div>
</MenuItems> </MenuItems>
</Header> </Header>

@ -0,0 +1,35 @@
import { Summary, SummaryContainer, UpcomingContainer } from './style';
import GuideBody from 'components/guide-body';
import RoadmapHeader from 'components/roadmap-header';
import SharePage from 'components/share-page';
import MdRenderer from 'components/md-renderer';
const RoadmapResources = ({ roadmap }) => {
if (roadmap.upcoming) {
return (
<>
<RoadmapHeader roadmap={ roadmap } />
<UpcomingContainer>
<GuideBody guide={{ fileName: 'upcoming' }} />
</UpcomingContainer>
</>
);
}
const filePath = roadmap.resources.replace(/^\//, '');
const ResourcesContent = require(`../../content/${filePath}`).default;
return (
<SummaryContainer>
<RoadmapHeader roadmap={ roadmap } page='resources' />
<Summary className="container">
<MdRenderer>
<ResourcesContent />
</MdRenderer>
<SharePage title={ roadmap.description } url={ roadmap.url } />
</Summary>
</SummaryContainer>
)
};
export default RoadmapResources;

@ -0,0 +1,21 @@
import styled from 'styled-components';
export const SummaryContainer = styled.div``;
export const UpcomingContainer = styled.div`
text-align: center;
padding: 40px 0 50px;
.container {
position: relative;
}
`;
export const Summary = styled.div`
margin-top: 35px;
min-height: 400px;
max-width: 1000px;
display: block;
position: relative;
text-align: left;
`;

@ -12,5 +12,12 @@
"twitter": "__jesse_li", "twitter": "__jesse_li",
"picture": "/authors/jesse.png", "picture": "/authors/jesse.png",
"bio": "Software engineer." "bio": "Software engineer."
},
{
"username": "dmytrobol",
"name": "Dmytro Bolkachov",
"twitter": "dmytrobol",
"picture": "/authors/dmytrobol.png",
"bio": "JavaScript Lad, Movie buff and coder interested in everything web related"
} }
] ]

@ -1,4 +1,14 @@
[ [
{
"title": "How does the internet work?",
"description": "Learn the basics of internet and everything involved with this short video series",
"url": "/guides/what-is-internet",
"fileName": "what-is-internet",
"featured": true,
"author": "dmytrobol",
"updatedAt": "2020-02-29T15:48:21.191Z",
"createdAt": "2020-02-29T15:48:21.191Z"
},
{ {
"title": "Building a BitTorrent Client", "title": "Building a BitTorrent Client",
"description": "Learn everything you need to know about BitTorrent by writing a client in Go", "description": "Learn everything you need to know about BitTorrent by writing a client in Go",

@ -0,0 +1,62 @@
Knowing the basics of internet and how it works is the key knowledge that every developer must have. In this article accompanied with an introductory series of short videos about internet from [code.org](https://code.org) you will learn the basics of internet and how everything works. After going through this article, you will be able to answer the below questions:
* What is Internet?
* How does the information move on the internet?
* How do the networks talk to each other and the protocols involved?
* Packet, routers, and reliability
* HTTP and the HTML – How are you viewing this webpage in your browser?
* How is the information transfer on the internet made secure?
* What is cybersecurity and some common internet crimes?
## What is internet?
Internet, at its simplest, is a global network of computers connected to each other which communicate through a standardized set of protocols.
In the video below Vint Cerf, one of the "fathers of the internet" explains the history of how the internet works and how no one person or organization is really in charge of it.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/Dxcc6ycZ73M" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Wires, Cables & Wifi
Information on the internet moves from computer to another in the form of bits. The medium for this transfer can be wires e.g. ethernet wires that you might have seen in your homes, it can be transferred in the form of light or fiber optic cables, also we can use wireless mediums.
In the video linked below, you will learn about the different mediums for data transfer on the internet and the pros and cons for each.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/ZhEf7e4kopM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## IP Addresses and DNS
Now that you know about the physical medium for the data transfer over the internet. It's time to learn about the protocols involved or how does the information reach from one computer to another in this massive global network of computers.
In the video below, you will get a brief introduction to IP, DNS and how these protocols make the internet work.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/5o8CwafCxnU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Packets, Routing and Reliability
Information transfer on the internet from one computer to another does not need to follow a fixed path; infact, it may change paths during the transfer. This information transfer is done in the form of packets and these packets may follow different routes depending upon certain factors.
In this video, you will learn about how the packets of information are routed from one computer to another to reach the destination.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/AYdF7b3nMto" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## HTTP and HTML
HTTP is the standard protocol using which the webpages are transferred over the internet. The video below is a brief introduction to HTTP and how the browsers load the websites for you.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/kBXQZMmiA4s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Encryption and Public Keys
Cryptography is what keeps our communication secure on the internet, in this short video you will learn the basics of cryptograpy, SSL and TLS and how they help make the communication on the internet secure.
<iframe width="100%" height="400" src="https://www.youtube.com/embed/ZghMPWGXexs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Cybersecurity and Crime
In this video, you will learn about the basics of cybersecurity and common cybercrimes
<iframe width="100%" height="400" src="https://www.youtube.com/embed/AuYNXgO_f3Y" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
And that wraps it up for this article. To learn more about the internet, [Kamran Ahmed](https://twitter.com/kamranahmedse) has a nice little guide on [DNS: How a website is found on the Internet](/guides/dns-in-one-picture). Also go through the episodes of [howdns.works](https://howdns.works/) and read this [cartoon intro to DNS over HTTPS](https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/).

@ -35,7 +35,8 @@
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"
}, },
"featured": true, "featured": true,
"path": "/roadmaps/1-frontend/0-About/2-Landscape.md", "path": "/roadmaps/1-frontend/landscape.md",
"resources": "/roadmaps/1-frontend/resources.md",
"detailed": false, "detailed": false,
"versions": [ "versions": [
"latest", "latest",
@ -45,72 +46,7 @@
"contributorsCount": 1, "contributorsCount": 1,
"contributorsUrl": "/frontend/contributors", "contributorsUrl": "/frontend/contributors",
"url": "/frontend", "url": "/frontend",
"sidebar": { "sidebar": {}
"About": [
{
"url": "/frontend/summary",
"title": "Summary",
"path": "/roadmaps/1-frontend/0-About/0-Summary.md"
},
{
"url": "/frontend/basic-skills",
"title": "Basic Skills",
"path": "/roadmaps/1-frontend/0-About/1-Basic-Skills.md"
},
{
"url": "/frontend/landscape",
"title": "Landscape",
"path": "/roadmaps/1-frontend/0-About/2-Landscape.md"
},
{
"url": "/frontend/job-titles",
"title": "Job Titles",
"path": "/roadmaps/1-frontend/0-About/3-Job-Titles.md"
}
],
"Learn": [
{
"url": "/frontend/job-ready",
"title": "Job Ready",
"path": "/roadmaps/1-frontend/1-Learn/1-Job-Ready.md"
},
{
"url": "/frontend/write-better-css",
"title": "Write Better CSS",
"path": "/roadmaps/1-frontend/1-Learn/2-Write-Better-CSS.md"
},
{
"url": "/frontend/build-tools",
"title": "Build Tools",
"path": "/roadmaps/1-frontend/1-Learn/3-Build-Tools.md"
},
{
"url": "/frontend/modern-applications",
"title": "Modern Applications",
"path": "/roadmaps/1-frontend/1-Learn/4-Modern-Applications.md"
},
{
"url": "/frontend/automated-testing",
"title": "Automated Testing",
"path": "/roadmaps/1-frontend/1-Learn/5-Automated-Testing.md"
},
{
"url": "/frontend/static-type-checkers",
"title": "Static Type Checkers",
"path": "/roadmaps/1-frontend/1-Learn/6-Static-Type-Checkers.md"
},
{
"url": "/frontend/server-side-rendering",
"title": "Server Side Rendering",
"path": "/roadmaps/1-frontend/1-Learn/7-Server-Side-Rendering.md"
},
{
"url": "/frontend/go-beyond",
"title": "Go Beyond",
"path": "/roadmaps/1-frontend/1-Learn/8-Go-Beyond.md"
}
]
}
}, },
{ {
"seo": { "seo": {
@ -144,7 +80,8 @@
"description": "Step by step guide to becoming a modern backend developer", "description": "Step by step guide to becoming a modern backend developer",
"featuredDescription": "Step by step guide to becoming a modern backend developer in 2020", "featuredDescription": "Step by step guide to becoming a modern backend developer in 2020",
"featured": true, "featured": true,
"path": "/roadmaps/2-backend/0-About/0-Summary.md", "path": "/roadmaps/2-backend/landscape.md",
"resources": "/roadmaps/2-backend/resources.md",
"author": { "author": {
"name": "Kamran Ahmed", "name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"
@ -152,37 +89,7 @@
"contributorsCount": 1, "contributorsCount": 1,
"contributorsUrl": "/backend/contributors", "contributorsUrl": "/backend/contributors",
"url": "/backend", "url": "/backend",
"sidebar": { "sidebar": {}
"About": [
{
"url": "/backend/summary",
"title": "Summary",
"path": "/roadmaps/2-backend/0-About/0-Summary.md"
}
],
"Landscape": [
{
"url": "/backend/summary",
"title": "Summary",
"path": "/roadmaps/2-backend/1-Landscape/0-Summary.md"
},
{
"url": "/backend/junior",
"title": "Junior",
"path": "/roadmaps/2-backend/1-Landscape/1-Junior.md"
},
{
"url": "/backend/intermediate",
"title": "Intermediate",
"path": "/roadmaps/2-backend/1-Landscape/2-Intermediate.md"
},
{
"url": "/backend/senior",
"title": "Senior",
"path": "/roadmaps/2-backend/1-Landscape/3-Senior.md"
}
]
}
}, },
{ {
"seo": { "seo": {
@ -210,7 +117,8 @@
"description": "Step by step guide for DevOps or any other Operations Role", "description": "Step by step guide for DevOps or any other Operations Role",
"featuredDescription": "Step by step guide to become an SRE or for any operations role in 2020", "featuredDescription": "Step by step guide to become an SRE or for any operations role in 2020",
"featured": true, "featured": true,
"path": "/roadmaps/3-devops/0-About/0-Summary.md", "path": "/roadmaps/3-devops/landscape.md",
"resources": "/roadmaps/3-devops/resources.md",
"versions": [ "versions": [
"latest", "latest",
"2018", "2018",
@ -223,32 +131,7 @@
"contributorsCount": 1, "contributorsCount": 1,
"contributorsUrl": "/devops/contributors", "contributorsUrl": "/devops/contributors",
"url": "/devops", "url": "/devops",
"sidebar": { "sidebar": {}
"About": [
{
"url": "/devops/summary",
"title": "Summary",
"path": "/roadmaps/3-devops/0-About/0-Summary.md"
}
],
"Landscape": [
{
"url": "/devops/junior",
"title": "Junior",
"path": "/roadmaps/3-devops/1-Landscape/1-Junior.md"
},
{
"url": "/devops/intermediate",
"title": "Intermediate",
"path": "/roadmaps/3-devops/1-Landscape/2-Intermediate.md"
},
{
"url": "/devops/senior",
"title": "Senior",
"path": "/roadmaps/3-devops/1-Landscape/3-Senior.md"
}
]
}
}, },
{ {
"seo": { "seo": {
@ -281,7 +164,8 @@
"title": "Full Stack Developer", "title": "Full Stack Developer",
"description": "Step by step guide to becoming a modern fullstack developer in 2020", "description": "Step by step guide to becoming a modern fullstack developer in 2020",
"featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2020", "featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2020",
"path": "/roadmaps/4-fullstack/0-About/0-Summary.md", "path": "/roadmaps/4-fullstack/landscape.md",
"resources": "/roadmaps/4-fullstack/resources.md",
"upcoming": true, "upcoming": true,
"author": { "author": {
"name": "Kamran Ahmed", "name": "Kamran Ahmed",
@ -290,15 +174,7 @@
"contributorsCount": 1, "contributorsCount": 1,
"contributorsUrl": "/fullstack/contributors", "contributorsUrl": "/fullstack/contributors",
"url": "/fullstack", "url": "/fullstack",
"sidebar": { "sidebar": {}
"About": [
{
"url": "/fullstack/summary",
"title": "Summary",
"path": "/roadmaps/4-fullstack/0-About/0-Summary.md"
}
]
}
}, },
{ {
"seo": { "seo": {
@ -323,7 +199,8 @@
"description": "Steps to follow in order to become a modern QA Engineer in 2020", "description": "Steps to follow in order to become a modern QA Engineer in 2020",
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020", "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020",
"upcoming": true, "upcoming": true,
"path": "/roadmaps/5-qa/0-About/0-Summary.md", "path": "/roadmaps/5-qa/landscape.md",
"resources": "/roadmaps/5-qa/resources.md",
"author": { "author": {
"name": "Anas Fitiani", "name": "Anas Fitiani",
"url": "https://github.com/anas-qa" "url": "https://github.com/anas-qa"
@ -331,14 +208,6 @@
"contributorsCount": 1, "contributorsCount": 1,
"contributorsUrl": "/qa/contributors", "contributorsUrl": "/qa/contributors",
"url": "/qa", "url": "/qa",
"sidebar": { "sidebar": {}
"About": [
{
"url": "/qa/summary",
"title": "Summary",
"path": "/roadmaps/5-qa/0-About/0-Summary.md"
}
]
}
} }
] ]

@ -1,15 +0,0 @@
## What is a Frontend Developer?
A frontend developer is someone who works on the side of the websites that the user interacts with i.e. front or the client side of the website. Whenever you visit a website, everything that you see is mainly developed by the frontend developers.
They work with designers or UX teams to convert their mockups or wireframes to the actual website that the users can interact with. Also they work with [backend developers](/backend) who work with database and servers to get the data from and to display on the website. Wikipedia describes frontend development as follows
> [According to Wikipedia](https://en.wikipedia.org/wiki/Front-end_web_development):
>
> Front-end web development is the practice of converting data to a graphical interface, through the use of HTML, CSS, and JavaScript, so that users can view and interact with that data.
## Key Components of a Website
If we talk about the frontend, all the websites are mainly built with three key technologies – **HTML**, **CSS** and **JavaScript**. If you know just these three, you can start building websites and be employable.
Before we proceed, let me give you a brief overview of how **HTML**, **CSS** and **JavaScript** are used on the website. **HTML** provides the structure to a website i.e. all the text, headings, paragraphs, images etc that you see on the website, they have been created with HTML. HTML provides you just the structure, you need to put another layer on top of it to make the website pretty - this next layer is CSS. **CSS** helps make your websites pretty - the colors, backgrounds, font size, borders, shadows etc are controlled using CSS. And finally, the third layer is **JavaScript** which helps make the website interactive e.g. controlling the actions like showing a popup, switching slider images upon click etc is all controlled by JavaScript.
To understand it better, let me provide the analogy of a human body, the skeleton provides structure to our bodies so it can be equivalent to the HTML, the skin which hides the structure of our bodies and beautifies is like CSS and the muscles which help us perform different actions can be JavaScript.

@ -1,20 +0,0 @@
## Soft Skills
Before we jump on to the technical skills there are few non-technical or soft skills that every employer is going to demand, so make sure to work on that side of the things as well when you are preparing yourself technically
* **Communication skills** — Talking to your colleagues, writing emails, use of language
* **Teamwork** — Working with others, sharing responsibilities, apart from personal goals, achieving goals as a team
* **Adaptability** — Being able to adapt according to the situations, changes and pressure at the workplace
* **Emotional Intelligence** — Empathy, being able to understand the emotions of those around you.
* **Work Ethics and Integrity** — Being able to follow through on your duties in timely and quality manner.
* **Be Curious** — Your curiosity is going to help you a great deal in evolving yourself. Don't just take things as they are, look at the reasoning behind the things. Look at the things that others are building, learn from them. Look at what community is most excited about these days.
## Technical Skills
In order to be a frontend developer, all you need is to learn HTML, CSS and JavaScript. Just learn these and you should be employable. I know a lot of developers who just know these and are working as frontend developers and are making decent money
* HTML
* CSS
* JavaScript
Frontend development is broad and there are further skills that are in play but those can be gained over time. All you need is to learn the above three and start making projects ..lots of them. This is how you will hone your skillset and continue to grow.
Having said that, the skills and the relevant expertise in those skills varies from the job level, have a look at the landscape to get an idea about everything that is there in Frontend Development.

@ -1,12 +0,0 @@
## Common Job Titles
If you know frontend development, there are jobs with different titles that you can apply to. Here is the list of different job titles with almost same responsibilities
* Frontend Developer / Engineer
* JavaScript Developer
* JavaScript Engineer
* HTML / CSS Developer
* UI Developer
* Web Developer
* FullStack Developer
Having Web Developer or FullStack developer in the title would normally mean that you need to have some backend skills as well. Most of the small or service based companies require you to have backend and some UI designing skills as well so it is better to look at the job description also once you have shortlisted the jobs to apply to.

@ -1,15 +0,0 @@
## Technical Skills
The sections below describe different steps required to become a frontend developer
## Learning How Things Work
As a web developer, frontend, backend or fullstack, you should have a good understanding of how the internet works
![](/roadmaps/frontend/beginner-1.png)
Learn the below listed in the order given below
* What is Internet and how does it work?
* What is HTTP, how it evolved and where is it now?
* How do the browsers work? Engines behind different browsers
* What is DNS? How a website is found on the internet?
* What's in a domain name? What is an IP Address?
* What is Web Hosting?

@ -34,7 +34,8 @@
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"
}, },
"featured": true, "featured": true,
"path": "./0-About/2-Landscape.md", "path": "./landscape.md",
"resources": "./resources.md",
"detailed": false, "detailed": false,
"versions": [ "versions": [
"latest", "latest",

@ -0,0 +1,16 @@
## Become a Frontend Developer
Before I go ahead and list down the resources, please know that the roadmap and the list below is exhaustive and you don't need to know it all from the get go. For frontend development, all you need to get started with is learn some basic HTML, CSS and JavaScript and start working on projects; everything else you will learn along the way.
## Internet and how it works?
Get the basic understanding of internet, browsers, networks and other relevant knowledge.
* [How the internet works in 5 minutes](https://www.youtube.com/watch?v=7_LPdttKXPc) 👀
* [What is the Internet](https://www.youtube.com/watch?v=Dxcc6ycZ73M)
* [The Internet: IP Addresses & DNS](https://www.youtube.com/watch?v=5o8CwafCxnU)
* [The Internet: Packets, Routing & Reliability](https://www.youtube.com/watch?v=AYdF7b3nMto)
* What is HTTP, how it evolved and where is it now?
* How do the browsers work? Engines behind different browsers
* What is DNS? How a website is found on the internet?
* What's in a domain name? What is an IP Address?
* What is Web Hosting?

@ -30,7 +30,8 @@
"description": "Step by step guide to becoming a modern backend developer", "description": "Step by step guide to becoming a modern backend developer",
"featuredDescription": "Step by step guide to becoming a modern backend developer in 2020", "featuredDescription": "Step by step guide to becoming a modern backend developer in 2020",
"featured": true, "featured": true,
"path": "./0-About/0-Summary.md", "path": "./landscape.md",
"resources": "./resources.md",
"author": { "author": {
"name": "Kamran Ahmed", "name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"

@ -0,0 +1,7 @@
> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup).
While we prepare the list, follow this simple advice to learn anything
> Just **pick a project and start working on it**, you will learn all that you need along the way.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -24,7 +24,8 @@
"description": "Step by step guide for DevOps or any other Operations Role", "description": "Step by step guide for DevOps or any other Operations Role",
"featuredDescription": "Step by step guide to become an SRE or for any operations role in 2020", "featuredDescription": "Step by step guide to become an SRE or for any operations role in 2020",
"featured": true, "featured": true,
"path": "./0-About/0-Summary.md", "path": "./landscape.md",
"resources": "./resources.md",
"versions": [ "versions": [
"latest", "latest",
"2018", "2018",

@ -0,0 +1,7 @@
> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup).
While we prepare the list, follow this simple advice to learn anything
> Just **pick a project and start working on it**, you will learn all that you need along the way.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -29,7 +29,8 @@
"title": "Full Stack Developer", "title": "Full Stack Developer",
"description": "Step by step guide to becoming a modern fullstack developer in 2020", "description": "Step by step guide to becoming a modern fullstack developer in 2020",
"featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2020", "featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2020",
"path": "./0-About/0-Summary.md", "path": "./landscape.md",
"resources": "./resources.md",
"upcoming": true, "upcoming": true,
"author": { "author": {
"name": "Kamran Ahmed", "name": "Kamran Ahmed",

@ -0,0 +1,7 @@
> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup).
While we prepare the list, follow this simple advice to learn anything
> Just **pick a project and start working on it**, you will learn all that you need along the way.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -21,7 +21,8 @@
"description": "Steps to follow in order to become a modern QA Engineer in 2020", "description": "Steps to follow in order to become a modern QA Engineer in 2020",
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020", "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020",
"upcoming": true, "upcoming": true,
"path": "./0-About/0-Summary.md", "path": "./landscape.md",
"resources": "./resources.md",
"author": { "author": {
"name": "Anas Fitiani", "name": "Anas Fitiani",
"url": "https://github.com/anas-qa" "url": "https://github.com/anas-qa"

@ -0,0 +1,7 @@
> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup).
While we prepare the list, follow this simple advice to learn anything
> Just **pick a project and start working on it**, you will learn all that you need along the way.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,38 @@
import Error from 'next/error';
import DefaultLayout from 'layouts/default';
import SiteNav from 'components/site-nav';
import PageFooter from 'components/page-footer';
import { serverOnlyProps } from 'lib/server';
import { getRequestedRoadmap } from 'lib/roadmap';
import siteConfig from 'content/site';
import Helmet from 'components/helmet';
import RoadmapResources from '../../components/roadmap-resources';
const Resources = ({ roadmap, canonical }) => {
if (!roadmap) {
return <Error statusCode={404} />;
}
return (
<DefaultLayout>
<Helmet
canonical={canonical}
title={roadmap?.seo?.title || roadmap.title}
description={roadmap?.seo?.description || roadmap.description}
keywords={roadmap?.keywords || []}
/>
<SiteNav />
<RoadmapResources roadmap={roadmap} />
<PageFooter />
</DefaultLayout>
);
};
Resources.getInitialProps = serverOnlyProps(({ req }) => {
return {
canonical: `${siteConfig.url.web}${req.url}`,
roadmap: getRequestedRoadmap(req)
};
});
export default Resources;

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

@ -6,156 +6,24 @@
<lastmod>2020-01-29T07:49:37.087Z</lastmod> <lastmod>2020-01-29T07:49:37.087Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url>
<loc>https://roadmap.sh/frontend/summary</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.087Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/basic-skills</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.100Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/landscape</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.087Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/job-titles</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.100Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/job-ready</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.099Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/write-better-css</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/build-tools</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/modern-applications</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/automated-testing</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/static-type-checkers</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/server-side-rendering</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/frontend/go-beyond</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:37.088Z</lastmod>
<priority>1.0</priority>
</url>
<url> <url>
<loc>https://roadmap.sh/backend</loc> <loc>https://roadmap.sh/backend</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod> <lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url>
<loc>https://roadmap.sh/backend/summary</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/backend/summary</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/backend/junior</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/backend/intermediate</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/backend/senior</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.705Z</lastmod>
<priority>1.0</priority>
</url>
<url> <url>
<loc>https://roadmap.sh/devops</loc> <loc>https://roadmap.sh/devops</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod> <lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url>
<loc>https://roadmap.sh/devops/summary</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/devops/junior</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/devops/intermediate</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://roadmap.sh/devops/senior</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority>
</url>
<url> <url>
<loc>https://roadmap.sh/fullstack</loc> <loc>https://roadmap.sh/fullstack</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod> <lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url>
<loc>https://roadmap.sh/fullstack/summary</loc>
<changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
<priority>1.0</priority>
</url>
<url> <url>
<loc>https://roadmap.sh/qa</loc> <loc>https://roadmap.sh/qa</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
@ -163,9 +31,9 @@
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
<loc>https://roadmap.sh/qa/summary</loc> <loc>https://roadmap.sh/guides/what-is-internet</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.706Z</lastmod> <lastmod>2020-02-29T15:48:21.191Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
@ -231,7 +99,7 @@
<url> <url>
<loc>https://roadmap.sh/roadmaps</loc> <loc>https://roadmap.sh/roadmaps</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.711Z</lastmod> <lastmod>2020-02-23T07:24:00.532Z</lastmod>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
@ -243,7 +111,7 @@
<url> <url>
<loc>https://roadmap.sh/sponsors</loc> <loc>https://roadmap.sh/sponsors</loc>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<lastmod>2020-01-29T07:49:29.711Z</lastmod> <lastmod>2020-02-23T07:24:00.533Z</lastmod>
<priority>0.5</priority> <priority>0.5</priority>
</url> </url>
</urlset> </urlset>

@ -17,6 +17,7 @@ const roadmapsMeta = roadmapDirs.reduce((metaAcc, roadmapDirName) => {
// We can't use the absolute path in the build e.g. ~/Users/user/where-build-is-running/content // We can't use the absolute path in the build e.g. ~/Users/user/where-build-is-running/content
// So, we remove it and use the path relative to content directory // So, we remove it and use the path relative to content directory
const roadmapLandingFilePath = path.join(roadmapDir.replace(STORAGE_PATH, ''), roadmapMeta.path); const roadmapLandingFilePath = path.join(roadmapDir.replace(STORAGE_PATH, ''), roadmapMeta.path);
const resourcesPath = path.join(roadmapDir.replace(STORAGE_PATH, ''), roadmapMeta.resources);
const contributors = exec(`git log --pretty=format:"%an%x09" ${roadmapDir} | uniq`) const contributors = exec(`git log --pretty=format:"%an%x09" ${roadmapDir} | uniq`)
.toString() .toString()
@ -77,6 +78,7 @@ const roadmapsMeta = roadmapDirs.reduce((metaAcc, roadmapDirName) => {
contributorsUrl: `/${roadmapSlug}/contributors`, contributorsUrl: `/${roadmapSlug}/contributors`,
url: `/${roadmapSlug}`, url: `/${roadmapSlug}`,
path: roadmapLandingFilePath, path: roadmapLandingFilePath,
resources: resourcesPath,
sidebar, sidebar,
}, },
]; ];

@ -1,59 +0,0 @@
const path = require('path');
const fs = require('fs');
const guides = require('../content/guides');
const {
getPageRoutes,
getGuideRoutes,
} = require("../scripts/path-map");
describe("Build scripts tests", () => {
test('it should generate valid pathmap for pages', () => {
const pageRoutes = getPageRoutes();
expect(pageRoutes).toEqual({
'/': { page: '/index' },
'/about': { page: '/about' },
'/privacy': { page: '/privacy' },
'/terms': { page: '/terms' },
'/guides': { page: '/guides/index' },
'/roadmaps': { page: '/roadmaps' },
'/signup': { page: '/signup' },
});
});
test('it should generate valid guides pathmap', () => {
const expectedGuideRoutes = guides.reduce((acc, guide) => {
const [,, slug] = guide.url.split('/');
return {
...acc,
[guide.url]: {
page: '/guides/[guide]',
query: slug,
}
};
}, {});
// Valid path map is generated
expect(expectedGuideRoutes).toEqual(getGuideRoutes());
const pageFilePath = path.join(__dirname, '../pages/guides/[guide].js');
const foundFilePath = fs.existsSync(pageFilePath) ? pageFilePath : '';
// Given page component exists
expect(foundFilePath).toEqual(pageFilePath);
});
test('it should have markdown file for each guide', () => {
guides.forEach(guide => {
const [,, slug] = guide.url.split('/');
const expectedFile = path.join(__dirname, `../content/guides/${slug}.md`);
const foundFile = fs.existsSync(expectedFile) ? expectedFile : '';
expect(foundFile).toEqual(expectedFile);
})
});
// @todo add tests for roadmap pathmap
});

@ -3303,13 +3303,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1: debug@^4.1.0, debug@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@ -3425,11 +3418,6 @@ detab@2.0.2, detab@^2.0.0:
dependencies: dependencies:
repeat-string "^1.5.4" repeat-string "^1.5.4"
detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
detect-newline@^2.1.0: detect-newline@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
@ -4083,13 +4071,6 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0" jsonfile "^4.0.0"
universalify "^0.1.0" universalify "^0.1.0"
fs-minipass@^1.2.5:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
dependencies:
minipass "^2.6.0"
fs-write-stream-atomic@^1.0.8: fs-write-stream-atomic@^1.0.8:
version "1.0.10" version "1.0.10"
resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
@ -4541,7 +4522,7 @@ humanize-url@^1.0.0:
normalize-url "^1.0.0" normalize-url "^1.0.0"
strip-url-auth "^1.0.0" strip-url-auth "^1.0.0"
iconv-lite@0.4.24, iconv-lite@^0.4.4: iconv-lite@0.4.24:
version "0.4.24" version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@ -4582,13 +4563,6 @@ ignore-loader@0.1.2:
resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463" resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463"
integrity sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM= integrity sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM=
ignore-walk@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
dependencies:
minimatch "^3.0.4"
import-cwd@^2.0.0: import-cwd@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
@ -6058,21 +6032,6 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
dependencies:
safe-buffer "^5.1.2"
yallist "^3.0.0"
minizlib@^1.2.1:
version "1.3.3"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
dependencies:
minipass "^2.9.0"
mississippi@^3.0.0: mississippi@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
@ -6173,15 +6132,6 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
needle@^2.2.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
dependencies:
debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
negotiator@0.6.2: negotiator@0.6.2:
version "0.6.2" version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@ -6360,22 +6310,6 @@ node-notifier@^5.4.2:
shellwords "^0.1.1" shellwords "^0.1.1"
which "^1.3.0" which "^1.3.0"
node-pre-gyp@*:
version "0.14.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
dependencies:
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.4.2"
node-releases@^1.1.44: node-releases@^1.1.44:
version "1.1.45" version "1.1.45"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2"
@ -6413,14 +6347,6 @@ node-sass@^4.13.1:
dependencies: dependencies:
abbrev "1" abbrev "1"
nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
dependencies:
abbrev "1"
osenv "^0.1.4"
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
version "2.5.0" version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@ -6458,26 +6384,6 @@ normalize-url@1.9.1, normalize-url@^1.0.0:
query-string "^4.1.0" query-string "^4.1.0"
sort-keys "^1.0.0" sort-keys "^1.0.0"
npm-bundled@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
dependencies:
npm-normalize-package-bin "^1.0.1"
npm-normalize-package-bin@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
npm-packlist@^1.1.6:
version "1.4.7"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848"
integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
npm-run-path@^2.0.0: npm-run-path@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@ -6485,7 +6391,7 @@ npm-run-path@^2.0.0:
dependencies: dependencies:
path-key "^2.0.0" path-key "^2.0.0"
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
version "4.1.2" version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@ -6660,7 +6566,7 @@ os-tmpdir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
osenv@0, osenv@^0.1.4: osenv@0:
version "0.1.5" version "0.1.5"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
@ -7669,7 +7575,7 @@ raw-body@2.4.0:
iconv-lite "0.4.24" iconv-lite "0.4.24"
unpipe "1.0.0" unpipe "1.0.0"
rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: rc@^1.0.1, rc@^1.1.6:
version "1.2.8" version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@ -8089,7 +7995,7 @@ retry@0.12.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3:
version "2.7.1" version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@ -8217,7 +8123,7 @@ select@^1.1.2:
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
version "5.7.1" version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@ -8870,19 +8776,6 @@ tar@^2.0.0:
fstream "^1.0.12" fstream "^1.0.12"
inherits "2" inherits "2"
tar@^4.4.2:
version "4.4.13"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
dependencies:
chownr "^1.1.1"
fs-minipass "^1.2.5"
minipass "^2.8.6"
minizlib "^1.2.1"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
yallist "^3.0.3"
term-size@^1.2.0: term-size@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
@ -9727,7 +9620,7 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: yallist@^3.0.2:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==

Loading…
Cancel
Save