forked from mirrored/github-readme-stats
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
08da088359 |
+8
-12
@@ -2,11 +2,11 @@
|
||||
|
||||
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
|
||||
|
||||
- Reporting [an issue](https://github.com/anuraghazra/github-readme-stats/issues/new?assignees=&labels=bug&template=bug_report.yml).
|
||||
- [Discussing](https://github.com/anuraghazra/github-readme-stats/discussions) the current state of the code.
|
||||
- Submitting [a fix](https://github.com/anuraghazra/github-readme-stats/compare).
|
||||
- Proposing [new features](https://github.com/anuraghazra/github-readme-stats/issues/new?assignees=&labels=enhancement&template=feature_request.yml).
|
||||
- Becoming a maintainer.
|
||||
- Reporting an issue
|
||||
- Discussing the current state of the code
|
||||
- Submitting a fix
|
||||
- Proposing new features
|
||||
- Becoming a maintainer
|
||||
|
||||
## All Changes Happen Through Pull Requests
|
||||
|
||||
@@ -33,15 +33,11 @@ _(make sure you already have a [Vercel](https://vercel.com/) account)_
|
||||
1. Install [Vercel CLI](https://vercel.com/download).
|
||||
2. Fork the repository and clone the code to your local machine.
|
||||
3. Run `npm install` in the repository root.
|
||||
4. Run the command `vercel` in the root and follow the steps there.
|
||||
4. Run the command "vercel" in the root and follow the steps there.
|
||||
5. Open `vercel.json` and set the maxDuration to 10.
|
||||
6. Create a `.env` file in the root of the directory.
|
||||
7. In the .env file add a new variable named `PAT_1` with your [GitHub Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
|
||||
8. Run the command `vercel dev` to start a development server at <https://localhost:3000>.
|
||||
9. The cards will then be available from this local endpoint (i.e. `https://localhost:3000/api?username=anuraghazra`).
|
||||
|
||||
> **Note**
|
||||
> You can also debug any tests using the [VSCode Jest extension](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest). For more information see https://github.com/jest-community/vscode-jest/issues/912.
|
||||
7. In the .env file add a new variable named "PAT_1" with your [GitHub Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
|
||||
8. Run the command "vercel dev" to start a development server at <https://localhost:3000>.
|
||||
|
||||
## Themes Contribution
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ export default async (req, res) => {
|
||||
border_radius,
|
||||
number_format,
|
||||
border_color,
|
||||
rank_icon,
|
||||
} = req.query;
|
||||
res.setHeader("Content-Type", "image/svg+xml");
|
||||
|
||||
@@ -93,7 +92,6 @@ export default async (req, res) => {
|
||||
number_format,
|
||||
locale: locale ? locale.toLowerCase() : null,
|
||||
disable_animations: parseBoolean(disable_animations),
|
||||
rank_icon,
|
||||
}),
|
||||
);
|
||||
} catch (err) {
|
||||
|
||||
@@ -25,8 +25,6 @@ export default async (req, res) => {
|
||||
layout,
|
||||
langs_count,
|
||||
exclude_repo,
|
||||
size_weight,
|
||||
count_weight,
|
||||
custom_title,
|
||||
locale,
|
||||
border_radius,
|
||||
@@ -48,8 +46,6 @@ export default async (req, res) => {
|
||||
const topLangs = await fetchTopLanguages(
|
||||
username,
|
||||
parseArray(exclude_repo),
|
||||
size_weight,
|
||||
count_weight,
|
||||
);
|
||||
|
||||
const cacheSeconds = clampValue(
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">喜欢这个项目?请考虑<a href="https://www.paypal.me/anuraghazra">捐赠</a>来帮助它完善!
|
||||
@@ -140,7 +138,7 @@ dark, radical, merko, gruvbox, tokyonight, onedark, cobalt, synthwave, highcontr
|
||||
- `bg_color` - 卡片背景颜色 _(十六进制色码)_ **或者** 以 _angle,start,end_ 的形式渐变
|
||||
- `hide_border` - 隐藏卡的边框 _(布尔值)_
|
||||
- `theme` - 主题名称,从[所有可用主题](../themes/README.md)中选择
|
||||
- `cache_seconds` - 手动设置缓存头 _(最小值: 14400,最大值: 86400)_
|
||||
- `cache_seconds` - 手动设置缓存头 _(最小值: 1800,最大值: 86400)_
|
||||
- `locale` - 在卡片中设置语言 _(例如 cn, de, es, 等等)_
|
||||
|
||||
##### bg_color 渐变
|
||||
|
||||
+1
-3
@@ -54,8 +54,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">Du magst das Projekt? Wie wäre es mit einer kleinen <a href="https://www.paypal.me/anuraghazra">Spende</a> um es weiterhin am Leben zu erhalten?
|
||||
@@ -130,7 +128,7 @@ Du kannst das Erscheinungsbild deiner `Stats Card` oder `Repo Card`, mithilfe vo
|
||||
- `bg_color` - Hintergrundfarbe _(hex color)_ **oder** ein Farbverlauf in der Form von _winkel,start,ende_
|
||||
- `hide_border` - Blendet den Rand der Karte aus _(Boolean)_
|
||||
- `theme` - Name des Erscheinungsbildes/Themes [alle verfügbaren Themes](../themes/README.md)
|
||||
- `cache_seconds` - manuelles festlegen der Cachezeiten _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - manuelles festlegen der Cachezeiten _(min: 1800, max: 86400)_
|
||||
- `locale` - Stellen Sie die Sprache auf der Karte ein _(z.B. cn, de, es, etc.)_
|
||||
|
||||
##### Farbverlauf in bg_color
|
||||
|
||||
+1
-1
@@ -142,7 +142,7 @@ Puedes personalizar el aspecto de tu `Tarjeta de Estadísticas` o `Tarjeta de Re
|
||||
- `bg_color` - Color de fondo _(hex color)_
|
||||
- `hide_border` - Oculta el borde de la tarjeta _(booleano)_
|
||||
- `theme` - Nombre del tema, elige uno de [todos los temas disponible ](../themes/README.md)
|
||||
- `cache_seconds` - Cache _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - Cache _(min: 1800, max: 86400)_
|
||||
- `locale` - configurar el idioma en la tarjeta _(p.ej. cn, de, es, etc.)_
|
||||
|
||||
##### Gradiente en `bg_color`
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">Vous aimez ce projet? Pensez <a href="https://www.paypal.me/anuraghazra">à faire un don</a> pour l'améliorer!
|
||||
@@ -140,7 +138,7 @@ Vous pouvez personnaliser l'apparence de votre `Carte des stats` ou `Carte de d
|
||||
- `bg_color` - Couleur du fond de la carte _(hex color)_ **ou** un gradiant de la forme _angle,start,end_
|
||||
- `hide_border` - Cache la bordure de la carte _(booléen)_
|
||||
- `theme` - Nom du thème, parmis [tous les thèmes disponibles](../themes/README.md)
|
||||
- `cache_seconds` - Paramétrer le cache manuellement _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - Paramétrer le cache manuellement _(min: 1800, max: 86400)_
|
||||
- `locale` - définir la langue de la carte _(par exemple. cn, de, es, etc.)_
|
||||
|
||||
##### Gradient in bg_color
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">Se ti piace questo progetto, considera la possibilità di <a href="https://www.paypal.me/anuraghazra">donare</a> per aiutare a renderlo migliore!
|
||||
@@ -140,7 +138,7 @@ Puoi personalizzare l'aspetto delle tue `Stats Card` o delle `Repo Card` in qual
|
||||
- `bg_color` - Colore dello sfondo _(in esadecimale)_ **oppure** un gradiente nella forma _angolo,inizio,fine_
|
||||
- `hide_border` - Nasconde il bordo della carta _(booleano)_
|
||||
- `theme` - Nome del tema, dai un'occhiata a [tutti i temi disponibili](../themes/README.md)
|
||||
- `cache_seconds` - Specifica manualmente il valore di cache, in secondi _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - Specifica manualmente il valore di cache, in secondi _(min: 1800, max: 86400)_
|
||||
- `locale` - Impostare la lingua nella scheda _(per esempio. cn, de, es, eccetera.)_
|
||||
|
||||
##### Gradiente nello sfondo
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">このプロジェクトを気に入っていただけましたか?<br>もしよろしければ、プロジェクトのさらなる改善のために<a href="https://www.paypal.me/anuraghazra">寄付</a>を検討して頂けると嬉しいです!</p>
|
||||
@@ -141,7 +139,7 @@ dark, radical, merko, gruvbox, tokyonight, onedark, cobalt, synthwave, highcontr
|
||||
- `bg_color` - 背景の色 _(16 進数カラーコード)_ **または** _angle,start,end_ の形式でグラデーションを指定することも可
|
||||
- `hide_border` - カードの境界線を非表示にします _(ブール値)_
|
||||
- `theme` - [使用可能なテーマ一覧](../themes/README.md) から選んだテーマ名
|
||||
- `cache_seconds` - キャッシュ時間の秒数 _(最小値: 14400, 最大値: 86400)_
|
||||
- `cache_seconds` - キャッシュ時間の秒数 _(最小値: 1800, 最大値: 86400)_
|
||||
- `locale` - カードに言語を設定する _(例えば cn, de, es, 等)_
|
||||
|
||||
##### bg_color の グラデーション指定
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">기능들이 마음에 드시나요? 괜찮으시다면, 서비스 개선을 위해 <a href="https://www.paypal.me/anuraghazra">기부</a>를 고려해주세요!
|
||||
@@ -151,7 +149,7 @@ dark, radical, merko, gruvbox, tokyonight, onedark, cobalt, synthwave, highcontr
|
||||
- `bg_color` - 카드의 배경 색상 _(hex color)_ **혹은** 다음 양식으로 그라데이션 주기 _angle,start,end_
|
||||
- `hide_border` - 카드의 테두리 표시 여부 _(boolean)_
|
||||
- `theme` - 테마의 이름, [사용 가능한 모든 테마](../themes/README.md) 에서 선택
|
||||
- `cache_seconds` - 수동으로 캐시 헤더 설정 _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - 수동으로 캐시 헤더 설정 _(min: 1800, max: 86400)_
|
||||
- `locale` - 카드에 표시할 언어 _(e.g. kr, cn, de, es, etc.)_
|
||||
|
||||
##### 배경에 그라데이션 주기
|
||||
|
||||
+1
-3
@@ -53,8 +53,6 @@
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
.
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">Bevalt het project? <a href="https://www.paypal.me/anuraghazra">Doneer</a> om het te verbeteren!
|
||||
@@ -144,7 +142,7 @@ Je kan het uiterlijk van je `Statistieken kaart` of `Repo kaart` aanpassen hoe j
|
||||
- `bg_color` - Achtergrond kleur van de kaart _(hex kleur)_ **of** een verloop van kleuren in het formaat van _graden,start,einde_
|
||||
- `hide_border` - Verbergt de rand van de kaart _(boolean)_
|
||||
- `theme` - Naam van het thema, kies uit [alle beschikbare thema\'s](../themes/README.md)
|
||||
- `cache_seconds` - Stel de cache header handmatig in _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - Stel de cache header handmatig in _(min: 1800, max: 86400)_
|
||||
- `locale` - Stel taal van de kaart in _(e.g. cn, de, es, etc.)_
|
||||
|
||||
##### Kleurenverloop in bg_color (achtergrond kleur):
|
||||
|
||||
+1
-5
@@ -49,12 +49,8 @@
|
||||
<a href="/docs/readme_it.md">Italiano</a>
|
||||
·
|
||||
<a href="/docs/readme_kr.md">한국어</a>
|
||||
.
|
||||
<a href="/docs/readme_nl.md">Nederlands</a>
|
||||
·
|
||||
<a href="/docs/readme_np.md">नेपाली</a>
|
||||
.
|
||||
<a href="/docs/readme_tr.md">Türkçe</a>
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">परियोजना मनपर्यो? तपाईं मद्दत गर्न सक्नुहुन्छ <a href="https://www.paypal.me/anuraghazra">यो परियोजना</a> बढ्न
|
||||
@@ -142,7 +138,7 @@ dark, radical, merko, gruvbox, tokyonight, onedark, cobalt, synthwave, highcontr
|
||||
- `bg_color` - Card's background color _(hex color)_ **or** a gradient in the form of _angle,start,end_
|
||||
- `hide_border` - Hides the card's border _(boolean)_
|
||||
- `theme` - name of the theme, choose from [all available themes](./themes/README.md)
|
||||
- `cache_seconds` - set the cache header manually _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - set the cache header manually _(min: 1800, max: 86400)_
|
||||
- `locale` - set the language in the card _(e.g. cn, de, es, etc.)_
|
||||
|
||||
##### Gradient in bg_color
|
||||
|
||||
@@ -141,7 +141,7 @@ Personalize a aparência do seu `Stats Card` ou `Repo Card` da maneira que desej
|
||||
- `bg_color` - Cor de fundo do cartão _(hex color)_
|
||||
- `hide_border` - Esconde a borda do cartão _(boleano)_
|
||||
- `theme` - Nome do tema, escolha em [todos os temas disponíveis](../themes/README.md)
|
||||
- `cache_seconds` - Defina o cabeçalho do cache manualmente _(min: 14400, max: 86400)_
|
||||
- `cache_seconds` - Defina o cabeçalho do cache manualmente _(min: 1800, max: 86400)_
|
||||
- `locale` - defina o idioma no cartão _(por exemplo. cn, de, es, etc.)_
|
||||
|
||||
> Nota sobre o cache: Cartões de repositório tem um cache padrão de 30 minutos (1800 segundos), se o número a contagem de forks e contagem de estrelas é menor que 1 mil o padrão é 2 horas (7200 segundos). Note também que o cache é limitado a um mínimo de 30 minutos e um máximo de 24 horas.
|
||||
|
||||
+2
-2
@@ -143,7 +143,7 @@ dark, radical, merko, gruvbox, tokyonight, onedark, cobalt, synthwave, highcontr
|
||||
- `bg_color` - Kartın arkaplan rengi _(hex color / hex rengi)_ **ya da** gradient şeklinde _açı,başlangıç,bitiş_
|
||||
- `hide_border` - Kartın çerçevelerini gizler _(boolean)_
|
||||
- `theme` - Temanın rengi [tüm temalar](./themes/README.md)
|
||||
- `cache_seconds` - Manuel olarak cache'i belirleyebilirsiniz _(en az: 14400, en fazla: 86400)_
|
||||
- `cache_seconds` - Manuel olarak cache'i belirleyebilirsiniz _(en az: 1800, en fazla: 86400)_
|
||||
- `locale` - Karttaki dili seçebilirsiniz _(örneğin; tr, cn, de, es, vb.)_
|
||||
|
||||
##### bg_color'da Gradient
|
||||
@@ -409,7 +409,7 @@ Teşekkürler! :heart:
|
||||
|
||||
---
|
||||
|
||||
[](https://vercel.com?utm_source=github_readme_stats_team&utm_campaign=oss)
|
||||
[](https://vercel.com?utm_source=github_readme_stats_team&utm_campaign=oss)
|
||||
|
||||
|
||||
Katkılara açığız! <3
|
||||
|
||||
@@ -183,7 +183,7 @@ We have included a `transparent` theme that has a transparent background. This t
|
||||
|
||||
##### Add transparent alpha channel to a themes bg_color
|
||||
|
||||
You can use the `bg_color` parameter to make any of [the available themes](./themes/README.md) transparent. This is done by setting the `bg_color` to a color with a transparent alpha channel (i.e. `bg_color=00000000`):
|
||||
You can use the `bg_color` parameter to make any of [the available themes](./themes/README.md) transparent. This is done by setting the `bg_color` to a colour with a transparent alpha channel (i.e. `bg_color=00000000`):
|
||||
|
||||
```md
|
||||

|
||||
@@ -216,10 +216,10 @@ You can use [GitHub's theme context](https://github.blog/changelog/2021-11-24-sp
|
||||
##### Use GitHub's new media feature
|
||||
|
||||
You can use [GitHub's new media feature](https://github.blog/changelog/2022-05-19-specify-theme-context-for-images-in-markdown-beta/) in HTML to specify whether to display images for light or dark themes. This is done using the HTML `<picture>` element in combination with the `prefers-color-scheme` media feature.
|
||||
|
||||
|
||||
```html
|
||||
<picture>
|
||||
<source
|
||||
<source
|
||||
srcset="https://github-readme-stats.vercel.app/api?username=anuraghazra&show_icons=true&theme=dark"
|
||||
media="(prefers-color-scheme: dark)"
|
||||
/>
|
||||
@@ -235,7 +235,7 @@ You can use [GitHub's new media feature](https://github.blog/changelog/2022-05-1
|
||||
<summary>:eyes: Show example</summary>
|
||||
|
||||
<picture>
|
||||
<source
|
||||
<source
|
||||
srcset="https://github-readme-stats.vercel.app/api?username=anuraghazra&show_icons=true&theme=dark"
|
||||
media="(prefers-color-scheme: dark)"
|
||||
/>
|
||||
@@ -260,7 +260,7 @@ You can customize the appearance of your `Stats Card` or `Repo Card` however you
|
||||
- `border_color` - Card's border color _(hex color)_. Default: `e4e2e2` (Does not apply when `hide_border` is enabled).
|
||||
- `bg_color` - Card's background color _(hex color)_ **or** a gradient in the form of _angle,start,end_. Default: `fffefe`
|
||||
- `hide_border` - Hides the card's border _(boolean)_. Default: `false`
|
||||
- `theme` - name of the theme, choose from [all available themes](./themes/README.md). Default: `default` theme.
|
||||
- `theme` - name of the theme, choose from [all available themes](./themes/README.md). Default: `default` theme.
|
||||
- `cache_seconds` - set the cache header manually _(min: 14400, max: 86400)_. Default: `14400 seconds (4 hours)`.
|
||||
- `locale` - set the language in the card _(e.g. cn, de, es, etc.)_. Default: `en`.
|
||||
- `border_radius` - Corner rounding on the card. Default: `4.5`.
|
||||
@@ -280,7 +280,6 @@ You can provide multiple comma-separated values in the bg_color option to render
|
||||
- `hide_title` - _(boolean)_. Default: `false`.
|
||||
- `card_width` - Set the card's width manually _(number)_. Default: `500px (approx.)`.
|
||||
- `hide_rank` - _(boolean)_ hides the rank and automatically resizes the card width. Default: `false`.
|
||||
- `rank_icon` - Shows alternative rank icon (i.e. `github` or `default`). Default: `default`.
|
||||
- `show_icons` - _(boolean)_. Default: `false`.
|
||||
- `include_all_commits` - Count total commits instead of just the current year commits _(boolean)_. Default: `false`.
|
||||
- `count_private` - Count private commits _(boolean)_. Default: `false`.
|
||||
@@ -310,8 +309,6 @@ You can provide multiple comma-separated values in the bg_color option to render
|
||||
- `custom_title` - Sets a custom title for the card _(string)_. Default `Most Used Languages`.
|
||||
- `disable_animations` - Disables all animations in the card _(boolean)_. Default: `false`.
|
||||
- `hide_progress` - It uses the compact layout option, hides percentages, and removes the bars. Default: `false`.
|
||||
- `size_weight` - Configures language stats algorithm _(number)_ (see [Language stats algorithm](#Language-stats-algorithm)), defaults to 1.
|
||||
- `count_weight` - Configures language stats algorithm _(number)_ (see [Language stats algorithm](#Language-stats-algorithm)), defaults to 0.
|
||||
|
||||
> **Warning**
|
||||
> Language names should be URI-escaped, as specified in [Percent Encoding](https://en.wikipedia.org/wiki/Percent-encoding)
|
||||
@@ -361,7 +358,7 @@ Use [show_owner](#customization) variable to include the repo's owner username
|
||||
The top languages card shows a GitHub user's most frequently used top language.
|
||||
|
||||
> **Note**
|
||||
> Top Languages does not indicate the user's skill level or anything like that; it's a GitHub metric to determine which languages have the most code on GitHub. It is a new feature of github-readme-stats.
|
||||
> Top Languages does not indicate my skill level or anything like that; it's a GitHub metric to determine which languages have the most code on GitHub. It is a new feature of github-readme-stats.
|
||||
|
||||
### Usage
|
||||
|
||||
@@ -373,24 +370,6 @@ Endpoint: `api/top-langs?username=anuraghazra`
|
||||
[](https://github.com/anuraghazra/github-readme-stats)
|
||||
```
|
||||
|
||||
### Language stats algorithm
|
||||
|
||||
We use the following algorithm to calculate the languages percentages on the language card:
|
||||
|
||||
```js
|
||||
ranking_index = (byte_count ^ size_weight) * (repo_count ^ count_weight)
|
||||
```
|
||||
|
||||
By default, only the byte count is used for determining the languages percentages shown on the language card (i.e. `size_weight=1` and `count_weight=0`). You can, however, use the `&size_weight=` and `&count_weight=` options to weight the language usage calculation. The values must be positive real numbers. [More details about the algorithm can be found here](https://github.com/anuraghazra/github-readme-stats/issues/1600#issuecomment-1046056305).
|
||||
|
||||
- `&size_weight=1&count_weight=0` - _(default)_ Orders by byte count.
|
||||
- `&size_weight=0.5&count_weight=0.5` - _(recommended)_ Uses both byte and repo count for ranking
|
||||
- `&size_weight=0&count_weight=1` - Orders by repo count
|
||||
|
||||
```md
|
||||
[](https://github.com/anuraghazra/github-readme-stats)
|
||||
```
|
||||
|
||||
### Exclude individual repositories
|
||||
|
||||
You can use the `&exclude_repo=repo1,repo2` parameter to exclude individual repositories.
|
||||
@@ -439,7 +418,7 @@ You can use the `&hide_progress=true` option to hide the percentages and the pro
|
||||
|
||||
[](https://github.com/anuraghazra/github-readme-stats)
|
||||
|
||||
- Hidden progress bars
|
||||
- Hidden progress bars
|
||||
|
||||
[](https://github.com/anuraghazra/github-readme-stats)
|
||||
|
||||
@@ -480,10 +459,6 @@ Change the `?username=` value to your [Wakatime](https://wakatime.com) username.
|
||||
|
||||

|
||||
|
||||
- Shows Github logo instead rank level
|
||||
|
||||

|
||||
|
||||
- Customize Border Color
|
||||
|
||||

|
||||
@@ -584,14 +559,14 @@ Since the GitHub API only allows 5k requests per hour, my `https://github-readme
|
||||
<details>
|
||||
<summary><b>:hammer_and_wrench: Step-by-step guide for deploying on other platforms</b></summary>
|
||||
|
||||
1. Fork or clone this repo as per your needs
|
||||
2. Add `express` to the dependencies section of `package.json`
|
||||
<https://github.com/anuraghazra/github-readme-stats/blob/ba7c2f8b55eac8452e479c8bd38b044d204d0424/package.json#L54-L61>
|
||||
3. Run `npm i` if needed (initial setup)
|
||||
4. Run `node express.js` to start the server, or set the entry point to `express.js` in `package.json` if you're deploying on a managed service
|
||||
<https://github.com/anuraghazra/github-readme-stats/blob/ba7c2f8b55eac8452e479c8bd38b044d204d0424/package.json#L11>
|
||||
5. You're done 🎉
|
||||
</details>
|
||||
1. Fork or clone this repo as per your needs
|
||||
2. Add `express` to the dependencies section of `package.json`
|
||||
https://github.com/anuraghazra/github-readme-stats/blob/ba7c2f8b55eac8452e479c8bd38b044d204d0424/package.json#L54-L61
|
||||
3. Run `npm i` if needed (initial setup)
|
||||
4. Run `node express.js` to start the server, or set the entry point to `express.js` in `package.json` if you're deploying on a managed service
|
||||
https://github.com/anuraghazra/github-readme-stats/blob/ba7c2f8b55eac8452e479c8bd38b044d204d0424/package.json#L11
|
||||
5. You're done 🎉
|
||||
</details>
|
||||
|
||||
### Keep your fork up to date
|
||||
|
||||
|
||||
@@ -26,9 +26,9 @@ const FAIL_TEXT = `
|
||||
\rUnfortunately, your theme PR contains an error or does not adhere to our [theme guidelines](https://github.com/anuraghazra/github-readme-stats/blob/master/CONTRIBUTING.md#themes-contribution). Please fix the issues below, and we will review your\
|
||||
\r PR again. This pull request will **automatically close in 20 days** if no changes are made. After this time, you must re-open the PR for it to be reviewed.
|
||||
`;
|
||||
const THEME_CONTRIB_GUIDELINES = `
|
||||
const THEME_CONTRIB_GUIDELINESS = `
|
||||
\rHi, thanks for the theme contribution. Please read our theme [contribution guidelines](https://github.com/anuraghazra/github-readme-stats/blob/master/CONTRIBUTING.md#themes-contribution).
|
||||
\rWe are currently only accepting color combinations from any VSCode theme or themes with good color combinations to minimize bloating the themes collection.
|
||||
\rWe are currently only accepting color combinations from any VSCode theme or themes with good colour combinations to minimize bloating the themes collection.
|
||||
|
||||
\r> Also, note that if this theme is exclusively for your personal use, then instead of adding it to our theme collection, you can use card [customization options](https://github.com/anuraghazra/github-readme-stats#customization).
|
||||
`;
|
||||
@@ -363,7 +363,7 @@ export const run = async () => {
|
||||
debug(`Context: ${inspect(github.context)}`);
|
||||
let commentBody = `
|
||||
\r# ${COMMENT_TITLE}
|
||||
\r${THEME_CONTRIB_GUIDELINES}
|
||||
\r${THEME_CONTRIB_GUIDELINESS}
|
||||
`;
|
||||
const ccc = new ColorContrastChecker();
|
||||
OCTOKIT = github.getOctokit(getGithubToken());
|
||||
|
||||
@@ -29,14 +29,13 @@ const normalcdf = (mean, sigma, to) => {
|
||||
/**
|
||||
* Calculates the users rank.
|
||||
*
|
||||
* @param {object} params Parameters on which the user's rank depends.
|
||||
* @param {number} params.totalRepos Total number of repos.
|
||||
* @param {number} params.totalCommits Total number of commits.
|
||||
* @param {number} params.contributions The number of contributions.
|
||||
* @param {number} params.followers The number of followers.
|
||||
* @param {number} params.prs The number of pull requests.
|
||||
* @param {number} params.issues The number of issues.
|
||||
* @param {number} params.stargazers The number of stars.
|
||||
* @param {number} totalRepos Total number of repos.
|
||||
* @param {number} totalCommits Total number of commits.
|
||||
* @param {number} contributions The number of contributions.
|
||||
* @param {number} followers The number of followers.
|
||||
* @param {number} prs The number of pull requests.
|
||||
* @param {number} issues The number of issues.
|
||||
* @param {number} stargazers The number of stars.
|
||||
* @returns {{level: string, score: number}}} The users rank.
|
||||
*/
|
||||
const calculateRank = ({
|
||||
|
||||
+11
-4
@@ -1,7 +1,7 @@
|
||||
// @ts-check
|
||||
import { Card } from "../common/Card.js";
|
||||
import { I18n } from "../common/I18n.js";
|
||||
import { icons, rankIcon } from "../common/icons.js";
|
||||
import { icons } from "../common/icons.js";
|
||||
import {
|
||||
clampValue,
|
||||
flexLayout,
|
||||
@@ -108,7 +108,6 @@ const renderStatsCard = (stats = {}, options = { hide: [] }) => {
|
||||
number_format = "short",
|
||||
locale,
|
||||
disable_animations = false,
|
||||
rank_icon = "default",
|
||||
} = options;
|
||||
|
||||
const lheight = parseInt(String(line_height), 10);
|
||||
@@ -183,7 +182,7 @@ const renderStatsCard = (stats = {}, options = { hide: [] }) => {
|
||||
"nl",
|
||||
"zh-tw",
|
||||
];
|
||||
const isLongLocale = longLocales.includes(locale);
|
||||
const isLongLocale = longLocales.includes(locale) === true;
|
||||
|
||||
// filter out hidden stats defined by user & create the text nodes
|
||||
const statItems = Object.keys(STATS)
|
||||
@@ -295,7 +294,15 @@ const renderStatsCard = (stats = {}, options = { hide: [] }) => {
|
||||
<circle class="rank-circle-rim" cx="-10" cy="8" r="40" />
|
||||
<circle class="rank-circle" cx="-10" cy="8" r="40" />
|
||||
<g class="rank-text">
|
||||
${rankIcon(rank_icon, rank?.level)}
|
||||
<text
|
||||
x="-5"
|
||||
y="3"
|
||||
alignment-baseline="central"
|
||||
dominant-baseline="central"
|
||||
text-anchor="middle"
|
||||
>
|
||||
${rank.level}
|
||||
</text>
|
||||
</g>
|
||||
</g>`;
|
||||
|
||||
|
||||
Vendored
-4
@@ -1,5 +1,4 @@
|
||||
type ThemeNames = keyof typeof import("../../themes/index.js");
|
||||
type RankIcon = "default" | "github";
|
||||
|
||||
export type CommonOptions = {
|
||||
title_color: string;
|
||||
@@ -24,9 +23,6 @@ export type StatCardOptions = CommonOptions & {
|
||||
custom_title: string;
|
||||
disable_animations: boolean;
|
||||
number_format: string;
|
||||
ring_color: string;
|
||||
text_bold: boolean;
|
||||
rank_icon: RankIcon;
|
||||
};
|
||||
|
||||
export type RepoCardOptions = CommonOptions & {
|
||||
|
||||
+1
-24
@@ -8,28 +8,5 @@ const icons = {
|
||||
fork: `<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>`,
|
||||
};
|
||||
|
||||
/**
|
||||
* Get rank icon
|
||||
*
|
||||
* @returns {string} - The SVG code of the rank icon
|
||||
*/
|
||||
const rankIcon = (rankIcon, rankLevel) => {
|
||||
switch (rankIcon) {
|
||||
case "github":
|
||||
return `
|
||||
<svg x="-38" y="-30" height="66" width="66" aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" data-testid="github-rank-icon">
|
||||
<path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path>
|
||||
</svg>
|
||||
`;
|
||||
case "default":
|
||||
default:
|
||||
return `
|
||||
<text x="-5" y="3" alignment-baseline="central" dominant-baseline="central" text-anchor="middle" data-testid="level-rank-icon">
|
||||
${rankLevel}
|
||||
</text>
|
||||
`;
|
||||
}
|
||||
};
|
||||
|
||||
export { icons, rankIcon };
|
||||
export { icons };
|
||||
export default icons;
|
||||
|
||||
+1
-1
@@ -392,7 +392,7 @@ const lowercaseTrim = (name) => name.toLowerCase().trim();
|
||||
/**
|
||||
* Split array of languages in two columns.
|
||||
*
|
||||
* @template T Language object.
|
||||
* @template T Langauge object.
|
||||
* @param {Array<T>} arr Array of languages.
|
||||
* @param {number} perChunk Number of languages per column.
|
||||
* @returns {Array<T>} Array of languages split in two columns.
|
||||
|
||||
@@ -213,7 +213,7 @@ const fetchStats = async (
|
||||
);
|
||||
}
|
||||
throw new CustomError(
|
||||
"Something went wrong while trying to retrieve the stats data using the GraphQL API.",
|
||||
"Something went while trying to retrieve the stats data using the GraphQL API.",
|
||||
CustomError.GRAPHQL_ERROR,
|
||||
);
|
||||
}
|
||||
@@ -259,6 +259,7 @@ const fetchStats = async (
|
||||
return prev + curr.stargazers.totalCount;
|
||||
}, 0);
|
||||
|
||||
// @ts-ignore // TODO: Fix this.
|
||||
stats.rank = calculateRank({
|
||||
totalCommits: stats.totalCommits,
|
||||
totalRepos: user.repositories.totalCount,
|
||||
|
||||
@@ -54,12 +54,7 @@ const fetcher = (variables, token) => {
|
||||
* @param {string[]} exclude_repo List of repositories to exclude.
|
||||
* @returns {Promise<import("./types").TopLangData>} Top languages data.
|
||||
*/
|
||||
const fetchTopLanguages = async (
|
||||
username,
|
||||
exclude_repo = [],
|
||||
size_weight = 1,
|
||||
count_weight = 0,
|
||||
) => {
|
||||
const fetchTopLanguages = async (username, exclude_repo = []) => {
|
||||
if (!username) throw new MissingParamError(["username"]);
|
||||
|
||||
const res = await retryer(fetcher, { login: username });
|
||||
@@ -106,8 +101,6 @@ const fetchTopLanguages = async (
|
||||
.sort((a, b) => b.size - a.size)
|
||||
.filter((name) => !repoToHide[name.name]);
|
||||
|
||||
let repoCount = 0;
|
||||
|
||||
repoNodes = repoNodes
|
||||
.filter((node) => node.languages.edges.length > 0)
|
||||
// flatten the list of language nodes
|
||||
@@ -118,14 +111,9 @@ const fetchTopLanguages = async (
|
||||
|
||||
// if we already have the language in the accumulator
|
||||
// & the current language name is same as previous name
|
||||
// add the size to the language size and increase repoCount.
|
||||
// add the size to the language size.
|
||||
if (acc[prev.node.name] && prev.node.name === acc[prev.node.name].name) {
|
||||
langSize = prev.size + acc[prev.node.name].size;
|
||||
repoCount += 1;
|
||||
} else {
|
||||
// reset repoCount to 1
|
||||
// language must exist in at least one repo to be detected
|
||||
repoCount = 1;
|
||||
}
|
||||
return {
|
||||
...acc,
|
||||
@@ -133,18 +121,10 @@ const fetchTopLanguages = async (
|
||||
name: prev.node.name,
|
||||
color: prev.node.color,
|
||||
size: langSize,
|
||||
count: repoCount,
|
||||
},
|
||||
};
|
||||
}, {});
|
||||
|
||||
Object.keys(repoNodes).forEach((name) => {
|
||||
// comparison index calculation
|
||||
repoNodes[name].size =
|
||||
Math.pow(repoNodes[name].size, size_weight) *
|
||||
Math.pow(repoNodes[name].count, count_weight);
|
||||
});
|
||||
|
||||
const topLangs = Object.keys(repoNodes)
|
||||
.sort((a, b) => repoNodes[b].size - repoNodes[a].size)
|
||||
.reduce((result, key) => {
|
||||
|
||||
@@ -60,22 +60,20 @@ const error = {
|
||||
};
|
||||
|
||||
describe("FetchTopLanguages", () => {
|
||||
it("should fetch correct language data while using the new calculation", async () => {
|
||||
it("should fetch correct language data", async () => {
|
||||
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
||||
|
||||
let repo = await fetchTopLanguages("anuraghazra", [], 0.5, 0.5);
|
||||
let repo = await fetchTopLanguages("anuraghazra");
|
||||
expect(repo).toStrictEqual({
|
||||
HTML: {
|
||||
color: "#0f0",
|
||||
count: 2,
|
||||
name: "HTML",
|
||||
size: 20.000000000000004,
|
||||
size: 200,
|
||||
},
|
||||
javascript: {
|
||||
color: "#0ff",
|
||||
count: 2,
|
||||
name: "javascript",
|
||||
size: 20.000000000000004,
|
||||
size: 200,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -87,59 +85,17 @@ describe("FetchTopLanguages", () => {
|
||||
expect(repo).toStrictEqual({
|
||||
HTML: {
|
||||
color: "#0f0",
|
||||
count: 1,
|
||||
name: "HTML",
|
||||
size: 100,
|
||||
},
|
||||
javascript: {
|
||||
color: "#0ff",
|
||||
count: 2,
|
||||
name: "javascript",
|
||||
size: 200,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("should fetch correct language data while using the old calculation", async () => {
|
||||
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
||||
|
||||
let repo = await fetchTopLanguages("anuraghazra", [], 1, 0);
|
||||
expect(repo).toStrictEqual({
|
||||
HTML: {
|
||||
color: "#0f0",
|
||||
count: 2,
|
||||
name: "HTML",
|
||||
size: 200,
|
||||
},
|
||||
javascript: {
|
||||
color: "#0ff",
|
||||
count: 2,
|
||||
name: "javascript",
|
||||
size: 200,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("should rank languages by the number of repositories they appear in", async () => {
|
||||
mock.onPost("https://api.github.com/graphql").reply(200, data_langs);
|
||||
|
||||
let repo = await fetchTopLanguages("anuraghazra", [], 0, 1);
|
||||
expect(repo).toStrictEqual({
|
||||
HTML: {
|
||||
color: "#0f0",
|
||||
count: 2,
|
||||
name: "HTML",
|
||||
size: 2,
|
||||
},
|
||||
javascript: {
|
||||
color: "#0ff",
|
||||
count: 2,
|
||||
name: "javascript",
|
||||
size: 2,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("should throw error", async () => {
|
||||
mock.onPost("https://api.github.com/graphql").reply(200, error);
|
||||
|
||||
|
||||
@@ -366,21 +366,4 @@ describe("Test renderStatsCard", () => {
|
||||
document.body.innerHTML = renderStatsCard(stats, { number_format: "long" });
|
||||
expect(getByTestId(document.body, "commits").textContent).toBe("1999");
|
||||
});
|
||||
|
||||
it("should render default rank icon with level A+", () => {
|
||||
document.body.innerHTML = renderStatsCard(stats, {
|
||||
rank_icon: "default",
|
||||
});
|
||||
expect(queryByTestId(document.body, "level-rank-icon")).toBeDefined();
|
||||
expect(
|
||||
queryByTestId(document.body, "level-rank-icon").textContent.trim(),
|
||||
).toBe("A+");
|
||||
});
|
||||
|
||||
it("should render github rank icon", () => {
|
||||
document.body.innerHTML = renderStatsCard(stats, {
|
||||
rank_icon: "github",
|
||||
});
|
||||
expect(queryByTestId(document.body, "github-rank-icon")).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -55,7 +55,7 @@ describe("Test Render Wakatime Card", () => {
|
||||
expect(document.querySelector("rect")).toHaveAttribute("rx", "4.5");
|
||||
});
|
||||
|
||||
it('should show "no coding activity this week" message when there has not been activity', () => {
|
||||
it('should show "no coding activitiy this week" message when there hasn not been activity', () => {
|
||||
document.body.innerHTML = renderWakatimeCard(
|
||||
{
|
||||
...wakaTimeData.data,
|
||||
|
||||
Reference in New Issue
Block a user