mirror of
https://github.com/dilllxd/gitfolio.git
synced 2024-08-14 22:28:09 +00:00
Add files via upload
This commit is contained in:
parent
4a2872171d
commit
ee354ae852
19 changed files with 3180 additions and 2387 deletions
63
README.md
63
README.md
|
@ -1,6 +1,6 @@
|
||||||
<img src="https://i.imgur.com/eA6clZr.png">
|
<img src="https://i.imgur.com/eA6clZr.png">
|
||||||
|
|
||||||
# Gitfolio [](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio)     
|
# Gitfolio [](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio)     
|
||||||
|
|
||||||
### personal website + blog for every github user
|
### personal website + blog for every github user
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@ Gitfolio will help you get started with a portfolio website where you could show
|
||||||
|
|
||||||
Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action.
|
Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action.
|
||||||
|
|
||||||
|
|
||||||
# Getting Started
|
# Getting Started
|
||||||
|
|
||||||
### Let's Install
|
### Let's Install
|
||||||
|
@ -21,22 +20,30 @@ npm i gitfolio -g
|
||||||
|
|
||||||
### Let's Build
|
### Let's Build
|
||||||
|
|
||||||
|
Using the UI
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ gitfolio ui
|
||||||
|
```
|
||||||
|
|
||||||
|
> Tip: You can use ui to create new blogs and for updating your folio too.
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
gitfolio build <username>
|
gitfolio build <username>
|
||||||
```
|
```
|
||||||
|
|
||||||
`<username>` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder.
|
`<username>` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder.
|
||||||
|
|
||||||
To run your website use `run` command
|
To run your website use `run` command, Default port is 3000
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
gitfolio run
|
gitfolio run -p [port]
|
||||||
```
|
```
|
||||||
|
|
||||||
Open your browser at http://localhost:3000
|
|
||||||
|
|
||||||
🎉 Congrats, you just made yourself a personal website!
|
🎉 Congrats, you just made yourself a personal website!
|
||||||
|
|
||||||
|
|
||||||
### Let's Customize
|
### Let's Customize
|
||||||
|
|
||||||
#### Forks
|
#### Forks
|
||||||
|
@ -67,11 +74,12 @@ $ gitfolio build <username> --sort star --order desc
|
||||||
|
|
||||||
Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are
|
Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are
|
||||||
|
|
||||||
* `light`
|
- `light`
|
||||||
* `dark`
|
- `dark`
|
||||||
> TODO: Add more themes
|
> TODO: Add more themes
|
||||||
|
|
||||||
For example, the following command will build the website with the dark theme
|
For example, the following command will build the website with the dark theme
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ gitfolio build <username> --theme dark
|
$ gitfolio build <username> --theme dark
|
||||||
```
|
```
|
||||||
|
@ -86,19 +94,20 @@ $ gitfolio build <username> --background https://images.unsplash.com/photo-15572
|
||||||
|
|
||||||
You could also add in your custom CSS inside `index.css` to give it a more personal feel.
|
You could also add in your custom CSS inside `index.css` to give it a more personal feel.
|
||||||
|
|
||||||
### Add Twitter, LinkedIn and Medium Links on your profile
|
### Add Twitter, LinkedIn and Medium links on your profile
|
||||||
|
|
||||||
Twitter, LinkedIn and Medium Links to your profile while building
|
Twitter, LinkedIn and Medium Links to your profile while building
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
gitfolio build <username> --twitter <twitter_username> --linkedin <linkedin_username> --medium <medium_username>
|
gitfolio build <username> --twitter <twitter_username> --linkedin <linkedin_username> --medium <medium_username>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Let's Publish
|
### Let's Publish
|
||||||
|
|
||||||
Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created.
|
Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created.
|
||||||
|
|
||||||
Go To `username.github.io` your site should be up!!
|
Go To `username.github.io` your site should be up!!
|
||||||
|
|
||||||
|
|
||||||
### Updating
|
### Updating
|
||||||
|
|
||||||
To update your info, simply run
|
To update your info, simply run
|
||||||
|
@ -106,27 +115,33 @@ To update your info, simply run
|
||||||
```sh
|
```sh
|
||||||
$ gitfolio update
|
$ gitfolio update
|
||||||
```
|
```
|
||||||
|
|
||||||
|
or use the `Update` options in gitfolio's UI
|
||||||
|
|
||||||
This will update your info and your repository info.
|
This will update your info and your repository info.
|
||||||
|
|
||||||
To Update background or theme you need to run `build` command again.
|
To Update background or theme you need to run `build` command again.
|
||||||
|
|
||||||
|
|
||||||
### Add a Blog
|
### Add a Blog
|
||||||
|
|
||||||
To add your first blog run this command.
|
To add your first blog use the UI.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ gitfolio blog my-first-blog
|
$ gitfolio ui
|
||||||
```
|
```
|
||||||
> (use "-" instead of spaces)
|
|
||||||
|
|
||||||
This will create a `my-first-blog` folder inside `blog`. Inside `my-first-blog` you will find an `index.html` file which contains all the necessary elements for writing a blog. Customize the content of the file to write your first blog.
|
This will open up a UI page and you can click on `New Blog` to create a new blog. Once you are done writing your blog you can hit the `Create Blog`.
|
||||||
|
|
||||||
|
This will create a blog inside `./dist/blog` folder.
|
||||||
|
|
||||||
|
Look for success or error in your terminal.
|
||||||
|
|
||||||
This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog.
|
This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog.
|
||||||
|
|
||||||
Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/)
|
Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/)
|
||||||
|
|
||||||
Default JSON Format
|
Blog's default JSON Format
|
||||||
|
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url
|
"url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url
|
||||||
|
@ -137,16 +152,10 @@ Default JSON Format
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
More Arguments for Blog
|
### Follow me on twitter for more updates
|
||||||
|
|
||||||
```
|
|
||||||
--subtitle [subtitle] : gives blog a subtitle (Default : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.')
|
|
||||||
--pagetitle [pagetitle] : gives blog page a title
|
|
||||||
--folder [folder] : give folder a title
|
|
||||||
```
|
|
||||||
|
|
||||||
> (use "-" instead of spaces)
|
|
||||||
|
|
||||||
|
🙌 [@imfunnieee](https://twitter.com/imfunnieee)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||

|

|
||||||
|
|
|
@ -1,9 +1 @@
|
||||||
[
|
[]
|
||||||
{
|
|
||||||
"url_title": "FooBar",
|
|
||||||
"title": "FooBar",
|
|
||||||
"sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
||||||
"top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450",
|
|
||||||
"visible": true
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,64 +1,125 @@
|
||||||
<!DOCTYPE html><html lang="en"><head>
|
<!DOCTYPE html>
|
||||||
<meta charset="UTF-8">
|
<html lang="en">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<head>
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
<title>Lorem ipsum dolor</title>
|
<title>Lorem ipsum dolor</title>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css">
|
<link
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
rel="stylesheet"
|
||||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css"
|
||||||
</head>
|
/>
|
||||||
<body>
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
|
||||||
|
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<script
|
||||||
|
src="https://code.jquery.com/jquery-3.4.1.min.js"
|
||||||
|
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
|
||||||
|
crossorigin="anonymous"
|
||||||
|
></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
<div id="loading">
|
<div id="loading">
|
||||||
<div id="spinner"></div>
|
<div id="spinner"></div>
|
||||||
</div>
|
</div>
|
||||||
<a href="/" class="go_back"><i class="fas fa-arrow-left"></i></a>
|
<a href="/" class="go_back"><i class="fas fa-arrow-left"></i></a>
|
||||||
|
<div id="background_overlay"></div>
|
||||||
<div id="background"></div>
|
<div id="background"></div>
|
||||||
<table id="profile_blog">
|
<table id="profile_blog">
|
||||||
<tbody><tr>
|
<tbody>
|
||||||
|
<tr>
|
||||||
<td style="width:8vw;"><div id="profile_img_blog"></div></td>
|
<td style="width:8vw;"><div id="profile_img_blog"></div></td>
|
||||||
<td style="width:52vw;">
|
<td style="width:52vw;">
|
||||||
<div id="username_blog"></div>
|
<div id="username_blog"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody>
|
||||||
|
</table>
|
||||||
<div id="blog-display">
|
<div id="blog-display">
|
||||||
<h1 id="blog_title">Lorem ipsum dolor</h1>
|
<h1 id="blog_title">Lorem ipsum dolor</h1>
|
||||||
<h2 id="blog_sub_title">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
|
<h2 id="blog_sub_title">
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
</h2>
|
||||||
<div id="blog">
|
<div id="blog">
|
||||||
<img src="https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450">
|
<img
|
||||||
|
src="https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450"
|
||||||
|
/>
|
||||||
<p>
|
<p>
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis ac egestas. Phasellus volutpat tristique maximus. <b>Pellentesque feugiat eget nisi et dignissim.</b> Nam nibh erat, sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan velit condimentum, pharetra felis vitae, commodo tellus. <u><i>Mauris consequat luctus orci.</i></u></p>
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat
|
||||||
<p>
|
pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis
|
||||||
Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue quis sodales. Quisque rutrum ligula nec dapibus tincidunt. <span>Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum iaculis. Suspendisse potenti.</span> Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. Integer blandit, felis at ullamcorper maximus, odio lectus pretium mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec diam eget vehicula.
|
ac egestas. Phasellus volutpat tristique maximus.
|
||||||
|
<b>Pellentesque feugiat eget nisi et dignissim.</b> Nam nibh erat,
|
||||||
|
sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan
|
||||||
|
velit condimentum, pharetra felis vitae, commodo tellus.
|
||||||
|
<u><i>Mauris consequat luctus orci.</i></u>
|
||||||
</p>
|
</p>
|
||||||
<img src="https://images.unsplash.com/photo-1556814278-8906c7d3a05f?w=1050">
|
|
||||||
<p>
|
<p>
|
||||||
Donec hendrerit turpis non libero eleifend dignissim. Mauris non tempor metus, et tristique massa. Integer consequat justo quam, vitae aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus semper ligula at tincidunt. Pellentesque accumsan varius vehicula.
|
Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi
|
||||||
|
vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue
|
||||||
|
quis sodales. Quisque rutrum ligula nec dapibus tincidunt.
|
||||||
|
<span
|
||||||
|
>Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum
|
||||||
|
iaculis. Suspendisse potenti.</span
|
||||||
|
>
|
||||||
|
Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat.
|
||||||
|
Integer blandit, felis at ullamcorper maximus, odio lectus pretium
|
||||||
|
mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec
|
||||||
|
diam eget vehicula.
|
||||||
|
</p>
|
||||||
|
<img
|
||||||
|
src="https://images.unsplash.com/photo-1556814278-8906c7d3a05f?w=1050"
|
||||||
|
/>
|
||||||
|
<p>
|
||||||
|
Donec hendrerit turpis non libero eleifend dignissim. Mauris non
|
||||||
|
tempor metus, et tristique massa. Integer consequat justo quam, vitae
|
||||||
|
aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis.
|
||||||
|
Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis
|
||||||
|
nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus
|
||||||
|
semper ligula at tincidunt. Pellentesque accumsan varius vehicula.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="footer_blog">
|
<div id="footer_blog">
|
||||||
<a href="https://github.com/imfunniee" target="_blank">made on earth by a human</a>
|
<a href="https://github.com/imfunniee" target="_blank"
|
||||||
|
>made on earth by a human</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
setTimeout(function(){
|
setTimeout(function() {
|
||||||
document.getElementById("loading").classList.add("animated");
|
document.getElementById("loading").classList.add("animated");
|
||||||
document.getElementById("loading").classList.add("fadeOut");
|
document.getElementById("loading").classList.add("fadeOut");
|
||||||
setTimeout(function(){
|
setTimeout(function() {
|
||||||
document.getElementById("loading").classList.remove("animated");
|
document.getElementById("loading").classList.remove("animated");
|
||||||
document.getElementById("loading").classList.remove("fadeOut");
|
document.getElementById("loading").classList.remove("fadeOut");
|
||||||
document.getElementById("loading").style.display = "none";
|
document.getElementById("loading").style.display = "none";
|
||||||
},800);
|
}, 800);
|
||||||
},1500);
|
}, 1500);
|
||||||
$.getJSON("../../config.json", function(user){
|
$.getJSON("../../config.json", function(user) {
|
||||||
var icon = document.createElement("link");
|
var icon = document.createElement("link");
|
||||||
icon.setAttribute("rel", "icon");
|
icon.setAttribute("rel", "icon");
|
||||||
icon.setAttribute("href", user[0].userimg);
|
icon.setAttribute("href", user[0].userimg);
|
||||||
icon.setAttribute("type", "image/png");
|
icon.setAttribute("type", "image/png");
|
||||||
document.getElementsByTagName("head")[0].appendChild(icon);
|
document.getElementsByTagName("head")[0].appendChild(icon);
|
||||||
document.getElementById("profile_img_blog").style.background = `url('${user[0].userimg}') center center`;
|
document.getElementById("profile_img_blog").style.background = `url('${
|
||||||
document.getElementById("username_blog").innerHTML = `<spanstyle="display:${user[0].name == null || !user[0].name ? 'none' : 'block'};">${user[0].name}</span><br>@${user[0].username}<b id="blog_time"></b>`;
|
user[0].userimg
|
||||||
|
}') center center`;
|
||||||
|
document.getElementById(
|
||||||
|
"username_blog"
|
||||||
|
).innerHTML = `<span style="display:${
|
||||||
|
user[0].name == null || !user[0].name ? "none" : "block"
|
||||||
|
};">${user[0].name}</span>@${user[0].username}<b id="blog_time"></b>`;
|
||||||
|
|
||||||
|
if ((user[0].theme = "dark.css")) {
|
||||||
|
document.querySelector("#background_overlay").style.background =
|
||||||
|
"linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.1))";
|
||||||
|
} else {
|
||||||
|
document.querySelector("#background_overlay").style.background =
|
||||||
|
"linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.1))";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
</body>
|
||||||
</body></html>
|
</html>
|
||||||
|
|
525
assets/index.css
525
assets/index.css
|
@ -1,15 +1,15 @@
|
||||||
@import url('https://fonts.googleapis.com/css?family=Poppins');
|
@import url('https://fonts.googleapis.com/css?family=Poppins');
|
||||||
@import url('https://fonts.googleapis.com/css?family=Questrial');
|
@import url('https://fonts.googleapis.com/css?family=Questrial');
|
||||||
|
|
||||||
body{
|
body {
|
||||||
margin:0%;
|
margin: 0%;
|
||||||
padding:0%;
|
padding: 0%;
|
||||||
width:100vw;
|
width: 100vw;
|
||||||
background:var(--bg-color);
|
background: var(--bg-color);
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
max-width:100vw;
|
max-width: 100vw;
|
||||||
overflow-x:hidden;
|
overflow-x: hidden;
|
||||||
align-items:center;
|
align-items: center;
|
||||||
font-family: 'Poppins', sans-serif;
|
font-family: 'Poppins', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,448 +23,525 @@ body{
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
top:0;
|
top: 0;
|
||||||
bottom:0;
|
bottom: 0;
|
||||||
left:0;
|
left: 0;
|
||||||
right:0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#spinner {
|
#spinner {
|
||||||
animation: rotate 0.5s infinite linear;
|
animation: rotate 0.5s infinite linear;
|
||||||
width:50px;
|
width: 50px;
|
||||||
height:50px;
|
height: 50px;
|
||||||
border:2px solid var(--bg-color);
|
border: 2px solid var(--bg-color);
|
||||||
border-bottom:2px solid var(--text-color);
|
border-bottom: 2px solid var(--text-color);
|
||||||
border-radius:50%;
|
border-radius: 50%;
|
||||||
margin:0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes rotate {
|
@keyframes rotate {
|
||||||
0% {transform: rotate(0deg);}
|
0% {
|
||||||
100% {transform: rotate(360deg);}
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile {
|
#profile {
|
||||||
width:24vw;
|
width: 24vw;
|
||||||
padding:4vh 3vw;
|
padding: 4vh 3vw;
|
||||||
height:92vh;
|
height: 92vh;
|
||||||
display:flex;
|
display: flex;
|
||||||
flex-direction:column;
|
flex-direction: column;
|
||||||
justify-content:center;
|
justify-content: center;
|
||||||
text-align:left;
|
text-align: left;
|
||||||
background:var(--background-image) center center;
|
background: var(--background-image) center center;
|
||||||
background-size: cover !important;
|
background-size: cover !important;
|
||||||
background-repeat:no-repeat;
|
background-repeat: no-repeat;
|
||||||
position:fixed;
|
position: fixed;
|
||||||
color:#fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#display {
|
#display {
|
||||||
width:64vw;
|
width: 64vw;
|
||||||
padding:4vh 3vw;
|
padding: 4vh 3vw;
|
||||||
height:92vh;
|
height: 92vh;
|
||||||
display:inline-block;
|
display: inline-block;
|
||||||
padding-left:33vw;
|
padding-left: 33vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
#display h1 {
|
#display h1 {
|
||||||
font-size:50px;
|
font-size: 50px;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.emoji {
|
.emoji {
|
||||||
width:18px;
|
width: 18px;
|
||||||
height:18px;
|
height: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile_img_blog {
|
#profile_img_blog {
|
||||||
border-radius:50%;
|
border-radius: 50%;
|
||||||
width:90px;
|
width: 90px;
|
||||||
height:90px;
|
height: 90px;
|
||||||
background-size:cover !important;
|
background-size: cover !important;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
#username_blog {
|
#username_blog {
|
||||||
font-size:18px;
|
font-size: 18px;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
font-family: 'Poppins', sans-serif;
|
font-family: 'Poppins', sans-serif;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#username_blog span {
|
#username_blog span {
|
||||||
font-size:24px;
|
font-size: 24px;
|
||||||
font-family: 'Questrial', sans-serif !important;
|
font-family: 'Questrial', sans-serif !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#username_blog b {
|
#username_blog b {
|
||||||
font-size:12px;
|
font-size: 12px;
|
||||||
font-family:'Poppins', sans-serif;
|
font-family: 'Poppins', sans-serif;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display {
|
#blog-display {
|
||||||
width:60vw;
|
width: 60vw;
|
||||||
margin:0px 20vw;
|
margin: 0px 20vw;
|
||||||
text-align:left;
|
text-align: left;
|
||||||
margin-top:3vh;
|
margin-top: 3vh;
|
||||||
z-index:1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile_blog {
|
#profile_blog {
|
||||||
width:60vw;
|
width: 60vw;
|
||||||
margin:0px 20vw;
|
margin: 0px 20vw;
|
||||||
margin-top:10vh;
|
margin-top: 34vh;
|
||||||
text-align:left;
|
text-align: left;
|
||||||
z-index:1;
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#background_overlay {
|
||||||
|
width: 100vw;
|
||||||
|
height: 55vh;
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#background {
|
#background {
|
||||||
width:100vw;
|
width: 100vw;
|
||||||
height:55vh;
|
height: 55vh;
|
||||||
background:var(--background-background);
|
background-size: cover !important;
|
||||||
background-size:cover !important;
|
background-repeat: no-repeat !important;
|
||||||
background-repeat:no-repeat;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index:-1;
|
z-index: -2;
|
||||||
margin-top:-10vh;
|
top: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display h1 {
|
#blog-display h1 {
|
||||||
font-size:50px;
|
font-size: 50px;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display h2 {
|
#blog-display h2 {
|
||||||
color:var(--blog-gray-color);
|
color: var(--blog-gray-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display {
|
#blog-display {
|
||||||
padding:1vh 0px;
|
padding: 1vh 0px;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog p {
|
#blog p {
|
||||||
font-size:17px;
|
font-size: 17px;
|
||||||
line-height:25px;
|
line-height: 25px;
|
||||||
word-spacing:1.2px;
|
word-spacing: 1.2px;
|
||||||
margin:5vh 0px;
|
margin: 5vh 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog p span {
|
#blog p span {
|
||||||
padding:2px 4px;
|
padding: 2px 4px;
|
||||||
background:var(--text-color);
|
background: var(--text-color);
|
||||||
color:var(--bg-color) !important;
|
color: var(--bg-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog img {
|
#blog img {
|
||||||
width:100%;
|
width: 100%;
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
border-radius:5px;
|
border-radius: 5px;
|
||||||
border:1px solid rgb(0, 0, 0, 0.08);
|
border: 1px solid rgb(0, 0, 0, 0.08);
|
||||||
}
|
}
|
||||||
|
|
||||||
#header {
|
#header {
|
||||||
width:63vw;
|
width: 63vw;
|
||||||
text-align:right;
|
text-align: right;
|
||||||
padding:3vh 0px;
|
padding: 3vh 0px;
|
||||||
position:absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
#header a {
|
#header a {
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
margin-left:4vw;
|
margin-left: 4vw;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer_blog {
|
#footer_blog {
|
||||||
width:90vw;
|
width: 90vw;
|
||||||
padding:8vh 5vw;
|
padding: 8vh 5vw;
|
||||||
text-align:center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer_blog a {
|
#footer_blog a {
|
||||||
color:var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
width:100%;
|
width: 100%;
|
||||||
padding:8vh 0px;
|
padding: 8vh 0px;
|
||||||
text-align:center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer a {
|
#footer a {
|
||||||
color:var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile_img {
|
#profile_img {
|
||||||
width:180px;
|
width: 180px;
|
||||||
height:180px;
|
height: 180px;
|
||||||
min-width:180px;
|
min-width: 180px;
|
||||||
min-height:180px;
|
min-height: 180px;
|
||||||
max-width:180px;
|
max-width: 180px;
|
||||||
max-height:180px;
|
max-height: 180px;
|
||||||
border-radius:5px;
|
border-radius: 5px;
|
||||||
background-size:cover !important;
|
background-size: cover !important;
|
||||||
background-repeat:no-repeat !important;
|
background-repeat: no-repeat !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile div {
|
#profile div {
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
margin:1.5vh 0px;
|
margin: 1.5vh 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#username {
|
#username {
|
||||||
font-size:18px;
|
font-size: 18px;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#username span {
|
#username span {
|
||||||
font-size:24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#userbio {
|
#userbio {
|
||||||
font-size:26px;
|
font-size: 26px;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
width:100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#about {
|
#about {
|
||||||
font-size:18px;
|
font-size: 18px;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
#about a,
|
#about a,
|
||||||
#username a {
|
#username a {
|
||||||
color:#fff !important;
|
color: #fff !important;
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#about a:hover,
|
#about a:hover,
|
||||||
#username a:hover {
|
#username a:hover {
|
||||||
text-decoration:underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#about span {
|
#about span {
|
||||||
margin:1vh 0px;
|
margin: 1vh 0px;
|
||||||
display:block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#about span i {
|
#about span i {
|
||||||
font-size:16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#work {
|
#work {
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
padding:4vh 0px !important;
|
padding: 4vh 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#forks {
|
#forks {
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
padding:4vh 0px !important;
|
padding: 4vh 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects {
|
.projects {
|
||||||
margin-left: -15px; /* align section w/ heading above */
|
margin-left: -15px;
|
||||||
|
/* align section w/ heading above */
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects a {
|
.projects a {
|
||||||
/* 30px is the gutter size in magic grid */
|
/* 30px is the gutter size in magic grid */
|
||||||
width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */
|
width: calc(49% - 30px);
|
||||||
|
/* 49% avoids a weird single column on some wide screens */
|
||||||
display: flex;
|
display: flex;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects section {
|
.projects section {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding:2.5vh 5%;
|
padding: 2.5vh 5%;
|
||||||
display:inline-block;
|
margin: 1vh 0px;
|
||||||
border-radius:5px;
|
display: inline-block;
|
||||||
color:var(--text-color);
|
border-radius: 5px;
|
||||||
border:1px solid rgb(0, 0, 0, 0.08);
|
color: var(--text-color);
|
||||||
box-shadow:0px 0px 0px rgb(0, 0, 0, 0);
|
border: 1px solid rgb(0, 0, 0, 0.08);
|
||||||
transition:0.4s ease-in-out;
|
box-shadow: 0px 0px 0px rgb(0, 0, 0, 0);
|
||||||
transform:scale(1);
|
transition: 0.4s ease-in-out;
|
||||||
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects section:hover {
|
.projects section:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border:1px solid rgb(0, 0, 0, 0);
|
border: 1px solid rgb(0, 0, 0, 0);
|
||||||
box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06);
|
box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06);
|
||||||
transform:scale(1.03);
|
transform: scale(1.03);
|
||||||
}
|
}
|
||||||
|
|
||||||
.section_title {
|
.section_title {
|
||||||
font-size:24px;
|
font-size: 24px;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
margin:1vh 0px;
|
margin: 1vh 0px;
|
||||||
padding:0px 1px;
|
padding: 0px 1px;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.about_section {
|
.about_section {
|
||||||
font-size:18px;
|
font-size: 18px;
|
||||||
font-family: 'Questrial', sans-serif;
|
font-family: 'Questrial', sans-serif;
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom_section {
|
.bottom_section {
|
||||||
margin:1vh 0px;
|
margin: 1vh 0px;
|
||||||
font-size:14px;
|
font-size: 14px;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom_section span {
|
.bottom_section span {
|
||||||
margin-right:20px;
|
margin-right: 20px;
|
||||||
font-weight:bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom_section span i {
|
.bottom_section span i {
|
||||||
font-size:15px;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.socials {
|
.socials {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
margin: 3vh 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.socials span {
|
||||||
|
display: inline-block !important;
|
||||||
|
margin-right: 2vw !important;
|
||||||
|
font-weight: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.socials span a {
|
||||||
|
font-weight: normal !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog_section {
|
#blog_section {
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
padding:2vh 0px !important;
|
padding: 2vh 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs {
|
#blogs {
|
||||||
|
columns: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_title {
|
||||||
|
font-size: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_sub_title {
|
||||||
|
font-size: 36px;
|
||||||
|
margin-top: -2vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs section {
|
#blogs section {
|
||||||
width:85%;
|
width: 100%;
|
||||||
display:inline-block;
|
display: inline-block;
|
||||||
border-radius:5px;
|
border-radius: 5px;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
border:1px solid rgb(0, 0, 0, 0.04);
|
border: 1px solid rgb(0, 0, 0, 0.04);
|
||||||
box-shadow:0px 0px 0px rgb(0, 0, 0, 0);
|
box-shadow: 0px 0px 0px rgb(0, 0, 0, 0);
|
||||||
transition:0.4s ease-in-out;
|
transition: 0.4s ease-in-out;
|
||||||
transform:scale(1);
|
transform: scale(1);
|
||||||
padding:0px;
|
padding: 0px;
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs section img {
|
#blogs section img {
|
||||||
width:100%;
|
width: 100%;
|
||||||
border-radius:5px 5px 0px 0px;
|
border-radius: 5px 5px 0px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog_container {
|
.blog_container {
|
||||||
padding:2.5vh 5%;
|
padding: 2.5vh 5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs section:hover {
|
#blogs section:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border:1px solid rgb(0, 0, 0, 0);
|
border: 1px solid rgb(0, 0, 0, 0);
|
||||||
box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06);
|
box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06);
|
||||||
transform:scale(1.03);
|
transform: scale(1.03);
|
||||||
}
|
}
|
||||||
|
|
||||||
.go_back {
|
.go_back {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
font-size:26px;
|
font-size: 26px;
|
||||||
margin-left:5vw;
|
margin-left: 5vw;
|
||||||
margin-top:4vh;
|
margin-top: 4vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
color:var(--bg-color);
|
color: var(--bg-color);
|
||||||
background:var(--text-color);
|
background: var(--text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 800px){
|
@media (max-width: 800px) {
|
||||||
#profile {
|
#profile {
|
||||||
width:90vw;
|
width: 90vw;
|
||||||
padding:4vh 5vw;
|
padding: 4vh 5vw;
|
||||||
height:60vh;
|
height: 60vh;
|
||||||
text-align:center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
#display {
|
#display {
|
||||||
width:90vw;
|
width: 90vw;
|
||||||
padding:4vh 5vw;
|
padding: 4vh 5vw;
|
||||||
height:auto;
|
height: auto;
|
||||||
display:inline-block;
|
display: inline-block;
|
||||||
padding-left:5vw;
|
padding-left: 5vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile_img {
|
#profile_img {
|
||||||
width:120px;
|
width: 120px;
|
||||||
height:120px;
|
height: 120px;
|
||||||
min-width:120px;
|
min-width: 120px;
|
||||||
min-height:120px;
|
min-height: 120px;
|
||||||
max-width:120px;
|
max-width: 120px;
|
||||||
max-height:120px;
|
max-height: 120px;
|
||||||
margin:0px auto !important;
|
margin: 0px auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#work {
|
#work {
|
||||||
margin:0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects {
|
.projects {
|
||||||
margin-left: 0; /* remove neg margin to align w/ header */
|
margin-left: 0;
|
||||||
|
/* remove neg margin to align w/ header */
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects a {
|
.projects a {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects section {
|
.projects section {
|
||||||
width:88%;
|
width: 88%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs {
|
#blogs {
|
||||||
|
columns: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogs section {
|
#blogs section {
|
||||||
width:98%;
|
width: 98%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog_section {
|
#blog_section {
|
||||||
margin:0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display {
|
#blog-display {
|
||||||
width:90vw;
|
width: 90vw;
|
||||||
margin:0px 5vw;
|
margin: 0px 5vw;
|
||||||
text-align:left;
|
text-align: left;
|
||||||
margin-top:0vh;
|
margin-top: 0vh;
|
||||||
z-index:1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#blog_title {
|
||||||
|
font-size: 32px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_sub_title {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-top: -1vh;
|
||||||
|
}
|
||||||
|
|
||||||
#profile_blog {
|
#profile_blog {
|
||||||
width:90vw;
|
width: 90vw;
|
||||||
margin:0px 5vw;
|
margin: 0px 5vw;
|
||||||
margin-top:10vh;
|
margin-top: 36vh;
|
||||||
text-align:left;
|
text-align: left;
|
||||||
z-index:1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#profile_img_blog {
|
||||||
|
width: 65px;
|
||||||
|
height: 65px;
|
||||||
|
}
|
||||||
|
|
||||||
.go_back {
|
.go_back {
|
||||||
position: relative;
|
position: relative;
|
||||||
color:var(--text-color);
|
color: var(--text-color);
|
||||||
font-size:26px;
|
font-size: 26px;
|
||||||
margin-left:5vw;
|
margin-left: 5vw;
|
||||||
top:5vh;
|
top: 5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog img {
|
#blog img {
|
||||||
margin:1vh 0px !important;
|
margin: 1vh 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog p {
|
#blog p {
|
||||||
margin:2vh 0px;
|
margin: 2vh 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar {width:5px;height:5px;}
|
::-webkit-scrollbar {
|
||||||
::-webkit-scrollbar-track {background:var(--bg-color);}
|
width: 5px;
|
||||||
::-webkit-scrollbar-thumb {background:var(--text-color);}
|
height: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: var(--bg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: var(--text-color);
|
||||||
|
}
|
|
@ -1,21 +1,30 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
<head>
|
<meta charset="UTF-8" />
|
||||||
<meta charset="UTF-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<title></title>
|
<title></title>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css">
|
<link
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
|
rel="stylesheet"
|
||||||
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css"
|
||||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
|
/>
|
||||||
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
|
||||||
|
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<script
|
||||||
|
src="https://code.jquery.com/jquery-3.4.1.min.js"
|
||||||
|
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
|
||||||
|
crossorigin="anonymous"
|
||||||
|
></script>
|
||||||
<script src="https://unpkg.com/magic-grid/dist/magic-grid.min.js"></script>
|
<script src="https://unpkg.com/magic-grid/dist/magic-grid.min.js"></script>
|
||||||
<link rel="stylesheet" href="index.css">
|
<link rel="stylesheet" href="index.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="loading">
|
<div id="loading">
|
||||||
<div id="spinner"></div>
|
<div id="spinner"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,29 +50,32 @@
|
||||||
<div id="blogs"></div>
|
<div id="blogs"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<a href="https://github.com/imfunniee" target="_blank">made on earth by a human</a>
|
<a href="https://github.com/imfunniee" target="_blank"
|
||||||
|
>made on earth by a human</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
document.getElementById("loading").classList.add("animated");
|
document.getElementById("loading").classList.add("animated");
|
||||||
document.getElementById("loading").classList.add("fadeOut");
|
document.getElementById("loading").classList.add("fadeOut");
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
document.getElementById("loading").classList.remove("animated");
|
document.getElementById("loading").classList.remove("animated");
|
||||||
document.getElementById("loading").classList.remove("fadeOut");
|
document.getElementById("loading").classList.remove("fadeOut");
|
||||||
document.getElementById("loading").style.display = "none";
|
document.getElementById("loading").style.display = "none";
|
||||||
}, 800);
|
}, 800);
|
||||||
}, 1500);
|
}, 1500);
|
||||||
$.getJSON("blog.json", function (blog) {
|
$.getJSON("blog.json", function(blog) {
|
||||||
blog = blog || [];
|
blog = blog || [];
|
||||||
if (blog.length == 0) {
|
if (blog.length == 0) {
|
||||||
return document.getElementById("blog_section").style.display = "none";
|
return (document.getElementById("blog_section").style.display =
|
||||||
|
"none");
|
||||||
}
|
}
|
||||||
for (var i = 0; i < blog.length; i++) {
|
for (var i = 0; i < blog.length; i++) {
|
||||||
$("#blogs").append(`
|
$("#blogs").append(`
|
||||||
<a href="./blog/${blog[i].url_title}/" target="_blank">
|
<a href="./blog/${blog[i].url_title}/" target="_blank">
|
||||||
<section>
|
<section>
|
||||||
<img src="${blog[i].top_image}">
|
<img src="./blog/${blog[i].url_title}/${blog[i].top_image}">
|
||||||
<div class="blog_container">
|
<div class="blog_container">
|
||||||
<div class="section_title">${blog[i].title}</div>
|
<div class="section_title">${blog[i].title}</div>
|
||||||
<div class="about_section">
|
<div class="about_section">
|
||||||
|
@ -74,22 +86,14 @@
|
||||||
</a>
|
</a>
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).fail(function() {
|
||||||
return document.getElementById("blog_section").style.display = "none";
|
return (document.getElementById("blog_section").style.display = "none");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
if ('serviceWorker' in navigator) {
|
|
||||||
window.addEventListener('load', () => {
|
|
||||||
navigator.serviceWorker.register('service-worker.js');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const magicProjectsGrid = new MagicGrid({
|
const magicProjectsGrid = new MagicGrid({
|
||||||
container: '#work_section',
|
container: "#work_section",
|
||||||
animate: false,
|
animate: false,
|
||||||
gutter: 30, // default gutter size
|
gutter: 30, // default gutter size
|
||||||
static: true,
|
static: true,
|
||||||
|
@ -99,20 +103,19 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
const magicForksGrid = new MagicGrid({
|
const magicForksGrid = new MagicGrid({
|
||||||
container: '#forks_section',
|
container: "#forks_section",
|
||||||
animate: false,
|
animate: false,
|
||||||
gutter: 30, // default gutter size
|
gutter: 30, // default gutter size
|
||||||
static: true,
|
static: true,
|
||||||
useMin: false,
|
useMin: false,
|
||||||
maxColumns: 2,
|
maxColumns: 2,
|
||||||
useTransform: true
|
useTransform: true
|
||||||
})
|
});
|
||||||
|
|
||||||
$('document').ready(() => {
|
$("document").ready(() => {
|
||||||
magicProjectsGrid.listen();
|
magicProjectsGrid.listen();
|
||||||
magicForksGrid.listen();
|
magicForksGrid.listen();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -2,27 +2,33 @@
|
||||||
--bg-color: rgb(10, 10, 10);
|
--bg-color: rgb(10, 10, 10);
|
||||||
--text-color: #fff;
|
--text-color: #fff;
|
||||||
--blog-gray-color: rgb(180, 180, 180);
|
--blog-gray-color: rgb(180, 180, 180);
|
||||||
--background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.6), rgb(10, 10, 10, 1)), url("{{{background}}}");
|
--background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.3), rgb(10, 10, 10, 1)),
|
||||||
|
url("{{{background}}}");
|
||||||
--background-background: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.6)),
|
--background-background: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.6)),
|
||||||
url("{{{background}}}") center center fixed;
|
url("{{{background}}}") center center fixed;
|
||||||
--height: 50vh;
|
--height: 50vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#display h1 {
|
#display h1 {
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
-webkit-text-fill-color: #fff;
|
-webkit-text-fill-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog-display h1 {
|
#blog-display h1 {
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
-webkit-text-fill-color: #fff;
|
-webkit-text-fill-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects section {
|
.projects section {
|
||||||
background: rgb(20, 20, 20);
|
background: rgb(20, 20, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
#blog_section section {
|
#blog_section section {
|
||||||
background: rgb(20, 20, 20);
|
background: rgb(20, 20, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 800px) {
|
@media (max-width: 800px) {
|
||||||
:root {
|
:root {
|
||||||
--background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0)),
|
--background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0)),
|
||||||
|
|
|
@ -1,54 +1,55 @@
|
||||||
#! /usr/bin/env node
|
#! /usr/bin/env node
|
||||||
/* Argument parser */
|
/* Argument parser */
|
||||||
const program = require('commander');
|
const program = require("commander");
|
||||||
|
|
||||||
process.env.OUT_DIR = process.env.OUT_DIR || process.cwd();
|
process.env.OUT_DIR = process.env.OUT_DIR || process.cwd();
|
||||||
|
|
||||||
const {buildCommand} = require('../build');
|
const { buildCommand } = require("../build");
|
||||||
const {updateCommand} = require('../update');
|
const { updateCommand } = require("../update");
|
||||||
const {blogCommand} = require('../blog');
|
const { uiCommand } = require("../ui");
|
||||||
const {runCommand} = require('../run');
|
const { runCommand } = require("../run");
|
||||||
const {version} = require('../package.json');
|
const { version } = require("../package.json");
|
||||||
|
|
||||||
program
|
program
|
||||||
.command('build <username>')
|
.command("build <username>")
|
||||||
.description('Build site with your GitHub username. This will be used to customize your site')
|
.description(
|
||||||
.option('-t, --theme [theme]', 'specify a theme to use', 'light')
|
"Build site with your GitHub username. This will be used to customize your site"
|
||||||
.option('-b, --background [background]', 'set the background image')
|
)
|
||||||
.option('-f, --fork', 'includes forks with repos')
|
.option("-t, --theme [theme]", "specify a theme to use", "light")
|
||||||
.option('-s, --sort [sort]', 'set default sort for repository', 'created')
|
.option("-b, --background [background]", "set the background image")
|
||||||
.option('-o, --order [order]', 'set default order on sort', 'asc')
|
.option("-f, --fork", "includes forks with repos")
|
||||||
.option('-w, --twitter [handle]', 'set Twitter handle')
|
.option("-s, --sort [sort]", "set default sort for repository", "created")
|
||||||
.option('-l, --linkedin [username]', 'specify LinkedIn username')
|
.option("-o, --order [order]", "set default order on sort", "asc")
|
||||||
.option('-m, --medium [username]', 'specify Medium username')
|
.option("-w, --twitter [username]", "specify twitter username")
|
||||||
.action(buildCommand)
|
.option("-l, --linkedin [username]", "specify linkedin username")
|
||||||
|
.option("-m, --medium [username]", "specify medium username")
|
||||||
|
.option("-d, --dribbble [username]", "specify dribbble username")
|
||||||
|
.action(buildCommand);
|
||||||
|
|
||||||
program
|
program
|
||||||
.command('update')
|
.command("update")
|
||||||
.description('Update user and repository data')
|
.description("Update user and repository data")
|
||||||
.action(updateCommand);
|
.action(updateCommand);
|
||||||
|
|
||||||
program
|
program
|
||||||
.command('blog <title>')
|
.command("ui")
|
||||||
.description('Create blog with specified title')
|
.description("Create and Manage blogs with ease")
|
||||||
.option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.')
|
.action(uiCommand);
|
||||||
.option('-p, --pagetitle [pagetitle]', 'give blog page a title')
|
|
||||||
.option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)')
|
|
||||||
.action(blogCommand);
|
|
||||||
|
|
||||||
program
|
program
|
||||||
.command('run')
|
.command("run")
|
||||||
.description('Run build files')
|
.description("Run build files")
|
||||||
|
.option("-p, --port [port]", "provide a port for localhost, default is 3000")
|
||||||
.action(runCommand);
|
.action(runCommand);
|
||||||
|
|
||||||
program.on('command:*', () => {
|
program.on("command:*", () => {
|
||||||
console.log('Unknown Command: ' + program.args.join(' '))
|
console.log("Unknown Command: " + program.args.join(" "));
|
||||||
program.help()
|
program.help();
|
||||||
});
|
});
|
||||||
|
|
||||||
program
|
program
|
||||||
.version(version, '-v --version')
|
.version(version, "-v --version")
|
||||||
.usage('<command> [options]')
|
.usage("<command> [options]")
|
||||||
.parse(process.argv);
|
.parse(process.argv);
|
||||||
|
|
||||||
if (program.args.length === 0) program.help();
|
if (program.args.length === 0) program.help();
|
||||||
|
|
82
build.js
82
build.js
|
@ -1,16 +1,16 @@
|
||||||
/* Filepath utilities */
|
/* Filepath utilities */
|
||||||
const path = require('path');
|
const path = require("path");
|
||||||
/* Promise library */
|
/* Promise library */
|
||||||
const bluebird = require('bluebird');
|
const bluebird = require("bluebird");
|
||||||
const hbs = require('handlebars');
|
const hbs = require("handlebars");
|
||||||
/* Creates promise-returning async functions
|
/* Creates promise-returning async functions
|
||||||
from callback-passed async functions */
|
from callback-passed async functions */
|
||||||
const fs = bluebird.promisifyAll(require('fs'));
|
const fs = bluebird.promisifyAll(require("fs"));
|
||||||
const { updateHTML } = require('./populate');
|
const { updateHTML } = require("./populate");
|
||||||
const { getConfig, outDir } = require('./utils');
|
const { getConfig, outDir } = require("./utils");
|
||||||
|
|
||||||
const assetDir = path.resolve(`${__dirname}/assets/`);
|
const assetDir = path.resolve(`${__dirname}/assets/`);
|
||||||
const config = path.join(outDir, 'config.json');
|
const config = path.join(outDir, "config.json");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the stylesheet used by the site from a template stylesheet.
|
* Creates the stylesheet used by the site from a template stylesheet.
|
||||||
|
@ -19,15 +19,13 @@ const config = path.join(outDir, 'config.json');
|
||||||
* arguments.
|
* arguments.
|
||||||
*/
|
*/
|
||||||
async function populateCSS({
|
async function populateCSS({
|
||||||
theme = 'light',
|
theme = "light",
|
||||||
background = 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=500&h=1000&q=80&fit=crop',
|
background = "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"
|
||||||
} = {}) {
|
} = {}) {
|
||||||
/* Get the theme the user requests. Defaults to 'light' */
|
/* Get the theme the user requests. Defaults to 'light' */
|
||||||
theme = `${theme}.css`;
|
theme = `${theme}.css`;
|
||||||
let template = path.resolve(assetDir, 'index.css');
|
let template = path.resolve(assetDir, "index.css");
|
||||||
let stylesheet = path.join(outDir, 'index.css');
|
let stylesheet = path.join(outDir, "index.css");
|
||||||
|
|
||||||
let serviceWorker = path.resolve(assetDir, 'service-worker.js');
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fs.accessAsync(outDir, fs.constants.F_OK);
|
await fs.accessAsync(outDir, fs.constants.F_OK);
|
||||||
|
@ -37,33 +35,38 @@ async function populateCSS({
|
||||||
/* Copy over the template CSS stylesheet */
|
/* Copy over the template CSS stylesheet */
|
||||||
await fs.copyFileAsync(template, stylesheet);
|
await fs.copyFileAsync(template, stylesheet);
|
||||||
|
|
||||||
/* Add Service Worker */
|
|
||||||
await fs.copyFileSync(serviceWorker, `${outDir}/service-worker.js`);
|
|
||||||
|
|
||||||
/* Get an array of every available theme */
|
/* Get an array of every available theme */
|
||||||
let themes = await fs.readdirAsync(path.join(assetDir, 'themes'));
|
let themes = await fs.readdirAsync(path.join(assetDir, "themes"));
|
||||||
|
|
||||||
if (!themes.includes(theme)) {
|
if (!themes.includes(theme)) {
|
||||||
console.error('Error: Requested theme not found. Defaulting to "light".');
|
console.error('Error: Requested theme not found. Defaulting to "light".');
|
||||||
theme = 'light';
|
theme = "light";
|
||||||
}
|
}
|
||||||
/* Read in the theme stylesheet */
|
/* Read in the theme stylesheet */
|
||||||
let themeSource = await fs.readFileSync(path.join(assetDir, 'themes', theme));
|
let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme));
|
||||||
themeSource = themeSource.toString('utf-8');
|
themeSource = themeSource.toString("utf-8");
|
||||||
let themeTemplate = hbs.compile(themeSource);
|
let themeTemplate = hbs.compile(themeSource);
|
||||||
let styles = themeTemplate({
|
let styles = themeTemplate({
|
||||||
'background': `${background}`
|
background: `${background}`
|
||||||
})
|
});
|
||||||
/* Add the user-specified styles to the new stylesheet */
|
/* Add the user-specified styles to the new stylesheet */
|
||||||
await fs.appendFileAsync(stylesheet, styles);
|
await fs.appendFileAsync(stylesheet, styles);
|
||||||
|
|
||||||
/* Update the config file with the user's theme choice */
|
/* Update the config file with the user's theme choice */
|
||||||
const data = await getConfig();
|
const data = await getConfig();
|
||||||
data[0].theme = theme;
|
data[0].theme = theme;
|
||||||
await fs.writeFileAsync(config, JSON.stringify(data, null, ' '));
|
await fs.writeFileAsync(config, JSON.stringify(data, null, " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function populateConfig(sort, order, includeFork, twitter, linkedin, medium) {
|
async function populateConfig(
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
) {
|
||||||
const data = await getConfig();
|
const data = await getConfig();
|
||||||
data[0].sort = sort;
|
data[0].sort = sort;
|
||||||
data[0].order = order;
|
data[0].order = order;
|
||||||
|
@ -71,21 +74,42 @@ async function populateConfig(sort, order, includeFork, twitter, linkedin, mediu
|
||||||
data[0].twitter = twitter; // added twitter
|
data[0].twitter = twitter; // added twitter
|
||||||
data[0].linkedin = linkedin; // added linkedin
|
data[0].linkedin = linkedin; // added linkedin
|
||||||
data[0].medium = medium; // added medium
|
data[0].medium = medium; // added medium
|
||||||
await fs.writeFileAsync(config, JSON.stringify(data, null, ' '));
|
data[0].dribbble = dribbble; // added dribbble
|
||||||
|
await fs.writeFileAsync(config, JSON.stringify(data, null, " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function buildCommand(username, program) {
|
async function buildCommand(username, program) {
|
||||||
await populateCSS(program);
|
await populateCSS(program);
|
||||||
let sort = program.sort ? program.sort : 'created';
|
let sort = program.sort ? program.sort : "created";
|
||||||
let order = program.order ? program.order : "asc";
|
let order = program.order ? program.order : "asc";
|
||||||
let includeFork = program.fork ? true : false;
|
let includeFork = program.fork ? true : false;
|
||||||
let twitter = program.twitter ? program.twitter : null;
|
let twitter = program.twitter ? program.twitter : null;
|
||||||
let linkedin = program.linkedin ? program.linkedin : null;
|
let linkedin = program.linkedin ? program.linkedin : null;
|
||||||
let medium = program.medium ? program.medium : null;
|
let medium = program.medium ? program.medium : null;
|
||||||
await populateConfig(sort, order, includeFork, twitter, linkedin, medium);
|
let dribbble = program.dribbble ? program.dribbble : null;
|
||||||
updateHTML(('%s', username), sort, order, includeFork, twitter, linkedin, medium);
|
await populateConfig(
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
);
|
||||||
|
updateHTML(
|
||||||
|
("%s", username),
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
buildCommand
|
buildCommand,
|
||||||
|
populateCSS,
|
||||||
|
populateConfig
|
||||||
};
|
};
|
||||||
|
|
439
package-lock.json
generated
439
package-lock.json
generated
|
@ -51,9 +51,9 @@
|
||||||
"integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw=="
|
"integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw=="
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.10.0",
|
"version": "6.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
|
||||||
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
|
"integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"fast-deep-equal": "^2.0.1",
|
"fast-deep-equal": "^2.0.1",
|
||||||
"fast-json-stable-stringify": "^2.0.0",
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
|
@ -66,12 +66,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
|
||||||
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
|
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
|
||||||
},
|
},
|
||||||
"array-find-index": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
|
|
||||||
"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"array-flatten": {
|
"array-flatten": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||||
|
@ -118,12 +112,6 @@
|
||||||
"tweetnacl": "^0.14.3"
|
"tweetnacl": "^0.14.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"big-integer": {
|
|
||||||
"version": "1.6.43",
|
|
||||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz",
|
|
||||||
"integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"bluebird": {
|
"bluebird": {
|
||||||
"version": "3.5.4",
|
"version": "3.5.4",
|
||||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
|
||||||
|
@ -153,15 +141,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bplist-parser": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
|
|
||||||
"integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"big-integer": "^1.6.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"browser-process-hrtime": {
|
"browser-process-hrtime": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
|
||||||
|
@ -186,22 +165,6 @@
|
||||||
"responselike": "^1.0.2"
|
"responselike": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"camelcase": {
|
|
||||||
"version": "2.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
|
|
||||||
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"camelcase-keys": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"camelcase": "^2.0.0",
|
|
||||||
"map-obj": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"caseless": {
|
"caseless": {
|
||||||
"version": "0.12.0",
|
"version": "0.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
|
@ -269,15 +232,6 @@
|
||||||
"cssom": "0.3.x"
|
"cssom": "0.3.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"currently-unhandled": {
|
|
||||||
"version": "0.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
|
||||||
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"array-find-index": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dashdash": {
|
"dashdash": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
|
@ -304,12 +258,6 @@
|
||||||
"ms": "2.0.0"
|
"ms": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"decamelize": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
|
||||||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"decompress-response": {
|
"decompress-response": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
||||||
|
@ -323,17 +271,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
||||||
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
|
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
|
||||||
},
|
},
|
||||||
"default-browser-id": {
|
|
||||||
"version": "1.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz",
|
|
||||||
"integrity": "sha1-5Z0JpdFXuCi4dsJoFuYcPSosIDo=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"bplist-parser": "^0.1.0",
|
|
||||||
"meow": "^3.1.0",
|
|
||||||
"untildify": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"defer-to-connect": {
|
"defer-to-connect": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz",
|
||||||
|
@ -381,6 +318,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||||
},
|
},
|
||||||
|
"ejs": {
|
||||||
|
"version": "2.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz",
|
||||||
|
"integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q=="
|
||||||
|
},
|
||||||
"encodeurl": {
|
"encodeurl": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||||
|
@ -394,15 +336,6 @@
|
||||||
"once": "^1.4.0"
|
"once": "^1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error-ex": {
|
|
||||||
"version": "1.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
|
||||||
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"is-arrayish": "^0.2.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"escape-html": {
|
"escape-html": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||||
|
@ -523,16 +456,6 @@
|
||||||
"unpipe": "~1.0.0"
|
"unpipe": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find-up": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
|
|
||||||
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"path-exists": "^2.0.0",
|
|
||||||
"pinkie-promise": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"forever-agent": {
|
"forever-agent": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
|
@ -558,12 +481,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||||
},
|
},
|
||||||
"get-stdin": {
|
|
||||||
"version": "4.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
|
|
||||||
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"get-stream": {
|
"get-stream": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
||||||
|
@ -603,12 +520,6 @@
|
||||||
"url-parse-lax": "^3.0.0"
|
"url-parse-lax": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"graceful-fs": {
|
|
||||||
"version": "4.1.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
|
|
||||||
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"handlebars": {
|
"handlebars": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
|
||||||
|
@ -634,12 +545,6 @@
|
||||||
"har-schema": "^2.0.0"
|
"har-schema": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hosted-git-info": {
|
|
||||||
"version": "2.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
|
|
||||||
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"html-encoding-sniffer": {
|
"html-encoding-sniffer": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
|
||||||
|
@ -683,15 +588,6 @@
|
||||||
"safer-buffer": ">= 2.1.2 < 3"
|
"safer-buffer": ">= 2.1.2 < 3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"indent-string": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"repeating": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||||
|
@ -702,37 +598,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
|
||||||
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
|
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
|
||||||
},
|
},
|
||||||
"is-arrayish": {
|
|
||||||
"version": "0.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
|
||||||
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"is-finite": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
|
|
||||||
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"number-is-nan": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"is-typedarray": {
|
"is-typedarray": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||||
},
|
},
|
||||||
"is-utf8": {
|
|
||||||
"version": "0.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
|
|
||||||
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"is-wsl": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
|
|
||||||
},
|
|
||||||
"isstream": {
|
"isstream": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||||
|
@ -824,19 +694,6 @@
|
||||||
"type-check": "~0.3.2"
|
"type-check": "~0.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"load-json-file": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.2",
|
|
||||||
"parse-json": "^2.2.0",
|
|
||||||
"pify": "^2.0.0",
|
|
||||||
"pinkie-promise": "^2.0.0",
|
|
||||||
"strip-bom": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.14",
|
"version": "4.17.14",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
|
||||||
|
@ -847,58 +704,16 @@
|
||||||
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||||
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
|
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
|
||||||
},
|
},
|
||||||
"loud-rejection": {
|
|
||||||
"version": "1.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
|
|
||||||
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"currently-unhandled": "^0.4.1",
|
|
||||||
"signal-exit": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lowercase-keys": {
|
"lowercase-keys": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||||
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
|
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
|
||||||
},
|
},
|
||||||
"map-obj": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
|
|
||||||
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"media-typer": {
|
"media-typer": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
||||||
},
|
},
|
||||||
"meow": {
|
|
||||||
"version": "3.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
|
|
||||||
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"camelcase-keys": "^2.0.0",
|
|
||||||
"decamelize": "^1.1.2",
|
|
||||||
"loud-rejection": "^1.0.0",
|
|
||||||
"map-obj": "^1.0.1",
|
|
||||||
"minimist": "^1.1.3",
|
|
||||||
"normalize-package-data": "^2.3.4",
|
|
||||||
"object-assign": "^4.0.1",
|
|
||||||
"read-pkg-up": "^1.0.1",
|
|
||||||
"redent": "^1.0.0",
|
|
||||||
"trim-newlines": "^1.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"minimist": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"merge-descriptors": {
|
"merge-descriptors": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||||
|
@ -957,29 +772,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
|
||||||
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
|
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
|
||||||
},
|
},
|
||||||
"normalize-package-data": {
|
|
||||||
"version": "2.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
|
||||||
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"hosted-git-info": "^2.1.4",
|
|
||||||
"resolve": "^1.10.0",
|
|
||||||
"semver": "2 || 3 || 4 || 5",
|
|
||||||
"validate-npm-package-license": "^3.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"normalize-url": {
|
"normalize-url": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
|
||||||
"integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg=="
|
"integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg=="
|
||||||
},
|
},
|
||||||
"number-is-nan": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
|
||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"nwsapi": {
|
"nwsapi": {
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
|
||||||
|
@ -990,12 +787,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||||
},
|
},
|
||||||
"object-assign": {
|
|
||||||
"version": "4.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
|
||||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"on-finished": {
|
"on-finished": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||||
|
@ -1012,14 +803,6 @@
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"open": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==",
|
|
||||||
"requires": {
|
|
||||||
"is-wsl": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"optimist": {
|
"optimist": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
|
||||||
|
@ -1049,26 +832,11 @@
|
||||||
"wordwrap": "~1.0.0"
|
"wordwrap": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"os-homedir": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
|
|
||||||
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"p-cancelable": {
|
"p-cancelable": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
|
||||||
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
|
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
|
||||||
},
|
},
|
||||||
"parse-json": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
|
||||||
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"error-ex": "^1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parse5": {
|
"parse5": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
|
||||||
|
@ -1079,63 +847,16 @@
|
||||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
|
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
|
||||||
},
|
},
|
||||||
"path-exists": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"pinkie-promise": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"path-parse": {
|
|
||||||
"version": "1.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
|
||||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"path-to-regexp": {
|
"path-to-regexp": {
|
||||||
"version": "0.1.7",
|
"version": "0.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||||
},
|
},
|
||||||
"path-type": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.2",
|
|
||||||
"pify": "^2.0.0",
|
|
||||||
"pinkie-promise": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"performance-now": {
|
"performance-now": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||||
},
|
},
|
||||||
"pify": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
|
||||||
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"pinkie": {
|
|
||||||
"version": "2.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
|
||||||
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"pinkie-promise": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
|
||||||
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"pinkie": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pn": {
|
"pn": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
|
||||||
|
@ -1200,46 +921,6 @@
|
||||||
"unpipe": "1.0.0"
|
"unpipe": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"read-pkg": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"load-json-file": "^1.0.0",
|
|
||||||
"normalize-package-data": "^2.3.2",
|
|
||||||
"path-type": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"read-pkg-up": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
|
|
||||||
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"find-up": "^1.0.0",
|
|
||||||
"read-pkg": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"redent": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"indent-string": "^2.1.0",
|
|
||||||
"strip-indent": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"repeating": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
|
||||||
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"is-finite": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"request": {
|
"request": {
|
||||||
"version": "2.88.0",
|
"version": "2.88.0",
|
||||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||||
|
@ -1301,15 +982,6 @@
|
||||||
"tough-cookie": "^2.3.3"
|
"tough-cookie": "^2.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resolve": {
|
|
||||||
"version": "1.11.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
|
|
||||||
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"path-parse": "^1.0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"responselike": {
|
"responselike": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
|
||||||
|
@ -1336,12 +1008,6 @@
|
||||||
"xmlchars": "^1.3.1"
|
"xmlchars": "^1.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"semver": {
|
|
||||||
"version": "5.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
|
|
||||||
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"send": {
|
"send": {
|
||||||
"version": "0.17.1",
|
"version": "0.17.1",
|
||||||
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
|
||||||
|
@ -1385,49 +1051,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||||
},
|
},
|
||||||
"signal-exit": {
|
|
||||||
"version": "3.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
|
||||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"source-map": {
|
"source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||||
},
|
},
|
||||||
"spdx-correct": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"spdx-expression-parse": "^3.0.0",
|
|
||||||
"spdx-license-ids": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"spdx-exceptions": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
|
|
||||||
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"spdx-expression-parse": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"spdx-exceptions": "^2.1.0",
|
|
||||||
"spdx-license-ids": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"spdx-license-ids": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"sshpk": {
|
"sshpk": {
|
||||||
"version": "1.16.1",
|
"version": "1.16.1",
|
||||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||||
|
@ -1454,24 +1082,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
|
||||||
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
|
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
|
||||||
},
|
},
|
||||||
"strip-bom": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"is-utf8": "^0.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-indent": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
|
|
||||||
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"get-stdin": "^4.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"symbol-tree": {
|
"symbol-tree": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
||||||
|
@ -1504,12 +1114,6 @@
|
||||||
"punycode": "^2.1.0"
|
"punycode": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"trim-newlines": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"tunnel-agent": {
|
"tunnel-agent": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
|
@ -1555,15 +1159,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||||
},
|
},
|
||||||
"untildify": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"os-homedir": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"uri-js": {
|
"uri-js": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||||
|
@ -1590,16 +1185,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||||
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
|
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
|
||||||
},
|
},
|
||||||
"validate-npm-package-license": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"spdx-correct": "^3.0.0",
|
|
||||||
"spdx-expression-parse": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vary": {
|
"vary": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||||
|
@ -1679,14 +1264,6 @@
|
||||||
"async-limiter": "~1.0.0"
|
"async-limiter": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"x-default-browser": {
|
|
||||||
"version": "0.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz",
|
|
||||||
"integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=",
|
|
||||||
"requires": {
|
|
||||||
"default-browser-id": "^1.0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xml-name-validator": {
|
"xml-name-validator": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||||
|
|
|
@ -33,14 +33,14 @@
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bluebird": "^3.5.4",
|
"bluebird": "^3.5.4",
|
||||||
|
"body-parser": "^1.19.0",
|
||||||
"commander": "^2.20.0",
|
"commander": "^2.20.0",
|
||||||
|
"ejs": "^2.6.2",
|
||||||
"express": "^4.17.0",
|
"express": "^4.17.0",
|
||||||
"github-emoji": "^1.1.0",
|
"github-emoji": "^1.1.0",
|
||||||
"got": "^9.6.0",
|
"got": "^9.6.0",
|
||||||
"handlebars": "^4.1.2",
|
"handlebars": "^4.1.2",
|
||||||
"jsdom": "^15.1.0",
|
"jsdom": "^15.1.0",
|
||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0"
|
||||||
"open": "^6.3.0",
|
|
||||||
"x-default-browser": "^0.4.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
206
populate.js
206
populate.js
|
@ -1,26 +1,32 @@
|
||||||
const fs = require('fs');
|
const fs = require("fs");
|
||||||
const got = require('got');
|
const got = require("got");
|
||||||
const emoji = require('github-emoji');
|
const emoji = require("github-emoji");
|
||||||
const jsdom = require('jsdom').JSDOM,
|
const jsdom = require("jsdom").JSDOM,
|
||||||
options = {
|
options = {
|
||||||
resources: "usable"
|
resources: "usable"
|
||||||
};
|
};
|
||||||
const { getConfig, outDir } = require('./utils');
|
const { getConfig, outDir } = require("./utils");
|
||||||
|
|
||||||
function convertToEmoji(text) {
|
function convertToEmoji(text) {
|
||||||
if (text == null) return;
|
if (text == null) return;
|
||||||
text = text.toString();
|
text = text.toString();
|
||||||
var pattern = /(?<=:\s*).*?(?=\s*:)/gs
|
var pattern = /(?<=:\s*).*?(?=\s*:)/gs;
|
||||||
if (text.match(pattern) != null) {
|
if (text.match(pattern) != null) {
|
||||||
var str = text.match(pattern);
|
var str = text.match(pattern);
|
||||||
str = str.filter(function (arr) {
|
str = str.filter(function(arr) {
|
||||||
return /\S/.test(arr);
|
return /\S/.test(arr);
|
||||||
});
|
});
|
||||||
for (i = 0; i < str.length; i++) {
|
for (i = 0; i < str.length; i++) {
|
||||||
if (emoji.URLS[str[i]] != undefined) {
|
if (emoji.URLS[str[i]] != undefined) {
|
||||||
var output = emoji.of(str[i]);
|
var output = emoji.of(str[i]);
|
||||||
var emojiImage = output.url.replace("assets-cdn.github", "github.githubassets");
|
var emojiImage = output.url.replace(
|
||||||
text = text.replace(`:${str[i]}:`, `<img src="${emojiImage}" class="emoji">`);
|
"assets-cdn.github",
|
||||||
|
"github.githubassets"
|
||||||
|
);
|
||||||
|
text = text.replace(
|
||||||
|
`:${str[i]}:`,
|
||||||
|
`<img src="${emojiImage}" class="emoji">`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return text;
|
return text;
|
||||||
|
@ -29,68 +35,116 @@ function convertToEmoji(text) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.updateHTML = (username, sort, order, includeFork, twitter, linkedin, medium) => {
|
module.exports.updateHTML = (
|
||||||
|
username,
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
) => {
|
||||||
//add data to assets/index.html
|
//add data to assets/index.html
|
||||||
jsdom.fromFile(`${__dirname}/assets/index.html`, options).then(function (dom) {
|
jsdom
|
||||||
let window = dom.window, document = window.document;
|
.fromFile(`${__dirname}/assets/index.html`, options)
|
||||||
|
.then(function(dom) {
|
||||||
|
let window = dom.window,
|
||||||
|
document = window.document;
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
console.log("Building HTML/CSS...");
|
console.log("Building HTML/CSS...");
|
||||||
var repos = [];
|
var repos = [];
|
||||||
var tempRepos;
|
var tempRepos;
|
||||||
var page = 1;
|
var page = 1;
|
||||||
if(sort == "star"){
|
if (sort == "star") {
|
||||||
do{
|
do {
|
||||||
tempRepos = await got(`https://api.github.com/users/${username}/repos?per_page=100&page=${page++}`);
|
tempRepos = await got(
|
||||||
|
`https://api.github.com/users/${username}/repos?per_page=100&page=${page++}`
|
||||||
|
);
|
||||||
tempRepos = JSON.parse(tempRepos.body);
|
tempRepos = JSON.parse(tempRepos.body);
|
||||||
repos = repos.concat(tempRepos);
|
repos = repos.concat(tempRepos);
|
||||||
} while(tempRepos.length == 100);
|
} while (tempRepos.length == 100);
|
||||||
if(order == "desc"){
|
if (order == "desc") {
|
||||||
repos = repos.sort(function(a, b) {
|
repos = repos.sort(function(a, b) {
|
||||||
return b.stargazers_count - a.stargazers_count;
|
return b.stargazers_count - a.stargazers_count;
|
||||||
});
|
});
|
||||||
}else{
|
} else {
|
||||||
repos = repos.sort(function(a, b) {
|
repos = repos.sort(function(a, b) {
|
||||||
return a.stargazers_count - b.stargazers_count;
|
return a.stargazers_count - b.stargazers_count;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
do{
|
do {
|
||||||
tempRepos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}`);
|
tempRepos = await got(
|
||||||
|
`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}`
|
||||||
|
);
|
||||||
tempRepos = JSON.parse(tempRepos.body);
|
tempRepos = JSON.parse(tempRepos.body);
|
||||||
repos = repos.concat(tempRepos);
|
repos = repos.concat(tempRepos);
|
||||||
} while(tempRepos.length == 100);
|
} while (tempRepos.length == 100);
|
||||||
}
|
}
|
||||||
for (var i = 0; i < repos.length; i++) {
|
for (var i = 0; i < repos.length; i++) {
|
||||||
if(repos[i].fork == false){
|
if (repos[i].fork == false) {
|
||||||
document.getElementById("work_section").innerHTML += `
|
document.getElementById("work_section").innerHTML += `
|
||||||
<a href="${repos[i].html_url}" target="_blank">
|
<a href="${repos[i].html_url}" target="_blank">
|
||||||
<section>
|
<section>
|
||||||
<div class="section_title">${repos[i].name}</div>
|
<div class="section_title">${repos[i].name}</div>
|
||||||
<div class="about_section">
|
<div class="about_section">
|
||||||
<span style="display:${repos[i].description == undefined ? 'none' : 'block'};">${convertToEmoji(repos[i].description)}</span>
|
<span style="display:${
|
||||||
|
repos[i].description == undefined
|
||||||
|
? "none"
|
||||||
|
: "block"
|
||||||
|
};">${convertToEmoji(repos[i].description)}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom_section">
|
<div class="bottom_section">
|
||||||
<span style="display:${repos[i].language == null ? 'none' : 'inline-block'};"><i class="fas fa-code"></i> ${repos[i].language}</span>
|
<span style="display:${
|
||||||
<span><i class="fas fa-star"></i> ${repos[i].stargazers_count}</span>
|
repos[i].language == null
|
||||||
<span><i class="fas fa-code-branch"></i> ${repos[i].forks_count}</span>
|
? "none"
|
||||||
|
: "inline-block"
|
||||||
|
};"><i class="fas fa-code"></i> ${
|
||||||
|
repos[i].language
|
||||||
|
}</span>
|
||||||
|
<span><i class="fas fa-star"></i> ${
|
||||||
|
repos[i].stargazers_count
|
||||||
|
}</span>
|
||||||
|
<span><i class="fas fa-code-branch"></i> ${
|
||||||
|
repos[i].forks_count
|
||||||
|
}</span>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</a>`;
|
</a>`;
|
||||||
}else{
|
} else {
|
||||||
if(includeFork == true){
|
if (includeFork == true) {
|
||||||
document.getElementById("forks").style.display = "block";
|
document.getElementById("forks").style.display = "block";
|
||||||
document.getElementById("forks_section").innerHTML += `
|
document.getElementById("forks_section").innerHTML += `
|
||||||
<a href="${repos[i].html_url}" target="_blank">
|
<a href="${repos[i].html_url}" target="_blank">
|
||||||
<section>
|
<section>
|
||||||
<div class="section_title">${repos[i].name}</div>
|
<div class="section_title">${
|
||||||
|
repos[i].name
|
||||||
|
}</div>
|
||||||
<div class="about_section">
|
<div class="about_section">
|
||||||
<span style="display:${repos[i].description == undefined ? 'none' : 'block'};">${convertToEmoji(repos[i].description)}</span>
|
<span style="display:${
|
||||||
|
repos[i].description == undefined
|
||||||
|
? "none"
|
||||||
|
: "block"
|
||||||
|
};">${convertToEmoji(
|
||||||
|
repos[i].description
|
||||||
|
)}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom_section">
|
<div class="bottom_section">
|
||||||
<span style="display:${repos[i].language == null ? 'none' : 'inline-block'};"><i class="fas fa-code"></i> ${repos[i].language}</span>
|
<span style="display:${
|
||||||
<span><i class="fas fa-star"></i> ${repos[i].stargazers_count}</span>
|
repos[i].language == null
|
||||||
<span><i class="fas fa-code-branch"></i> ${repos[i].forks_count}</span>
|
? "none"
|
||||||
|
: "inline-block"
|
||||||
|
};"><i class="fas fa-code"></i> ${
|
||||||
|
repos[i].language
|
||||||
|
}</span>
|
||||||
|
<span><i class="fas fa-star"></i> ${
|
||||||
|
repos[i].stargazers_count
|
||||||
|
}</span>
|
||||||
|
<span><i class="fas fa-code-branch"></i> ${
|
||||||
|
repos[i].forks_count
|
||||||
|
}</span>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</a>`;
|
</a>`;
|
||||||
|
@ -105,38 +159,82 @@ module.exports.updateHTML = (username, sort, order, includeFork, twitter, linked
|
||||||
icon.setAttribute("href", user.avatar_url);
|
icon.setAttribute("href", user.avatar_url);
|
||||||
icon.setAttribute("type", "image/png");
|
icon.setAttribute("type", "image/png");
|
||||||
document.getElementsByTagName("head")[0].appendChild(icon);
|
document.getElementsByTagName("head")[0].appendChild(icon);
|
||||||
document.getElementById("profile_img").style.background = `url('${user.avatar_url}') center center`
|
document.getElementById("profile_img").style.background = `url('${
|
||||||
document.getElementById("username").innerHTML = `<span style="display:${user.name == null || !user.name ? 'none' : 'block'};">${user.name}</span><a href="${user.html_url}">@${user.login}</a>`;
|
user.avatar_url
|
||||||
|
}') center center`;
|
||||||
|
document.getElementById(
|
||||||
|
"username"
|
||||||
|
).innerHTML = `<span style="display:${
|
||||||
|
user.name == null || !user.name ? "none" : "block"
|
||||||
|
};">${user.name}</span><a href="${user.html_url}">@${user.login}</a>`;
|
||||||
//document.getElementById("github_link").href = `https://github.com/${user.login}`;
|
//document.getElementById("github_link").href = `https://github.com/${user.login}`;
|
||||||
document.getElementById("userbio").innerHTML = convertToEmoji(user.bio);
|
document.getElementById("userbio").innerHTML = convertToEmoji(
|
||||||
document.getElementById("userbio").style.display = user.bio == null || !user.bio ? 'none' : 'block';
|
user.bio
|
||||||
|
);
|
||||||
|
document.getElementById("userbio").style.display =
|
||||||
|
user.bio == null || !user.bio ? "none" : "block";
|
||||||
document.getElementById("about").innerHTML = `
|
document.getElementById("about").innerHTML = `
|
||||||
<span style="display:${user.company == null || !user.company ? 'none' : 'block'};"><i class="fas fa-users"></i> ${user.company}</span>
|
<span style="display:${
|
||||||
<span style="display:${user.email == null || !user.email ? 'none' : 'block'};"><i class="fas fa-envelope"></i> ${user.email}</span>
|
user.company == null || !user.company ? "none" : "block"
|
||||||
<span style="display:${user.blog == null || !user.blog ? 'none' : 'block'};"><i class="fas fa-link"></i> <a href="${user.blog}">${user.blog}</a></span>
|
};"><i class="fas fa-users"></i> ${user.company}</span>
|
||||||
<span style="display:${twitter == null ? 'none' : 'block'};"><i class="fab fa-twitter-square"></i> <a href="https://www.twitter.com/${twitter}" target="_blank" class="socials"> Twitter</a></span>
|
<span style="display:${
|
||||||
<span style="display:${linkedin == null ? 'none' : 'block'};"><i class="fab fa-linkedin"></i> <a href="https://www.linkedin.com/in/${linkedin}/" target="_blank" class="socials"> LinkedIn</a></span>
|
user.email == null || !user.email ? "none" : "block"
|
||||||
<span style="display:${medium == null ? 'none' : 'block'};"><i class="fab fa-medium"></i> <a href="https://www.medium.com/@${medium}/" target="_blank" class="socials"> Medium</a></span>
|
};"><i class="fas fa-envelope"></i> ${user.email}</span>
|
||||||
<span style="display:${user.location == null || !user.location ? 'none' : 'block'};"><i class="fas fa-map-marker-alt"></i> ${user.location}</span>
|
<span style="display:${
|
||||||
<span style="display:${user.hireable == false || !user.hireable ? 'none' : 'block'};"><i class="fas fa-user-tie"></i> Available for hire</span>`;
|
user.blog == null || !user.blog ? "none" : "block"
|
||||||
|
};"><i class="fas fa-link"></i> <a href="${user.blog}">${
|
||||||
|
user.blog
|
||||||
|
}</a></span>
|
||||||
|
<span style="display:${
|
||||||
|
user.location == null || !user.location ? "none" : "block"
|
||||||
|
};"><i class="fas fa-map-marker-alt"></i> ${
|
||||||
|
user.location
|
||||||
|
}</span>
|
||||||
|
<span style="display:${
|
||||||
|
user.hireable == false || !user.hireable ? "none" : "block"
|
||||||
|
};"><i class="fas fa-user-tie"></i> Available for hire</span>
|
||||||
|
<div class="socials">
|
||||||
|
<span style="display:${
|
||||||
|
twitter == null ? "none !important" : "block"
|
||||||
|
};"><a href="https://www.twitter.com/${twitter}" target="_blank" class="socials"><i class="fab fa-twitter"></i></a></span>
|
||||||
|
<span style="display:${
|
||||||
|
dribbble == null ? "none !important" : "block"
|
||||||
|
};"><a href="https://www.dribbble.com/${dribbble}" target="_blank" class="socials"><i class="fab fa-dribbble"></i></a></span>
|
||||||
|
<span style="display:${
|
||||||
|
linkedin == null ? "none !important" : "block"
|
||||||
|
};"><a href="https://www.linkedin.com/in/${linkedin}/" target="_blank" class="socials"><i class="fab fa-linkedin-in"></i></a></span>
|
||||||
|
<span style="display:${
|
||||||
|
medium == null ? "none !important" : "block"
|
||||||
|
};"><a href="https://www.medium.com/@${medium}/" target="_blank" class="socials"><i class="fab fa-medium-m"></i></a></span>
|
||||||
|
</div>`;
|
||||||
|
|
||||||
//add data to config.json
|
//add data to config.json
|
||||||
const data = await getConfig();
|
const data = await getConfig();
|
||||||
data[0].username = user.login;
|
data[0].username = user.login;
|
||||||
data[0].name = user.name;
|
data[0].name = user.name;
|
||||||
data[0].userimg = user.avatar_url;
|
data[0].userimg = user.avatar_url;
|
||||||
await fs.writeFile(`${outDir}/config.json`, JSON.stringify(data, null, ' '), function (err) {
|
await fs.writeFile(
|
||||||
|
`${outDir}/config.json`,
|
||||||
|
JSON.stringify(data, null, " "),
|
||||||
|
function(err) {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
console.log("Config file updated.");
|
console.log("Config file updated.\n");
|
||||||
});
|
}
|
||||||
await fs.writeFile(`${outDir}/index.html`, '<!DOCTYPE html>' + window.document.documentElement.outerHTML, function (error) {
|
);
|
||||||
|
await fs.writeFile(
|
||||||
|
`${outDir}/index.html`,
|
||||||
|
"<!DOCTYPE html>" + window.document.documentElement.outerHTML,
|
||||||
|
function(error) {
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
console.log(`Build Complete, Files can be Found @ ${outDir}`);
|
console.log(`Build Complete, Files can be Found @ ${outDir}\n`);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}).catch(function (error) {
|
})
|
||||||
|
.catch(function(error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
29
run.js
29
run.js
|
@ -1,25 +1,20 @@
|
||||||
const express = require('express');
|
const express = require("express");
|
||||||
const open = require('open');
|
const path = require("path");
|
||||||
const defaultBrowser = require('x-default-browser');
|
const outDir = path.resolve("./dist/" || process.env.OUT_DIR);
|
||||||
const path = require('path');
|
|
||||||
const outDir = path.resolve('./dist/' || process.env.OUT_DIR);
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(express.static(`${outDir}`));
|
app.use(express.static(`${outDir}`));
|
||||||
|
|
||||||
function runCommand(){
|
function runCommand(program) {
|
||||||
app.get('/',function(req,res){
|
let port = program.port ? program.port : 3000;
|
||||||
res.sendFile('/index.html');
|
|
||||||
|
app.get("/", function(req, res) {
|
||||||
|
res.sendFile("/index.html");
|
||||||
});
|
});
|
||||||
|
|
||||||
app.listen(3000);
|
app.listen(port);
|
||||||
|
console.log(
|
||||||
defaultBrowser(function (err, res) {
|
`\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n`
|
||||||
if(err) throw err;
|
);
|
||||||
(async () => {
|
|
||||||
await open('http://localhost:3000', {app: res.commonName});
|
|
||||||
console.log("ctrl + c to exit");
|
|
||||||
})();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
222
ui.js
Normal file
222
ui.js
Normal file
|
@ -0,0 +1,222 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const express = require("express");
|
||||||
|
let bodyParser = require("body-parser");
|
||||||
|
const { updateHTML } = require("./populate");
|
||||||
|
const { populateCSS, populateConfig } = require("./build");
|
||||||
|
const { updateCommand } = require("./update");
|
||||||
|
const app = express();
|
||||||
|
app.set("view engine", "ejs");
|
||||||
|
app.use(express.static("views"));
|
||||||
|
app.set("views", __dirname + "/views");
|
||||||
|
app.use(express.json({ limit: "50mb" }));
|
||||||
|
app.use(express.urlencoded({ limit: "50mb", extended: true }));
|
||||||
|
|
||||||
|
const port = 3000;
|
||||||
|
|
||||||
|
const jsdom = require("jsdom").JSDOM,
|
||||||
|
options = {
|
||||||
|
resources: "usable"
|
||||||
|
};
|
||||||
|
global.DOMParser = new jsdom().window.DOMParser;
|
||||||
|
const { getBlog, outDir } = require("./utils");
|
||||||
|
|
||||||
|
function createBlog(title, subtitle, folder, topImage, images, content) {
|
||||||
|
// Checks to make sure this directory actually exists
|
||||||
|
// and creates it if it doesn't
|
||||||
|
if (!fs.existsSync(`${outDir}/blog/`)) {
|
||||||
|
fs.mkdirSync(`${outDir}/blog/`, { recursive: true }, err => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(`${outDir}/blog/${folder}`)) {
|
||||||
|
fs.mkdirSync(`${outDir}/blog/${folder}`, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.copyFile(
|
||||||
|
`${__dirname}/assets/blog/blogTemplate.html`,
|
||||||
|
`${outDir}/blog/${folder}/index.html`,
|
||||||
|
err => {
|
||||||
|
if (err) throw err;
|
||||||
|
jsdom
|
||||||
|
.fromFile(`${outDir}/blog/${folder}/index.html`, options)
|
||||||
|
.then(function(dom) {
|
||||||
|
let window = dom.window,
|
||||||
|
document = window.document;
|
||||||
|
let style = document.createElement("link");
|
||||||
|
style.setAttribute("rel", "stylesheet");
|
||||||
|
style.setAttribute("href", "../../index.css");
|
||||||
|
document.getElementsByTagName("head")[0].appendChild(style);
|
||||||
|
|
||||||
|
document.getElementsByTagName("title")[0].textContent = title;
|
||||||
|
document.getElementById("blog_title").textContent = title;
|
||||||
|
document.getElementById("blog_sub_title").textContent = subtitle;
|
||||||
|
document.getElementById(
|
||||||
|
"background"
|
||||||
|
).style.background = `url('top_image.${
|
||||||
|
topImage.split("/")[1].split(";")[0]
|
||||||
|
}') center center`;
|
||||||
|
|
||||||
|
if (content != null) {
|
||||||
|
var parser = new DOMParser();
|
||||||
|
content = parser.parseFromString(content, "text/html");
|
||||||
|
document.getElementById("blog").innerHTML =
|
||||||
|
content.documentElement.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
images = JSON.parse(images);
|
||||||
|
images.forEach((item, index) => {
|
||||||
|
var base64Image = item.split(";base64,").pop();
|
||||||
|
fs.writeFile(
|
||||||
|
`${outDir}/blog/${folder}/img_${index}.${
|
||||||
|
item.split("/")[1].split(";")[0]
|
||||||
|
}`,
|
||||||
|
base64Image,
|
||||||
|
{ encoding: "base64" },
|
||||||
|
function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.writeFile(
|
||||||
|
`${outDir}/blog/${folder}/index.html`,
|
||||||
|
"<!DOCTYPE html>" + window.document.documentElement.outerHTML,
|
||||||
|
async function(error) {
|
||||||
|
if (error) throw error;
|
||||||
|
|
||||||
|
var base64ImageTop = topImage.split(";base64,").pop();
|
||||||
|
fs.writeFile(
|
||||||
|
`${outDir}/blog/${folder}/top_image.${
|
||||||
|
topImage.split("/")[1].split(";")[0]
|
||||||
|
}`,
|
||||||
|
base64ImageTop,
|
||||||
|
{ encoding: "base64" },
|
||||||
|
function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
let blog_data = {
|
||||||
|
url_title: folder,
|
||||||
|
title: title,
|
||||||
|
sub_title: subtitle,
|
||||||
|
top_image: `top_image.${topImage.split("/")[1].split(";")[0]}`,
|
||||||
|
visible: true
|
||||||
|
};
|
||||||
|
const old_blogs = await getBlog();
|
||||||
|
old_blogs.push(blog_data);
|
||||||
|
fs.writeFile(
|
||||||
|
`${outDir}/blog.json`,
|
||||||
|
JSON.stringify(old_blogs, null, " "),
|
||||||
|
function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
console.log(
|
||||||
|
`Blog created successfully at ${outDir}\\blog\\${folder}\n`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uiCommand() {
|
||||||
|
app.get("/", function(req, res) {
|
||||||
|
res.render("index.ejs");
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/update", function(req, res) {
|
||||||
|
if (!fs.existsSync(`${outDir}/config.json`)) {
|
||||||
|
return res.send(
|
||||||
|
'You need to run build command before using update<br><a href="/">Go Back</a>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
updateCommand();
|
||||||
|
res.redirect("/");
|
||||||
|
});
|
||||||
|
|
||||||
|
app.post("/build", function(req, res) {
|
||||||
|
let username = req.body.username;
|
||||||
|
if (!username) {
|
||||||
|
return res.send("username can't be empty");
|
||||||
|
}
|
||||||
|
let sort = req.body.sort ? req.body.sort : "created";
|
||||||
|
let order = req.body.order ? req.body.order : "asc";
|
||||||
|
let includeFork = req.body.fork == "true" ? true : false;
|
||||||
|
let twitter = req.body.twitter ? req.body.twitter : null;
|
||||||
|
let linkedin = req.body.linkedin ? req.body.linkedin : null;
|
||||||
|
let medium = req.body.medium ? req.body.medium : null;
|
||||||
|
let dribbble = req.body.dribbble ? req.body.dribbble : null;
|
||||||
|
let background = req.body.background
|
||||||
|
? req.body.background
|
||||||
|
: "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80";
|
||||||
|
let theme = req.body.theme == "on" ? "dark" : "light";
|
||||||
|
|
||||||
|
updateHTML(
|
||||||
|
username,
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
);
|
||||||
|
populateCSS({ background: background, theme: theme });
|
||||||
|
populateConfig(
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
);
|
||||||
|
res.redirect("/");
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/blog", function(req, res) {
|
||||||
|
if (!fs.existsSync(`${outDir}/config.json`)) {
|
||||||
|
return res.send(
|
||||||
|
'You need to run build command before accessing blogs<br><a href="/">Go Back</a>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
fs.readFile("./dist/config.json", function(err, data) {
|
||||||
|
res.render("blog.ejs", { profile: JSON.parse(data) });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
app.post("/createBlog", function(req, res) {
|
||||||
|
let title = req.body.title;
|
||||||
|
let subtitle = req.body.subtitle;
|
||||||
|
let content = req.body.content ? req.body.content : null;
|
||||||
|
if (!title) {
|
||||||
|
return res.send("title can't be empty");
|
||||||
|
}
|
||||||
|
if (!subtitle) {
|
||||||
|
return res.send("subtitle can't be empty");
|
||||||
|
}
|
||||||
|
if (!content) {
|
||||||
|
return res.send("something isn't working fine, try again :p");
|
||||||
|
}
|
||||||
|
let folder = title.replace(/[^a-zA-Z ]/g, "").replace(/ /g, "-");
|
||||||
|
let topImage = req.body.top_image;
|
||||||
|
let images = req.body.images;
|
||||||
|
createBlog(title, subtitle, folder, topImage, images, content);
|
||||||
|
res.redirect("/blog");
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("\nStarting...");
|
||||||
|
app.listen(port);
|
||||||
|
console.log(
|
||||||
|
`The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
uiCommand
|
||||||
|
};
|
27
update.js
27
update.js
|
@ -1,5 +1,5 @@
|
||||||
const {getConfig} = require('./utils');
|
const { getConfig } = require("./utils");
|
||||||
const {updateHTML} = require('./populate');
|
const { updateHTML } = require("./populate");
|
||||||
|
|
||||||
async function updateCommand() {
|
async function updateCommand() {
|
||||||
const data = await getConfig();
|
const data = await getConfig();
|
||||||
|
@ -10,11 +10,28 @@ async function updateCommand() {
|
||||||
var twitter = data[0].twitter;
|
var twitter = data[0].twitter;
|
||||||
var linkedin = data[0].linkedin;
|
var linkedin = data[0].linkedin;
|
||||||
var medium = data[0].medium;
|
var medium = data[0].medium;
|
||||||
if(username == null || sort == null || order == null || includeFork == null){
|
var dribbble = data[0].dribbble;
|
||||||
console.log("username not found in config.json, please run build command before using update");
|
if (
|
||||||
|
username == null ||
|
||||||
|
sort == null ||
|
||||||
|
order == null ||
|
||||||
|
includeFork == null
|
||||||
|
) {
|
||||||
|
console.log(
|
||||||
|
"username not found in config.json, please run build command before using update"
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateHTML(username, sort, order, includeFork, twitter, linkedin, medium);
|
updateHTML(
|
||||||
|
username,
|
||||||
|
sort,
|
||||||
|
order,
|
||||||
|
includeFork,
|
||||||
|
twitter,
|
||||||
|
linkedin,
|
||||||
|
medium,
|
||||||
|
dribbble
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
260
views/blog.ejs
Normal file
260
views/blog.ejs
Normal file
|
@ -0,0 +1,260 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
|
<title>Gitfolio UI</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
|
||||||
|
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../index.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/gh/zeva-ui/zeva/dist/css/zeva.min.css"
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
|
<body class="body-light">
|
||||||
|
<header>
|
||||||
|
<b>gitfolio</b>
|
||||||
|
<a href="/blog" style="float: right">New Blog </a>
|
||||||
|
<a href="/update" style="float: right">Update</a>
|
||||||
|
<a href="/" style="float: right">Home</a>
|
||||||
|
</header>
|
||||||
|
<div id="top_image">
|
||||||
|
<i class="fas fa-camera" onclick="applyTopImage()"></i>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
id="top_image_file"
|
||||||
|
style="display: none"
|
||||||
|
accept="image/*"
|
||||||
|
style="display: none"
|
||||||
|
/>
|
||||||
|
<table id="profile_blog">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width:8vw;">
|
||||||
|
<div
|
||||||
|
id="profile_img_blog"
|
||||||
|
style="background:url('<%= profile[0].userimg%>') center center;"
|
||||||
|
></div>
|
||||||
|
</td>
|
||||||
|
<td style="width:52vw;">
|
||||||
|
<div id="username_blog">
|
||||||
|
<% if(profile[0].name)%>
|
||||||
|
<span><%= profile[0].name%></span>
|
||||||
|
<% %>
|
||||||
|
<br />@<%= profile[0].username%><b id="blog_time"></b>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div id="blog-display">
|
||||||
|
<form
|
||||||
|
style="padding: 0px; width:100%;"
|
||||||
|
method="POST"
|
||||||
|
action="/createBlog"
|
||||||
|
id="form"
|
||||||
|
>
|
||||||
|
<textarea
|
||||||
|
id="blog_title"
|
||||||
|
placeholder="blog title here"
|
||||||
|
spellcheck="false"
|
||||||
|
rows="1"
|
||||||
|
onkeyup="addRow(event)"
|
||||||
|
name="title"
|
||||||
|
required
|
||||||
|
></textarea>
|
||||||
|
<br />
|
||||||
|
<textarea
|
||||||
|
id="blog_sub_title"
|
||||||
|
placeholder="blog sub title here"
|
||||||
|
spellcheck="false"
|
||||||
|
rows="1"
|
||||||
|
name="subtitle"
|
||||||
|
onkeyup="addRow(event)"
|
||||||
|
required
|
||||||
|
></textarea>
|
||||||
|
<div id="originalContent" style="display: none"></div>
|
||||||
|
<input type="hidden" name="top_image" id="top" />
|
||||||
|
<input type="hidden" name="content" id="content" />
|
||||||
|
<input type="hidden" name="images" id="images" />
|
||||||
|
<div id="blog"></div>
|
||||||
|
<div class="div_for_buttons">
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
name="file"
|
||||||
|
id="file"
|
||||||
|
style="display: none"
|
||||||
|
accept="image/*"
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
class="button h-weight-bold h-border-pill -size-small"
|
||||||
|
type="button"
|
||||||
|
onclick="clickFile()"
|
||||||
|
>
|
||||||
|
<i class="fas fa-plus"></i> Image
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button h-weight-bold h-border-pill -size-small"
|
||||||
|
type="button"
|
||||||
|
onclick="addPara()"
|
||||||
|
>
|
||||||
|
<i class="fas fa-plus"></i> Paragraph
|
||||||
|
</button>
|
||||||
|
<h5>Tip : You can use html inside paragraphs</h5>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="button" onclick="submitthisform()">
|
||||||
|
Create Blog
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script
|
||||||
|
type="text/javascript"
|
||||||
|
src="https://cdn.jsdelivr.net/gh/zeva-ui/zeva/dist/js/index.min.js"
|
||||||
|
></script>
|
||||||
|
<script>
|
||||||
|
var imgElement = document.querySelector("#file");
|
||||||
|
var topImageElement = document.querySelector("#top_image_file");
|
||||||
|
var img_number = 0;
|
||||||
|
var blog_para_number = 0;
|
||||||
|
var images = [];
|
||||||
|
|
||||||
|
function applyTopImage() {
|
||||||
|
topImageElement.value = "";
|
||||||
|
document.querySelector("#top").value = "";
|
||||||
|
document.querySelector("#top_image").style.background =
|
||||||
|
"linear-gradient(0deg, rgb(250, 250, 250), rgb(220, 220, 220))";
|
||||||
|
topImageElement.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
topImageElement.addEventListener("change", e => {
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsDataURL(e.target.files[0]);
|
||||||
|
reader.onload = data => {
|
||||||
|
var image = data.target.result;
|
||||||
|
document.querySelector(
|
||||||
|
"#top_image"
|
||||||
|
).style.background = `linear-gradient(0deg, rgba(250, 250, 250, 1), rgba(220, 220, 220, 0)), url('${image}') center center`;
|
||||||
|
document.querySelector("#top").value = image;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
function addRow(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (e.target.clientHeight < e.target.scrollHeight) {
|
||||||
|
e.target.rows += 1;
|
||||||
|
} else {
|
||||||
|
if (e.target.value == "") {
|
||||||
|
e.target.rows = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove(e, element, blobData) {
|
||||||
|
var elem = document.getElementById(element);
|
||||||
|
var elem2 = document.getElementById(`${element}_original`);
|
||||||
|
elem.parentNode.removeChild(e.target);
|
||||||
|
elem.parentNode.removeChild(elem);
|
||||||
|
elem2.parentNode.removeChild(elem2);
|
||||||
|
imgElement.value = "";
|
||||||
|
if (element.split("_")[0] == "img") {
|
||||||
|
images.splice(images.indexOf(blobData), 1);
|
||||||
|
img_number--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addDataToOriginalPara(id) {
|
||||||
|
document.querySelector(
|
||||||
|
`#para_${id}_original`
|
||||||
|
).innerHTML = document.querySelector(`#para_${id}`).value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function clickFile() {
|
||||||
|
imgElement.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
imgElement.addEventListener("change", e => {
|
||||||
|
var img = document.createElement("img");
|
||||||
|
var imageblob = URL.createObjectURL(e.target.files[0]);
|
||||||
|
img.setAttribute(
|
||||||
|
"src",
|
||||||
|
`img_${img_number}.${e.target.files[0].type.split("/")[1]}`
|
||||||
|
);
|
||||||
|
img.setAttribute("alt", `blog image ${img_number}`);
|
||||||
|
img.setAttribute("id", `img_${img_number}_original`);
|
||||||
|
|
||||||
|
var img2 = document.createElement("img");
|
||||||
|
img2.setAttribute("src", imageblob);
|
||||||
|
img2.setAttribute("alt", `blog image ${img_number}`);
|
||||||
|
img2.setAttribute("id", `img_${img_number}`);
|
||||||
|
|
||||||
|
var remove = document.createElement("div");
|
||||||
|
remove.setAttribute("class", "remove");
|
||||||
|
remove.setAttribute(
|
||||||
|
"onclick",
|
||||||
|
`remove(event,'img_${img_number}', '${imageblob}')`
|
||||||
|
);
|
||||||
|
remove.innerHTML = '<i class="fas fa-times"></i> Remove';
|
||||||
|
|
||||||
|
document.querySelector("#originalContent").appendChild(img);
|
||||||
|
document.querySelector("#blog").appendChild(img2);
|
||||||
|
document.querySelector("#blog").appendChild(remove);
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsDataURL(e.target.files[0]);
|
||||||
|
reader.onload = data => {
|
||||||
|
images.push(data.target.result);
|
||||||
|
console.log(images);
|
||||||
|
};
|
||||||
|
|
||||||
|
imgElement.value = "";
|
||||||
|
img_number++;
|
||||||
|
});
|
||||||
|
|
||||||
|
function addPara() {
|
||||||
|
var para = document.createElement("textarea");
|
||||||
|
para.setAttribute("class", "para");
|
||||||
|
para.setAttribute("id", `para_${blog_para_number}`);
|
||||||
|
para.setAttribute("spellcheck", false);
|
||||||
|
para.setAttribute("rows", 1);
|
||||||
|
para.setAttribute(
|
||||||
|
"onkeyup",
|
||||||
|
`addRow(event), addDataToOriginalPara('${blog_para_number}')`
|
||||||
|
);
|
||||||
|
para.setAttribute("required", true);
|
||||||
|
para.setAttribute("placeholder", "What's on your Mind?");
|
||||||
|
var remove = document.createElement("div");
|
||||||
|
remove.setAttribute("class", "remove");
|
||||||
|
remove.setAttribute(
|
||||||
|
"onclick",
|
||||||
|
`remove(event,'para_${blog_para_number}', null)`
|
||||||
|
);
|
||||||
|
remove.innerHTML = '<i class="fas fa-times"></i> Remove';
|
||||||
|
var originalPara = document.createElement("p");
|
||||||
|
originalPara.setAttribute("id", `para_${blog_para_number}_original`);
|
||||||
|
document.querySelector("#blog").appendChild(para);
|
||||||
|
document.querySelector("#blog").appendChild(remove);
|
||||||
|
document.querySelector("#originalContent").appendChild(originalPara);
|
||||||
|
blog_para_number++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitthisform() {
|
||||||
|
document.querySelector("#content").value = document.querySelector(
|
||||||
|
"#originalContent"
|
||||||
|
).innerHTML;
|
||||||
|
document.querySelector("#images").value = JSON.stringify(images);
|
||||||
|
document.querySelector("#form").submit();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
views/font/Circular.otf
Normal file
BIN
views/font/Circular.otf
Normal file
Binary file not shown.
299
views/index.css
Normal file
299
views/index.css
Normal file
|
@ -0,0 +1,299 @@
|
||||||
|
@import url("https://fonts.googleapis.com/css?family=Poppins");
|
||||||
|
@import url("https://fonts.googleapis.com/css?family=Questrial");
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Circular";
|
||||||
|
src: url("./font/Circular.otf");
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0%;
|
||||||
|
padding: 0%;
|
||||||
|
width: 100vw;
|
||||||
|
max-width: 100vw;
|
||||||
|
overflow-x: hidden;
|
||||||
|
align-items: center;
|
||||||
|
font-family: "Poppins", sans-serif;
|
||||||
|
background: rgb(250, 250, 250) !important;
|
||||||
|
will-change: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
width: 90vw;
|
||||||
|
padding: 4vh 5vw;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgb(255, 255, 255);
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header b {
|
||||||
|
font-family: "Circular", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a {
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 1.8vh 0px;
|
||||||
|
margin-left: 4vw;
|
||||||
|
color: #000;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: 0.4s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a:hover {
|
||||||
|
color: #bebebe;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
width: 90vw;
|
||||||
|
padding: 2vh 5vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .button {
|
||||||
|
margin: 2vh 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input {
|
||||||
|
margin: 1.5vh 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
display: inline-block !important;
|
||||||
|
margin-right: 25px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
transition: 0.4s ease-in-out !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
color: #fff;
|
||||||
|
background: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.-size-small {
|
||||||
|
margin-right: 1vw !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top_image {
|
||||||
|
width: 100vw;
|
||||||
|
height: 50vh;
|
||||||
|
position: absolute;
|
||||||
|
top: 14vh;
|
||||||
|
left: 0;
|
||||||
|
background: linear-gradient(0deg, rgb(250, 250, 250), rgb(200, 200, 200));
|
||||||
|
background-size: cover !important;
|
||||||
|
background-repeat: no-repeat !important;
|
||||||
|
z-index: 1;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top_image i {
|
||||||
|
font-size: 20px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 5;
|
||||||
|
top: 4vh;
|
||||||
|
right: 5vw;
|
||||||
|
padding: 15px 15px;
|
||||||
|
background: #ffffff;
|
||||||
|
color: rgb(0, 0, 0);
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#top_image i:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile_blog {
|
||||||
|
width: 60vw;
|
||||||
|
margin: 0px 20vw;
|
||||||
|
margin-top: 42vh !important;
|
||||||
|
text-align: left;
|
||||||
|
z-index: 1;
|
||||||
|
transition: 0.4s ease-in-out;
|
||||||
|
z-index: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile_img_blog {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 90px;
|
||||||
|
height: 90px;
|
||||||
|
background-size: cover !important;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
#username_blog {
|
||||||
|
font-size: 18px;
|
||||||
|
color: #000;
|
||||||
|
font-family: "Poppins", sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#username_blog span {
|
||||||
|
font-size: 24px;
|
||||||
|
font-family: "Questrial", sans-serif !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#username_blog b {
|
||||||
|
font-size: 12px;
|
||||||
|
font-family: "Poppins", sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog-display {
|
||||||
|
width: 60vw;
|
||||||
|
margin: 3vh 20vw;
|
||||||
|
text-align: left;
|
||||||
|
z-index: 1;
|
||||||
|
transition: 0.4s ease-in-out;
|
||||||
|
z-index: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_title {
|
||||||
|
font-size: 50px;
|
||||||
|
color: #000;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: "Questrial", sans-serif;
|
||||||
|
background: transparent;
|
||||||
|
border: 0px;
|
||||||
|
width: 100%;
|
||||||
|
resize: none;
|
||||||
|
height: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_sub_title {
|
||||||
|
font-size: 36px;
|
||||||
|
color: rgb(100, 100, 100);
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: "Questrial", sans-serif;
|
||||||
|
background: transparent;
|
||||||
|
border: 0px;
|
||||||
|
width: 100%;
|
||||||
|
resize: none;
|
||||||
|
height: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog_sub_title::placeholder {
|
||||||
|
color: rgb(100, 100, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog-display h2 {
|
||||||
|
color: var(--blog-gray-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog-display {
|
||||||
|
padding: 1vh 0px;
|
||||||
|
font-family: "Questrial", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.div_for_buttons {
|
||||||
|
margin-top: 5vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.para {
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 25px;
|
||||||
|
word-spacing: 1.2px;
|
||||||
|
margin: 5vh 0px;
|
||||||
|
background: transparent;
|
||||||
|
border: 0px;
|
||||||
|
width: 100%;
|
||||||
|
font-family: "Questrial", sans-serif;
|
||||||
|
resize: none;
|
||||||
|
height: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.para span {
|
||||||
|
padding: 2px 4px;
|
||||||
|
background: #000;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog {
|
||||||
|
margin-top: 2vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog img {
|
||||||
|
width: 100%;
|
||||||
|
margin: 2vh 0px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid rgb(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.remove {
|
||||||
|
margin-bottom: 2vh 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: 0.4s ease-in-out;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.remove i {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.remove:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: rgb(255, 70, 70);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
#blog-display {
|
||||||
|
width: 90vw;
|
||||||
|
margin: 0px 5vw;
|
||||||
|
text-align: left;
|
||||||
|
margin-top: 0vh;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile_blog {
|
||||||
|
width: 90vw;
|
||||||
|
margin: 0px 5vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile_img_blog {
|
||||||
|
width: 70px;
|
||||||
|
height: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog img {
|
||||||
|
margin: 1vh 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blog p {
|
||||||
|
margin: 2vh 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::selection {
|
||||||
|
color: #fff;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 5px;
|
||||||
|
height: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::placeholder {
|
||||||
|
color: #000;
|
||||||
|
}
|
145
views/index.ejs
Normal file
145
views/index.ejs
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
|
<title>Gitfolio UI</title>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
|
||||||
|
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../index.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/gh/zeva-ui/zeva/dist/css/zeva.min.css"
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
|
<body class="body-light">
|
||||||
|
<header>
|
||||||
|
<b>gitfolio</b>
|
||||||
|
<a href="/blog" style="float: right">New Blog </a>
|
||||||
|
<a href="/update" style="float: right">Update</a>
|
||||||
|
<a href="/" style="float: right">Home</a>
|
||||||
|
</header>
|
||||||
|
<form method="post" action="build">
|
||||||
|
<h3>Build or Edit Portfolio</h3>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="username"
|
||||||
|
id="username"
|
||||||
|
name="username"
|
||||||
|
required
|
||||||
|
/><br />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="background"
|
||||||
|
name="background"
|
||||||
|
id="background"
|
||||||
|
/>
|
||||||
|
<h3>Sort By :</h3>
|
||||||
|
<label class="label"
|
||||||
|
>Star
|
||||||
|
<input type="radio" name="sort" value="star" />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="label"
|
||||||
|
>Created
|
||||||
|
<input type="radio" name="sort" value="created" checked />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="label"
|
||||||
|
>Updated
|
||||||
|
<input type="radio" name="sort" value="updated" />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="label"
|
||||||
|
>Pushed
|
||||||
|
<input type="radio" name="sort" value="pushed" />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="label"
|
||||||
|
>Full Name
|
||||||
|
<input type="radio" name="sort" value="full_name" />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<h3>Order By :</h3>
|
||||||
|
<label class="label"
|
||||||
|
>Asc
|
||||||
|
<input type="radio" name="order" value="asc" checked />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
<label class="label"
|
||||||
|
>Desc
|
||||||
|
<input type="radio" name="order" value="desc" />
|
||||||
|
<span class="radio"></span>
|
||||||
|
</label>
|
||||||
|
<br /><br />
|
||||||
|
<label class="label"
|
||||||
|
>Use Dark Theme
|
||||||
|
<input type="checkbox" id="theme" name="theme" />
|
||||||
|
<span class="checkbox"></span>
|
||||||
|
</label>
|
||||||
|
<label class="label"
|
||||||
|
>Include Forks
|
||||||
|
<input type="checkbox" id="fork" name="fork" value="true" />
|
||||||
|
<span class="checkbox"></span>
|
||||||
|
</label>
|
||||||
|
<label class="label"
|
||||||
|
>Include Socials
|
||||||
|
<input type="checkbox" id="socials" name="socials" />
|
||||||
|
<span class="checkbox"></span>
|
||||||
|
</label>
|
||||||
|
<div style="display: none" id="input_for_socials">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="twitter username"
|
||||||
|
id="twitter"
|
||||||
|
name="twitter"
|
||||||
|
/><br />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="medium username"
|
||||||
|
id="medium"
|
||||||
|
name="medium"
|
||||||
|
/><br />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="dribbble username"
|
||||||
|
id="dribbble"
|
||||||
|
name="dribbble"
|
||||||
|
/><br />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input h-weight-bold"
|
||||||
|
placeholder="linkedin username"
|
||||||
|
id="linkedin"
|
||||||
|
name="linkedin"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<br /><br />
|
||||||
|
<button type="submit" class="button" id="build">Build</button>
|
||||||
|
</form>
|
||||||
|
<script
|
||||||
|
type="text/javascript"
|
||||||
|
src="https://cdn.jsdelivr.net/gh/zeva-ui/zeva/dist/js/index.min.js"
|
||||||
|
></script>
|
||||||
|
<script src="./index.js" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
7
views/index.js
Normal file
7
views/index.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
document.querySelector("#socials").addEventListener("change", event => {
|
||||||
|
if (event.target.checked) {
|
||||||
|
document.querySelector("#input_for_socials").style.display = "block";
|
||||||
|
} else {
|
||||||
|
document.querySelector("#input_for_socials").style.display = "none";
|
||||||
|
}
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue