@retroachievements/api 1.4.0 → 1.5.1

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 (30) hide show
  1. package/README.md +46 -46
  2. package/dist/api.cjs +1 -1
  3. package/dist/api.cjs.map +1 -1
  4. package/dist/api.modern.js +1 -1
  5. package/dist/api.modern.js.map +1 -1
  6. package/dist/api.module.js +1 -1
  7. package/dist/api.module.js.map +1 -1
  8. package/dist/api.umd.js +1 -1
  9. package/dist/api.umd.js.map +1 -1
  10. package/dist/feed/getAchievementOfTheWeek.d.ts +3 -1
  11. package/dist/feed/models/achievement-of-the-week.model.d.ts +2 -0
  12. package/dist/feed/models/get-achievement-of-the-week-response.model.d.ts +2 -0
  13. package/dist/set-version.d.ts +1 -0
  14. package/dist/user/getAchievementsEarnedBetween.d.ts +2 -1
  15. package/dist/user/getAchievementsEarnedOnDay.d.ts +2 -1
  16. package/dist/user/models/dated-user-achievement.model.d.ts +2 -1
  17. package/dist/user/models/dated-user-achievements-response.model.d.ts +1 -0
  18. package/package.json +3 -15
  19. package/src/feed/getAchievementOfTheWeek.test.ts +26 -11
  20. package/src/feed/getAchievementOfTheWeek.ts +3 -1
  21. package/src/feed/models/achievement-of-the-week.model.ts +2 -0
  22. package/src/feed/models/get-achievement-of-the-week-response.model.ts +2 -0
  23. package/src/set-version.js +6 -0
  24. package/src/user/getAchievementsEarnedBetween.test.ts +13 -6
  25. package/src/user/getAchievementsEarnedBetween.ts +2 -1
  26. package/src/user/getAchievementsEarnedOnDay.test.ts +13 -6
  27. package/src/user/getAchievementsEarnedOnDay.ts +2 -1
  28. package/src/user/models/dated-user-achievement.model.ts +2 -1
  29. package/src/user/models/dated-user-achievements-response.model.ts +1 -0
  30. package/src/utils/internal/call.ts +7 -1
@@ -6,7 +6,10 @@ import { setupServer } from "msw/node";
6
6
  import { apiBaseUrl } from "../utils/internal";
7
7
  import { buildAuthorization } from "../utils/public";
8
8
  import { getAchievementOfTheWeek } from "./getAchievementOfTheWeek";
9
- import type { GetAchievementOfTheWeekResponse } from "./models";
9
+ import type {
10
+ AchievementOfTheWeek,
11
+ GetAchievementOfTheWeekResponse
12
+ } from "./models";
10
13
 
11
14
  const server = setupServer();
12
15
 
@@ -37,7 +40,9 @@ describe("Function: getAchievementOfTheWeek", () => {
37
40
  TrueRatio: "22",
38
41
  Author: "BigWeedSmokerMan",
39
42
  DateCreated: "2021-08-08 17:47:46",
40
- DateModified: "2021-08-09 12:20:05"
43
+ DateModified: "2021-08-09 12:20:05",
44
+ BadgeName: "185805",
45
+ BadgeURL: "/Badge/185805.png"
41
46
  },
42
47
  Console: { ID: "39", Title: "Saturn" },
43
48
  ForumTopic: { ID: "14767" },
@@ -64,8 +69,7 @@ describe("Function: getAchievementOfTheWeek", () => {
64
69
  // ACT
65
70
  const response = await getAchievementOfTheWeek(authorization);
66
71
 
67
- // ASSERT
68
- expect(response).toEqual({
72
+ const expectedResponse: AchievementOfTheWeek = {
69
73
  achievement: {
70
74
  id: 165_062,
71
75
  title: "The True Hero",
@@ -74,7 +78,9 @@ describe("Function: getAchievementOfTheWeek", () => {
74
78
  trueRatio: 22,
75
79
  author: "BigWeedSmokerMan",
76
80
  dateCreated: "2021-08-08 17:47:46",
77
- dateModified: "2021-08-09 12:20:05"
81
+ dateModified: "2021-08-09 12:20:05",
82
+ badgeName: "185805",
83
+ badgeUrl: "/Badge/185805.png"
78
84
  },
79
85
  console: { id: 39, title: "Saturn" },
80
86
  forumTopic: { id: 14_767 },
@@ -90,7 +96,10 @@ describe("Function: getAchievementOfTheWeek", () => {
90
96
  }
91
97
  ],
92
98
  unlocksCount: 40
93
- });
99
+ };
100
+
101
+ // ASSERT
102
+ expect(response).toEqual(expectedResponse);
94
103
  });
95
104
 
96
105
  it("properly sets the hardcore boolean value when cleaning properties", async () => {
@@ -109,7 +118,9 @@ describe("Function: getAchievementOfTheWeek", () => {
109
118
  TrueRatio: "22",
110
119
  Author: "BigWeedSmokerMan",
111
120
  DateCreated: "2021-08-08 17:47:46",
112
- DateModified: "2021-08-09 12:20:05"
121
+ DateModified: "2021-08-09 12:20:05",
122
+ BadgeName: "185805",
123
+ BadgeURL: "/Badge/185805.png"
113
124
  },
114
125
  Console: { ID: "39", Title: "Saturn" },
115
126
  ForumTopic: { ID: "14767" },
@@ -136,8 +147,7 @@ describe("Function: getAchievementOfTheWeek", () => {
136
147
  // ACT
137
148
  const response = await getAchievementOfTheWeek(authorization);
138
149
 
139
- // ASSERT
140
- expect(response).toEqual({
150
+ const expectedResponse: AchievementOfTheWeek = {
141
151
  achievement: {
142
152
  id: 165_062,
143
153
  title: "The True Hero",
@@ -146,7 +156,9 @@ describe("Function: getAchievementOfTheWeek", () => {
146
156
  trueRatio: 22,
147
157
  author: "BigWeedSmokerMan",
148
158
  dateCreated: "2021-08-08 17:47:46",
149
- dateModified: "2021-08-09 12:20:05"
159
+ dateModified: "2021-08-09 12:20:05",
160
+ badgeName: "185805",
161
+ badgeUrl: "/Badge/185805.png"
150
162
  },
151
163
  console: { id: 39, title: "Saturn" },
152
164
  forumTopic: { id: 14_767 },
@@ -162,6 +174,9 @@ describe("Function: getAchievementOfTheWeek", () => {
162
174
  }
163
175
  ],
164
176
  unlocksCount: 40
165
- });
177
+ };
178
+
179
+ // ASSERT
180
+ expect(response).toEqual(expectedResponse);
166
181
  });
167
182
  });
@@ -36,7 +36,9 @@ import type {
36
36
  * trueRatio: "22",
37
37
  * author: "BigWeedSmokerMan",
38
38
  * dateCreated: "2021-08-08 17:47:46",
39
- * dateModified: "2021-08-09 12:20:05"
39
+ * dateModified: "2021-08-09 12:20:05",
40
+ * badgeName: "185805",
41
+ * badgeUrl: "/Badge/185805.png"
40
42
  * },
41
43
  * console: { id: "39", title: "Saturn" },
42
44
  * forumTopic: { id: "14767" },
@@ -8,6 +8,8 @@ export interface AchievementOfTheWeek {
8
8
  author: string;
9
9
  dateCreated: string;
10
10
  dateModified: string;
11
+ badgeName: string;
12
+ badgeUrl: string;
11
13
  };
12
14
 
13
15
  console: { id: number; title: string };
@@ -8,6 +8,8 @@ export interface GetAchievementOfTheWeekResponse {
8
8
  Author: string;
9
9
  DateCreated: string;
10
10
  DateModified: string;
11
+ BadgeName: string;
12
+ BadgeURL: string;
11
13
  };
12
14
 
13
15
  Console: { ID: string; Title: string };
@@ -0,0 +1,6 @@
1
+ import packageJson from "../package.json" assert { type: "json" };
2
+
3
+ const { version } = packageJson;
4
+
5
+ process.env.PACKAGE_VERSION = version;
6
+ console.log(`ℹ️ Set User-Agent header version variable to ${version}`);
@@ -4,7 +4,10 @@ import { setupServer } from "msw/node";
4
4
  import { apiBaseUrl } from "../utils/internal";
5
5
  import { buildAuthorization } from "../utils/public";
6
6
  import { getAchievementsEarnedBetween } from "./getAchievementsEarnedBetween";
7
- import type { DatedUserAchievementsResponse } from "./models";
7
+ import type {
8
+ DatedUserAchievement,
9
+ DatedUserAchievementsResponse
10
+ } from "./models";
8
11
 
9
12
  const server = setupServer();
10
13
 
@@ -42,7 +45,8 @@ describe("Function: getAchievementsEarnedBetween", () => {
42
45
  ConsoleName: "PlayStation Portable",
43
46
  CumulScore: 40,
44
47
  BadgeURL: "/Badge/193797.png",
45
- GameURL: "/game/3571"
48
+ GameURL: "/game/3571",
49
+ Type: "progression"
46
50
  }
47
51
  ];
48
52
 
@@ -59,8 +63,7 @@ describe("Function: getAchievementsEarnedBetween", () => {
59
63
  toDate: new Date("2022-10-13")
60
64
  });
61
65
 
62
- // ASSERT
63
- expect(response).toEqual([
66
+ const expectedResponse: DatedUserAchievement[] = [
64
67
  {
65
68
  date: "2022-10-12 07:36:31",
66
69
  hardcoreMode: true,
@@ -76,8 +79,12 @@ describe("Function: getAchievementsEarnedBetween", () => {
76
79
  consoleName: "PlayStation Portable",
77
80
  cumulScore: 40,
78
81
  badgeUrl: "/Badge/193797.png",
79
- gameUrl: "/game/3571"
82
+ gameUrl: "/game/3571",
83
+ type: "progression"
80
84
  }
81
- ]);
85
+ ];
86
+
87
+ // ASSERT
88
+ expect(response).toEqual(expectedResponse);
82
89
  });
83
90
  });
@@ -57,7 +57,8 @@ import type {
57
57
  * consoleName: 'PlayStation Portable',
58
58
  * cumulScore: 120,
59
59
  * badgeUrl: '/Badge/193756.png',
60
- * gameUrl: '/game/3571'
60
+ * gameUrl: '/game/3571',
61
+ * type: 'progression'
61
62
  * }
62
63
  * ]
63
64
  * ```
@@ -4,7 +4,10 @@ import { setupServer } from "msw/node";
4
4
  import { apiBaseUrl } from "../utils/internal";
5
5
  import { buildAuthorization } from "../utils/public";
6
6
  import { getAchievementsEarnedOnDay } from "./getAchievementsEarnedOnDay";
7
- import type { DatedUserAchievementsResponse } from "./models";
7
+ import type {
8
+ DatedUserAchievement,
9
+ DatedUserAchievementsResponse
10
+ } from "./models";
8
11
 
9
12
  const server = setupServer();
10
13
 
@@ -42,7 +45,8 @@ describe("Function: getAchievementsEarnedOnDay", () => {
42
45
  ConsoleName: "PlayStation Portable",
43
46
  CumulScore: 40,
44
47
  BadgeURL: "/Badge/193797.png",
45
- GameURL: "/game/3571"
48
+ GameURL: "/game/3571",
49
+ Type: null
46
50
  }
47
51
  ];
48
52
 
@@ -58,8 +62,7 @@ describe("Function: getAchievementsEarnedOnDay", () => {
58
62
  onDate: new Date("2022-10-12")
59
63
  });
60
64
 
61
- // ASSERT
62
- expect(response).toEqual([
65
+ const expectedResponse: DatedUserAchievement[] = [
63
66
  {
64
67
  date: "2022-10-12 07:36:31",
65
68
  hardcoreMode: true,
@@ -75,8 +78,12 @@ describe("Function: getAchievementsEarnedOnDay", () => {
75
78
  consoleName: "PlayStation Portable",
76
79
  cumulScore: 40,
77
80
  badgeUrl: "/Badge/193797.png",
78
- gameUrl: "/game/3571"
81
+ gameUrl: "/game/3571",
82
+ type: null
79
83
  }
80
- ]);
84
+ ];
85
+
86
+ // ASSERT
87
+ expect(response).toEqual(expectedResponse);
81
88
  });
82
89
  });
@@ -56,7 +56,8 @@ import type {
56
56
  * consoleName: 'PlayStation Portable',
57
57
  * cumulScore: 120,
58
58
  * badgeUrl: '/Badge/193756.png',
59
- * gameUrl: '/game/3571'
59
+ * gameUrl: '/game/3571',
60
+ * type: 'progression'
60
61
  * }
61
62
  * ]
62
63
  * ```
@@ -14,4 +14,5 @@ export type DatedUserAchievement = {
14
14
  cumulScore: number;
15
15
  badgeUrl: string;
16
16
  gameUrl: string;
17
- }[];
17
+ type: "progression" | "win_condition" | "missable" | null;
18
+ };
@@ -14,6 +14,7 @@ interface DatedUserAchievementResponseEntity {
14
14
  CumulScore: number;
15
15
  BadgeURL: string;
16
16
  GameURL: string;
17
+ Type: "progression" | "win_condition" | "missable" | null;
17
18
  }
18
19
 
19
20
  export type DatedUserAchievementsResponse =
@@ -1,3 +1,5 @@
1
+ const packageVersion = process.env?.["PACKAGE_VERSION"] ?? "Unknown";
2
+
1
3
  /**
2
4
  * Fetch an HTTP resource. This is publicly exposed in the
3
5
  * event you would like to access an endpoint that this
@@ -13,7 +15,11 @@ export const call = async <
13
15
  }) => {
14
16
  const { url } = config;
15
17
 
16
- const rawResponse = await fetch(url);
18
+ const headers = new Headers({
19
+ "User-Agent": `RetroAchievements-api-js/${packageVersion}`
20
+ });
21
+
22
+ const rawResponse = await fetch(url, { headers });
17
23
 
18
24
  if (!rawResponse.ok) {
19
25
  throw new Error(