feat!: add features to build and genreate rss feeds to readme and add a lot of other contents

This commit is contained in:
Anda Toshiki 2023-03-28 17:22:39 +08:00
parent b168a931e3
commit 7bc07946fd
44 changed files with 932 additions and 87 deletions

33
.github/workflows/rss.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Update RSS feeds on README section
on:
push:
workflow_dispatch: # allow users to randomly trigger workflows for debugging
schedule:
- cron: '0 * * * *' # workflow run per 24 hours
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Check out the latest commit of the repository history
uses: actions/checkout@v2
- name: Set up node environment
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install node dependencies for running build
run: |
yarn install
yarn lint
- name: Generate RSS feeds from source into Markdown formatting
run: |
yarn generate
- name: Commit changed README file and push to repository
run: |
git diff
git config --global user.email "hello@toshiki.dev"
git config --global user.name "@andatoshiki"
git add .
git commit -m 'chore(update): update readme with the latest rss feeds'
git push -f origin master

6
.gitignore vendored
View File

@ -29,4 +29,8 @@ package-lock.json
output/*
!output/.gitkeep
dev.js
dev.js
yarn.lock
.env

182
README.md
View File

@ -1,48 +1,166 @@
<!-- header sine wave svg with name centered starts-->
<img width=100% src="./assets/header-pink.svg" alt="header banner" />
<!-- <img width=100% src="./assets/header-pink.svg" alt="header banner" /> -->
<!-- header sine wave ends -->
## d
# Anda Toshiki (安田俊樹)
## 👋 ようこそ、Developers!
<img src="https://cdn.jsdelivr.net/gh/andatoshiki/andatoshiki@master/assets/avatar.png" alt="logo" width="140" height="140" align="left" />
> The all-in-one crawler/scraper for crunching free proxy nodes of SS, SSR, vmess, trojan!
> Hey there, I'm Anda Toshiki, or you could refer me as _kiki_ in short (the same name as the protagonist Majo from [Kiki's Delivery Service](https://en.wikipedia.org/wiki/Kiki%27s_Delivery_Service) by Hayao Miyazaki); I'm the Maho ShouJo (魔法少女) whom watches anime, drinks monster, writes codes, documents tutorials, takes photos, eats burgers and stays up all nights~
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd3
Introduction once more, my name is Anda Toshiki, pronounced as `AHN-dah TOH-shee-kee` in case you find my name obscure to read out. I'm currently a precollege student with offer of admission from [UB (University at Buffalo)](https://www.buffalo.edu) as a transfer student to [(CIT) California Institute of Technology](https://www.caltech.edu). I am also the founder of [Toshiki Dev](https://github.com/toshikidev) as the first _organizational_ community I have ever created for building functional utility components and webapps/software to my own needs as serving solutions to people having the same requests, additionally I am maintaining the community with both of my cat 😺 (玉ちゃん & 桃ちゃん both of them are [cute girls]()!)
<p align="center">
### 1: Pronouns
**She/her** (internet wide, I'm a loli :P); **he/him** if you happens to meet me offline.
### 2: Languages
I speak three languages, **English** primarily, proficient in **Chinese** and fluent in **Japanese**, all three languages are welcomed to use when having conversations with me (I also don't mind blending them altogether).
### 3: Academics
I current studying Data Science and Physics as core essentials for my academia. Frontend developing and Computer Networking are both my hobbies at rest while I mostly work with numbers and maths mainly. I am also obsessed with _process automation_, _CI/CD_, I am highly active on building practical GitHub actions for easing my DevOps life.
### 4: Hobbies
Below is a short intro on my personal hobbies I enjoys doing while I am free.
- **Frontend development & blogging**: Aside from academic learnings, I am also captivated into frontend development and blogging, more specifically theming and beautification. I was introduced to [HUGO](https://github.com/gohugoio/hugo) when I first get started with website generator/blog building, I contributes one of the best hugo theme communities-[Fixit](https://github.com/hugo-fixit/FixIt) on GitHub. I have also independently created other themes such as gallery and showcasing sites (see more in the projects table below)...
- **Documenting**: I have a strong eagerness on finding the best solution for issues I encounters and devote to understand hard concepts; in order to respond to this fetish, I enjoys documenting notes and epiphanies in detailed and specific no matter how much time it waste, it deserves my dedication (see my notes [in action](https://note.toshiki.dev)).
- **Art**: I engage in pixel art and indie game developments when free, I practice techniques and share my artworks on [Discord Pixel Art](https://discord.gg/pixelart) community.
- **Anime**: I am a heavy _weeb_ whom watches anime a lot at my leisure, my favorite anime so far is, ["DanMachi" (ダンジョンに出会いを求めるのは間違っているだろうか)](https://danmachi.fandom.com/wiki/DanMachi_Wiki).
- **Collectomania**: I love collecting resources from different field, from photography sets to reference books to torrents to movies et cetera. (But I usually read through any of them instead just let them sit in my hard drives).
- **Photography & photo editing**: I have intermediate experience with photography editing with both PhotoShop and Illustrator and have been using both tools on daily bases to commit minor edits on photos to level of perfections; I am also interested in photography, I records everything aesthetic in life with cameras and showcase them at my [web gallery](https://gallery.toshiki.dev).
### 5: Technologies
#### 5.1: Tools
![NPM](https://img.shields.io/badge/NPM-%23CB3837.svg?style=flat&logo=npm&logoColor=white) ![Yarn](https://img.shields.io/badge/yarn-%232C8EBB.svg?style=flat&logo=yarn&logoColor=white) ![Gitea](https://img.shields.io/badge/Gitea-34495E?style=flat&logo=gitea&logoColor=5D9425) ![Jenkins](https://img.shields.io/badge/-Jenkins-D24939?logo=Jenkins&logoColor=000) ![SonarQube](https://img.shields.io/badge/-SonarQube-A9A9A9?logo=SonarQube&logoColor=4E9BCD) ![Docker](https://img.shields.io/badge/-Docker-2496ED?logo=Docker&logoColor=FFF) ![Harbor](https://img.shields.io/badge/-Harbor-FFF?logo=Harbor&logoColor=60B932) ![Kubernetes](https://img.shields.io/badge/-Kubernetes-326CE5?logo=Kubernetes&logoColor=FFF) ![CentOS](https://img.shields.io/badge/-CentOS-262577?logo=CentOS&logoColor=FFF) ![Ubuntu](https://img.shields.io/badge/-Ubuntu-E95420?logo=Ubuntu&logoColor=FFF) ![Git](https://img.shields.io/badge/git-%23F05033.svg?style=flat&logo=git&logoColor=white)
#### 5.2: Platforms
![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=flat&logo=github&logoColor=white) ![TravisCI](https://img.shields.io/badge/travis%20ci-%232B2F33.svg?style=flat&logo=travis&logoColor=white) ![OneDrive](https://img.shields.io/badge/OneDrive-0078D4.svg?style=flat&logo=microsoftonedrive&logoColor=white) ![Vercel](https://img.shields.io/badge/vercel-%23000000.svg?style=flat&logo=vercel&logoColor=white) ![Vultr](https://img.shields.io/badge/Vultr-007BFC.svg?style=flat&logo=vultr) ![Cloudflare](https://img.shields.io/badge/Cloudflare-F38020?style=flat&logo=Cloudflare&logoColor=white) ![Netlify](https://img.shields.io/badge/netlify-%23000000.svg?style=flat&logo=netlify&logoColor=#00C7B7) ![Gitea](https://img.shields.io/badge/Gitea-34495E?style=flat&logo=gitea&logoColor=5D9425) ![GitLab](https://img.shields.io/badge/gitlab-%23181717.svg?style=flat&logo=gitlab&logoColor=white) ![Gitee](https://img.shields.io/badge/Gitee-C71D23?style=flat&logo=gitee&logoColor=white) ![Gitea](https://img.shields.io/badge/Gitea-34495E?style=flat&logo=gitea&logoColor=5D9425) ![CodeCov](https://img.shields.io/badge/codecov-%23ff0077.svg?style=for-the-badge&logo=codecov&logoColor=white)
#### 5.3: Languages
![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=flat&logo=css3&logoColor=white) ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=flat&logo=javascript&logoColor=%23F7DF1E) ![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=flat&logo=php&logoColor=white) ![R](https://img.shields.io/badge/r-%23276DC3.svg?style=flat&logo=r&logoColor=white) ![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=flat&logo=rust&logoColor=white) ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=flat&logo=html5&logoColor=white) ![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=flat&logo=go&logoColor=white) ![C#](https://img.shields.io/badge/c%23-%23239120.svg?style=flat&logo=c-sharp&logoColor=white) ![LaTeX](https://img.shields.io/badge/latex-%23008080.svg?style=flat&logo=latex&logoColor=white) ![Markdown](https://img.shields.io/badge/markdown-%23000000.svg?style=flat&logo=markdown&logoColor=white) ![PowerShell](https://img.shields.io/badge/PowerShell-%235391FE.svg?style=flat&logo=powershell&logoColor=white) ![Shell Script](https://img.shields.io/badge/shell_script-%23121011.svg?style=flat&logo=gnu-bash&logoColor=white) ![Vue3](https://img.shields.io/badge/-Vue3-C0C0C0?logo=Vue.js&logoColor=4FC08D) ![TypeScript](https://img.shields.io/badge/-TypeScript-C0C0C0?logo=TypeScript&logoColor=3178C6) ![Ant Design](https://img.shields.io/badge/-Ant%20Design-C0C0C0?logo=Ant-Design&logoColor=0170FE) ![Node.js](https://img.shields.io/badge/-Node.js-D3D3D3?logo=Node.js&logoColor=339933) ![Vite](https://img.shields.io/badge/-Vite-D3D3D3?logo=Vite&logoColor=646CFF) ![Webpack](https://img.shields.io/badge/-Webpack-D3D3D3?logo=Webpack&logoColor=8DD6F9) ![NPM](https://img.shields.io/badge/-NPM-C0C0C0?logo=npm&logoColor=CB3837) ![Axios](https://img.shields.io/badge/-Axios-C0C0C0?logo=Axios&logoColor=5A29E4) ![ESLint](https://img.shields.io/badge/-ESLint-C0C0C0?logo=ESLint&logoColor=4B32C3) ![jQuery](https://img.shields.io/badge/-jQuery-0769AD?logo=jQuery&logoColor=FFF) ![Bootstrap](https://img.shields.io/badge/-Bootstrap-7952B3?logo=Bootstrap&logoColor=FFF) ![ECharts](https://img.shields.io/badge/-ECharts-C0C0C0?logo=Apache-ECharts&logoColor=AA344D) ![JavaScript](https://img.shields.io/badge/-JavaScript-A9A9A9?logo=JavaScript&logoColor=F7DF1E) ![HTML5](https://img.shields.io/badge/-HTML5-A9A9A9?logo=HTML5&logoColor=E34F26) ![CSS3](https://img.shields.io/badge/-CSS3-A9A9A9?logo=CSS3&logoColor=1572B6) ![Tailwind CSS](https://img.shields.io/badge/-Tailwind%20CSS-FFF?logo=Tailwind-CSS&logoColor=06B6D4) ![Less](https://img.shields.io/badge/-Less-D3D3D3?logo=Less&logoColor=1D365D)
![Angular](https://img.shields.io/badge/angular-%23DD0031.svg?style=flat&logo=angular&logoColor=white) ![jQuery](https://img.shields.io/badge/jquery-%230769AD.svg?style=flat&logo=jquery&logoColor=white)![Pug](https://img.shields.io/badge/Pug-FFF?style=flat&logo=pug&logoColor=A86454) ![React](https://img.shields.io/badge/react-%2320232a.svg?style=flat&logo=react&logoColor=%2361DAFB) ![SASS](https://img.shields.io/badge/SASS-hotpink.svg?style=flat&logo=SASS&logoColor=white)
#### 5.4: IDEs
![GoLand](https://img.shields.io/badge/GoLand-0f0f0f?&style=flat&logo=goland&logoColor=white) ![Jupyter Notebook](https://img.shields.io/badge/jupyter-%23FA0F00.svg?style=flat&logo=jupyter&logoColor=white)
![Vim](https://img.shields.io/badge/VIM-%2311AB00.svg?style=flat&logo=vim&logoColor=white) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=flat&logo=visual-studio-code&logoColor=white) ![PyCharm](https://img.shields.io/badge/pycharm-143?style=flat&logo=pycharm&logoColor=black&color=black&labelColor=green) ![Sublime Text](https://img.shields.io/badge/sublime_text-%23575757.svg?style=flat&logo=sublime-text&logoColor=important)
#### 5.5: OS
![Windows 11](https://img.shields.io/badge/Windows%2011-%230079d5.svg?style=flat&logo=Windows%2011&logoColor=white) ![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat&logo=ubuntu&logoColor=white) ![Openwrt](https://img.shields.io/badge/OpenWRT-00B5E2?style=flat&logo=OpenWrt&logoColor=white) ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat&logo=linux&logoColor=black) ![Android](https://img.shields.io/badge/Android-3DDC84?style=flat&logo=android&logoColor=white)
### 6: Identities
In order to prove my real identity as a human being, I have verified my identity with a GPG public key hosted on [Keybase - Anda Toshiki (@toshikidev)](https://keybase.io/toshikidev) with [ownership of domain `www.toshiki.dev`](https://keybase.io/toshikidev/sigchain#7a41ec772fd948db46e454c55efc71005299fe7b3ed76b789bbcdb5a7505667c0f) via https; which validates I am legitimately a **cute, living human loli** on Earth, you can pull and import my GPG public keys onto your local machine with the following command using cURL.
```sh
curl https://keybase.io/toshikidev/pgp_keys.asc | gpg --import
```
### 7. Metrics
<table width="960px">
<tr>
<td valign="top" width="50%">
#### [Wakatime](https://wakatime.com) development breakdown
<!--START_SECTION:waka2readme-->
```text
Markdown 2 hrs 40 mins ██████▒░░░░░░░░░░░░░░░░░░ 25.89 %
TypeScript 2 hrs 28 mins ██████░░░░░░░░░░░░░░░░░░░ 23.95 %
JavaScript 1 hr 22 mins ███▒░░░░░░░░░░░░░░░░░░░░░ 13.27 %
Vue.js 1 hr 7 mins ██▓░░░░░░░░░░░░░░░░░░░░░░ 10.93 %
JSON 54 mins ██▒░░░░░░░░░░░░░░░░░░░░░░ 08.75 %
Other 28 mins █░░░░░░░░░░░░░░░░░░░░░░░░ 04.56 %
```
<!--END_SECTION_:waka2readme_-->
</td>
<td valign="top" width="50%">
#### <a href="https://blog-next.toshiki.dev" target="_blank">Blog RSS updates</a>
<!-- blog_plugin_start -->
- <a href='https://www.nexxel.dev/blog/ct3a-guestbook/' target='_blank'>Build a Full Stack App with create-t3-app</a> - 2022-08-11
- <a href='https://www.nexxel.dev/blog/ct3a/' target='_blank'>T3 Stack and My Most Popular Open Source Project Ever</a> - 2022-06-27
- <a href='https://www.nexxel.dev/blog/deoxys/' target='_blank'>How I Made a Really Fast Link Shortener That Runs on the Edge</a> - 2022-06-01
- <a href='https://www.nexxel.dev/blog/gen-license/' target='_blank'>Create Licenses for Your Projects Right from the Terminal</a> - 2022-03-25
- <a href='https://www.nexxel.dev/blog/go-gol/' target='_blank'>Conway's Game of Life in Go</a> - 2022-03-17
<!-- blog_plugin_end -->
</td>
</tr>
<tr>
<td valign="top" width="50%">
#### GitHub development metrics
![Anda Toshiki's GitHub stats](https://github-readme-stats.vercel.app/api?username=andatoshiki&show_icons=false&theme=transparent&hide_border=true&text_color=FFF&icon_color=FFF&title_color=FFF)
</td>
<td valign="top" width="50%">
#### 🩴 <a href="https://twitter.com/andatoshiki" target="_blank">Twitter updates</a>
<!-- twitter_plugin_start -->
- <a href='https://twitter.com/andatoshiki/status/1640183615249346560' target='_blank'>Verifying myself: I am toshikidev on http://Keybase.io. pQuYoKO8oET7dLOazltqkPLQs2MIceG5rr3m / https://keybase.io/toshikidev/sigs/pQuYoKO8oET7dLOazltq...</a> - 2023-03-27
- <a href='https://twitter.com/andatoshiki/status/1639967758782812161' target='_blank'>Sakura 🌸 https://t.co/YoEmRMTmr3</a> - 2023-03-26
- <a href='https://twitter.com/andatoshiki/status/1639542865130057729' target='_blank'>I love Excalidraw for architectural diagrams! #excalidraw #diagram #architecture #software #engineering #graph https://t.co/comucWgobW</a> - 2023-03-25
- <a href='https://twitter.com/andatoshiki/status/1633310247464091649' target='_blank'>Re @hamident83hami @SaveToNotion tweet</a> - 2023-03-08
- <a href='https://twitter.com/andatoshiki/status/1633080703771639809' target='_blank'>Re @LinuxHandbook @SaveToNotion #thread</a> - 2023-03-07
<!-- twitter_plugin_end -->
</td>
</tr>
</table>
### 8. Projects
| &nbsp; | Repository | Tags | Homepage | Stars | Last Commit | Description |
| ---------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ![icon](./assets/icons/github.light.svg) | [andatoshiki/toshiki-proxypool](https://github.com/andatoshiki/toshiki-proxypool) | `proxy`, `gfw`, `proxypool`, `ssr`, `clash`, `trojan`, `vmess`, `vpn`, `go` | [`#proxypool`](proxypool.toshiki.dev) | ![GitHub stars](https://img.shields.io/github/stars/andatoshiki/toshiki-proxypool?style=flat) | ![GitHub last commit](https://img.shields.io/github/last-commit/andatoshiki/toshiki-proxypool?style=flat&label=last) | 🧸 A magical scraper that automatically crawl SS, SSR, vmess, trojan node info from web, Telegram Channels, and localize/integrate into a web panel for convenient usages |
| ![icon](./assets/icons/nuxtjs.svg) | [andatoshiki/toshiki-home-v2](https://github.com/andatoshiki/toshiki-home-v2) | `homepage`, `personal-home`, `nuxtjs`, `custom-home`, `personal-website`, `home` | [`#homepage`](https://www.toshiki.dev) | ![GitHub stars](https://img.shields.io/github/stars/andatoshiki/toshiki-home-v2?style=flat) | ![GitHub last commit](https://img.shields.io/github/last-commit/andatoshiki/toshiki-home-v2?style=flat&label=last) | 🪗 V2 of Toshiki's lovely homepage with a complete rebuild and UI/UX design on top of NuxtJS including a decent yet with smooth page transitional effect in addition with customizable showcase pages of interests! |
| ![icon](./assets/icons/vite.svg) | [andatoshiki](https://github.com/andatoshiki/toshiki-notebook) | `notebook`, `vitepress`, `vite`, `knowledge`, `personal-notebook` | [`#notebook`](https://note.toshiki.dev) | ![GitHub stars](https://img.shields.io/github/stars/andatoshiki/toshiki-notebook?style=flat) | ![GitHub last commit](https://img.shields.io/github/last-commit/andatoshiki/toshiki-notebook?style=flat&label=last) | 📖 Toshiki's web notebook built upon Vitepress and deployed via Vercel! |
| | | | | | | |
| | | | | | | |
<!-- ### 9. Hardwares -->
<!-- <p align="center">
<img src="https://stats.toshiki.top/api?show_bg=1&username=andatoshiki&include_all_commits=true" alt="andatoshiki's profile readme stats"></img>
</p>
<p align="center">
<img src="https://cdn.jsdelivr.net/gh/andatoshiki/toshiki-github-stats@master/generated/languages.svg" alt="andatoshiki's dynamic github language stats"></img>
</p>
## Development metrics
📊 Wakatime weekly development breakdown
<!--START_SECTION:waka2readme-->
```text
💬 Languages: From: 17 March 2023 - To: 24 March 2023
TypeScript 2 hrs 18 mins ████████░░░░░░░░░░░░░░░░░ 31.38 %
Markdown 1 hr 38 mins █████▓░░░░░░░░░░░░░░░░░░░ 22.28 %
JSON 48 mins ██▓░░░░░░░░░░░░░░░░░░░░░░ 10.97 %
Vue.js 47 mins ██▓░░░░░░░░░░░░░░░░░░░░░░ 10.69 %
Other 26 mins █▓░░░░░░░░░░░░░░░░░░░░░░░ 06.10 %
```
<!--END_SECTION:waka2readme-->
<!--
andatoshiki/andatoshiki is a ✨ special ✨ repository because its `README.md` (this file) appears on your GitHub profile.
You can click the Preview link to take a look at your changes.
-->
<!-- test -->
</p> -->
<!-- footer sine wave svg centered starts-->
<img width=100% src="https://cdn.jsdelivr.net/gh/andatoshiki/andatoshiki@master/assets/footer-pink.svg" alt="footer banner" />
<!-- <img width=100% src="./assets/footer-pink.svg" alt="footer banner" /> -->
<!-- footer sine wave ends -->
<p align="center">
<img src="https://moe-counter.glitch.me/get/@andatoshiki:github?theme=rule34">
</p>

View File

@ -20,10 +20,10 @@
<g transform="translate(427, 60) scale(1, 1) translate(-427, -60)">
<path d="" fill="#FFC0CB" opacity="0.4">
<path d="" fill="#FEC5E5" opacity="0.4">
<animate attributeName="d" dur="20s" repeatCount="indefinite" keyTimes="0;0.333;0.667;1" calcmod="spline" keySplines="0.2 0 0.2 1;0.2 0 0.2 1;0.2 0 0.2 1" begin="0s" values="M0 0L 0 40Q 213.5 80 427 50T 854 75L 854 0 Z;M0 0L 0 65Q 213.5 80 427 60T 854 50L 854 0 Z;M0 0L 0 85Q 213.5 55 427 85T 854 50L 854 0 Z;M0 0L 0 40Q 213.5 80 427 50T 854 75L 854 0 Z"></animate>
</path>
<path d="" fill="#FFC0CB" opacity="0.4">
<path d="" fill="#FEC5E5" opacity="0.4">
<animate attributeName="d" dur="20s" repeatCount="indefinite" keyTimes="0;0.333;0.667;1" calcmod="spline" keySplines="0.2 0 0.2 1;0.2 0 0.2 1;0.2 0 0.2 1" begin="-10s" values="M0 0L 0 55Q 213.5 100 427 70T 854 80L 854 0 Z;M0 0L 0 70Q 213.5 40 427 40T 854 60L 854 0 Z;M0 0L 0 65Q 213.5 45 427 70T 854 85L 854 0 Z;M0 0L 0 55Q 213.5 100 427 70T 854 80L 854 0 Z"></animate>
</path>
</g>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -44,13 +44,13 @@
<g transform="translate(427, 90) scale(1, 1) translate(-427, -90)">
<path d="" fill="#FFC0CB" opacity="0.4">
<path d="" fill="#FEC5E5" opacity="0.4">
<animate attributeName="d" dur="20s" repeatCount="indefinite" keyTimes="0;0.333;0.667;1" calcmod="spline" keySplines="0.2 0 0.2 1;0.2 0 0.2 1;0.2 0 0.2 1" begin="0s" values="M0 0L 0 100Q 213.5 140 427 110T 854 135L 854 0 Z;M0 0L 0 125Q 213.5 140 427 120T 854 110L 854 0 Z;M0 0L 0 145Q 213.5 115 427 145T 854 110L 854 0 Z;M0 0L 0 100Q 213.5 140 427 110T 854 135L 854 0 Z"></animate>
</path>
<path d="" fill="#FFC0CB" opacity="0.4">
<path d="" fill="#FEC5E5" opacity="0.4">
<animate attributeName="d" dur="20s" repeatCount="indefinite" keyTimes="0;0.333;0.667;1" calcmod="spline" keySplines="0.2 0 0.2 1;0.2 0 0.2 1;0.2 0 0.2 1" begin="-10s" values="M0 0L 0 115Q 213.5 160 427 130T 854 140L 854 0 Z;M0 0L 0 130Q 213.5 100 427 100T 854 120L 854 0 Z;M0 0L 0 125Q 213.5 105 427 130T 854 145L 854 0 Z;M0 0L 0 115Q 213.5 160 427 130T 854 140L 854 0 Z"></animate>
</path>
</g>
<text text-anchor="middle" alignment-baseline="middle" x="50%" y="35%" class="text" style="fill:#fff;" stroke="#none" stroke-width="1">Anda Toshiki 安田俊樹</text>
<text text-anchor="middle" alignment-baseline="middle" x="50%" y="35%" class="text" style="fill:#fff;" stroke="#none" stroke-width="1">Anda Toshiki (安田俊樹)</text>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

1
assets/icons/angular.svg Normal file
View File

@ -0,0 +1 @@
<svg width="2353" height="2500" viewBox="0 0 256 272" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M.1 45.522L125.908.697l129.196 44.028-20.919 166.45-108.277 59.966-106.583-59.169L.1 45.522z" fill="#E23237"/><path d="M255.104 44.725L125.908.697v270.444l108.277-59.866 20.919-166.55z" fill="#B52E31"/><path d="M126.107 32.274L47.714 206.693l29.285-.498 15.739-39.347h70.325l17.233 39.845 27.99.498-82.179-174.917zm.2 55.882l26.496 55.383h-49.806l23.31-55.383z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 510 B

1
assets/icons/bing.svg Normal file
View File

@ -0,0 +1 @@
<svg width="2000" height="2500" viewBox="0 0 256 320" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M95.055 82.908l32.581 70.647 48.144 21.777L2.125 266.695l71.154-63.428V22.449L0 0v268.932l72.83 51.054L256 210.88v-78.653L95.055 82.908" fill="#F4BD27"/></svg>

After

Width:  |  Height:  |  Size: 288 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" version="1.1">
<path fill-rule="evenodd" fill="#c96198"
d="M7.655 14.916L8 14.25l.345.666a.752.752 0 01-.69 0zm0 0L8 14.25l.345.666.002-.001.006-.003.018-.01a7.643 7.643 0 00.31-.17 22.08 22.08 0 003.433-2.414C13.956 10.731 16 8.35 16 5.5 16 2.836 13.914 1 11.75 1 10.203 1 8.847 1.802 8 3.02 7.153 1.802 5.797 1 4.25 1 2.086 1 0 2.836 0 5.5c0 2.85 2.045 5.231 3.885 6.818a22.075 22.075 0 003.744 2.584l.018.01.006.003h.002z">
</path>
</svg>

After

Width:  |  Height:  |  Size: 517 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" version="1.1">
<path fill-rule="evenodd" fill="#c96198"
d="M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z">
</path>
</svg>

After

Width:  |  Height:  |  Size: 779 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g fill="#181616"><path fill-rule="evenodd" clip-rule="evenodd" d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"/><path d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g fill="#cdd9e5"><path fill-rule="evenodd" clip-rule="evenodd" d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"/><path d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#F0DB4F" d="M1.408 1.408h125.184v125.185H1.408z"/><path fill="#323330" d="M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

1
assets/icons/less.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill-rule="evenodd" clip-rule="evenodd" fill="#2A4D80" d="M122.301 58.635c-.6-1.299-.89-2.836-.952-4.283-.154-3.561-.023-7.135-.184-10.696-.144-3.189-1.282-6.063-4.344-7.707-2.696-1.447-5.821-1.591-8.821-1.625v5.691c1 .034.754.065.998.078 4.029.198 5.379 1.476 5.43 5.473.038 2.972.012 5.946.06 8.917.059 3.605.597 7.046 3.894 9.322.056.039.051.182.083.348-1.678 1.192-3.006 2.727-3.392 4.822a34.53 34.53 0 00-.54 5.153c-.096 3.118.003 6.243-.086 9.361-.07 2.442-1.227 3.588-3.604 4.132-.895.206-1.843.279-2.843.406v5.677c2-.12 3.017-.199 4.387-.347 5.156-.558 8.059-3.241 8.654-8.243.186-1.568.165-3.166.2-4.75.066-2.969.032-5.952.298-8.903.271-3.011 2.461-4.675 5.461-4.509v-5.951c-2 .358-3.843-.507-4.699-2.366zM28.314 70.768C28.313 59.219 28 47.67 28 36.122v-1.817c-3 0-6.226-.029-9.391.014-1.285.017-2.418.127-3.692.301-4.877.664-7.228 2.953-8.092 7.812-.25 1.402-.2 2.859-.221 4.293-.039 2.726.039 5.453-.005 8.178-.055 3.432-1.672 6.092-5.172 6.294-.124.007.573.15-.427.236v5.305c4 .628 5.273 2.243 5.539 5.959.042.592.053 1.189.059 1.784.034 3.32-.004 6.645.146 9.959.141 3.093.828 5.857 3.751 7.48C13.225 93.436 17 93.559 19 93.638v-5.664c0-.048-.21-.092-.405-.104-4.339-.265-5.317-1.443-5.343-5.785-.017-2.875.106-5.75.06-8.625-.058-3.612-.586-7.038-3.856-9.324-.05-.035-.001-.183-.017-.383 2.199-1.39 3.368-3.516 3.686-6.094.176-1.422.235-2.864.26-4.299.05-2.973-.003-5.949.078-8.92.057-2.088 1.39-3.61 3.091-3.952 1.612-.325 2.446-.315 5.446-.466v2.056c0 10.31-.367 20.619-.313 30.929.019 3.531.41 7.012 4.195 8.537 2.058.829 4.263 1.084 6.627 1.642.395-2.312.524-4.23.847-6.128-4.357-1.25-5.042-1.898-5.042-6.29zm26.674-19.893c-7.34-3.51-16.248-.441-19.666 6.921-2.574 5.544-2.482 11.25-.216 16.872 1.229 3.048 3.45 5.33 6.473 6.672 5.904 2.621 11.879 1.984 17.832.144.321-.1.731-.718.692-1.046-.203-1.661-.54-3.306-.841-5.021-1.417.357-2.601.722-3.811.949-3.197.601-6.401.6-9.512-.637-3.072-1.22-5.135-4.73-4.622-7.73h20.872c.255-3 .154-7.125-1.123-10.536-1.14-3.049-3.108-5.167-6.078-6.588zM54.944 63H41.228c.007-4 3.264-7.59 7.537-7.508 3.753.072 6.349 3.508 6.179 7.508zm56.108 12.279c.492-5.054-1.034-7.898-5.534-10.094-1.596-.779-3.29-1.356-4.916-2.078-1.217-.54-2.442-1.087-3.58-1.771-1.108-.665-1.572-1.769-1.408-3.062.161-1.277.982-2.119 2.168-2.359 1.437-.292 2.943-.542 4.388-.424 2.042.167 4.056.69 6.163 1.075l1.332-5.818c-2.851-.434-5.509-.995-8.195-1.207-2.987-.235-5.896.261-8.63 1.67-5.777 2.977-5.883 12.116-.574 15.116 1.586.896 3.283 1.596 4.933 2.38 1.737.827 3.537 1.546 5.199 2.504 1.262.727 1.713 1.996 1.375 3.475-.313 1.375-1.354 1.988-2.577 2.105-1.86.177-3.768.347-5.609.128-2.217-.264-4.387-.937-6.658-1.451l-1.158 5.79c5.333 2.002 10.61 2.33 15.938 1.149 4.459-.988 6.999-3.596 7.343-7.128zm-28.415-9.452c-1.959-1.039-4.066-1.797-6.088-2.723-1.255-.575-2.584-1.074-3.69-1.871-2.127-1.533-1.731-4.472.746-5.258 1.421-.452 3.028-.592 4.521-.48 2.034.153 4.041.679 6.162 1.063l1.258-5.546c-1.077-.293-2.052-.612-3.051-.822-3.971-.836-7.963-1.16-11.874.215-3.36 1.182-5.691 3.392-6.152 7.11-.516 4.152.861 7.43 4.696 9.402 1.535.79 3.18 1.363 4.747 2.095 1.564.73 3.161 1.427 4.614 2.343 1.111.7 1.549 1.885 1.236 3.255-.311 1.358-1.301 2.042-2.533 2.169-1.86.191-3.769.368-5.611.153-2.226-.26-4.403-.935-6.714-1.455-.341 1.613-.741 3.238-.99 4.885-.054.358.345 1.046.681 1.163 5.384 1.866 10.864 2.134 16.34.521 3.27-.962 5.557-3.051 6.018-6.623.523-4.055-.444-7.544-4.316-9.596z"/></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

1
assets/icons/mongodb.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

6
assets/icons/nestjs.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1630914698211" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2425" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: element-icons; src: url("chrome-extension://moombeodfomdpjnpocobemoiaemednkg/fonts/element-icons.woff") format("woff"), url("chrome-extension://moombeodfomdpjnpocobemoiaemednkg/fonts/element-icons.ttf ") format("truetype"); }
</style></defs><path d="M1021.475 515.157v330.81c0 65.658-54.294 132.578-107.325 159.093-30.303 15.152-61.869 18.94-95.96 18.94H189.396C85.859 1024 0 929.302 0 834.604c1.263-215.911 0-431.822 0-648.996C0 114.9 50.506 47.98 111.112 18.94 138.89 6.313 169.194 0 199.497 0h635.107c74.496 1.263 138.89 50.506 169.194 112.375 13.889 27.778 18.94 58.081 18.94 88.385-1.263 104.799-1.263 209.598-1.263 314.397z m-376.267-114.9h7.576c2.525 0 6.313 0 8.839 2.525 50.505 26.515 89.647 68.182 101.01 123.738 13.89 69.445 0 133.84-46.717 189.396-75.758 88.385-217.174 109.85-320.71 56.819-112.375-58.081-179.295-205.81-130.052-334.6 25.253-65.657 64.395-118.687 128.79-151.516 16.414-8.838 35.353-16.414 50.505-26.515 21.465-13.89 23.99-37.88 12.626-59.344-11.364-18.94-36.616-26.516-55.556-18.94-114.9 45.455-190.658 125.001-228.537 243.69-27.779 87.121-17.677 170.455 17.676 253.79 25.253 58.081 63.132 104.799 114.9 143.94 41.668 31.566 87.123 53.031 137.628 64.395 79.546 17.677 157.83 7.576 232.326-26.515 131.314-60.607 220.961-213.386 172.981-368.69-25.253-83.335-80.809-138.891-157.83-172.982-25.252-11.364-53.03-16.415-82.071-23.99-2.525-18.94-6.313-39.142-7.576-59.345-1.263-25.252 23.99-41.667 47.98-30.303 12.627 5.05 23.99 12.626 35.354 20.202 31.566 18.94 60.607 11.364 73.233-18.94 6.313-17.676-1.262-44.192-21.465-56.818-21.464-12.626-45.455-22.727-69.445-32.829-54.293-23.99-123.738 15.152-151.516 63.132-18.94 32.829-13.89 68.183-5.051 102.274 2.525 12.626 12.626 26.515-6.313 35.354-8.839 3.788-17.677 7.576-26.516 12.626-80.808 35.354-130.051 141.416-106.061 229.8 20.202 75.759 111.112 138.89 189.396 112.375 49.243-16.414 113.637-77.02 107.324-141.415-5.05-44.192-15.152-87.122-22.728-131.315z" fill="#E00000" p-id="2426"></path><path d="M547.985 400.256c8.839 42.93 20.202 84.597 26.516 128.79 3.788 26.515-15.152 46.717-44.193 55.556-20.202 6.313-49.243-6.313-60.606-27.778-31.566-61.87 1.262-138.89 78.283-156.568z" fill="#E00000" p-id="2427"></path></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

1
assets/icons/nodejs.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#83CD29" d="M112.771 30.334L68.674 4.729c-2.781-1.584-6.402-1.584-9.205 0L14.901 30.334C12.031 31.985 10 35.088 10 38.407v51.142c0 3.319 2.084 6.423 4.954 8.083l11.775 6.688c5.628 2.772 7.617 2.772 10.178 2.772 8.333 0 13.093-5.039 13.093-13.828v-50.49c0-.713-.371-1.774-1.071-1.774h-5.623C42.594 41 41 42.061 41 42.773v50.49c0 3.896-3.524 7.773-10.11 4.48L18.723 90.73c-.424-.23-.723-.693-.723-1.181V38.407c0-.482.555-.966.982-1.213l44.424-25.561c.415-.235 1.025-.235 1.439 0l43.882 25.555c.42.253.272.722.272 1.219v51.142c0 .488.183.963-.232 1.198l-44.086 25.576c-.378.227-.847.227-1.261 0l-11.307-6.749c-.341-.198-.746-.269-1.073-.086-3.146 1.783-3.726 2.02-6.677 3.043-.726.253-1.797.692.41 1.929l14.798 8.754a9.294 9.294 0 004.647 1.246c1.642 0 3.25-.426 4.667-1.246l43.885-25.582c2.87-1.672 4.23-4.764 4.23-8.083V38.407c0-3.319-1.36-6.414-4.229-8.073zM77.91 81.445c-11.726 0-14.309-3.235-15.17-9.066-.1-.628-.633-1.379-1.272-1.379h-5.731c-.709 0-1.279.86-1.279 1.566 0 7.466 4.059 16.512 23.453 16.512 14.039 0 22.088-5.455 22.088-15.109 0-9.572-6.467-12.084-20.082-13.886-13.762-1.819-15.16-2.738-15.16-5.962 0-2.658 1.184-6.203 11.374-6.203 9.105 0 12.461 1.954 13.842 8.091.118.577.645.991 1.24.991h5.754c.354 0 .692-.143.94-.396.24-.272.367-.613.335-.979-.891-10.568-7.912-15.493-22.112-15.493-12.631 0-20.166 5.334-20.166 14.275 0 9.698 7.497 12.378 19.622 13.577 14.505 1.422 15.633 3.542 15.633 6.395 0 4.955-3.978 7.066-13.309 7.066z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
assets/icons/nuxtjs.svg Normal file
View File

@ -0,0 +1 @@
<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg"><path d="M39.267 108.97l-.284-.567c-.567-1.135-.567-2.27-.283-3.689H8.059L53.454 24.14l19.009 34.33 6.241-4.54L59.695 19.6c-.283-.567-2.553-3.971-6.241-3.971-1.703 0-4.256.567-6.242 4.255L1.25 101.31c-.284.852-2.27 4.54-.568 7.66 1.135 1.703 2.838 3.405 6.81 3.405h38.585c-3.972 0-5.958-1.702-6.81-3.404z" fill="#00c58e"/><path d="M126.65 101.59L89.767 35.201c-.567-.567-2.553-4.256-6.242-4.256-1.702 0-4.255.851-6.241 4.256l-4.823 7.944v15.321l11.065-19.009 36.599 65.254h-13.902a6.525 6.525 0 01-.568 3.972l-.284.284c-1.702 3.12-5.958 3.404-6.525 3.404h21.562c.851 0 4.823-.283 6.809-3.404.851-1.419 1.419-3.972-.567-7.377z" fill="#108775"/><path d="M106.51 108.97v-.284l.284-.567c.283-1.135.567-2.27.283-3.405l-1.134-3.404-28.938-50.501-4.256-7.66h-.284l-4.256 7.66-28.938 50.5-1.134 3.405a6.81 6.81 0 00.567 4.256c1.135 1.702 2.837 3.405 6.809 3.405h53.906c.851 0 5.107-.284 7.093-3.405zM72.464 58.469l26.386 46.245H46.079z" fill="#2f495e"/></svg>

After

Width:  |  Height:  |  Size: 1014 B

1
assets/icons/react.svg Normal file
View File

@ -0,0 +1 @@
<svg height="2500" viewBox="175.7 78 490.6 436.9" width="2194" xmlns="http://www.w3.org/2000/svg"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"/><circle cx="420.9" cy="296.5" r="45.7"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

46
assets/icons/rollup.svg Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="256px" height="335px" viewBox="0 0 256 335" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<defs>
<linearGradient x1="26.8242921%" y1="48.2236445%" x2="67.5758137%" y2="55.339338%" id="linearGradient-1">
<stop stop-color="#FF6533" offset="0%"></stop>
<stop stop-color="#FF5633" offset="15.7%"></stop>
<stop stop-color="#FF4333" offset="43.4%"></stop>
<stop stop-color="#FF3733" offset="71.4%"></stop>
<stop stop-color="#FF3333" offset="100%"></stop>
</linearGradient>
<linearGradient x1="20.4503837%" y1="38.1333935%" x2="93.4858428%" y2="80.4322382%" id="linearGradient-2">
<stop stop-color="#BF3338" offset="0%"></stop>
<stop stop-color="#FF3333" offset="100%"></stop>
</linearGradient>
<linearGradient x1="32.2926113%" y1="39.496861%" x2="45.5563705%" y2="48.9139013%" id="linearGradient-3">
<stop stop-color="#FF6533" offset="0%"></stop>
<stop stop-color="#FF5633" offset="15.7%"></stop>
<stop stop-color="#FF4333" offset="43.4%"></stop>
<stop stop-color="#FF3733" offset="71.4%"></stop>
<stop stop-color="#FF3333" offset="100%"></stop>
</linearGradient>
<linearGradient x1="51.5641026%" y1="78.3444231%" x2="48.5176441%" y2="41.6628279%" id="linearGradient-4">
<stop stop-color="#FF6533" offset="0%"></stop>
<stop stop-color="#FF5633" offset="15.7%"></stop>
<stop stop-color="#FF4333" offset="43.4%"></stop>
<stop stop-color="#FF3733" offset="71.4%"></stop>
<stop stop-color="#FF3333" offset="100%"></stop>
</linearGradient>
<linearGradient x1="40.2012262%" y1="47.2148639%" x2="53.9750044%" y2="54.5349876%" id="linearGradient-5">
<stop stop-color="#FBB040" offset="0%"></stop>
<stop stop-color="#FB8840" offset="100%"></stop>
</linearGradient>
<linearGradient x1="55.2222794%" y1="5.88782542%" x2="40.9262994%" y2="128.016462%" id="linearGradient-6">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g>
<path d="M256,110.132723 C256,90.4494279 250.844851,71.9963387 241.76476,56.0036613 C217.687872,31.2237986 165.316247,25.4828375 152.311213,55.8864989 C138.954691,87.0517162 174.747826,121.731808 190.389016,118.97849 C210.306636,115.463616 186.874142,69.7702517 186.874142,69.7702517 C217.336384,127.179863 210.306636,109.605492 155.240275,162.328604 C100.173913,215.051716 43.9359268,326.297483 35.7345538,330.983982 C35.3830664,331.218307 35.0315789,331.39405 34.6215103,331.569794 L250.610526,331.569794 C254.418307,331.569794 256.878719,327.527689 255.179863,324.129977 L198.707551,212.356979 C197.477346,209.955149 198.356064,206.967506 200.699314,205.620137 C233.73913,186.639817 256,151.022426 256,110.132723 Z" fill="url(#linearGradient-1)"></path>
<path d="M256,110.132723 C256,90.4494279 250.844851,71.9963387 241.76476,56.0036613 C217.687872,31.2237986 165.316247,25.4828375 152.311213,55.8864989 C138.954691,87.0517162 174.747826,121.731808 190.389016,118.97849 C210.306636,115.463616 186.874142,69.7702517 186.874142,69.7702517 C217.336384,127.179863 210.306636,109.605492 155.240275,162.328604 C100.173913,215.051716 43.9359268,326.297483 35.7345538,330.983982 C35.3830664,331.218307 35.0315789,331.39405 34.6215103,331.569794 L250.610526,331.569794 C254.418307,331.569794 256.878719,327.527689 255.179863,324.129977 L198.707551,212.356979 C197.477346,209.955149 198.356064,206.967506 200.699314,205.620137 C233.73913,186.639817 256,151.022426 256,110.132723 Z" fill="url(#linearGradient-2)"></path>
<path d="M35.7345538,330.983982 C43.9359268,326.297483 100.173913,214.993135 155.240275,162.270023 C210.306636,109.546911 217.336384,127.121281 186.874142,69.7116705 C186.874142,69.7116705 70.2974828,233.153318 28.1189931,313.995423" fill="url(#linearGradient-3)"></path>
<path d="M52.1372998,184.530892 C130.870481,39.776659 141.180778,25.1899314 182.187643,25.1899314 C203.745538,25.1899314 225.479176,34.9144165 239.538673,52.195881 C220.382609,21.3235698 186.464073,0.644393593 147.624714,0.0585812357 L13.8837529,0.0585812357 C11.0718535,0.0585812357 8.78718535,2.34324943 8.78718535,5.15514874 L8.78718535,274.745995 C16.7542334,254.183982 30.2864989,224.776201 52.1372998,184.530892 Z" fill="url(#linearGradient-4)"></path>
<path d="M155.240275,162.270023 C100.173913,214.993135 43.9359268,326.297483 35.7345538,330.983982 C27.5331808,335.670481 13.7665904,336.256293 6.44393593,328.05492 C-1.34736842,319.326316 -13.4736842,305.208238 52.1372998,184.530892 C130.870481,39.776659 141.180778,25.1899314 182.187643,25.1899314 C203.745538,25.1899314 225.479176,34.9144165 239.538673,52.195881 C240.300229,53.426087 241.061785,54.7148741 241.823341,56.0036613 C217.746453,31.2237986 165.374828,25.4828375 152.369794,55.8864989 C139.013272,87.0517162 174.806407,121.731808 190.447597,118.97849 C210.365217,115.463616 186.932723,69.7702517 186.932723,69.7702517 C217.336384,127.121281 210.306636,109.546911 155.240275,162.270023 Z" fill="url(#linearGradient-5)"></path>
<path d="M58.5812357,190.974828 C137.314416,46.220595 147.624714,31.6338673 188.631579,31.6338673 C206.381693,31.6338673 224.24897,38.2535469 237.839817,50.204119 C223.78032,34.1528604 202.9254,25.1899314 182.187643,25.1899314 C141.180778,25.1899314 130.870481,39.776659 52.1372998,184.530892 C-13.4736842,305.208238 -1.34736842,319.326316 6.44393593,328.05492 C7.55697941,329.285126 8.84576659,330.339588 10.193135,331.218307 C3.33913043,321.259497 0.292906178,298.119908 58.5812357,190.974828 Z" fill="url(#linearGradient-6)" opacity="0.3"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 175.8 87.9" xml:space="preserve">
<style type="text/css">
.st0 {
fill: #0088f5;
}
</style>
<path class="st0" d="M48.6,81.4l-4.3,4.3c-0.5,0.5-1.1,0.8-1.8,0.8s-1.4-0.3-2-0.8L0.9,46C0.3,45.4,0,44.7,0,44s0.3-1.4,0.9-2
L40.5,2.4c0.5-0.6,1.2-0.9,2-0.9s1.4,0.3,1.8,0.9l4.3,4.3c0.6,0.5,0.9,1.2,0.9,2s-0.3,1.4-0.9,1.8L15.2,44l33.4,33.4
c0.6,0.6,0.9,1.3,0.9,2C49.5,80.1,49.2,80.8,48.6,81.4z" />
<path class="st0" d="M113.7,3.7L78,86.4c-0.2,0.5-0.7,1-1.5,1.3S75,88,74.3,87.8l-5.8-1c-0.9-0.2-1.5-0.6-1.9-1
c-0.3-0.5-0.5-1-0.3-1.6L102,1.7c0.3-0.6,0.9-1,1.5-1.3c0.7-0.2,1.4-0.3,2.2-0.2l6,1.1c0.8,0.2,1.4,0.5,1.9,1
C114,2.7,114.1,3.2,113.7,3.7z" />
<path class="st0" d="M173.4,46l-39.6,39.6c-0.6,0.5-1.3,0.8-2,0.8s-1.4-0.3-2-0.8l-4.3-4.3c-0.5-0.6-0.8-1.3-0.8-2s0.3-1.4,0.8-2
L158.9,44l-33.4-33.5c-0.5-0.5-0.8-1.1-0.8-1.8s0.3-1.4,0.8-2l4.3-4.3c0.6-0.6,1.3-0.9,2-0.9s1.4,0.3,2,0.9L173.4,42
c0.5,0.5,0.8,1.2,0.8,2S173.9,45.5,173.4,46z" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill="#fff" d="M22.67 47h99.67v73.67H22.67z"/><path data-name="original" fill="#007acc" d="M1.5 63.91v62.5h125v-125H1.5zm100.73-5a15.56 15.56 0 017.82 4.5 20.58 20.58 0 013 4c0 .16-5.4 3.81-8.69 5.85-.12.08-.6-.44-1.13-1.23a7.09 7.09 0 00-5.87-3.53c-3.79-.26-6.23 1.73-6.21 5a4.58 4.58 0 00.54 2.34c.83 1.73 2.38 2.76 7.24 4.86 8.95 3.85 12.78 6.39 15.16 10 2.66 4 3.25 10.46 1.45 15.24-2 5.2-6.9 8.73-13.83 9.9a38.32 38.32 0 01-9.52-.1 23 23 0 01-12.72-6.63c-1.15-1.27-3.39-4.58-3.25-4.82a9.34 9.34 0 011.15-.73L82 101l3.59-2.08.75 1.11a16.78 16.78 0 004.74 4.54c4 2.1 9.46 1.81 12.16-.62a5.43 5.43 0 00.69-6.92c-1-1.39-3-2.56-8.59-5-6.45-2.78-9.23-4.5-11.77-7.24a16.48 16.48 0 01-3.43-6.25 25 25 0 01-.22-8c1.33-6.23 6-10.58 12.82-11.87a31.66 31.66 0 019.49.26zm-29.34 5.24v5.12H56.66v46.23H45.15V69.26H28.88v-5a49.19 49.19 0 01.12-5.17C29.08 59 39 59 51 59h21.83z"/></svg>

After

Width:  |  Height:  |  Size: 944 B

BIN
assets/icons/veact.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

10
assets/icons/veact.svg Normal file
View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-11.5 -10.23174 23 20.46348">
<title>React Logo</title>
<circle cx="0" cy="0" r="2.05" fill="#35495d"/>
<g stroke="#42a97a" stroke-width="1" fill="none">
<ellipse rx="11" ry="4.2"/>
<ellipse rx="11" ry="4.2" transform="rotate(60)"/>
<ellipse rx="11" ry="4.2" transform="rotate(120)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 367 B

15
assets/icons/vite.svg Normal file
View File

@ -0,0 +1,15 @@
<svg viewBox="0 0 410 404" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M399.641 59.5246L215.643 388.545C211.844 395.338 202.084 395.378 198.228 388.618L10.5817 59.5563C6.38087 52.1896 12.6802 43.2665 21.0281 44.7586L205.223 77.6824C206.398 77.8924 207.601 77.8904 208.776 77.6763L389.119 44.8058C397.439 43.2894 403.768 52.1434 399.641 59.5246Z" fill="url(#paint0_linear)"/>
<path d="M292.965 1.5744L156.801 28.2552C154.563 28.6937 152.906 30.5903 152.771 32.8664L144.395 174.33C144.198 177.662 147.258 180.248 150.51 179.498L188.42 170.749C191.967 169.931 195.172 173.055 194.443 176.622L183.18 231.775C182.422 235.487 185.907 238.661 189.532 237.56L212.947 230.446C216.577 229.344 220.065 232.527 219.297 236.242L201.398 322.875C200.278 328.294 207.486 331.249 210.492 326.603L212.5 323.5L323.454 102.072C325.312 98.3645 322.108 94.137 318.036 94.9228L279.014 102.454C275.347 103.161 272.227 99.746 273.262 96.1583L298.731 7.86689C299.767 4.27314 296.636 0.855181 292.965 1.5744Z" fill="url(#paint1_linear)"/>
<defs>
<linearGradient id="paint0_linear" x1="6.00017" y1="32.9999" x2="235" y2="344" gradientUnits="userSpaceOnUse">
<stop stop-color="#41D1FF"/>
<stop offset="1" stop-color="#BD34FE"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="194.651" y1="8.81818" x2="236.076" y2="292.989" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFEA83"/>
<stop offset="0.0833333" stop-color="#FFDD35"/>
<stop offset="1" stop-color="#FFA800"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
assets/icons/vscode.svg Normal file
View File

@ -0,0 +1 @@
<svg height="2455" viewBox="-11.9 -2 1003.9 995.6" width="2500" xmlns="http://www.w3.org/2000/svg"><path d="m12.1 353.9s-24-17.3 4.8-40.4l67.1-60s19.2-20.2 39.5-2.6l619.2 468.8v224.8s-.3 35.3-45.6 31.4z" fill="#2489ca"/><path d="m171.7 498.8-159.6 145.1s-16.4 12.2 0 34l74.1 67.4s17.6 18.9 43.6-2.6l169.2-128.3z" fill="#1070b3"/><path d="m451.9 500 292.7-223.5-1.9-223.6s-12.5-48.8-54.2-23.4l-389.5 354.5z" fill="#0877b9"/><path d="m697.1 976.2c17 17.4 37.6 11.7 37.6 11.7l228.1-112.4c29.2-19.9 25.1-44.6 25.1-44.6v-671.2c0-29.5-30.2-39.7-30.2-39.7l-197.7-95.3c-43.2-26.7-71.5 4.8-71.5 4.8s36.4-26.2 54.2 23.4v887.5c0 6.1-1.3 12.1-3.9 17.5-5.2 10.5-16.5 20.3-43.6 16.2z" fill="#3c99d4"/></svg>

After

Width:  |  Height:  |  Size: 693 B

1
assets/icons/vue.svg Normal file
View File

@ -0,0 +1 @@
<svg width="2500" height="2158" viewBox="0 0 256 221" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M204.8 0H256L128 220.8 0 0h97.92L128 51.2 157.44 0h47.36z" fill="#41B883"/><path d="M0 0l128 220.8L256 0h-51.2L128 132.48 50.56 0H0z" fill="#41B883"/><path d="M50.56 0L128 133.12 204.8 0h-47.36L128 51.2 97.92 0H50.56z" fill="#35495E"/></svg>

After

Width:  |  Height:  |  Size: 375 B

View File

@ -0,0 +1 @@
<svg width="2500" height="2490" viewBox="0 0 256 255" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M18.124 127.5c0 43.296 25.16 80.711 61.646 98.442L27.594 82.986a108.965 108.965 0 0 0-9.47 44.514zm183.221-5.52c0-13.517-4.856-22.879-9.02-30.165-5.545-9.01-10.742-16.64-10.742-25.65 0-10.055 7.626-19.415 18.368-19.415.485 0 .944.06 1.417.088-19.46-17.829-45.387-28.714-73.863-28.714-38.213 0-71.832 19.606-91.39 49.302 2.566.077 4.984.13 7.039.13 11.44 0 29.15-1.387 29.15-1.387 5.897-.348 6.592 8.312.702 9.01 0 0-5.926.697-12.52 1.042L100.32 194.7l23.937-71.79-17.042-46.692c-5.89-.345-11.47-1.042-11.47-1.042-5.894-.346-5.203-9.358.691-9.01 0 0 18.064 1.388 28.811 1.388 11.44 0 29.151-1.388 29.151-1.388 5.9-.348 6.594 8.312.702 9.01 0 0-5.938.697-12.52 1.042l39.529 117.581 10.91-36.458c4.728-15.129 8.327-25.995 8.327-35.36zm-71.921 15.088l-32.818 95.363a109.376 109.376 0 0 0 30.899 4.456c12.737 0 24.952-2.202 36.323-6.2a9.605 9.605 0 0 1-.779-1.507l-33.625-92.112zm94.058-62.045c.47 3.484.737 7.224.737 11.247 0 11.1-2.073 23.577-8.317 39.178l-33.411 96.6c32.518-18.963 54.39-54.193 54.39-94.545.002-19.017-4.856-36.9-13.4-52.48zM127.505 0C57.2 0 0 57.196 0 127.5c0 70.313 57.2 127.507 127.505 127.507 70.302 0 127.51-57.194 127.51-127.507C255.014 57.196 197.808 0 127.506 0zm0 249.163c-67.08 0-121.659-54.578-121.659-121.663 0-67.08 54.576-121.654 121.659-121.654 67.078 0 121.652 54.574 121.652 121.654 0 67.085-54.574 121.663-121.652 121.663z" fill="#464342"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1 @@
<svg width="2500" height="2490" viewBox="0 0 256 255" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M18.124 127.5c0 43.296 25.16 80.711 61.646 98.442L27.594 82.986a108.965 108.965 0 0 0-9.47 44.514zm183.221-5.52c0-13.517-4.856-22.879-9.02-30.165-5.545-9.01-10.742-16.64-10.742-25.65 0-10.055 7.626-19.415 18.368-19.415.485 0 .944.06 1.417.088-19.46-17.829-45.387-28.714-73.863-28.714-38.213 0-71.832 19.606-91.39 49.302 2.566.077 4.984.13 7.039.13 11.44 0 29.15-1.387 29.15-1.387 5.897-.348 6.592 8.312.702 9.01 0 0-5.926.697-12.52 1.042L100.32 194.7l23.937-71.79-17.042-46.692c-5.89-.345-11.47-1.042-11.47-1.042-5.894-.346-5.203-9.358.691-9.01 0 0 18.064 1.388 28.811 1.388 11.44 0 29.151-1.388 29.151-1.388 5.9-.348 6.594 8.312.702 9.01 0 0-5.938.697-12.52 1.042l39.529 117.581 10.91-36.458c4.728-15.129 8.327-25.995 8.327-35.36zm-71.921 15.088l-32.818 95.363a109.376 109.376 0 0 0 30.899 4.456c12.737 0 24.952-2.202 36.323-6.2a9.605 9.605 0 0 1-.779-1.507l-33.625-92.112zm94.058-62.045c.47 3.484.737 7.224.737 11.247 0 11.1-2.073 23.577-8.317 39.178l-33.411 96.6c32.518-18.963 54.39-54.193 54.39-94.545.002-19.017-4.856-36.9-13.4-52.48zM127.505 0C57.2 0 0 57.196 0 127.5c0 70.313 57.2 127.507 127.505 127.507 70.302 0 127.51-57.194 127.51-127.507C255.014 57.196 197.808 0 127.506 0zm0 249.163c-67.08 0-121.659-54.578-121.659-121.663 0-67.08 54.576-121.654 121.659-121.654 67.078 0 121.652 54.574 121.652 121.654 0 67.085-54.574 121.663-121.652 121.663z" fill="#ffffff"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

14
config.json Normal file
View File

@ -0,0 +1,14 @@
{
"plugins": {
"blog": {
"url": "https://www.nexxel.dev/",
"rss_url": "https://www.nexxel.dev/rss.xml",
"latest": 5
},
"twitter": {
"url": "https://twitter.com/andatoshiki/",
"rss_url": "https://rsshub.app/twitter/user/andatoshiki",
"latest": 5
}
}
}

1
main.js Normal file
View File

@ -0,0 +1 @@
require('./scripts/core')

View File

@ -1,25 +1,30 @@
{
"name": "surmon-china",
"version": "0.1.2",
"main": "scripts/index.js",
"repository": "git@github.com:surmon-china/surmon-china.git",
"author": "surmon-china",
"license": "UNLICENSED",
"config": {
"GITHUB_UID": "andatoshiki",
"NPM_UID": ""
},
"scripts": {
"dev": "nodemon ./dev.js",
"generate": "node scripts/index.js",
"format": "prettier ./scripts --write"
},
"devDependencies": {
"nodemon": "^2.0.15",
"prettier": "^2.3.2"
},
"dependencies": {
"axios": "^0.21.1",
"simple-icons": "^6.7.0"
}
}
"name": "surmon-china",
"version": "0.1.2",
"main": "scripts/index.js",
"repository": "git@github.com:surmon-china/surmon-china.git",
"author": "Anda Toshiki <hello@toshiki.dev>",
"license": "UNLICENSED",
"config": {
"GITHUB_UID": "andatoshiki",
"NPM_UID": "andatoshiki"
},
"scripts": {
"generate:metadata": "node scripts/index.js",
"lint": "prettier --write .",
"generate": "node main.js"
},
"devDependencies": {
"dotenv": "^16.0.3",
"lodash": "^4.17.21",
"nodemon": "^2.0.15",
"prettier": "^2.3.2",
"signale": "^1.4.0",
"wakatime-client": "^2.7.0",
"xml2js": "^0.4.23"
},
"dependencies": {
"axios": "^1.3.4",
"simple-icons": "^6.7.0"
}
}

26
prettier.config.js Normal file
View File

@ -0,0 +1,26 @@
module.exports = {
tabWidth: 4,
printWidth: 120,
proseWrap: 'preserve',
semi: false,
trailingComma: 'es5',
singleQuote: true,
arrowParens: 'avoid',
overrides: [
{
files: '{*.js?(on),*.js,*.y?(a)ml,.*.js?(on),.*.y?(a)ml,*.md,.prettierrc,.stylelintrc,.babelrc,.html,.sh}',
options: {
tabWidth: 2,
},
},
{
files: '{**/.vscode/*.json,**/tsconfig.json,**/tsconfig.*.json}',
options: {
parser: 'json5',
quoteProps: 'preserve',
singleQuote: false,
trailingComma: 'all',
},
},
],
}

22
scripts/config.js Normal file
View File

@ -0,0 +1,22 @@
const _ = require('lodash')
const path = require('path')
require('dotenv').config({
path: path.resolve(process.cwd(), '.env.local'),
})
class Config {
constructor() {
this.config = require('../config.json')
}
getPluginConfig(name) {
if (!name) {
throw new Error('Plugin must have a name')
}
return _.get(this.config, `plugins.${name}`)
}
}
module.exports = { Config }

21
scripts/core.js Normal file
View File

@ -0,0 +1,21 @@
const signale = require('signale')
const { Runner } = require('./runner')
const { Generator } = require('./generator')
const { Config } = require('./config')
async function start() {
const config = new Config()
const generator = new Generator('../README.md')
const runner = new Runner(generator, config)
try {
// Load plugins
await runner.loadPlugin('./plugins')
// Run scripts
await runner.run()
} catch (err) {
signale.error(err)
}
}
start()

View File

@ -1,38 +1,38 @@
const axios = require('axios')
axios.interceptors.response.use(
(response) => response,
(error) => {
response => response,
error => {
console.error('Fetch failed:', error)
return Promise.reject(error)
}
)
// https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md
exports.fetchNPMPackages = async (npmUID) => {
exports.fetchNPMPackages = async npmUID => {
const response = await axios.get(`https://registry.npmjs.com/-/v1/search?text=maintainer:${npmUID}`)
return response.data.objects
}
// https://github.com/npm/registry/blob/master/docs/download-counts.md
exports.fetchNPMPackageDownloads = async (packageName) => {
exports.fetchNPMPackageDownloads = async packageName => {
const now = new Date()
const today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`
const response = await axios.get(`https://api.npmjs.org/downloads/point/2015-01-10:${today}/${packageName}`)
return response.data
}
exports.fetchGitHubUserinfo = async (githubUID) => {
exports.fetchGitHubUserinfo = async githubUID => {
const response = await axios.get(`https://api.github.com/users/${githubUID}`)
return response.data
}
exports.fetchGitHubRepositories = async (githubUID) => {
exports.fetchGitHubRepositories = async githubUID => {
const response = await axios.get(`https://api.github.com/users/${githubUID}/repos?per_page=1000`)
return response.data
}
exports.fetchGitHubOrganizations = async (githubUID) => {
exports.fetchGitHubOrganizations = async githubUID => {
const response = await axios.get(`https://api.github.com/users/${githubUID}/orgs`)
return response.data
}
}

25
scripts/generator.js Normal file
View File

@ -0,0 +1,25 @@
const fs = require('fs')
const path = require('path')
class Generator {
constructor(filePath) {
const dist = path.resolve(__dirname, filePath)
this.dist = dist
this.content = fs.readFileSync(dist, { encoding: 'utf-8' })
}
render(name, newContent) {
if (!name) return
const reg = new RegExp(`<!-- ${name}_start -->([\\s\\S]*?)<!-- ${name}_end -->`, 'mg')
this.content = this.content.replace(reg, newContent)
}
update() {
fs.writeFileSync(this.dist, this.content, { encoding: 'utf-8' })
}
}
module.exports = { Generator }

View File

@ -14,7 +14,7 @@ const npmScript = async () => {
// packages downloads map
const packageDownloadsMap = new Map()
await Promise.all(
packages.map(async (package) => {
packages.map(async package => {
const packageName = package.package.name
const downloadsResult = await fetchNPMPackageDownloads(packageName)
const downloads = downloadsResult?.downloads || 0
@ -57,7 +57,7 @@ const githubScript = async () => {
languages: [],
topics: [],
}
repositories.forEach((repository) => {
repositories.forEach(repository => {
statistics.stars += repository.stargazers_count
statistics.forks += repository.forks_count
statistics.open_issues += repository.open_issues
@ -101,4 +101,4 @@ const githubScript = async () => {
console.error('Generate error!', error)
process.exit(1)
}
})()
})()

76
scripts/plugins/blog.js Normal file
View File

@ -0,0 +1,76 @@
// Copyright (c) 2020 blackcater
// [Software Name] is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
// http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.
const _ = require('lodash')
const axios = require('axios')
const { parseString: parseXml } = require('xml2js')
const { getDate } = require('../utils/util')
class BlogPlugin {
constructor() {
this.name = 'blog'
}
async apply(config, { log, render }) {
if (!config) return
const { url, rss_url, latest } = _.defaults(_.clone(config), { latest: 5 })
log.log('[BlogPlugin] checking configuration...')
if (!url) {
throw new Error('Please configure blog.url')
}
if (!rss_url) {
throw new Error('Please configure blog.rss_url')
}
log.log(`[BlogPlugin] loading xml content from ${rss_url}...`)
const { data } = await axios.get(rss_url)
if (!data) {
throw new Error(`Cannot load '${rss_url}'`)
}
log.log(`[BlogPlugin] parsing xml content...`)
const result = await new Promise((resolve, reject) => {
parseXml(data, (err, result) => {
if (err) {
return reject(err)
}
resolve(result)
})
})
log.log(`[BlogPlugin] updating README.md content...`)
const items = _.get(result, 'rss.channel[0].item')
const content_prefix = `<!-- blog_plugin_start -->
`
const content_suffix = `
<!-- blog_plugin_end -->`
let content = ``
items.slice(0, latest).forEach(item => {
const title = item.title[0]
const link = item.link[0]
const date = item.pubDate[0]
content += `- <a href='${link}' target='_blank'>${title}</a> - ${getDate(date)}
`
})
render(`${this.name}_plugin`, `${content_prefix}${content}${content_suffix}`)
}
}
module.exports = BlogPlugin

View File

@ -0,0 +1,76 @@
// Copyright (c) 2020 blackcater
// [Software Name] is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
// http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.
const _ = require('lodash')
const axios = require('axios')
const { parseString: parseXml } = require('xml2js')
const { getDate } = require('../utils/util')
class twitterPlugin {
constructor() {
this.name = 'twitter'
}
async apply(config, { log, render }) {
if (!config) return
const { url, rss_url, latest } = _.defaults(_.clone(config), { latest: 5 })
log.log('[twitterPlugin] checking configuration...')
if (!url) {
throw new Error('Please configure twitter.url')
}
if (!rss_url) {
throw new Error('Please configure twitter.rss_url')
}
log.log(`[twitterPlugin] loading xml content from ${rss_url}...`)
const { data } = await axios.get(rss_url)
if (!data) {
throw new Error(`Cannot load '${rss_url}'`)
}
log.log(`[twitterPlugin] parsing xml content...`)
const result = await new Promise((resolve, reject) => {
parseXml(data, (err, result) => {
if (err) {
return reject(err)
}
resolve(result)
})
})
log.log(`[twitterPlugin] updating README.md content...`)
const items = _.get(result, 'rss.channel[0].item')
const content_prefix = `<!-- twitter_plugin_start -->
`
const content_suffix = `
<!-- twitter_plugin_end -->`
let content = ``
items.slice(0, latest).forEach(item => {
const title = item.title[0]
const link = item.link[0]
const date = item.pubDate[0]
content += `- <a href='${link}' target='_blank'>${title}</a> - ${getDate(date)}
`
})
render(`${this.name}_plugin`, `${content_prefix}${content}${content_suffix}`)
}
}
module.exports = twitterPlugin

69
scripts/runner.js Normal file
View File

@ -0,0 +1,69 @@
const fs = require('fs')
const path = require('path')
const signale = require('signale')
const _ = require('lodash')
const { getDate } = require('./utils/util')
class Runner {
constructor(generator, config) {
this.plugins = []
this.generator = generator
this.config = config
}
loadPlugin(rawPath) {
const dist = path.resolve(__dirname, rawPath)
let pluginPaths = []
if (fs.statSync(dist).isDirectory()) {
const subPaths = fs.readdirSync(dist)
subPaths.forEach(subPath => {
const pluginPath = path.resolve(dist, subPath)
if (fs.statSync(pluginPath).isFile() && !/^\./.test(pluginPath)) {
pluginPaths.push(pluginPath)
}
})
} else {
pluginPaths = [dist]
}
this.plugins = _.uniqWith(
[
...this.plugins,
...pluginPaths.map(pluginPath => {
const Constr = require(pluginPath)
return new Constr()
}),
],
(x, y) => x.name === y.name
)
}
async run() {
const api = {
log: signale,
render: this.generator.render.bind(this.generator),
}
// run plugins
for await (const plugin of this.plugins) {
signale.time(plugin.name)
await plugin.apply(this.config.getPluginConfig(plugin.name), api)
signale.timeEnd()
}
// write content to README.md
this.generator.update()
signale.complete({
prefix: '[README.md]',
message: ['Updated'],
suffix: `(${getDate(new Date())})`,
})
}
}
module.exports = { Runner }

View File

@ -4,13 +4,13 @@ const path = require('path')
exports.CONFIG = require('../package.json').config
exports.OUTPUT_DIR = path.join(__dirname, '..', 'output')
exports.thousands = (num) => {
exports.thousands = num => {
var str = num.toString()
var reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
return str.replace(reg, '$1,')
}
exports.jsonStringify = (data) => {
exports.jsonStringify = data => {
return JSON.stringify(data, null, 2)
}
exports.writeFileToOutput = (fileName, fileData) => {
@ -18,4 +18,4 @@ exports.writeFileToOutput = (fileName, fileData) => {
}
exports.writeJSONToOutput = (fileName, jsonData) => {
return exports.writeFileToOutput(fileName, exports.jsonStringify(jsonData))
}
}

13
scripts/utils/util.js Normal file
View File

@ -0,0 +1,13 @@
module.exports.getDate = function (date) {
if (typeof date === 'string') {
date = new Date(date)
}
function paddingZero(number) {
if (number < 10) return `0${number}`
return `${number}`
}
return `${date.getFullYear()}-${paddingZero(date.getMonth() + 1)}-${paddingZero(date.getDate())}`
}

241
yarn.lock
View File

@ -31,6 +31,13 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
@ -46,12 +53,19 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
axios@^0.21.1:
version "0.21.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
axios@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024"
integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==
dependencies:
follow-redirects "^1.10.0"
follow-redirects "^1.15.0"
form-data "^4.0.0"
proxy-from-env "^1.1.0"
balanced-match@^1.0.0:
version "1.0.2"
@ -110,6 +124,15 @@ camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
chalk@^2.3.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
@ -150,6 +173,13 @@ clone-response@^1.0.2:
dependencies:
mimic-response "^1.0.0"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@ -157,11 +187,23 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -208,6 +250,11 @@ defer-to-connect@^1.0.1:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
dot-prop@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
@ -215,6 +262,11 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
dotenv@^16.0.3:
version "16.0.3"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@ -232,11 +284,30 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
escape-goat@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==
dependencies:
escape-string-regexp "^1.0.5"
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@ -244,10 +315,26 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
follow-redirects@^1.10.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
find-up@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==
dependencies:
locate-path "^2.0.0"
follow-redirects@^1.15.0:
version "1.15.2"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
fsevents@~2.3.2:
version "2.3.2"
@ -349,6 +436,11 @@ ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@ -423,6 +515,11 @@ json-buffer@3.0.0:
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
json-parse-better-errors@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@ -437,6 +534,29 @@ latest-version@^5.1.0:
dependencies:
package-json "^6.3.0"
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==
dependencies:
graceful-fs "^4.1.2"
parse-json "^4.0.0"
pify "^3.0.0"
strip-bom "^3.0.0"
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==
dependencies:
p-locate "^2.0.0"
path-exists "^3.0.0"
lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
@ -461,6 +581,18 @@ make-dir@^3.0.0:
dependencies:
semver "^6.0.0"
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mimic-response@^1.0.0, mimic-response@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
@ -528,6 +660,25 @@ p-cancelable@^1.0.0:
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
dependencies:
p-try "^1.0.0"
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==
dependencies:
p-limit "^1.1.0"
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==
package-json@^6.3.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
@ -538,11 +689,37 @@ package-json@^6.3.0:
registry-url "^5.0.0"
semver "^6.2.0"
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
dependencies:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
pkg-conf@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==
dependencies:
find-up "^2.0.0"
load-json-file "^4.0.0"
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
@ -553,6 +730,11 @@ prettier@^2.3.2:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
pstree.remy@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
@ -611,6 +793,11 @@ responselike@^1.0.2:
dependencies:
lowercase-keys "^1.0.0"
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver-diff@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
@ -640,6 +827,15 @@ signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
signale@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1"
integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==
dependencies:
chalk "^2.3.2"
figures "^2.0.0"
pkg-conf "^2.1.0"
simple-icons@^6.7.0:
version "6.7.0"
resolved "https://registry.yarnpkg.com/simple-icons/-/simple-icons-6.7.0.tgz#45263b5cd624f26f8f11c8ce1cf814be07de41dc"
@ -661,12 +857,17 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
supports-color@^5.5.0:
supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
@ -750,6 +951,11 @@ url-parse-lax@^3.0.0:
dependencies:
prepend-http "^2.0.0"
wakatime-client@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/wakatime-client/-/wakatime-client-2.7.0.tgz#a95f0999376c8eddb89ede99e685c2e62b007868"
integrity sha512-8evdA2P5mKrTHWqVHiQ7X43wQCyZGgfVxlS/r+aypSBXVtM32tfjMjbNNowR6wzfmB5yFjDjxcxPFOYROi476w==
widest-line@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
@ -786,7 +992,20 @@ xdg-basedir@^4.0.0:
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
xml2js@^0.4.23:
version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==