@retroachievements/api 1.2.0 → 1.3.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 (190) hide show
  1. package/README.md +37 -37
  2. package/dist/__playground.d.ts +8 -8
  3. package/dist/achievement/getAchievementUnlocks.d.ts +46 -46
  4. package/dist/achievement/getAchievementUnlocks.test.d.ts +1 -1
  5. package/dist/achievement/index.d.ts +2 -2
  6. package/dist/achievement/models/achievement-unlock-entity.model.d.ts +29 -29
  7. package/dist/achievement/models/get-achievement-unlocks-response.model.d.ts +30 -30
  8. package/dist/achievement/models/index.d.ts +2 -2
  9. package/dist/api.cjs +1 -1
  10. package/dist/api.cjs.map +1 -1
  11. package/dist/api.modern.js +1 -1
  12. package/dist/api.modern.js.map +1 -1
  13. package/dist/api.module.js +1 -1
  14. package/dist/api.module.js.map +1 -1
  15. package/dist/api.umd.js +1 -1
  16. package/dist/api.umd.js.map +1 -1
  17. package/dist/console/getConsoleIds.d.ts +22 -22
  18. package/dist/console/getConsoleIds.test.d.ts +1 -1
  19. package/dist/console/getGameList.d.ts +53 -53
  20. package/dist/console/getGameList.test.d.ts +1 -1
  21. package/dist/console/index.d.ts +3 -3
  22. package/dist/console/models/console-id.model.d.ts +4 -4
  23. package/dist/console/models/game-list.model.d.ts +15 -15
  24. package/dist/console/models/get-console-ids-response.model.d.ts +4 -4
  25. package/dist/console/models/get-game-list-response.model.d.ts +15 -15
  26. package/dist/console/models/index.d.ts +4 -4
  27. package/dist/feed/getAchievementOfTheWeek.d.ts +48 -48
  28. package/dist/feed/getAchievementOfTheWeek.test.d.ts +1 -1
  29. package/dist/feed/getActiveClaims.d.ts +40 -40
  30. package/dist/feed/getActiveClaims.test.d.ts +1 -1
  31. package/dist/feed/getClaims.d.ts +7 -7
  32. package/dist/feed/getClaims.test.d.ts +1 -1
  33. package/dist/feed/getTopTenUsers.d.ts +24 -24
  34. package/dist/feed/getTopTenUsers.test.d.ts +1 -1
  35. package/dist/feed/index.d.ts +5 -5
  36. package/dist/feed/models/achievement-of-the-week.model.d.ts +32 -32
  37. package/dist/feed/models/claim-set-type.enum.d.ts +4 -4
  38. package/dist/feed/models/claim-status.enum.d.ts +5 -5
  39. package/dist/feed/models/claim-type.enum.d.ts +4 -4
  40. package/dist/feed/models/get-achievement-of-the-week-response.model.d.ts +32 -32
  41. package/dist/feed/models/get-set-claims-response.model.d.ts +21 -21
  42. package/dist/feed/models/get-top-ten-users-response.model.d.ts +10 -10
  43. package/dist/feed/models/index.d.ts +10 -10
  44. package/dist/feed/models/set-claim.model.d.ts +43 -43
  45. package/dist/feed/models/top-ten-users-entity.model.d.ts +5 -5
  46. package/dist/feed/models/top-ten-users.model.d.ts +2 -2
  47. package/dist/game/getAchievementCount.d.ts +32 -32
  48. package/dist/game/getAchievementCount.test.d.ts +1 -1
  49. package/dist/game/getAchievementDistribution.d.ts +58 -58
  50. package/dist/game/getAchievementDistribution.test.d.ts +1 -1
  51. package/dist/game/getGame.d.ts +49 -49
  52. package/dist/game/getGame.test.d.ts +1 -1
  53. package/dist/game/getGameExtended.d.ts +69 -69
  54. package/dist/game/getGameExtended.test.d.ts +1 -1
  55. package/dist/game/getGameRankAndScore.d.ts +39 -39
  56. package/dist/game/getGameRankAndScore.test.d.ts +1 -1
  57. package/dist/game/getGameRating.d.ts +39 -39
  58. package/dist/game/getGameRating.test.d.ts +1 -1
  59. package/dist/game/index.d.ts +7 -7
  60. package/dist/game/models/achievement-count.model.d.ts +4 -4
  61. package/dist/game/models/achievement-distribution-flags.enum.d.ts +4 -4
  62. package/dist/game/models/game-extended-achievement-entity.model.d.ts +15 -15
  63. package/dist/game/models/game-extended-claim-entity.model.d.ts +7 -7
  64. package/dist/game/models/game-extended.model.d.ts +25 -25
  65. package/dist/game/models/game-rank-and-score-entity.model.d.ts +6 -6
  66. package/dist/game/models/game-rating.model.d.ts +9 -9
  67. package/dist/game/models/game.model.d.ts +19 -19
  68. package/dist/game/models/get-achievement-count-response.model.d.ts +4 -4
  69. package/dist/game/models/get-achievement-distribution-response.model.d.ts +1 -1
  70. package/dist/game/models/get-game-extended-response.model.d.ts +50 -50
  71. package/dist/game/models/get-game-rank-and-score-response.model.d.ts +8 -8
  72. package/dist/game/models/get-game-rating-response.model.d.ts +9 -9
  73. package/dist/game/models/get-game-response.model.d.ts +19 -19
  74. package/dist/game/models/index.d.ts +14 -14
  75. package/dist/index.d.ts +7 -7
  76. package/dist/ticket/getTicketData.d.ts +159 -159
  77. package/dist/ticket/getTicketData.test.d.ts +1 -1
  78. package/dist/ticket/index.d.ts +2 -2
  79. package/dist/ticket/models/achievement-ticket-stats-response.model.d.ts +7 -7
  80. package/dist/ticket/models/achievement-ticket-stats.model.d.ts +7 -7
  81. package/dist/ticket/models/game-ticket-stats.model.d.ts +9 -9
  82. package/dist/ticket/models/game-tickets-response.model.d.ts +7 -7
  83. package/dist/ticket/models/index.d.ts +12 -12
  84. package/dist/ticket/models/most-ticketed-games-response.model.d.ts +12 -12
  85. package/dist/ticket/models/most-ticketed-games.model.d.ts +11 -11
  86. package/dist/ticket/models/recent-tickets-response.model.d.ts +6 -6
  87. package/dist/ticket/models/recent-tickets.model.d.ts +6 -6
  88. package/dist/ticket/models/response-ticket-entity.model.d.ts +24 -24
  89. package/dist/ticket/models/ticket-entity.model.d.ts +24 -24
  90. package/dist/ticket/models/tickets-by-user-response.model.d.ts +8 -8
  91. package/dist/ticket/models/user-ticket-stats.model.d.ts +8 -8
  92. package/dist/user/getAchievementsEarnedBetween.d.ts +59 -59
  93. package/dist/user/getAchievementsEarnedBetween.test.d.ts +1 -1
  94. package/dist/user/getAchievementsEarnedOnDay.d.ts +57 -57
  95. package/dist/user/getAchievementsEarnedOnDay.test.d.ts +1 -1
  96. package/dist/user/getGameInfoAndUserProgress.d.ts +81 -81
  97. package/dist/user/getGameInfoAndUserProgress.test.d.ts +1 -1
  98. package/dist/user/getUserAwards.d.ts +49 -47
  99. package/dist/user/getUserAwards.test.d.ts +1 -1
  100. package/dist/user/getUserClaims.d.ts +27 -27
  101. package/dist/user/getUserClaims.test.d.ts +1 -1
  102. package/dist/user/getUserCompletedGames.d.ts +56 -56
  103. package/dist/user/getUserCompletedGames.test.d.ts +1 -1
  104. package/dist/user/getUserGameRankAndScore.d.ts +45 -45
  105. package/dist/user/getUserGameRankAndScore.test.d.ts +1 -1
  106. package/dist/user/getUserPoints.d.ts +30 -30
  107. package/dist/user/getUserPoints.test.d.ts +1 -1
  108. package/dist/user/getUserProgress.d.ts +50 -50
  109. package/dist/user/getUserProgress.test.d.ts +1 -1
  110. package/dist/user/getUserRecentAchievements.d.ts +49 -49
  111. package/dist/user/getUserRecentAchievements.test.d.ts +1 -1
  112. package/dist/user/getUserRecentlyPlayedGames.d.ts +50 -50
  113. package/dist/user/getUserRecentlyPlayedGames.test.d.ts +1 -1
  114. package/dist/user/getUserSummary.d.ts +32 -32
  115. package/dist/user/getUserSummary.test.d.ts +1 -1
  116. package/dist/user/index.d.ts +13 -13
  117. package/dist/user/models/award-type.model.d.ts +1 -1
  118. package/dist/user/models/dated-user-achievement.model.d.ts +17 -17
  119. package/dist/user/models/dated-user-achievements-response.model.d.ts +19 -19
  120. package/dist/user/models/game-info-and-user-progress.model.d.ts +12 -12
  121. package/dist/user/models/get-game-info-and-user-progress-response.model.d.ts +14 -14
  122. package/dist/user/models/get-user-awards-response.model.d.ts +24 -22
  123. package/dist/user/models/get-user-completed-games-response.model.d.ts +13 -13
  124. package/dist/user/models/get-user-game-rank-and-score-response.model.d.ts +8 -8
  125. package/dist/user/models/get-user-points-response.model.d.ts +4 -4
  126. package/dist/user/models/get-user-progress-response.model.d.ts +10 -10
  127. package/dist/user/models/get-user-recent-achievements-response.model.d.ts +18 -18
  128. package/dist/user/models/get-user-recently-played-games-response.model.d.ts +17 -17
  129. package/dist/user/models/get-user-summary-response.model.d.ts +82 -82
  130. package/dist/user/models/index.d.ts +23 -23
  131. package/dist/user/models/user-awards.model.d.ts +24 -22
  132. package/dist/user/models/user-claims-response.model.d.ts +19 -19
  133. package/dist/user/models/user-claims.model.d.ts +19 -19
  134. package/dist/user/models/user-completed-games.model.d.ts +12 -12
  135. package/dist/user/models/user-game-rank-and-score.model.d.ts +7 -7
  136. package/dist/user/models/user-points.model.d.ts +4 -4
  137. package/dist/user/models/user-progress.model.d.ts +9 -9
  138. package/dist/user/models/user-recent-achievement.model.d.ts +16 -16
  139. package/dist/user/models/user-recently-played-games.model.d.ts +16 -16
  140. package/dist/user/models/user-summary.model.d.ts +82 -82
  141. package/dist/utils/internal/apiBaseUrl.d.ts +1 -1
  142. package/dist/utils/internal/buildRequestUrl.d.ts +2 -2
  143. package/dist/utils/internal/buildRequestUrl.test.d.ts +1 -1
  144. package/dist/utils/internal/call.d.ts +11 -20
  145. package/dist/utils/internal/call.test.d.ts +1 -1
  146. package/dist/utils/internal/id.model.d.ts +1 -1
  147. package/dist/utils/internal/index.d.ts +5 -5
  148. package/dist/utils/internal/serializeProperties.d.ts +4 -4
  149. package/dist/utils/internal/serializeProperties.test.d.ts +1 -1
  150. package/dist/utils/public/buildAuthorization.d.ts +22 -22
  151. package/dist/utils/public/buildAuthorization.test.d.ts +1 -1
  152. package/dist/utils/public/index.d.ts +3 -3
  153. package/dist/utils/public/models/auth-object.model.d.ts +19 -19
  154. package/dist/utils/public/models/index.d.ts +1 -1
  155. package/package.json +24 -31
  156. package/src/achievement/getAchievementUnlocks.test.ts +9 -12
  157. package/src/console/getConsoleIds.test.ts +3 -3
  158. package/src/console/getGameList.test.ts +3 -3
  159. package/src/feed/getAchievementOfTheWeek.test.ts +5 -5
  160. package/src/feed/getActiveClaims.test.ts +3 -3
  161. package/src/feed/getClaims.test.ts +3 -3
  162. package/src/feed/getTopTenUsers.test.ts +3 -3
  163. package/src/game/getAchievementCount.test.ts +3 -3
  164. package/src/game/getAchievementDistribution.test.ts +33 -44
  165. package/src/game/getGame.test.ts +3 -3
  166. package/src/game/getGameExtended.test.ts +3 -3
  167. package/src/game/getGameRankAndScore.test.ts +3 -3
  168. package/src/game/getGameRating.test.ts +3 -3
  169. package/src/ticket/getTicketData.test.ts +13 -13
  170. package/src/user/getAchievementsEarnedBetween.test.ts +3 -4
  171. package/src/user/getAchievementsEarnedOnDay.test.ts +3 -4
  172. package/src/user/getGameInfoAndUserProgress.test.ts +3 -4
  173. package/src/user/getUserAwards.test.ts +7 -3
  174. package/src/user/getUserAwards.ts +2 -0
  175. package/src/user/getUserClaims.test.ts +3 -3
  176. package/src/user/getUserCompletedGames.test.ts +3 -3
  177. package/src/user/getUserGameRankAndScore.test.ts +3 -3
  178. package/src/user/getUserPoints.test.ts +3 -3
  179. package/src/user/getUserProgress.test.ts +3 -3
  180. package/src/user/getUserRecentAchievements.test.ts +3 -4
  181. package/src/user/getUserRecentlyPlayedGames.test.ts +3 -4
  182. package/src/user/getUserSummary.test.ts +24 -3
  183. package/src/user/getUserSummary.ts +1 -3
  184. package/src/user/models/award-type.model.ts +5 -4
  185. package/src/user/models/get-user-awards-response.model.ts +2 -0
  186. package/src/user/models/user-awards.model.ts +2 -0
  187. package/src/utils/internal/buildRequestUrl.ts +1 -1
  188. package/src/utils/internal/call.test.ts +20 -4
  189. package/src/utils/internal/call.ts +8 -12
  190. package/src/utils/internal/serializeProperties.ts +4 -4
@@ -1,4 +1,4 @@
1
- import { rest } from "msw";
1
+ import { http, HttpResponse } from "msw";
2
2
  import { setupServer } from "msw/node";
3
3
 
4
4
  import { apiBaseUrl } from "../utils/internal";
@@ -46,8 +46,8 @@ describe("Function: getUserProgress", () => {
46
46
  };
47
47
 
48
48
  server.use(
49
- rest.get(`${apiBaseUrl}/API_GetUserProgress.php`, (_, res, ctx) =>
50
- res(ctx.json(mockResponse))
49
+ http.get(`${apiBaseUrl}/API_GetUserProgress.php`, () =>
50
+ HttpResponse.json(mockResponse)
51
51
  )
52
52
  );
53
53
 
@@ -1,4 +1,4 @@
1
- import { rest } from "msw";
1
+ import { http, HttpResponse } from "msw";
2
2
  import { setupServer } from "msw/node";
3
3
 
4
4
  import { apiBaseUrl } from "../utils/internal";
@@ -47,9 +47,8 @@ describe("Function: getUserRecentAchievements", () => {
47
47
  ];
48
48
 
49
49
  server.use(
50
- rest.get(
51
- `${apiBaseUrl}/API_GetUserRecentAchievements.php`,
52
- (_, res, ctx) => res(ctx.json(mockResponse))
50
+ http.get(`${apiBaseUrl}/API_GetUserRecentAchievements.php`, () =>
51
+ HttpResponse.json(mockResponse)
53
52
  )
54
53
  );
55
54
 
@@ -1,4 +1,4 @@
1
- import { rest } from "msw";
1
+ import { http, HttpResponse } from "msw";
2
2
  import { setupServer } from "msw/node";
3
3
 
4
4
  import { apiBaseUrl } from "../utils/internal";
@@ -45,9 +45,8 @@ describe("Function: getUserRecentlyPlayedGames", () => {
45
45
  ];
46
46
 
47
47
  server.use(
48
- rest.get(
49
- `${apiBaseUrl}/API_GetUserRecentlyPlayedGames.php`,
50
- (_, res, ctx) => res(ctx.json(mockResponse))
48
+ http.get(`${apiBaseUrl}/API_GetUserRecentlyPlayedGames.php`, () =>
49
+ HttpResponse.json(mockResponse)
51
50
  )
52
51
  );
53
52
 
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable sonarjs/no-duplicate-string */
2
2
 
3
- import { rest } from "msw";
3
+ import { http, HttpResponse } from "msw";
4
4
  import { setupServer } from "msw/node";
5
5
 
6
6
  import { apiBaseUrl } from "../utils/internal";
@@ -31,8 +31,8 @@ describe("Function: getUserSummary", () => {
31
31
  const mockResponse = mockGetUserSummaryResponse;
32
32
 
33
33
  server.use(
34
- rest.get(`${apiBaseUrl}/API_GetUserSummary.php`, (_, res, ctx) =>
35
- res(ctx.json(mockResponse))
34
+ http.get(`${apiBaseUrl}/API_GetUserSummary.php`, () =>
35
+ HttpResponse.json(mockResponse)
36
36
  )
37
37
  );
38
38
 
@@ -44,6 +44,27 @@ describe("Function: getUserSummary", () => {
44
44
  // ASSERT
45
45
  expect(response).toEqual(mockExpectedSummaryValue);
46
46
  });
47
+
48
+ it("given the API returns a 503, throws an error", async () => {
49
+ // ARRANGE
50
+ const authorization = buildAuthorization({
51
+ userName: "mockUserName",
52
+ webApiKey: "mockWebApiKey"
53
+ });
54
+
55
+ const mockResponse = "<html><body>the api is down</body></html>";
56
+
57
+ server.use(
58
+ http.get(`${apiBaseUrl}/API_GetUserSummary.php`, () =>
59
+ HttpResponse.json(mockResponse, { status: 503 })
60
+ )
61
+ );
62
+
63
+ // ASSERT
64
+ await expect(
65
+ getUserSummary(authorization, { userName: "WCopeland" })
66
+ ).rejects.toThrow();
67
+ });
47
68
  });
48
69
 
49
70
  const mockGetUserSummaryResponse: GetUserSummaryResponse = {
@@ -17,7 +17,7 @@ import type { GetUserSummaryResponse, UserSummary } from "./models";
17
17
  * @param payload.userName The user for which to retrieve the summary for.
18
18
  *
19
19
  * @param payload.recentGamesCount Optional. The number of recent games to return.
20
- * This defaults to 5.
20
+ * This defaults to 0.
21
21
  *
22
22
  * @param payload.recentAchievementsCount Optional. The number of recent achievements
23
23
  * to return. This defaults to 5.
@@ -92,5 +92,3 @@ export const getUserSummary = async (
92
92
  ]
93
93
  });
94
94
  };
95
-
96
- // TODO: add test for this
@@ -1,7 +1,8 @@
1
1
  export type AwardType =
2
- | "Mastery/Completion"
3
- | "Achievement Unlocks Yield"
4
2
  | "Achievement Points Yield"
5
- | "Patreon Supporter"
3
+ | "Achievement Unlocks Yield"
6
4
  | "Certified Legend"
7
- | "Invalid or deprecated award type";
5
+ | "Game Beaten"
6
+ | "Invalid or deprecated award type"
7
+ | "Mastery/Completion"
8
+ | "Patreon Supporter";
@@ -17,6 +17,8 @@ export interface GetUserAwardsResponse {
17
17
  HiddenAwardsCount: number;
18
18
  MasteryAwardsCount: number;
19
19
  CompletionAwardsCount: number;
20
+ BeatenHardcoreAwardsCount: number;
21
+ BeatenSoftcoreAwardsCount: number;
20
22
  EventAwardsCount: number;
21
23
  SiteAwardsCount: number;
22
24
  VisibleUserAwards: GetUserAwardsEntity[];
@@ -17,6 +17,8 @@ export interface UserAwards {
17
17
  hiddenAwardsCount: number;
18
18
  masteryAwardsCount: number;
19
19
  completionAwardsCount: number;
20
+ beatenHardcoreAwardsCount: number;
21
+ beatenSoftcoreAwardsCount: number;
20
22
  eventAwardsCount: number;
21
23
  siteAwardsCount: number;
22
24
  visibleUserAwards: UserAward[];
@@ -7,7 +7,7 @@ export const buildRequestUrl = (
7
7
  args: Record<string, string | number> = {}
8
8
  ) => {
9
9
  const concatenated = `${baseUrl}/${endpointUrl}`;
10
- const withoutDoubleSlashes = concatenated.replace(/([^:]\/)\/+/g, "$1");
10
+ const withoutDoubleSlashes = concatenated.replaceAll(/([^:]\/)\/+/g, "$1");
11
11
 
12
12
  let withArgs = withoutDoubleSlashes;
13
13
 
@@ -1,4 +1,4 @@
1
- import { rest } from "msw";
1
+ import { http, HttpResponse } from "msw";
2
2
  import { setupServer } from "msw/node";
3
3
 
4
4
  import { call } from "./call";
@@ -23,9 +23,9 @@ describe("Util: call", () => {
23
23
  const mockRequestUrl = "https://abc.xyz/v1/endpoint";
24
24
 
25
25
  server.use(
26
- rest.get(mockRequestUrl, (req, res, ctx) => {
27
- receivedMethod = req.method;
28
- return res(ctx.json({ foo: "bar" }));
26
+ http.get(mockRequestUrl, (info) => {
27
+ receivedMethod = info.request.method;
28
+ return HttpResponse.json({ foo: "bar" });
29
29
  })
30
30
  );
31
31
 
@@ -36,4 +36,20 @@ describe("Util: call", () => {
36
36
  expect(response).toEqual({ foo: "bar" });
37
37
  expect(receivedMethod).toEqual("GET");
38
38
  });
39
+
40
+ it("given the call returns an error, throws an error", async () => {
41
+ // ARRANGE
42
+ const mockRequestUrl = "https://abc.xyz/v1/endpoint2";
43
+
44
+ server.use(
45
+ http.get(mockRequestUrl, () =>
46
+ HttpResponse.text("<HTML><BODY>something bad happened</BODY></HTML>", {
47
+ status: 503
48
+ })
49
+ )
50
+ );
51
+
52
+ // ASSERT
53
+ await expect(call({ url: mockRequestUrl })).rejects.toThrow();
54
+ });
39
55
  });
@@ -1,5 +1,3 @@
1
- import unfetch from "isomorphic-unfetch";
2
-
3
1
  /**
4
2
  * Fetch an HTTP resource. This is publicly exposed in the
5
3
  * event you would like to access an endpoint that this
@@ -7,15 +5,6 @@ import unfetch from "isomorphic-unfetch";
7
5
  *
8
6
  * UNLESS YOU'RE SURE OF WHAT YOU'RE DOING, YOU PROBABLY
9
7
  * SHOULDN'T USE THIS FUNCTION.
10
- *
11
- * 2022-10-09: At the time of writing, Node.js LTS (16.x)
12
- * does not yet support fetch. As a result, we pull in
13
- * isomorphic-unfetch for Node.js compatibility. Our support
14
- * matrix includes 14.x and 16.x.
15
- *
16
- * @FIXME - When Node.js 20.x is released, remove the
17
- * isomorphic-unfetch dependency. At that point we will have
18
- * two major LTS versions that include a native fetch API.
19
8
  */
20
9
  export const call = async <
21
10
  T extends readonly any[] | Record<string, any>
@@ -24,6 +13,13 @@ export const call = async <
24
13
  }) => {
25
14
  const { url } = config;
26
15
 
27
- const rawResponse = await unfetch(url);
16
+ const rawResponse = await fetch(url);
17
+
18
+ if (!rawResponse.ok) {
19
+ throw new Error(
20
+ `HTTP Error: Status ${rawResponse.status} ${rawResponse.statusText}`
21
+ );
22
+ }
23
+
28
24
  return (await rawResponse.json()) as T;
29
25
  };
@@ -63,16 +63,16 @@ const naiveCamelCase = (originalValue: string) => {
63
63
  originalValue.charAt(0).toLowerCase() + originalValue.slice(1);
64
64
 
65
65
  // "gameID" -> "gameId"
66
- camelCased = camelCased.replace(/ID/g, "Id");
66
+ camelCased = camelCased.replaceAll("ID", "Id");
67
67
 
68
68
  // "badgeURL" --> "badgeUrl"
69
- camelCased = camelCased.replace(/URL/g, "Url");
69
+ camelCased = camelCased.replaceAll("URL", "Url");
70
70
 
71
71
  // "rAPoints" -> "raPoints"
72
- camelCased = camelCased.replace(/rA/g, "ra");
72
+ camelCased = camelCased.replaceAll("rA", "ra");
73
73
 
74
74
  // "visibleUserawards" -> "visibleUserAwards"
75
- camelCased = camelCased.replace(/visibleUserawards/g, "visibleUserAwards");
75
+ camelCased = camelCased.replaceAll("visibleUserawards", "visibleUserAwards");
76
76
 
77
77
  return camelCased;
78
78
  };