@retroachievements/api 1.2.1 → 1.4.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 (214) hide show
  1. package/README.md +38 -49
  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 +70 -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/getUserCompletionProgress.d.ts +51 -0
  105. package/dist/user/getUserCompletionProgress.test.d.ts +1 -0
  106. package/dist/user/getUserGameRankAndScore.d.ts +45 -45
  107. package/dist/user/getUserGameRankAndScore.test.d.ts +1 -1
  108. package/dist/user/getUserPoints.d.ts +30 -30
  109. package/dist/user/getUserPoints.test.d.ts +1 -1
  110. package/dist/user/getUserProfile.d.ts +24 -0
  111. package/dist/user/getUserProfile.test.d.ts +1 -0
  112. package/dist/user/getUserProgress.d.ts +50 -50
  113. package/dist/user/getUserProgress.test.d.ts +1 -1
  114. package/dist/user/getUserRecentAchievements.d.ts +49 -49
  115. package/dist/user/getUserRecentAchievements.test.d.ts +1 -1
  116. package/dist/user/getUserRecentlyPlayedGames.d.ts +50 -50
  117. package/dist/user/getUserRecentlyPlayedGames.test.d.ts +1 -1
  118. package/dist/user/getUserSummary.d.ts +32 -32
  119. package/dist/user/getUserSummary.test.d.ts +1 -1
  120. package/dist/user/index.d.ts +15 -13
  121. package/dist/user/models/award-type.model.d.ts +1 -1
  122. package/dist/user/models/dated-user-achievement.model.d.ts +17 -17
  123. package/dist/user/models/dated-user-achievements-response.model.d.ts +19 -19
  124. package/dist/user/models/game-info-and-user-progress.model.d.ts +12 -12
  125. package/dist/user/models/get-game-info-and-user-progress-response.model.d.ts +14 -14
  126. package/dist/user/models/get-user-awards-response.model.d.ts +24 -22
  127. package/dist/user/models/get-user-completed-games-response.model.d.ts +13 -13
  128. package/dist/user/models/get-user-completion-progress-response.model.d.ts +19 -0
  129. package/dist/user/models/get-user-game-rank-and-score-response.model.d.ts +8 -8
  130. package/dist/user/models/get-user-points-response.model.d.ts +4 -4
  131. package/dist/user/models/get-user-profile-response.model.d.ts +17 -0
  132. package/dist/user/models/get-user-progress-response.model.d.ts +10 -10
  133. package/dist/user/models/get-user-recent-achievements-response.model.d.ts +18 -18
  134. package/dist/user/models/get-user-recently-played-games-response.model.d.ts +17 -17
  135. package/dist/user/models/get-user-summary-response.model.d.ts +82 -82
  136. package/dist/user/models/index.d.ts +28 -23
  137. package/dist/user/models/user-awards.model.d.ts +24 -22
  138. package/dist/user/models/user-claims-response.model.d.ts +19 -19
  139. package/dist/user/models/user-claims.model.d.ts +19 -19
  140. package/dist/user/models/user-completed-games.model.d.ts +12 -12
  141. package/dist/user/models/user-completion-progress-entity.model.d.ts +13 -0
  142. package/dist/user/models/user-completion-progress.model.d.ts +6 -0
  143. package/dist/user/models/user-game-rank-and-score.model.d.ts +7 -7
  144. package/dist/user/models/user-points.model.d.ts +4 -4
  145. package/dist/user/models/user-profile.model.d.ts +17 -0
  146. package/dist/user/models/user-progress.model.d.ts +9 -9
  147. package/dist/user/models/user-recent-achievement.model.d.ts +16 -16
  148. package/dist/user/models/user-recently-played-games.model.d.ts +16 -16
  149. package/dist/user/models/user-summary.model.d.ts +82 -82
  150. package/dist/utils/internal/apiBaseUrl.d.ts +1 -1
  151. package/dist/utils/internal/buildRequestUrl.d.ts +2 -2
  152. package/dist/utils/internal/buildRequestUrl.test.d.ts +1 -1
  153. package/dist/utils/internal/call.d.ts +11 -20
  154. package/dist/utils/internal/call.test.d.ts +1 -1
  155. package/dist/utils/internal/id.model.d.ts +1 -1
  156. package/dist/utils/internal/index.d.ts +5 -5
  157. package/dist/utils/internal/serializeProperties.d.ts +4 -4
  158. package/dist/utils/internal/serializeProperties.test.d.ts +1 -1
  159. package/dist/utils/public/buildAuthorization.d.ts +22 -22
  160. package/dist/utils/public/buildAuthorization.test.d.ts +1 -1
  161. package/dist/utils/public/index.d.ts +3 -3
  162. package/dist/utils/public/models/auth-object.model.d.ts +19 -19
  163. package/dist/utils/public/models/index.d.ts +1 -1
  164. package/package.json +24 -31
  165. package/src/achievement/getAchievementUnlocks.test.ts +9 -12
  166. package/src/console/getConsoleIds.test.ts +3 -3
  167. package/src/console/getGameList.test.ts +3 -3
  168. package/src/feed/getAchievementOfTheWeek.test.ts +5 -5
  169. package/src/feed/getActiveClaims.test.ts +3 -3
  170. package/src/feed/getClaims.test.ts +3 -3
  171. package/src/feed/getTopTenUsers.test.ts +3 -3
  172. package/src/game/getAchievementCount.test.ts +3 -3
  173. package/src/game/getAchievementDistribution.test.ts +33 -44
  174. package/src/game/getGame.test.ts +4 -4
  175. package/src/game/getGame.ts +2 -8
  176. package/src/game/getGameExtended.test.ts +4 -4
  177. package/src/game/getGameExtended.ts +13 -8
  178. package/src/game/getGameRankAndScore.test.ts +3 -3
  179. package/src/game/getGameRating.test.ts +3 -3
  180. package/src/game/models/game-extended.model.ts +1 -1
  181. package/src/game/models/game.model.ts +1 -1
  182. package/src/ticket/getTicketData.test.ts +13 -13
  183. package/src/user/getAchievementsEarnedBetween.test.ts +3 -4
  184. package/src/user/getAchievementsEarnedOnDay.test.ts +3 -4
  185. package/src/user/getGameInfoAndUserProgress.test.ts +3 -4
  186. package/src/user/getUserAwards.test.ts +7 -3
  187. package/src/user/getUserAwards.ts +2 -0
  188. package/src/user/getUserClaims.test.ts +3 -3
  189. package/src/user/getUserCompletedGames.test.ts +3 -3
  190. package/src/user/getUserCompletionProgress.test.ts +81 -0
  191. package/src/user/getUserCompletionProgress.ts +83 -0
  192. package/src/user/getUserGameRankAndScore.test.ts +3 -3
  193. package/src/user/getUserPoints.test.ts +3 -3
  194. package/src/user/getUserProfile.test.ts +79 -0
  195. package/src/user/getUserProfile.ts +55 -0
  196. package/src/user/getUserProgress.test.ts +3 -3
  197. package/src/user/getUserRecentAchievements.test.ts +3 -4
  198. package/src/user/getUserRecentlyPlayedGames.test.ts +3 -4
  199. package/src/user/getUserSummary.test.ts +5 -5
  200. package/src/user/getUserSummary.ts +1 -3
  201. package/src/user/index.ts +2 -0
  202. package/src/user/models/award-type.model.ts +5 -4
  203. package/src/user/models/get-user-awards-response.model.ts +2 -0
  204. package/src/user/models/get-user-completion-progress-response.model.ts +25 -0
  205. package/src/user/models/get-user-profile-response.model.ts +17 -0
  206. package/src/user/models/index.ts +5 -0
  207. package/src/user/models/user-awards.model.ts +2 -0
  208. package/src/user/models/user-completion-progress-entity.model.ts +19 -0
  209. package/src/user/models/user-completion-progress.model.ts +7 -0
  210. package/src/user/models/user-profile.model.ts +17 -0
  211. package/src/utils/internal/buildRequestUrl.ts +1 -1
  212. package/src/utils/internal/call.test.ts +9 -10
  213. package/src/utils/internal/call.ts +1 -12
  214. package/src/utils/internal/serializeProperties.ts +4 -4
@@ -1,3 +1,3 @@
1
- export { call as unsafe_call } from "../internal/call";
2
- export * from "./buildAuthorization";
3
- export * from "./models";
1
+ export { call as unsafe_call } from "../internal/call";
2
+ export * from "./buildAuthorization";
3
+ export * from "./models";
@@ -1,19 +1,19 @@
1
- /**
2
- * Each RetroAchievements API call is uniquely authenticated
3
- * using a userName + API key combination. Your account's personal
4
- * Web API Key can be found on the Settings page.
5
- */
6
- export interface AuthObject {
7
- /**
8
- * You or your app's exact username on the RetroAchievements.org website.
9
- * For example, https://retroachievements.org/user/Scott would have a value
10
- * of "Scott".
11
- */
12
- userName: string;
13
- /**
14
- * This can be found in the "Keys" section of your Settings page on the
15
- * RetroAchievements.org website. This is a 32-digit alphanumeric key
16
- * that is case-sensitive.
17
- */
18
- webApiKey: string;
19
- }
1
+ /**
2
+ * Each RetroAchievements API call is uniquely authenticated
3
+ * using a userName + API key combination. Your account's personal
4
+ * Web API Key can be found on the Settings page.
5
+ */
6
+ export interface AuthObject {
7
+ /**
8
+ * You or your app's exact username on the RetroAchievements.org website.
9
+ * For example, https://retroachievements.org/user/Scott would have a value
10
+ * of "Scott".
11
+ */
12
+ userName: string;
13
+ /**
14
+ * This can be found in the "Keys" section of your Settings page on the
15
+ * RetroAchievements.org website. This is a 32-digit alphanumeric key
16
+ * that is case-sensitive.
17
+ */
18
+ webApiKey: string;
19
+ }
@@ -1 +1 @@
1
- export * from "./auth-object.model";
1
+ export * from "./auth-object.model";
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "raweb",
11
11
  "retro gaming"
12
12
  ],
13
- "version": "1.2.1",
13
+ "version": "1.4.0",
14
14
  "typings": "dist/index.d.ts",
15
15
  "exports": {
16
16
  ".": {
@@ -37,17 +37,12 @@
37
37
  "format:check": "prettier --check . '**/*.{json,md,js,ts,tsx}'",
38
38
  "lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
39
39
  "lint:fix": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx . --fix",
40
- "test": "NODE_OPTIONS='--no-experimental-fetch' jest --selectProjects UNIT",
41
- "test:coverage": "jest --selectProjects UNIT --coverage",
42
- "verify": "yarn format:check && yarn lint && yarn test:coverage && yarn build && yarn size && yarn docs:build",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "test:coverage": "vitest run --coverage",
43
+ "verify": "yarn format:check && yarn lint && yarn test:coverage && yarn build && yarn size",
43
44
  "size": "size-limit",
44
- "start": "microbundle watch",
45
- "docs:dev": "vitepress dev docs",
46
- "docs:build": "vitepress build docs",
47
- "docs:preview": "vitepress preview docs"
48
- },
49
- "dependencies": {
50
- "isomorphic-unfetch": "^3.1.0"
45
+ "start": "microbundle watch"
51
46
  },
52
47
  "peerDependencies": {},
53
48
  "devDependencies": {
@@ -55,33 +50,31 @@
55
50
  "@commitlint/config-conventional": "^17.4.2",
56
51
  "@digitak/esrun": "^3.2.19",
57
52
  "@size-limit/preset-small-lib": "^8.1.2",
58
- "@swc/core": "^1.3.30",
59
- "@swc/jest": "^0.2.24",
60
53
  "@tsconfig/recommended": "^1.0.2",
61
- "@types/jest": "^29.4.0",
62
- "@typescript-eslint/eslint-plugin": "^5.49.0",
63
- "@typescript-eslint/parser": "^5.49.0",
54
+ "@typescript-eslint/eslint-plugin": "^6.9.1",
55
+ "@typescript-eslint/parser": "^6.9.1",
56
+ "@vitest/coverage-v8": "^0.34.6",
64
57
  "cz-conventional-changelog": "^3.3.0",
65
58
  "dotenv-flow-cli": "^1.0.0",
66
- "eslint": "^8.33.0",
59
+ "eslint": "^8.53.0",
67
60
  "eslint-config-prettier": "^8.6.0",
68
- "eslint-import-resolver-typescript": "^3.5.3",
69
- "eslint-plugin-import": "^2.27.5",
61
+ "eslint-import-resolver-typescript": "^3.6.1",
62
+ "eslint-plugin-import": "^2.29.0",
70
63
  "eslint-plugin-simple-import-sort": "^10.0.0",
71
- "eslint-plugin-sonarjs": "^0.18.0",
72
- "eslint-plugin-unicorn": "^45.0.2",
64
+ "eslint-plugin-sonarjs": "^0.23.0",
65
+ "eslint-plugin-unicorn": "^49.0.0",
73
66
  "husky": "4.3.8",
74
- "jest": "^29.4.1",
75
67
  "microbundle": "^0.15.1",
76
- "msw": "^1.0.1",
68
+ "msw": "^2.0.3",
77
69
  "prettier": "2.8.3",
78
70
  "pretty-quick": "3.1.3",
79
71
  "size-limit": "^8.1.2",
80
- "tslib": "^2.5.0",
81
- "type-fest": "^3.5.3",
82
- "typescript": "^4.9.4",
83
- "vitepress": "^1.0.0-alpha.43",
84
- "vue": "^3.2.45"
72
+ "tslib": "^2.6.2",
73
+ "type-fest": "^4.6.0",
74
+ "typescript": "^5.2.2",
75
+ "undici": "^5.27.2",
76
+ "vite": "^4.5.0",
77
+ "vitest": "^0.34.6"
85
78
  },
86
79
  "size-limit": [
87
80
  {
@@ -117,11 +110,11 @@
117
110
  },
118
111
  "repository": {
119
112
  "type": "git",
120
- "url": "git+https://github.com/RetroAchievements/retroachievements-api-js.git"
113
+ "url": "git+https://github.com/RetroAchievements/api-js.git"
121
114
  },
122
115
  "bugs": {
123
- "url": "https://github.com/RetroAchievements/retroachievements-api-js/issues"
116
+ "url": "https://github.com/RetroAchievements/api-js/issues"
124
117
  },
125
- "homepage": "https://github.com/RetroAchievements/retroachievements-api-js#readme",
118
+ "homepage": "https://github.com/RetroAchievements/api-js#readme",
126
119
  "author": "RAWeb Team"
127
120
  }
@@ -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";
@@ -51,16 +51,13 @@ describe("Function: getAchievementUnlocks", () => {
51
51
  ]
52
52
  };
53
53
 
54
- let searchParams = "";
54
+ let requestUrl = "";
55
55
 
56
56
  server.use(
57
- rest.get(
58
- `${apiBaseUrl}/API_GetAchievementUnlocks.php`,
59
- (req, res, ctx) => {
60
- searchParams = req.url.search;
61
- return res(ctx.json(mockResponse));
62
- }
63
- )
57
+ http.get(`${apiBaseUrl}/API_GetAchievementUnlocks.php`, (info) => {
58
+ requestUrl = info.request.url;
59
+ return HttpResponse.json(mockResponse);
60
+ })
64
61
  );
65
62
 
66
63
  // ACT
@@ -71,9 +68,9 @@ describe("Function: getAchievementUnlocks", () => {
71
68
  });
72
69
 
73
70
  // ASSERT
74
- expect(searchParams).toContain("a=18000");
75
- expect(searchParams).toContain("o=1");
76
- expect(searchParams).toContain("c=1");
71
+ expect(requestUrl).toContain("a=18000");
72
+ expect(requestUrl).toContain("o=1");
73
+ expect(requestUrl).toContain("c=1");
77
74
 
78
75
  expect(response).toEqual({
79
76
  achievement: {
@@ -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";
@@ -35,8 +35,8 @@ describe("Function: getConsoleIds", () => {
35
35
  ];
36
36
 
37
37
  server.use(
38
- rest.get(`${apiBaseUrl}/API_GetConsoleIDs.php`, (_, res, ctx) =>
39
- res(ctx.json(mockResponse))
38
+ http.get(`${apiBaseUrl}/API_GetConsoleIDs.php`, () =>
39
+ HttpResponse.json(mockResponse)
40
40
  )
41
41
  );
42
42
 
@@ -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";
@@ -48,8 +48,8 @@ describe("Function: getGameList", () => {
48
48
  ];
49
49
 
50
50
  server.use(
51
- rest.get(`${apiBaseUrl}/API_GetGameList.php`, (_, res, ctx) =>
52
- res(ctx.json(mockResponse))
51
+ http.get(`${apiBaseUrl}/API_GetGameList.php`, () =>
52
+ HttpResponse.json(mockResponse)
53
53
  )
54
54
  );
55
55
 
@@ -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";
@@ -56,8 +56,8 @@ describe("Function: getAchievementOfTheWeek", () => {
56
56
  };
57
57
 
58
58
  server.use(
59
- rest.get(`${apiBaseUrl}/API_GetAchievementOfTheWeek.php`, (_, res, ctx) =>
60
- res(ctx.json(mockResponse))
59
+ http.get(`${apiBaseUrl}/API_GetAchievementOfTheWeek.php`, () =>
60
+ HttpResponse.json(mockResponse)
61
61
  )
62
62
  );
63
63
 
@@ -128,8 +128,8 @@ describe("Function: getAchievementOfTheWeek", () => {
128
128
  };
129
129
 
130
130
  server.use(
131
- rest.get(`${apiBaseUrl}/API_GetAchievementOfTheWeek.php`, (_, res, ctx) =>
132
- res(ctx.json(mockResponse))
131
+ http.get(`${apiBaseUrl}/API_GetAchievementOfTheWeek.php`, () =>
132
+ HttpResponse.json(mockResponse)
133
133
  )
134
134
  );
135
135
 
@@ -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";
@@ -51,8 +51,8 @@ describe("Function: getActiveClaims", () => {
51
51
  ];
52
52
 
53
53
  server.use(
54
- rest.get(`${apiBaseUrl}/API_GetActiveClaims.php`, (_, res, ctx) =>
55
- res(ctx.json(mockResponse))
54
+ http.get(`${apiBaseUrl}/API_GetActiveClaims.php`, () =>
55
+ HttpResponse.json(mockResponse)
56
56
  )
57
57
  );
58
58
 
@@ -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";
@@ -51,8 +51,8 @@ describe("Function: getClaims", () => {
51
51
  ];
52
52
 
53
53
  server.use(
54
- rest.get(`${apiBaseUrl}/API_GetClaims.php`, (_, res, ctx) =>
55
- res(ctx.json(mockResponse))
54
+ http.get(`${apiBaseUrl}/API_GetClaims.php`, () =>
55
+ HttpResponse.json(mockResponse)
56
56
  )
57
57
  );
58
58
 
@@ -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";
@@ -40,8 +40,8 @@ describe("Function: getTopTenUsers", () => {
40
40
  ];
41
41
 
42
42
  server.use(
43
- rest.get(`${apiBaseUrl}/API_GetTopTenUsers.php`, (_, res, ctx) =>
44
- res(ctx.json(mockResponse))
43
+ http.get(`${apiBaseUrl}/API_GetTopTenUsers.php`, () =>
44
+ HttpResponse.json(mockResponse)
45
45
  )
46
46
  );
47
47
 
@@ -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";
@@ -32,8 +32,8 @@ describe("Function: getAchievementCount", () => {
32
32
  };
33
33
 
34
34
  server.use(
35
- rest.get(`${apiBaseUrl}/API_GetAchievementCount.php`, (_, res, ctx) =>
36
- res(ctx.json(mockResponse))
35
+ http.get(`${apiBaseUrl}/API_GetAchievementCount.php`, () =>
36
+ HttpResponse.json(mockResponse)
37
37
  )
38
38
  );
39
39
 
@@ -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";
@@ -35,16 +35,14 @@ describe("Function: getAchievementDistribution", () => {
35
35
  "5": 1
36
36
  };
37
37
 
38
- let detectedSearchParams: URLSearchParams;
38
+ let requestUrl = "";
39
39
 
40
40
  server.use(
41
- rest.get(
42
- `${apiBaseUrl}/API_GetAchievementDistribution.php`,
43
- (req, res, ctx) => {
44
- detectedSearchParams = req.url.searchParams;
45
- return res(ctx.json(mockResponse));
46
- }
47
- )
41
+ http.get(`${apiBaseUrl}/API_GetAchievementDistribution.php`, (info) => {
42
+ requestUrl = info.request.url;
43
+
44
+ return HttpResponse.json(mockResponse);
45
+ })
48
46
  );
49
47
 
50
48
  // ACT
@@ -55,9 +53,9 @@ describe("Function: getAchievementDistribution", () => {
55
53
  // ASSERT
56
54
  expect(response).toEqual(mockResponse);
57
55
 
58
- expect(detectedSearchParams!.get("i")).toEqual("14402");
59
- expect(detectedSearchParams!.has("f")).toBeFalsy();
60
- expect(detectedSearchParams!.has("h")).toBeFalsy();
56
+ expect(requestUrl).toContain("i=14402");
57
+ expect(requestUrl).not.toContain("f=");
58
+ expect(requestUrl).not.toContain("h=");
61
59
  });
62
60
 
63
61
  it("given flags, successfully attaches the option to the call", async () => {
@@ -75,16 +73,13 @@ describe("Function: getAchievementDistribution", () => {
75
73
  "5": 1
76
74
  };
77
75
 
78
- let detectedSearchParams: URLSearchParams;
76
+ let requestUrl = "";
79
77
 
80
78
  server.use(
81
- rest.get(
82
- `${apiBaseUrl}/API_GetAchievementDistribution.php`,
83
- (req, res, ctx) => {
84
- detectedSearchParams = req.url.searchParams;
85
- return res(ctx.json(mockResponse));
86
- }
87
- )
79
+ http.get(`${apiBaseUrl}/API_GetAchievementDistribution.php`, (info) => {
80
+ requestUrl = info.request.url;
81
+ return HttpResponse.json(mockResponse);
82
+ })
88
83
  );
89
84
 
90
85
  // ACT
@@ -96,11 +91,11 @@ describe("Function: getAchievementDistribution", () => {
96
91
  // ASSERT
97
92
  expect(response).toEqual(mockResponse);
98
93
 
99
- expect(detectedSearchParams!.get("i")).toEqual("14402");
100
- expect(detectedSearchParams!.get("f")).toEqual(
101
- String(AchievementDistributionFlags.UnofficialAchievements)
94
+ expect(requestUrl).toContain("i=14402");
95
+ expect(requestUrl).toContain(
96
+ `f=${AchievementDistributionFlags.UnofficialAchievements}`
102
97
  );
103
- expect(detectedSearchParams!.has("h")).toBeFalsy();
98
+ expect(requestUrl).not.toContain("h=");
104
99
  });
105
100
 
106
101
  it("given a truthy hardcore value, successfully attaches the option to the call", async () => {
@@ -118,16 +113,13 @@ describe("Function: getAchievementDistribution", () => {
118
113
  "5": 1
119
114
  };
120
115
 
121
- let detectedSearchParams: URLSearchParams;
116
+ let requestUrl = "";
122
117
 
123
118
  server.use(
124
- rest.get(
125
- `${apiBaseUrl}/API_GetAchievementDistribution.php`,
126
- (req, res, ctx) => {
127
- detectedSearchParams = req.url.searchParams;
128
- return res(ctx.json(mockResponse));
129
- }
130
- )
119
+ http.get(`${apiBaseUrl}/API_GetAchievementDistribution.php`, (info) => {
120
+ requestUrl = info.request.url;
121
+ return HttpResponse.json(mockResponse);
122
+ })
131
123
  );
132
124
 
133
125
  // ACT
@@ -139,8 +131,8 @@ describe("Function: getAchievementDistribution", () => {
139
131
  // ASSERT
140
132
  expect(response).toEqual(mockResponse);
141
133
 
142
- expect(detectedSearchParams!.get("i")).toEqual("14402");
143
- expect(detectedSearchParams!.get("h")).toEqual("1");
134
+ expect(requestUrl).toContain("i=14402");
135
+ expect(requestUrl).toContain("h=1");
144
136
  });
145
137
 
146
138
  it("given a falsy hardcore value, successfully attaches the option to the call", async () => {
@@ -158,16 +150,13 @@ describe("Function: getAchievementDistribution", () => {
158
150
  "5": 1
159
151
  };
160
152
 
161
- let detectedSearchParams: URLSearchParams;
153
+ let requestUrl = "";
162
154
 
163
155
  server.use(
164
- rest.get(
165
- `${apiBaseUrl}/API_GetAchievementDistribution.php`,
166
- (req, res, ctx) => {
167
- detectedSearchParams = req.url.searchParams;
168
- return res(ctx.json(mockResponse));
169
- }
170
- )
156
+ http.get(`${apiBaseUrl}/API_GetAchievementDistribution.php`, (info) => {
157
+ requestUrl = info.request.url;
158
+ return HttpResponse.json(mockResponse);
159
+ })
171
160
  );
172
161
 
173
162
  // ACT
@@ -179,7 +168,7 @@ describe("Function: getAchievementDistribution", () => {
179
168
  // ASSERT
180
169
  expect(response).toEqual(mockResponse);
181
170
 
182
- expect(detectedSearchParams!.get("i")).toEqual("14402");
183
- expect(detectedSearchParams!.get("h")).toEqual("0");
171
+ expect(requestUrl).toContain("i=14402");
172
+ expect(requestUrl).toContain("h=0");
184
173
  });
185
174
  });
@@ -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";
@@ -49,8 +49,8 @@ describe("Function: getGame", () => {
49
49
  };
50
50
 
51
51
  server.use(
52
- rest.get(`${apiBaseUrl}/API_GetGame.php`, (_, res, ctx) =>
53
- res(ctx.json(mockResponse))
52
+ http.get(`${apiBaseUrl}/API_GetGame.php`, () =>
53
+ HttpResponse.json(mockResponse)
54
54
  )
55
55
  );
56
56
 
@@ -73,7 +73,7 @@ describe("Function: getGame", () => {
73
73
  publisher: "Activision ",
74
74
  developer: "David Crane",
75
75
  genre: "Racing",
76
- released: 1980,
76
+ released: "1980",
77
77
  gameTitle: "Dragster",
78
78
  console: "Atari 2600"
79
79
  });
@@ -45,7 +45,7 @@ import type { Game, GetGameResponse } from "./models";
45
45
  * publisher: "Activision",
46
46
  * developer: "David Crane",
47
47
  * genre: "Racing",
48
- * released: 1980,
48
+ * released: "1980",
49
49
  * gameTitle: "Dragster",
50
50
  * console: "Atari 2600"
51
51
  * }
@@ -64,12 +64,6 @@ export const getGame = async (
64
64
  const rawResponse = await call<GetGameResponse>({ url });
65
65
 
66
66
  return serializeProperties(rawResponse, {
67
- shouldCastToNumbers: [
68
- "ID",
69
- "ForumTopicID",
70
- "ConsoleID",
71
- "Flags",
72
- "Released"
73
- ]
67
+ shouldCastToNumbers: ["ID", "ForumTopicID", "ConsoleID", "Flags"]
74
68
  });
75
69
  };
@@ -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";
@@ -69,8 +69,8 @@ describe("Function: getGameExtended", () => {
69
69
  };
70
70
 
71
71
  server.use(
72
- rest.get(`${apiBaseUrl}/API_GetGameExtended.php`, (_, res, ctx) =>
73
- res(ctx.json(mockResponse))
72
+ http.get(`${apiBaseUrl}/API_GetGameExtended.php`, () =>
73
+ HttpResponse.json(mockResponse)
74
74
  )
75
75
  );
76
76
 
@@ -91,7 +91,7 @@ describe("Function: getGameExtended", () => {
91
91
  publisher: "Activision ",
92
92
  developer: "David Crane",
93
93
  genre: "Racing",
94
- released: 1980,
94
+ released: "1980",
95
95
  isFinal: false,
96
96
  consoleName: "Atari 2600",
97
97
  richPresencePatch: "2b92fa1bf9635c303b3b7f8feea3ed3c",
@@ -43,7 +43,7 @@ import type { GameExtended, GetGameExtendedResponse } from "./models";
43
43
  * publisher: "Activision",
44
44
  * developer: "David Crane",
45
45
  * genre: "Racing",
46
- * released: 1980,
46
+ * released: "1980",
47
47
  * isFinal: false,
48
48
  * consoleName: "Atari 2600",
49
49
  * richPresencePatch: "2b92fa1bf9635c303b3b7f8feea3ed3c",
@@ -73,17 +73,23 @@ import type { GameExtended, GetGameExtendedResponse } from "./models";
73
73
  */
74
74
  export const getGameExtended = async (
75
75
  authorization: AuthObject,
76
- payload: { gameId: ID }
76
+ payload: { gameId: ID; isRequestingUnofficialAchievements: boolean }
77
77
  ): Promise<GameExtended> => {
78
- const { gameId } = payload;
78
+ const { gameId, isRequestingUnofficialAchievements } = payload;
79
+
80
+ const params: Record<string, string | number> = {
81
+ i: gameId
82
+ };
83
+
84
+ if (isRequestingUnofficialAchievements) {
85
+ params["f"] = 5;
86
+ }
79
87
 
80
88
  const url = buildRequestUrl(
81
89
  apiBaseUrl,
82
90
  "/API_GetGameExtended.php",
83
91
  authorization,
84
- {
85
- i: gameId
86
- }
92
+ params
87
93
  );
88
94
 
89
95
  const rawResponse = await call<GetGameExtendedResponse>({ url });
@@ -97,8 +103,7 @@ export const getGameExtended = async (
97
103
  "TrueRatio",
98
104
  "DisplayOrder",
99
105
  "NumDistinctPlayersCasual",
100
- "NumDistinctPlayersHardcore",
101
- "Released"
106
+ "NumDistinctPlayersHardcore"
102
107
  ]
103
108
  });
104
109
  };
@@ -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";
@@ -38,8 +38,8 @@ describe("Function: getGameRankAndScore", () => {
38
38
  ];
39
39
 
40
40
  server.use(
41
- rest.get(`${apiBaseUrl}/API_GetGameRankAndScore.php`, (_, res, ctx) =>
42
- res(ctx.json(mockResponse))
41
+ http.get(`${apiBaseUrl}/API_GetGameRankAndScore.php`, () =>
42
+ HttpResponse.json(mockResponse)
43
43
  )
44
44
  );
45
45
 
@@ -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";
@@ -37,8 +37,8 @@ describe("Function: getGameRating", () => {
37
37
  };
38
38
 
39
39
  server.use(
40
- rest.get(`${apiBaseUrl}/API_GetGameRating.php`, (_, res, ctx) =>
41
- res(ctx.json(mockResponse))
40
+ http.get(`${apiBaseUrl}/API_GetGameRating.php`, () =>
41
+ HttpResponse.json(mockResponse)
42
42
  )
43
43
  );
44
44
 
@@ -14,7 +14,7 @@ export interface GameExtended {
14
14
  publisher: string;
15
15
  developer: string;
16
16
  genre: string;
17
- released: number;
17
+ released: string;
18
18
  isFinal: boolean;
19
19
  consoleName: string;
20
20
  richPresencePatch: string;
@@ -13,7 +13,7 @@ export interface Game {
13
13
  publisher: string;
14
14
  developer: string;
15
15
  genre: string;
16
- released: number;
16
+ released: string;
17
17
  gameTitle: string;
18
18
  console: string;
19
19
  }