@stats-organization/github-readme-stats-core 2.1.4 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/gist.d.ts +2 -7
- package/build/api/gist.d.ts.map +1 -1
- package/build/api/gist.js +28 -26
- package/build/api/index.d.ts +3 -8
- package/build/api/index.d.ts.map +1 -1
- package/build/api/index.js +32 -36
- package/build/api/pin.d.ts +2 -7
- package/build/api/pin.d.ts.map +1 -1
- package/build/api/pin.js +18 -33
- package/build/api/top-langs.d.ts +2 -7
- package/build/api/top-langs.d.ts.map +1 -1
- package/build/api/top-langs.js +32 -44
- package/build/api/wakatime.d.ts +2 -7
- package/build/api/wakatime.d.ts.map +1 -1
- package/build/api/wakatime.js +28 -26
- package/build/calculateRank.d.ts +12 -11
- package/build/calculateRank.d.ts.map +1 -1
- package/build/calculateRank.js +18 -18
- package/build/cards/common-options.d.ts +13 -0
- package/build/cards/common-options.d.ts.map +1 -0
- package/build/cards/common-options.js +1 -0
- package/build/cards/gist.d.ts +11 -16
- package/build/cards/gist.d.ts.map +1 -1
- package/build/cards/gist.js +26 -31
- package/build/cards/repo.d.ts +19 -16
- package/build/cards/repo.d.ts.map +1 -1
- package/build/cards/repo.js +79 -72
- package/build/cards/stats.d.ts +29 -44
- package/build/cards/stats.d.ts.map +1 -1
- package/build/cards/stats.js +118 -173
- package/build/cards/top-languages.d.ts +81 -77
- package/build/cards/top-languages.d.ts.map +1 -1
- package/build/cards/top-languages.js +186 -184
- package/build/cards/wakatime.d.ts +21 -11
- package/build/cards/wakatime.d.ts.map +1 -1
- package/build/cards/wakatime.js +92 -109
- package/build/common/Card.d.ts +41 -14
- package/build/common/Card.d.ts.map +1 -1
- package/build/common/Card.js +92 -31
- package/build/common/I18n.d.ts +4 -2
- package/build/common/I18n.d.ts.map +1 -1
- package/build/common/color.d.ts +91 -15
- package/build/common/color.d.ts.map +1 -1
- package/build/common/color.js +163 -17
- package/build/common/config.d.ts +2 -1
- package/build/common/config.d.ts.map +1 -1
- package/build/common/config.js +16 -26
- package/build/common/constants.d.ts +2 -1
- package/build/common/constants.d.ts.map +1 -1
- package/build/common/date.d.ts +37 -0
- package/build/common/date.d.ts.map +1 -0
- package/build/common/date.js +31 -0
- package/build/common/html.js +1 -1
- package/build/common/http.d.ts +37 -5
- package/build/common/http.d.ts.map +1 -1
- package/build/common/http.js +29 -6
- package/build/common/icons.d.ts +1 -0
- package/build/common/icons.d.ts.map +1 -1
- package/build/common/icons.js +1 -0
- package/build/common/languageColors.d.ts +11 -0
- package/build/common/languageColors.d.ts.map +1 -0
- package/build/common/languageColors.js +15 -0
- package/build/common/languageColors.json +10 -1
- package/build/common/ops.d.ts +27 -33
- package/build/common/ops.d.ts.map +1 -1
- package/build/common/ops.js +31 -48
- package/build/common/render.d.ts +154 -113
- package/build/common/render.d.ts.map +1 -1
- package/build/common/render.js +209 -92
- package/build/common/retryer.d.ts +15 -6
- package/build/common/retryer.d.ts.map +1 -1
- package/build/common/retryer.js +2 -0
- package/build/fetchers/gist.d.ts +6 -21
- package/build/fetchers/gist.d.ts.map +1 -1
- package/build/fetchers/gist.js +28 -64
- package/build/fetchers/repo.d.ts +12 -11
- package/build/fetchers/repo.d.ts.map +1 -1
- package/build/fetchers/repo.js +27 -68
- package/build/fetchers/stats.d.ts +24 -17
- package/build/fetchers/stats.d.ts.map +1 -1
- package/build/fetchers/stats.js +302 -184
- package/build/fetchers/top-languages.d.ts +10 -15
- package/build/fetchers/top-languages.d.ts.map +1 -1
- package/build/fetchers/top-languages.js +52 -103
- package/build/fetchers/types.d.ts +130 -0
- package/build/fetchers/types.d.ts.map +1 -0
- package/build/fetchers/types.js +1 -0
- package/build/fetchers/wakatime.d.ts +9 -5
- package/build/fetchers/wakatime.d.ts.map +1 -1
- package/build/fetchers/wakatime.js +8 -4
- package/build/graphql/contributionsDocument.d.ts +18 -0
- package/build/graphql/contributionsDocument.d.ts.map +1 -0
- package/build/graphql/contributionsDocument.js +30 -0
- package/build/graphql/generated/common.d.ts +42 -0
- package/build/graphql/generated/common.d.ts.map +1 -0
- package/build/graphql/generated/common.js +2 -0
- package/build/graphql/generated/gist.d.ts +44 -0
- package/build/graphql/generated/gist.d.ts.map +1 -0
- package/build/graphql/generated/gist.js +27 -0
- package/build/graphql/generated/repo.d.ts +67 -0
- package/build/graphql/generated/repo.d.ts.map +1 -0
- package/build/graphql/generated/repo.js +30 -0
- package/build/graphql/generated/stats.d.ts +150 -0
- package/build/graphql/generated/stats.d.ts.map +1 -0
- package/build/graphql/generated/stats.js +95 -0
- package/build/graphql/generated/top-languages.d.ts +54 -0
- package/build/graphql/generated/top-languages.d.ts.map +1 -0
- package/build/graphql/generated/top-languages.js +27 -0
- package/build/graphql/graphqlDocument.d.ts +22 -0
- package/build/graphql/graphqlDocument.d.ts.map +1 -0
- package/build/graphql/graphqlDocument.js +8 -0
- package/build/graphql/reposContributedToDocument.d.ts +27 -0
- package/build/graphql/reposContributedToDocument.d.ts.map +1 -0
- package/build/graphql/reposContributedToDocument.js +59 -0
- package/build/index.d.ts +3 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/themes/index.d.ts +32 -0
- package/build/themes/index.d.ts.map +1 -1
- package/build/themes/index.js +28 -0
- package/build/translations.d.ts +17 -0
- package/build/translations.d.ts.map +1 -1
- package/build/translations.js +17 -0
- package/package.json +14 -8
- package/src/_emoji-name-map.d.ts +10 -0
- package/src/_github-username-regex.d.ts +4 -0
- package/src/api/gist.js +31 -31
- package/src/api/index.js +40 -42
- package/src/api/pin.js +20 -38
- package/src/api/top-langs.js +36 -49
- package/src/api/wakatime.js +31 -31
- package/src/{calculateRank.js → calculateRank.ts} +29 -19
- package/src/cards/common-options.ts +13 -0
- package/src/cards/{gist.js → gist.ts} +37 -37
- package/src/cards/{repo.js → repo.ts} +107 -79
- package/src/cards/{stats.js → stats.ts} +173 -210
- package/src/cards/{top-languages.js → top-languages.ts} +325 -243
- package/src/cards/{wakatime.js → wakatime.ts} +158 -127
- package/src/common/Card.ts +123 -43
- package/src/common/I18n.ts +6 -2
- package/src/common/color.ts +240 -28
- package/src/common/config.ts +22 -29
- package/src/common/constants.ts +3 -1
- package/src/common/date.ts +45 -0
- package/src/common/html.ts +1 -1
- package/src/common/http.ts +71 -0
- package/src/common/icons.ts +1 -0
- package/src/common/languageColors.json +10 -1
- package/src/common/languageColors.ts +19 -0
- package/src/common/ops.ts +158 -0
- package/src/common/render.ts +652 -0
- package/src/common/retryer.ts +21 -12
- package/src/fetchers/gist.ts +79 -0
- package/src/fetchers/repo.ts +114 -0
- package/src/fetchers/stats.ts +743 -0
- package/src/fetchers/top-languages.ts +135 -0
- package/src/fetchers/{types.d.ts → types.ts} +28 -20
- package/src/fetchers/{wakatime.js → wakatime.ts} +19 -5
- package/src/graphql/contributionsDocument.ts +44 -0
- package/src/graphql/generated/common.ts +26 -0
- package/src/graphql/generated/gist.ts +59 -0
- package/src/graphql/generated/repo.ts +90 -0
- package/src/graphql/generated/stats.ts +194 -0
- package/src/graphql/generated/top-languages.ts +75 -0
- package/src/graphql/graphqlDocument.ts +25 -0
- package/src/graphql/queries/gist.graphql +25 -0
- package/src/graphql/queries/repo.graphql +28 -0
- package/src/graphql/queries/stats.graphql +120 -0
- package/src/graphql/queries/top-languages.graphql +34 -0
- package/src/graphql/reposContributedToDocument.ts +86 -0
- package/src/index.ts +3 -1
- package/src/themes/index.ts +33 -0
- package/src/translations.ts +17 -0
- package/src/cards/types.d.ts +0 -78
- package/src/common/http.js +0 -19
- package/src/common/ops.js +0 -170
- package/src/common/render.js +0 -440
- package/src/fetchers/gist.js +0 -112
- package/src/fetchers/repo.js +0 -161
- package/src/fetchers/stats.js +0 -474
- package/src/fetchers/top-languages.js +0 -175
- package/src/themes/README.md +0 -229
package/build/translations.d.ts
CHANGED
|
@@ -355,6 +355,9 @@ declare const statCardLocales: ({ name, apostrophe, }: {
|
|
|
355
355
|
no: string;
|
|
356
356
|
be: string;
|
|
357
357
|
};
|
|
358
|
+
"statcard.all-time-contribs": {
|
|
359
|
+
en: string;
|
|
360
|
+
};
|
|
358
361
|
"statcard.reviews": {
|
|
359
362
|
en: string;
|
|
360
363
|
ar: string;
|
|
@@ -504,18 +507,27 @@ declare const statCardLocales: ({ name, apostrophe, }: {
|
|
|
504
507
|
};
|
|
505
508
|
"statcard.prs-authored": {
|
|
506
509
|
en: string;
|
|
510
|
+
"zh-tw": string;
|
|
507
511
|
};
|
|
508
512
|
"statcard.prs-commented": {
|
|
509
513
|
en: string;
|
|
514
|
+
"zh-tw": string;
|
|
510
515
|
};
|
|
511
516
|
"statcard.prs-reviewed": {
|
|
512
517
|
en: string;
|
|
518
|
+
"zh-tw": string;
|
|
513
519
|
};
|
|
514
520
|
"statcard.issues-authored": {
|
|
515
521
|
en: string;
|
|
522
|
+
"zh-tw": string;
|
|
516
523
|
};
|
|
517
524
|
"statcard.issues-commented": {
|
|
518
525
|
en: string;
|
|
526
|
+
"zh-tw": string;
|
|
527
|
+
};
|
|
528
|
+
"statcard.contributions": {
|
|
529
|
+
en: string;
|
|
530
|
+
"zh-tw": string;
|
|
519
531
|
};
|
|
520
532
|
"statcard.prs-merged": {
|
|
521
533
|
en: string;
|
|
@@ -715,18 +727,23 @@ declare const repoCardLocales: {
|
|
|
715
727
|
};
|
|
716
728
|
"repocard.prs-authored": {
|
|
717
729
|
en: string;
|
|
730
|
+
"zh-tw": string;
|
|
718
731
|
};
|
|
719
732
|
"repocard.prs-commented": {
|
|
720
733
|
en: string;
|
|
734
|
+
"zh-tw": string;
|
|
721
735
|
};
|
|
722
736
|
"repocard.prs-reviewed": {
|
|
723
737
|
en: string;
|
|
738
|
+
"zh-tw": string;
|
|
724
739
|
};
|
|
725
740
|
"repocard.issues-authored": {
|
|
726
741
|
en: string;
|
|
742
|
+
"zh-tw": string;
|
|
727
743
|
};
|
|
728
744
|
"repocard.issues-commented": {
|
|
729
745
|
en: string;
|
|
746
|
+
"zh-tw": string;
|
|
730
747
|
};
|
|
731
748
|
};
|
|
732
749
|
declare const langCardLocales: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GAAI,uBAGtB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB
|
|
1
|
+
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GAAI,uBAGtB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAymBA,CAAC;AAEF,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHpB,CAAC;AAEF,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGpB,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAySxB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,OAE3C,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,CAAC"}
|
package/build/translations.js
CHANGED
|
@@ -355,6 +355,9 @@ const statCardLocales = ({ name, apostrophe, }) => {
|
|
|
355
355
|
no: "Bidro til (i fjor)",
|
|
356
356
|
be: "Уклад (за мінулы год)",
|
|
357
357
|
},
|
|
358
|
+
"statcard.all-time-contribs": {
|
|
359
|
+
en: "Contributed to (all time)",
|
|
360
|
+
},
|
|
358
361
|
"statcard.reviews": {
|
|
359
362
|
en: "Total PRs Reviewed",
|
|
360
363
|
ar: "طلبات السحب التي تم مراجعتها",
|
|
@@ -504,18 +507,27 @@ const statCardLocales = ({ name, apostrophe, }) => {
|
|
|
504
507
|
},
|
|
505
508
|
"statcard.prs-authored": {
|
|
506
509
|
en: "PRs Created",
|
|
510
|
+
"zh-tw": "建立的拉取請求",
|
|
507
511
|
},
|
|
508
512
|
"statcard.prs-commented": {
|
|
509
513
|
en: "PRs Commented",
|
|
514
|
+
"zh-tw": "參與討論的拉取請求",
|
|
510
515
|
},
|
|
511
516
|
"statcard.prs-reviewed": {
|
|
512
517
|
en: "PRs Reviewed",
|
|
518
|
+
"zh-tw": "審核的拉取請求",
|
|
513
519
|
},
|
|
514
520
|
"statcard.issues-authored": {
|
|
515
521
|
en: "Issues Created",
|
|
522
|
+
"zh-tw": "建立的議題",
|
|
516
523
|
},
|
|
517
524
|
"statcard.issues-commented": {
|
|
518
525
|
en: "Issues Commented",
|
|
526
|
+
"zh-tw": "參與討論的議題",
|
|
527
|
+
},
|
|
528
|
+
"statcard.contributions": {
|
|
529
|
+
en: "Total Contributions",
|
|
530
|
+
"zh-tw": "總貢獻數量",
|
|
519
531
|
},
|
|
520
532
|
"statcard.prs-merged": {
|
|
521
533
|
en: "Total PRs Merged",
|
|
@@ -716,18 +728,23 @@ const repoCardLocales = {
|
|
|
716
728
|
},
|
|
717
729
|
"repocard.prs-authored": {
|
|
718
730
|
en: "my created PRs",
|
|
731
|
+
"zh-tw": "我所創建的拉取請求",
|
|
719
732
|
},
|
|
720
733
|
"repocard.prs-commented": {
|
|
721
734
|
en: "my commented PRs",
|
|
735
|
+
"zh-tw": "我所參與的拉取請求",
|
|
722
736
|
},
|
|
723
737
|
"repocard.prs-reviewed": {
|
|
724
738
|
en: "my reviewed PRs",
|
|
739
|
+
"zh-tw": "我所審核的拉取請求",
|
|
725
740
|
},
|
|
726
741
|
"repocard.issues-authored": {
|
|
727
742
|
en: "my created issues",
|
|
743
|
+
"zh-tw": "我所創建的議題",
|
|
728
744
|
},
|
|
729
745
|
"repocard.issues-commented": {
|
|
730
746
|
en: "my commented issues",
|
|
747
|
+
"zh-tw": "我所參與的議題",
|
|
731
748
|
},
|
|
732
749
|
};
|
|
733
750
|
const langCardLocales = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stats-organization/github-readme-stats-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"homepage": "https://github-stats-extended.vercel.app/frontend",
|
|
6
6
|
"bugs": {
|
|
@@ -67,16 +67,21 @@
|
|
|
67
67
|
"access": "public"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
|
+
"@graphql-codegen/core": "6.2.0",
|
|
71
|
+
"@graphql-codegen/typescript": "6.1.0",
|
|
72
|
+
"@graphql-codegen/typescript-operations": "6.1.6",
|
|
73
|
+
"@octokit/graphql-schema": "15.26.1",
|
|
70
74
|
"@testing-library/dom": "10.4.1",
|
|
71
|
-
"@testing-library/jest-dom": "
|
|
75
|
+
"@testing-library/jest-dom": "7.0.1",
|
|
72
76
|
"@uppercod/css-to-object": "1.1.1",
|
|
73
77
|
"axios-mock-adapter": "2.1.0",
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
78
|
+
"graphql": "16.14.2",
|
|
79
|
+
"js-yaml": "5.4.1",
|
|
80
|
+
"jsdom": "30.0.1",
|
|
81
|
+
"vitest": "4.1.11"
|
|
77
82
|
},
|
|
78
83
|
"dependencies": {
|
|
79
|
-
"axios": "^1.
|
|
84
|
+
"axios": "^1.18.1",
|
|
80
85
|
"emoji-name-map": "^2.0.3",
|
|
81
86
|
"github-username-regex": "^1.0.0"
|
|
82
87
|
},
|
|
@@ -88,7 +93,8 @@
|
|
|
88
93
|
"bench": "vitest bench --run --config vitest.config.bench.ts",
|
|
89
94
|
"lint": "eslint",
|
|
90
95
|
"typecheck": "tsc -p tsconfig.typecheck.json",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
96
|
+
"generate-graphql-types": "node scripts/generate-graphql-types",
|
|
97
|
+
"check-graphql-types": "node scripts/generate-graphql-types --check",
|
|
98
|
+
"generate-language-colors": "node scripts/generate-language-colors"
|
|
93
99
|
}
|
|
94
100
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `emoji-name-map` ships no type definitions and exposes no `exports` map, so it
|
|
3
|
+
* cannot be resolved under `nodenext`. Declare the minimal surface used here.
|
|
4
|
+
*/
|
|
5
|
+
declare module "emoji-name-map" {
|
|
6
|
+
const emojiNameMap: {
|
|
7
|
+
get(name: string): string | undefined;
|
|
8
|
+
};
|
|
9
|
+
export default emojiNameMap;
|
|
10
|
+
}
|
package/src/api/gist.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { renderGistCard } from "../cards/gist.js";
|
|
2
|
+
import { findInvalidColorParam, pickColorParams } from "../common/color.js";
|
|
2
3
|
import {
|
|
3
4
|
MissingParamError,
|
|
4
5
|
retrieveSecondaryMessage,
|
|
@@ -12,33 +13,47 @@ import { isLocaleAvailable } from "../translations.js";
|
|
|
12
13
|
export default async (
|
|
13
14
|
{
|
|
14
15
|
id,
|
|
15
|
-
title_color,
|
|
16
|
-
icon_color,
|
|
17
|
-
text_color,
|
|
18
|
-
bg_color,
|
|
19
|
-
theme,
|
|
20
16
|
locale,
|
|
21
17
|
border_radius,
|
|
22
|
-
border_color,
|
|
23
18
|
show_owner,
|
|
24
19
|
browser_rendering,
|
|
25
20
|
hide_border,
|
|
21
|
+
...remainingParams
|
|
26
22
|
},
|
|
27
23
|
pat = null,
|
|
28
24
|
) => {
|
|
25
|
+
const colorParams = pickColorParams(remainingParams);
|
|
26
|
+
|
|
27
|
+
const invalidColorInput = findInvalidColorParam(colorParams);
|
|
28
|
+
if (invalidColorInput) {
|
|
29
|
+
return {
|
|
30
|
+
status: "error - permanent",
|
|
31
|
+
content: renderError({
|
|
32
|
+
message: "Something went wrong",
|
|
33
|
+
secondaryMessage: `Invalid color input for parameter "${invalidColorInput}"`,
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
if (locale && !isLocaleAvailable(locale)) {
|
|
30
39
|
return {
|
|
31
40
|
status: "error - permanent",
|
|
32
41
|
content: renderError({
|
|
33
42
|
message: "Something went wrong",
|
|
34
43
|
secondaryMessage: "Language not found",
|
|
35
|
-
renderOptions:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
renderOptions: colorParams,
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const safePattern = /^[-\w/.,]+$/;
|
|
50
|
+
if (id && !safePattern.test(id)) {
|
|
51
|
+
return {
|
|
52
|
+
status: "error - permanent",
|
|
53
|
+
content: renderError({
|
|
54
|
+
message: "Something went wrong",
|
|
55
|
+
secondaryMessage: "Gist ID contains unsafe characters",
|
|
56
|
+
renderOptions: colorParams,
|
|
42
57
|
}),
|
|
43
58
|
};
|
|
44
59
|
}
|
|
@@ -49,13 +64,8 @@ export default async (
|
|
|
49
64
|
return {
|
|
50
65
|
status: "success",
|
|
51
66
|
content: renderGistCard(gistData, {
|
|
52
|
-
|
|
53
|
-
icon_color,
|
|
54
|
-
text_color,
|
|
55
|
-
bg_color,
|
|
56
|
-
theme,
|
|
67
|
+
...colorParams,
|
|
57
68
|
border_radius,
|
|
58
|
-
border_color,
|
|
59
69
|
locale: locale ? locale.toLowerCase() : null,
|
|
60
70
|
show_owner: parseBoolean(show_owner),
|
|
61
71
|
browser_rendering: parseBoolean(browser_rendering),
|
|
@@ -70,11 +80,7 @@ export default async (
|
|
|
70
80
|
message: err.message,
|
|
71
81
|
secondaryMessage: retrieveSecondaryMessage(err),
|
|
72
82
|
renderOptions: {
|
|
73
|
-
|
|
74
|
-
text_color,
|
|
75
|
-
bg_color,
|
|
76
|
-
border_color,
|
|
77
|
-
theme,
|
|
83
|
+
...colorParams,
|
|
78
84
|
show_repo_link: !(err instanceof MissingParamError),
|
|
79
85
|
},
|
|
80
86
|
}),
|
|
@@ -84,13 +90,7 @@ export default async (
|
|
|
84
90
|
status: "error - temporary",
|
|
85
91
|
content: renderError({
|
|
86
92
|
message: "An unknown error occurred",
|
|
87
|
-
renderOptions:
|
|
88
|
-
title_color,
|
|
89
|
-
text_color,
|
|
90
|
-
bg_color,
|
|
91
|
-
border_color,
|
|
92
|
-
theme,
|
|
93
|
-
},
|
|
93
|
+
renderOptions: colorParams,
|
|
94
94
|
}),
|
|
95
95
|
};
|
|
96
96
|
}
|
package/src/api/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { renderStatsCard } from "../cards/stats.js";
|
|
2
|
+
import { findInvalidColorParam, pickColorParams } from "../common/color.js";
|
|
2
3
|
import {
|
|
3
4
|
MissingParamError,
|
|
4
5
|
retrieveSecondaryMessage,
|
|
@@ -23,13 +24,7 @@ export default async (
|
|
|
23
24
|
include_all_commits,
|
|
24
25
|
commits_year,
|
|
25
26
|
line_height,
|
|
26
|
-
title_color,
|
|
27
|
-
ring_color,
|
|
28
|
-
icon_color,
|
|
29
|
-
text_color,
|
|
30
27
|
text_bold,
|
|
31
|
-
bg_color,
|
|
32
|
-
theme,
|
|
33
28
|
exclude_repo,
|
|
34
29
|
custom_title,
|
|
35
30
|
locale,
|
|
@@ -38,25 +33,33 @@ export default async (
|
|
|
38
33
|
number_format,
|
|
39
34
|
role,
|
|
40
35
|
number_precision,
|
|
41
|
-
border_color,
|
|
42
36
|
rank_icon,
|
|
43
37
|
show,
|
|
38
|
+
contribs_include_own_repos,
|
|
39
|
+
...remainingParams
|
|
44
40
|
},
|
|
45
41
|
pat = null,
|
|
46
42
|
) => {
|
|
43
|
+
const colorParams = pickColorParams(remainingParams);
|
|
44
|
+
|
|
45
|
+
const invalidColorInput = findInvalidColorParam(colorParams);
|
|
46
|
+
if (invalidColorInput) {
|
|
47
|
+
return {
|
|
48
|
+
status: "error - permanent",
|
|
49
|
+
content: renderError({
|
|
50
|
+
message: "Something went wrong",
|
|
51
|
+
secondaryMessage: `Invalid color input for parameter "${invalidColorInput}"`,
|
|
52
|
+
}),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
47
56
|
if (locale && !isLocaleAvailable(locale)) {
|
|
48
57
|
return {
|
|
49
58
|
status: "error - permanent",
|
|
50
59
|
content: renderError({
|
|
51
60
|
message: "Something went wrong",
|
|
52
61
|
secondaryMessage: "Language not found",
|
|
53
|
-
renderOptions:
|
|
54
|
-
title_color,
|
|
55
|
-
text_color,
|
|
56
|
-
bg_color,
|
|
57
|
-
border_color,
|
|
58
|
-
theme,
|
|
59
|
-
},
|
|
62
|
+
renderOptions: colorParams,
|
|
60
63
|
}),
|
|
61
64
|
};
|
|
62
65
|
}
|
|
@@ -73,16 +76,24 @@ export default async (
|
|
|
73
76
|
message: "Something went wrong",
|
|
74
77
|
secondaryMessage:
|
|
75
78
|
"Username, repository or owner contains unsafe characters",
|
|
76
|
-
renderOptions:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
renderOptions: colorParams,
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// anything but a four-digit year builds a DateTime GitHub rejects
|
|
85
|
+
if (commits_year !== undefined && !/^\d{4}$/.test(commits_year)) {
|
|
86
|
+
return {
|
|
87
|
+
status: "error - permanent",
|
|
88
|
+
content: renderError({
|
|
89
|
+
message: "Something went wrong",
|
|
90
|
+
secondaryMessage: 'Invalid number input for parameter "commits_year"',
|
|
91
|
+
renderOptions: colorParams,
|
|
83
92
|
}),
|
|
84
93
|
};
|
|
85
94
|
}
|
|
95
|
+
const commitsYearParsed =
|
|
96
|
+
commits_year === undefined ? undefined : Number(commits_year);
|
|
86
97
|
|
|
87
98
|
try {
|
|
88
99
|
const showStats = parseArray(show);
|
|
@@ -100,7 +111,7 @@ export default async (
|
|
|
100
111
|
showStats.includes("prs_merged_percentage"),
|
|
101
112
|
showStats.includes("discussions_started"),
|
|
102
113
|
showStats.includes("discussions_answered"),
|
|
103
|
-
|
|
114
|
+
commitsYearParsed,
|
|
104
115
|
repository,
|
|
105
116
|
repoOwner,
|
|
106
117
|
showStats.includes("prs_authored"),
|
|
@@ -109,6 +120,9 @@ export default async (
|
|
|
109
120
|
showStats.includes("issues_authored"),
|
|
110
121
|
showStats.includes("issues_commented"),
|
|
111
122
|
parseArray(role),
|
|
123
|
+
showStats.includes("contributions"),
|
|
124
|
+
showStats.includes("all_time_contribs"),
|
|
125
|
+
parseBoolean(contribs_include_own_repos),
|
|
112
126
|
pat,
|
|
113
127
|
);
|
|
114
128
|
|
|
@@ -117,6 +131,7 @@ export default async (
|
|
|
117
131
|
content: renderStatsCard(
|
|
118
132
|
stats,
|
|
119
133
|
{
|
|
134
|
+
...colorParams,
|
|
120
135
|
hide: parseArray(hide),
|
|
121
136
|
show_icons: parseBoolean(show_icons),
|
|
122
137
|
hide_title: parseBoolean(hide_title),
|
|
@@ -124,18 +139,11 @@ export default async (
|
|
|
124
139
|
card_width: parseInt(card_width, 10),
|
|
125
140
|
hide_rank: parseBoolean(hide_rank),
|
|
126
141
|
include_all_commits: parseBoolean(include_all_commits),
|
|
127
|
-
commits_year:
|
|
142
|
+
commits_year: commitsYearParsed,
|
|
128
143
|
line_height,
|
|
129
|
-
title_color,
|
|
130
|
-
ring_color,
|
|
131
|
-
icon_color,
|
|
132
|
-
text_color,
|
|
133
144
|
text_bold: parseBoolean(text_bold),
|
|
134
|
-
bg_color,
|
|
135
|
-
theme,
|
|
136
145
|
custom_title,
|
|
137
146
|
border_radius,
|
|
138
|
-
border_color,
|
|
139
147
|
number_format,
|
|
140
148
|
number_precision: parseInt(number_precision, 10),
|
|
141
149
|
locale: locale ? locale.toLowerCase() : null,
|
|
@@ -156,11 +164,7 @@ export default async (
|
|
|
156
164
|
message: err.message,
|
|
157
165
|
secondaryMessage: retrieveSecondaryMessage(err),
|
|
158
166
|
renderOptions: {
|
|
159
|
-
|
|
160
|
-
text_color,
|
|
161
|
-
bg_color,
|
|
162
|
-
border_color,
|
|
163
|
-
theme,
|
|
167
|
+
...colorParams,
|
|
164
168
|
show_repo_link: !(err instanceof MissingParamError),
|
|
165
169
|
},
|
|
166
170
|
}),
|
|
@@ -170,13 +174,7 @@ export default async (
|
|
|
170
174
|
status: "error - temporary",
|
|
171
175
|
content: renderError({
|
|
172
176
|
message: "An unknown error occurred",
|
|
173
|
-
renderOptions:
|
|
174
|
-
title_color,
|
|
175
|
-
text_color,
|
|
176
|
-
bg_color,
|
|
177
|
-
border_color,
|
|
178
|
-
theme,
|
|
179
|
-
},
|
|
177
|
+
renderOptions: colorParams,
|
|
180
178
|
}),
|
|
181
179
|
};
|
|
182
180
|
}
|
package/src/api/pin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { renderRepoCard } from "../cards/repo.js";
|
|
2
|
+
import { findInvalidColorParam, pickColorParams } from "../common/color.js";
|
|
2
3
|
import {
|
|
3
4
|
MissingParamError,
|
|
4
5
|
retrieveSecondaryMessage,
|
|
@@ -14,12 +15,7 @@ export default async (
|
|
|
14
15
|
username,
|
|
15
16
|
repo,
|
|
16
17
|
hide_border,
|
|
17
|
-
title_color,
|
|
18
|
-
icon_color,
|
|
19
|
-
text_color,
|
|
20
|
-
bg_color,
|
|
21
18
|
card_width,
|
|
22
|
-
theme,
|
|
23
19
|
show_owner,
|
|
24
20
|
browser_rendering,
|
|
25
21
|
show,
|
|
@@ -29,24 +25,31 @@ export default async (
|
|
|
29
25
|
line_height,
|
|
30
26
|
locale,
|
|
31
27
|
border_radius,
|
|
32
|
-
border_color,
|
|
33
28
|
description_lines_count,
|
|
29
|
+
...remainingParams
|
|
34
30
|
},
|
|
35
31
|
pat = null,
|
|
36
32
|
) => {
|
|
33
|
+
const colorParams = pickColorParams(remainingParams);
|
|
34
|
+
|
|
35
|
+
const invalidColorInput = findInvalidColorParam(colorParams);
|
|
36
|
+
if (invalidColorInput) {
|
|
37
|
+
return {
|
|
38
|
+
status: "error - permanent",
|
|
39
|
+
content: renderError({
|
|
40
|
+
message: "Something went wrong",
|
|
41
|
+
secondaryMessage: `Invalid color input for parameter "${invalidColorInput}"`,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
37
46
|
if (locale && !isLocaleAvailable(locale)) {
|
|
38
47
|
return {
|
|
39
48
|
status: "error - permanent",
|
|
40
49
|
content: renderError({
|
|
41
50
|
message: "Something went wrong",
|
|
42
51
|
secondaryMessage: "Language not found",
|
|
43
|
-
renderOptions:
|
|
44
|
-
title_color,
|
|
45
|
-
text_color,
|
|
46
|
-
bg_color,
|
|
47
|
-
border_color,
|
|
48
|
-
theme,
|
|
49
|
-
},
|
|
52
|
+
renderOptions: colorParams,
|
|
50
53
|
}),
|
|
51
54
|
};
|
|
52
55
|
}
|
|
@@ -61,13 +64,7 @@ export default async (
|
|
|
61
64
|
content: renderError({
|
|
62
65
|
message: "Something went wrong",
|
|
63
66
|
secondaryMessage: "Username or repository contains unsafe characters",
|
|
64
|
-
renderOptions:
|
|
65
|
-
title_color,
|
|
66
|
-
text_color,
|
|
67
|
-
bg_color,
|
|
68
|
-
border_color,
|
|
69
|
-
theme,
|
|
70
|
-
},
|
|
67
|
+
renderOptions: colorParams,
|
|
71
68
|
}),
|
|
72
69
|
};
|
|
73
70
|
}
|
|
@@ -88,14 +85,9 @@ export default async (
|
|
|
88
85
|
return {
|
|
89
86
|
status: "success",
|
|
90
87
|
content: renderRepoCard(repoData, {
|
|
88
|
+
...colorParams,
|
|
91
89
|
hide_border: parseBoolean(hide_border),
|
|
92
|
-
title_color,
|
|
93
|
-
icon_color,
|
|
94
|
-
text_color,
|
|
95
|
-
bg_color,
|
|
96
|
-
theme,
|
|
97
90
|
border_radius,
|
|
98
|
-
border_color,
|
|
99
91
|
card_width_input: parseInt(card_width, 10),
|
|
100
92
|
show_owner: parseBoolean(show_owner),
|
|
101
93
|
browser_rendering: parseBoolean(browser_rendering),
|
|
@@ -117,11 +109,7 @@ export default async (
|
|
|
117
109
|
message: err.message,
|
|
118
110
|
secondaryMessage: retrieveSecondaryMessage(err),
|
|
119
111
|
renderOptions: {
|
|
120
|
-
|
|
121
|
-
text_color,
|
|
122
|
-
bg_color,
|
|
123
|
-
border_color,
|
|
124
|
-
theme,
|
|
112
|
+
...colorParams,
|
|
125
113
|
show_repo_link: !(err instanceof MissingParamError),
|
|
126
114
|
},
|
|
127
115
|
}),
|
|
@@ -131,13 +119,7 @@ export default async (
|
|
|
131
119
|
status: "error - temporary",
|
|
132
120
|
content: renderError({
|
|
133
121
|
message: "An unknown error occurred",
|
|
134
|
-
renderOptions:
|
|
135
|
-
title_color,
|
|
136
|
-
text_color,
|
|
137
|
-
bg_color,
|
|
138
|
-
border_color,
|
|
139
|
-
theme,
|
|
140
|
-
},
|
|
122
|
+
renderOptions: colorParams,
|
|
141
123
|
}),
|
|
142
124
|
};
|
|
143
125
|
}
|