@stats-organization/github-readme-stats-core 2.1.5 → 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.
Files changed (169) hide show
  1. package/build/api/gist.d.ts +2 -7
  2. package/build/api/gist.d.ts.map +1 -1
  3. package/build/api/gist.js +9 -41
  4. package/build/api/index.d.ts +3 -8
  5. package/build/api/index.d.ts.map +1 -1
  6. package/build/api/index.js +23 -45
  7. package/build/api/pin.d.ts +2 -7
  8. package/build/api/pin.d.ts.map +1 -1
  9. package/build/api/pin.js +9 -41
  10. package/build/api/top-langs.d.ts +2 -7
  11. package/build/api/top-langs.d.ts.map +1 -1
  12. package/build/api/top-langs.js +11 -55
  13. package/build/api/wakatime.d.ts +2 -7
  14. package/build/api/wakatime.d.ts.map +1 -1
  15. package/build/api/wakatime.js +9 -41
  16. package/build/cards/common-options.d.ts +13 -0
  17. package/build/cards/common-options.d.ts.map +1 -0
  18. package/build/cards/common-options.js +1 -0
  19. package/build/cards/gist.d.ts +11 -16
  20. package/build/cards/gist.d.ts.map +1 -1
  21. package/build/cards/gist.js +26 -31
  22. package/build/cards/repo.d.ts +19 -16
  23. package/build/cards/repo.d.ts.map +1 -1
  24. package/build/cards/repo.js +58 -60
  25. package/build/cards/stats.d.ts +29 -46
  26. package/build/cards/stats.d.ts.map +1 -1
  27. package/build/cards/stats.js +113 -181
  28. package/build/cards/top-languages.d.ts +81 -77
  29. package/build/cards/top-languages.d.ts.map +1 -1
  30. package/build/cards/top-languages.js +174 -200
  31. package/build/cards/wakatime.d.ts +21 -11
  32. package/build/cards/wakatime.d.ts.map +1 -1
  33. package/build/cards/wakatime.js +73 -111
  34. package/build/common/Card.d.ts +34 -13
  35. package/build/common/Card.d.ts.map +1 -1
  36. package/build/common/Card.js +73 -40
  37. package/build/common/I18n.d.ts +4 -2
  38. package/build/common/I18n.d.ts.map +1 -1
  39. package/build/common/color.d.ts +60 -18
  40. package/build/common/color.d.ts.map +1 -1
  41. package/build/common/color.js +102 -5
  42. package/build/common/config.d.ts +2 -1
  43. package/build/common/config.d.ts.map +1 -1
  44. package/build/common/config.js +16 -26
  45. package/build/common/constants.d.ts +2 -1
  46. package/build/common/constants.d.ts.map +1 -1
  47. package/build/common/date.d.ts +37 -0
  48. package/build/common/date.d.ts.map +1 -0
  49. package/build/common/date.js +31 -0
  50. package/build/common/http.d.ts +25 -2
  51. package/build/common/http.d.ts.map +1 -1
  52. package/build/common/http.js +26 -3
  53. package/build/common/icons.d.ts +1 -0
  54. package/build/common/icons.d.ts.map +1 -1
  55. package/build/common/icons.js +1 -0
  56. package/build/common/languageColors.d.ts +11 -0
  57. package/build/common/languageColors.d.ts.map +1 -0
  58. package/build/common/languageColors.js +15 -0
  59. package/build/common/languageColors.json +1 -0
  60. package/build/common/ops.d.ts +3 -10
  61. package/build/common/ops.d.ts.map +1 -1
  62. package/build/common/ops.js +3 -15
  63. package/build/common/render.d.ts +43 -6
  64. package/build/common/render.d.ts.map +1 -1
  65. package/build/common/render.js +77 -11
  66. package/build/common/retryer.d.ts +3 -2
  67. package/build/common/retryer.d.ts.map +1 -1
  68. package/build/common/retryer.js +1 -0
  69. package/build/fetchers/gist.d.ts.map +1 -1
  70. package/build/fetchers/gist.js +8 -39
  71. package/build/fetchers/repo.d.ts +12 -11
  72. package/build/fetchers/repo.d.ts.map +1 -1
  73. package/build/fetchers/repo.js +26 -67
  74. package/build/fetchers/stats.d.ts +24 -17
  75. package/build/fetchers/stats.d.ts.map +1 -1
  76. package/build/fetchers/stats.js +302 -183
  77. package/build/fetchers/top-languages.d.ts +10 -15
  78. package/build/fetchers/top-languages.d.ts.map +1 -1
  79. package/build/fetchers/top-languages.js +52 -103
  80. package/build/fetchers/types.d.ts +24 -20
  81. package/build/fetchers/types.d.ts.map +1 -1
  82. package/build/fetchers/wakatime.d.ts +9 -5
  83. package/build/fetchers/wakatime.d.ts.map +1 -1
  84. package/build/fetchers/wakatime.js +8 -4
  85. package/build/graphql/contributionsDocument.d.ts +18 -0
  86. package/build/graphql/contributionsDocument.d.ts.map +1 -0
  87. package/build/graphql/contributionsDocument.js +30 -0
  88. package/build/graphql/generated/common.d.ts +42 -0
  89. package/build/graphql/generated/common.d.ts.map +1 -0
  90. package/build/graphql/generated/common.js +2 -0
  91. package/build/graphql/generated/gist.d.ts +44 -0
  92. package/build/graphql/generated/gist.d.ts.map +1 -0
  93. package/build/graphql/generated/gist.js +27 -0
  94. package/build/graphql/generated/repo.d.ts +67 -0
  95. package/build/graphql/generated/repo.d.ts.map +1 -0
  96. package/build/graphql/generated/repo.js +30 -0
  97. package/build/graphql/generated/stats.d.ts +150 -0
  98. package/build/graphql/generated/stats.d.ts.map +1 -0
  99. package/build/graphql/generated/stats.js +95 -0
  100. package/build/graphql/generated/top-languages.d.ts +54 -0
  101. package/build/graphql/generated/top-languages.d.ts.map +1 -0
  102. package/build/graphql/generated/top-languages.js +27 -0
  103. package/build/graphql/graphqlDocument.d.ts +22 -0
  104. package/build/graphql/graphqlDocument.d.ts.map +1 -0
  105. package/build/graphql/graphqlDocument.js +8 -0
  106. package/build/graphql/reposContributedToDocument.d.ts +27 -0
  107. package/build/graphql/reposContributedToDocument.d.ts.map +1 -0
  108. package/build/graphql/reposContributedToDocument.js +59 -0
  109. package/build/index.d.ts +3 -1
  110. package/build/index.d.ts.map +1 -1
  111. package/build/index.js +2 -1
  112. package/build/themes/index.d.ts +32 -0
  113. package/build/themes/index.d.ts.map +1 -1
  114. package/build/themes/index.js +28 -0
  115. package/build/translations.d.ts +17 -0
  116. package/build/translations.d.ts.map +1 -1
  117. package/build/translations.js +17 -0
  118. package/package.json +13 -7
  119. package/src/_github-username-regex.d.ts +4 -0
  120. package/src/api/gist.js +10 -46
  121. package/src/api/index.js +30 -51
  122. package/src/api/pin.js +10 -46
  123. package/src/api/top-langs.js +13 -60
  124. package/src/api/wakatime.js +10 -46
  125. package/src/cards/common-options.ts +13 -0
  126. package/src/cards/{gist.js → gist.ts} +37 -37
  127. package/src/cards/{repo.js → repo.ts} +86 -68
  128. package/src/cards/{stats.js → stats.ts} +168 -219
  129. package/src/cards/{top-languages.js → top-languages.ts} +309 -265
  130. package/src/cards/{wakatime.js → wakatime.ts} +136 -130
  131. package/src/common/Card.ts +94 -49
  132. package/src/common/I18n.ts +6 -2
  133. package/src/common/color.ts +163 -14
  134. package/src/common/config.ts +22 -29
  135. package/src/common/constants.ts +3 -1
  136. package/src/common/date.ts +45 -0
  137. package/src/common/http.ts +43 -3
  138. package/src/common/icons.ts +1 -0
  139. package/src/common/languageColors.json +1 -0
  140. package/src/common/languageColors.ts +19 -0
  141. package/src/common/ops.ts +8 -18
  142. package/src/common/render.ts +114 -14
  143. package/src/common/retryer.ts +6 -5
  144. package/src/fetchers/gist.ts +15 -72
  145. package/src/fetchers/repo.ts +114 -0
  146. package/src/fetchers/stats.ts +743 -0
  147. package/src/fetchers/top-languages.ts +135 -0
  148. package/src/fetchers/types.ts +28 -20
  149. package/src/fetchers/{wakatime.js → wakatime.ts} +19 -5
  150. package/src/graphql/contributionsDocument.ts +44 -0
  151. package/src/graphql/generated/common.ts +26 -0
  152. package/src/graphql/generated/gist.ts +59 -0
  153. package/src/graphql/generated/repo.ts +90 -0
  154. package/src/graphql/generated/stats.ts +194 -0
  155. package/src/graphql/generated/top-languages.ts +75 -0
  156. package/src/graphql/graphqlDocument.ts +25 -0
  157. package/src/graphql/queries/gist.graphql +25 -0
  158. package/src/graphql/queries/repo.graphql +28 -0
  159. package/src/graphql/queries/stats.graphql +120 -0
  160. package/src/graphql/queries/top-languages.graphql +34 -0
  161. package/src/graphql/reposContributedToDocument.ts +86 -0
  162. package/src/index.ts +3 -1
  163. package/src/themes/index.ts +33 -0
  164. package/src/translations.ts +17 -0
  165. package/src/cards/types.d.ts +0 -78
  166. package/src/fetchers/repo.js +0 -161
  167. package/src/fetchers/stats.js +0 -473
  168. package/src/fetchers/top-languages.js +0 -175
  169. package/src/themes/README.md +0 -229
@@ -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.1.5",
3
+ "version": "2.2.0",
4
4
  "type": "module",
5
5
  "homepage": "https://github-stats-extended.vercel.app/frontend",
6
6
  "bugs": {
@@ -67,13 +67,18 @@
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": "6.9.1",
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
- "js-yaml": "5.2.1",
75
- "jsdom": "29.1.1",
76
- "vitest": "4.1.10"
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
84
  "axios": "^1.18.1",
@@ -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
- "theme-readme-gen": "node scripts/generate-theme-doc",
92
- "generate-langs-json": "node scripts/generate-langs-json"
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,4 @@
1
+ declare module "github-username-regex" {
2
+ const githubUsernameRegex: RegExp;
3
+ export default githubUsernameRegex;
4
+ }
package/src/api/gist.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { renderGistCard } from "../cards/gist.js";
2
- import { findInvalidColor } from "../common/color.js";
2
+ import { findInvalidColorParam, pickColorParams } from "../common/color.js";
3
3
  import {
4
4
  MissingParamError,
5
5
  retrieveSecondaryMessage,
@@ -13,27 +13,18 @@ import { isLocaleAvailable } from "../translations.js";
13
13
  export default async (
14
14
  {
15
15
  id,
16
- title_color,
17
- icon_color,
18
- text_color,
19
- bg_color,
20
- theme,
21
16
  locale,
22
17
  border_radius,
23
- border_color,
24
18
  show_owner,
25
19
  browser_rendering,
26
20
  hide_border,
21
+ ...remainingParams
27
22
  },
28
23
  pat = null,
29
24
  ) => {
30
- const invalidColorInput = findInvalidColor({
31
- title_color,
32
- icon_color,
33
- text_color,
34
- bg_color,
35
- border_color,
36
- });
25
+ const colorParams = pickColorParams(remainingParams);
26
+
27
+ const invalidColorInput = findInvalidColorParam(colorParams);
37
28
  if (invalidColorInput) {
38
29
  return {
39
30
  status: "error - permanent",
@@ -50,13 +41,7 @@ export default async (
50
41
  content: renderError({
51
42
  message: "Something went wrong",
52
43
  secondaryMessage: "Language not found",
53
- renderOptions: {
54
- title_color,
55
- text_color,
56
- bg_color,
57
- border_color,
58
- theme,
59
- },
44
+ renderOptions: colorParams,
60
45
  }),
61
46
  };
62
47
  }
@@ -68,13 +53,7 @@ export default async (
68
53
  content: renderError({
69
54
  message: "Something went wrong",
70
55
  secondaryMessage: "Gist ID contains unsafe characters",
71
- renderOptions: {
72
- title_color,
73
- text_color,
74
- bg_color,
75
- border_color,
76
- theme,
77
- },
56
+ renderOptions: colorParams,
78
57
  }),
79
58
  };
80
59
  }
@@ -85,13 +64,8 @@ export default async (
85
64
  return {
86
65
  status: "success",
87
66
  content: renderGistCard(gistData, {
88
- title_color,
89
- icon_color,
90
- text_color,
91
- bg_color,
92
- theme,
67
+ ...colorParams,
93
68
  border_radius,
94
- border_color,
95
69
  locale: locale ? locale.toLowerCase() : null,
96
70
  show_owner: parseBoolean(show_owner),
97
71
  browser_rendering: parseBoolean(browser_rendering),
@@ -106,11 +80,7 @@ export default async (
106
80
  message: err.message,
107
81
  secondaryMessage: retrieveSecondaryMessage(err),
108
82
  renderOptions: {
109
- title_color,
110
- text_color,
111
- bg_color,
112
- border_color,
113
- theme,
83
+ ...colorParams,
114
84
  show_repo_link: !(err instanceof MissingParamError),
115
85
  },
116
86
  }),
@@ -120,13 +90,7 @@ export default async (
120
90
  status: "error - temporary",
121
91
  content: renderError({
122
92
  message: "An unknown error occurred",
123
- renderOptions: {
124
- title_color,
125
- text_color,
126
- bg_color,
127
- border_color,
128
- theme,
129
- },
93
+ renderOptions: colorParams,
130
94
  }),
131
95
  };
132
96
  }
package/src/api/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { renderStatsCard } from "../cards/stats.js";
2
- import { findInvalidColor } from "../common/color.js";
2
+ import { findInvalidColorParam, pickColorParams } from "../common/color.js";
3
3
  import {
4
4
  MissingParamError,
5
5
  retrieveSecondaryMessage,
@@ -24,13 +24,7 @@ export default async (
24
24
  include_all_commits,
25
25
  commits_year,
26
26
  line_height,
27
- title_color,
28
- ring_color,
29
- icon_color,
30
- text_color,
31
27
  text_bold,
32
- bg_color,
33
- theme,
34
28
  exclude_repo,
35
29
  custom_title,
36
30
  locale,
@@ -39,20 +33,16 @@ export default async (
39
33
  number_format,
40
34
  role,
41
35
  number_precision,
42
- border_color,
43
36
  rank_icon,
44
37
  show,
38
+ contribs_include_own_repos,
39
+ ...remainingParams
45
40
  },
46
41
  pat = null,
47
42
  ) => {
48
- const invalidColorInput = findInvalidColor({
49
- title_color,
50
- ring_color,
51
- icon_color,
52
- text_color,
53
- bg_color,
54
- border_color,
55
- });
43
+ const colorParams = pickColorParams(remainingParams);
44
+
45
+ const invalidColorInput = findInvalidColorParam(colorParams);
56
46
  if (invalidColorInput) {
57
47
  return {
58
48
  status: "error - permanent",
@@ -69,13 +59,7 @@ export default async (
69
59
  content: renderError({
70
60
  message: "Something went wrong",
71
61
  secondaryMessage: "Language not found",
72
- renderOptions: {
73
- title_color,
74
- text_color,
75
- bg_color,
76
- border_color,
77
- theme,
78
- },
62
+ renderOptions: colorParams,
79
63
  }),
80
64
  };
81
65
  }
@@ -92,16 +76,24 @@ export default async (
92
76
  message: "Something went wrong",
93
77
  secondaryMessage:
94
78
  "Username, repository or owner contains unsafe characters",
95
- renderOptions: {
96
- title_color,
97
- text_color,
98
- bg_color,
99
- border_color,
100
- theme,
101
- },
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,
102
92
  }),
103
93
  };
104
94
  }
95
+ const commitsYearParsed =
96
+ commits_year === undefined ? undefined : Number(commits_year);
105
97
 
106
98
  try {
107
99
  const showStats = parseArray(show);
@@ -119,7 +111,7 @@ export default async (
119
111
  showStats.includes("prs_merged_percentage"),
120
112
  showStats.includes("discussions_started"),
121
113
  showStats.includes("discussions_answered"),
122
- parseInt(commits_year, 10),
114
+ commitsYearParsed,
123
115
  repository,
124
116
  repoOwner,
125
117
  showStats.includes("prs_authored"),
@@ -128,6 +120,9 @@ export default async (
128
120
  showStats.includes("issues_authored"),
129
121
  showStats.includes("issues_commented"),
130
122
  parseArray(role),
123
+ showStats.includes("contributions"),
124
+ showStats.includes("all_time_contribs"),
125
+ parseBoolean(contribs_include_own_repos),
131
126
  pat,
132
127
  );
133
128
 
@@ -136,6 +131,7 @@ export default async (
136
131
  content: renderStatsCard(
137
132
  stats,
138
133
  {
134
+ ...colorParams,
139
135
  hide: parseArray(hide),
140
136
  show_icons: parseBoolean(show_icons),
141
137
  hide_title: parseBoolean(hide_title),
@@ -143,18 +139,11 @@ export default async (
143
139
  card_width: parseInt(card_width, 10),
144
140
  hide_rank: parseBoolean(hide_rank),
145
141
  include_all_commits: parseBoolean(include_all_commits),
146
- commits_year: parseInt(commits_year, 10),
142
+ commits_year: commitsYearParsed,
147
143
  line_height,
148
- title_color,
149
- ring_color,
150
- icon_color,
151
- text_color,
152
144
  text_bold: parseBoolean(text_bold),
153
- bg_color,
154
- theme,
155
145
  custom_title,
156
146
  border_radius,
157
- border_color,
158
147
  number_format,
159
148
  number_precision: parseInt(number_precision, 10),
160
149
  locale: locale ? locale.toLowerCase() : null,
@@ -175,11 +164,7 @@ export default async (
175
164
  message: err.message,
176
165
  secondaryMessage: retrieveSecondaryMessage(err),
177
166
  renderOptions: {
178
- title_color,
179
- text_color,
180
- bg_color,
181
- border_color,
182
- theme,
167
+ ...colorParams,
183
168
  show_repo_link: !(err instanceof MissingParamError),
184
169
  },
185
170
  }),
@@ -189,13 +174,7 @@ export default async (
189
174
  status: "error - temporary",
190
175
  content: renderError({
191
176
  message: "An unknown error occurred",
192
- renderOptions: {
193
- title_color,
194
- text_color,
195
- bg_color,
196
- border_color,
197
- theme,
198
- },
177
+ renderOptions: colorParams,
199
178
  }),
200
179
  };
201
180
  }
package/src/api/pin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { renderRepoCard } from "../cards/repo.js";
2
- import { findInvalidColor } from "../common/color.js";
2
+ import { findInvalidColorParam, pickColorParams } from "../common/color.js";
3
3
  import {
4
4
  MissingParamError,
5
5
  retrieveSecondaryMessage,
@@ -15,12 +15,7 @@ export default async (
15
15
  username,
16
16
  repo,
17
17
  hide_border,
18
- title_color,
19
- icon_color,
20
- text_color,
21
- bg_color,
22
18
  card_width,
23
- theme,
24
19
  show_owner,
25
20
  browser_rendering,
26
21
  show,
@@ -30,18 +25,14 @@ export default async (
30
25
  line_height,
31
26
  locale,
32
27
  border_radius,
33
- border_color,
34
28
  description_lines_count,
29
+ ...remainingParams
35
30
  },
36
31
  pat = null,
37
32
  ) => {
38
- const invalidColorInput = findInvalidColor({
39
- title_color,
40
- icon_color,
41
- text_color,
42
- bg_color,
43
- border_color,
44
- });
33
+ const colorParams = pickColorParams(remainingParams);
34
+
35
+ const invalidColorInput = findInvalidColorParam(colorParams);
45
36
  if (invalidColorInput) {
46
37
  return {
47
38
  status: "error - permanent",
@@ -58,13 +49,7 @@ export default async (
58
49
  content: renderError({
59
50
  message: "Something went wrong",
60
51
  secondaryMessage: "Language not found",
61
- renderOptions: {
62
- title_color,
63
- text_color,
64
- bg_color,
65
- border_color,
66
- theme,
67
- },
52
+ renderOptions: colorParams,
68
53
  }),
69
54
  };
70
55
  }
@@ -79,13 +64,7 @@ export default async (
79
64
  content: renderError({
80
65
  message: "Something went wrong",
81
66
  secondaryMessage: "Username or repository contains unsafe characters",
82
- renderOptions: {
83
- title_color,
84
- text_color,
85
- bg_color,
86
- border_color,
87
- theme,
88
- },
67
+ renderOptions: colorParams,
89
68
  }),
90
69
  };
91
70
  }
@@ -106,14 +85,9 @@ export default async (
106
85
  return {
107
86
  status: "success",
108
87
  content: renderRepoCard(repoData, {
88
+ ...colorParams,
109
89
  hide_border: parseBoolean(hide_border),
110
- title_color,
111
- icon_color,
112
- text_color,
113
- bg_color,
114
- theme,
115
90
  border_radius,
116
- border_color,
117
91
  card_width_input: parseInt(card_width, 10),
118
92
  show_owner: parseBoolean(show_owner),
119
93
  browser_rendering: parseBoolean(browser_rendering),
@@ -135,11 +109,7 @@ export default async (
135
109
  message: err.message,
136
110
  secondaryMessage: retrieveSecondaryMessage(err),
137
111
  renderOptions: {
138
- title_color,
139
- text_color,
140
- bg_color,
141
- border_color,
142
- theme,
112
+ ...colorParams,
143
113
  show_repo_link: !(err instanceof MissingParamError),
144
114
  },
145
115
  }),
@@ -149,13 +119,7 @@ export default async (
149
119
  status: "error - temporary",
150
120
  content: renderError({
151
121
  message: "An unknown error occurred",
152
- renderOptions: {
153
- title_color,
154
- text_color,
155
- bg_color,
156
- border_color,
157
- theme,
158
- },
122
+ renderOptions: colorParams,
159
123
  }),
160
124
  };
161
125
  }
@@ -1,5 +1,5 @@
1
1
  import { renderTopLanguages } from "../cards/top-languages.js";
2
- import { findInvalidColor } from "../common/color.js";
2
+ import { findInvalidColorParam, pickColorParams } from "../common/color.js";
3
3
  import {
4
4
  MissingParamError,
5
5
  retrieveSecondaryMessage,
@@ -17,11 +17,6 @@ export default async (
17
17
  hide_title,
18
18
  hide_border,
19
19
  card_width,
20
- title_color,
21
- text_color,
22
- bg_color,
23
- prog_bar_bg_color,
24
- theme,
25
20
  layout,
26
21
  langs_count,
27
22
  exclude_repo,
@@ -30,22 +25,19 @@ export default async (
30
25
  custom_title,
31
26
  locale,
32
27
  border_radius,
33
- border_color,
34
28
  role,
35
29
  disable_animations,
36
30
  hide_progress,
37
31
  hide_values,
38
32
  stats_format,
33
+ ...remainingParams
39
34
  },
40
35
  pat = null,
41
36
  ) => {
42
- const invalidColorInput = findInvalidColor({
43
- title_color,
44
- text_color,
45
- bg_color,
46
- prog_bar_bg_color,
47
- border_color,
48
- });
37
+ const colorParams = pickColorParams(remainingParams);
38
+
39
+ const invalidColorInput = findInvalidColorParam(colorParams);
40
+
49
41
  if (invalidColorInput) {
50
42
  return {
51
43
  status: "error - permanent",
@@ -62,13 +54,7 @@ export default async (
62
54
  content: renderError({
63
55
  message: "Something went wrong",
64
56
  secondaryMessage: "Locale not found",
65
- renderOptions: {
66
- title_color,
67
- text_color,
68
- bg_color,
69
- border_color,
70
- theme,
71
- },
57
+ renderOptions: colorParams,
72
58
  }),
73
59
  };
74
60
  }
@@ -80,13 +66,7 @@ export default async (
80
66
  content: renderError({
81
67
  message: "Something went wrong",
82
68
  secondaryMessage: "Username contains unsafe characters",
83
- renderOptions: {
84
- title_color,
85
- text_color,
86
- bg_color,
87
- border_color,
88
- theme,
89
- },
69
+ renderOptions: colorParams,
90
70
  }),
91
71
  };
92
72
  }
@@ -100,13 +80,7 @@ export default async (
100
80
  content: renderError({
101
81
  message: "Something went wrong",
102
82
  secondaryMessage: "Incorrect layout input",
103
- renderOptions: {
104
- title_color,
105
- text_color,
106
- bg_color,
107
- border_color,
108
- theme,
109
- },
83
+ renderOptions: colorParams,
110
84
  }),
111
85
  };
112
86
  }
@@ -120,13 +94,7 @@ export default async (
120
94
  content: renderError({
121
95
  message: "Something went wrong",
122
96
  secondaryMessage: "Incorrect stats_format input",
123
- renderOptions: {
124
- title_color,
125
- text_color,
126
- bg_color,
127
- border_color,
128
- theme,
129
- },
97
+ renderOptions: colorParams,
130
98
  }),
131
99
  };
132
100
  }
@@ -144,20 +112,15 @@ export default async (
144
112
  return {
145
113
  status: "success",
146
114
  content: renderTopLanguages(topLangs, {
115
+ ...colorParams,
147
116
  custom_title,
148
117
  hide_title: parseBoolean(hide_title),
149
118
  hide_border: parseBoolean(hide_border),
150
119
  card_width: parseInt(card_width, 10),
151
120
  hide: parseArray(hide),
152
- title_color,
153
- text_color,
154
- bg_color,
155
- prog_bar_bg_color,
156
- theme,
157
121
  layout,
158
122
  langs_count,
159
123
  border_radius,
160
- border_color,
161
124
  locale: locale ? locale.toLowerCase() : null,
162
125
  disable_animations: parseBoolean(disable_animations),
163
126
  hide_progress: parseBoolean(hide_progress),
@@ -173,11 +136,7 @@ export default async (
173
136
  message: err.message,
174
137
  secondaryMessage: retrieveSecondaryMessage(err),
175
138
  renderOptions: {
176
- title_color,
177
- text_color,
178
- bg_color,
179
- border_color,
180
- theme,
139
+ ...colorParams,
181
140
  show_repo_link: !(err instanceof MissingParamError),
182
141
  },
183
142
  }),
@@ -187,13 +146,7 @@ export default async (
187
146
  status: "error - temporary",
188
147
  content: renderError({
189
148
  message: "An unknown error occurred",
190
- renderOptions: {
191
- title_color,
192
- text_color,
193
- bg_color,
194
- border_color,
195
- theme,
196
- },
149
+ renderOptions: colorParams,
197
150
  }),
198
151
  };
199
152
  }