ps99-api 1.1.0 → 2.0.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 (244) hide show
  1. package/.github/actions/test/action.yml +3 -3
  2. package/.github/workflows/release-on-main.yml +0 -1
  3. package/.github/workflows/test-on-branch.yml +1 -1
  4. package/.idea/runConfigurations/test.xml +11 -0
  5. package/.idea/runConfigurations/test_changing.xml +11 -0
  6. package/.idea/runConfigurations/test_snapshot.xml +11 -0
  7. package/.idea/runConfigurations/test_snapshot_changing.xml +12 -0
  8. package/.idea/webResources.xml +14 -0
  9. package/.releaserc +13 -0
  10. package/README.md +5 -6
  11. package/dist/index.d.ts +33 -1
  12. package/dist/index.js +33 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/ps99-api.d.ts +18 -8
  15. package/dist/ps99-api.js +7 -4
  16. package/dist/ps99-api.js.map +1 -1
  17. package/dist/responses/clan.d.ts +1 -0
  18. package/dist/responses/collection/achievement.d.ts +32 -0
  19. package/dist/responses/{collections.js → collection/achievement.js} +1 -1
  20. package/dist/responses/collection/achievement.js.map +1 -0
  21. package/dist/responses/collection/boost.d.ts +7 -0
  22. package/dist/responses/{collection.js → collection/boost.js} +1 -1
  23. package/dist/responses/collection/boost.js.map +1 -0
  24. package/dist/responses/collection/booth.d.ts +29 -0
  25. package/dist/responses/collection/booth.js +3 -0
  26. package/dist/responses/collection/booth.js.map +1 -0
  27. package/dist/responses/collection/box.d.ts +26 -0
  28. package/dist/responses/collection/box.js +3 -0
  29. package/dist/responses/collection/box.js.map +1 -0
  30. package/dist/responses/collection/buff.d.ts +9 -0
  31. package/dist/responses/collection/buff.js +3 -0
  32. package/dist/responses/collection/buff.js.map +1 -0
  33. package/dist/responses/collection/charm.d.ts +28 -0
  34. package/dist/responses/collection/charm.js +3 -0
  35. package/dist/responses/collection/charm.js.map +1 -0
  36. package/dist/responses/collection/collection-data.d.ts +9 -0
  37. package/dist/responses/collection/collection-data.js +3 -0
  38. package/dist/responses/collection/collection-data.js.map +1 -0
  39. package/dist/responses/collection/currency.d.ts +44 -0
  40. package/dist/responses/collection/currency.js +3 -0
  41. package/dist/responses/collection/currency.js.map +1 -0
  42. package/dist/responses/collection/egg.d.ts +43 -0
  43. package/dist/responses/collection/egg.js +3 -0
  44. package/dist/responses/collection/egg.js.map +1 -0
  45. package/dist/responses/collection/enchantment.d.ts +31 -0
  46. package/dist/responses/collection/enchantment.js +3 -0
  47. package/dist/responses/collection/enchantment.js.map +1 -0
  48. package/dist/responses/collection/fishing-rod.d.ts +16 -0
  49. package/dist/responses/collection/fishing-rod.js +3 -0
  50. package/dist/responses/collection/fishing-rod.js.map +1 -0
  51. package/dist/responses/collection/fruit.d.ts +27 -0
  52. package/dist/responses/collection/fruit.js +3 -0
  53. package/dist/responses/collection/fruit.js.map +1 -0
  54. package/dist/responses/collection/guild-battle.d.ts +34 -0
  55. package/dist/responses/collection/guild-battle.js +3 -0
  56. package/dist/responses/collection/guild-battle.js.map +1 -0
  57. package/dist/responses/collection/hoverboard.d.ts +40 -0
  58. package/dist/responses/collection/hoverboard.js +3 -0
  59. package/dist/responses/collection/hoverboard.js.map +1 -0
  60. package/dist/responses/collection/index.d.ts +39 -0
  61. package/dist/responses/collection/index.js +3 -0
  62. package/dist/responses/collection/index.js.map +1 -0
  63. package/dist/responses/collection/lootbox.d.ts +20 -0
  64. package/dist/responses/collection/lootbox.js +3 -0
  65. package/dist/responses/collection/lootbox.js.map +1 -0
  66. package/dist/responses/collection/mastery.d.ts +113 -0
  67. package/dist/responses/collection/mastery.js +3 -0
  68. package/dist/responses/collection/mastery.js.map +1 -0
  69. package/dist/responses/collection/merchant.d.ts +14 -0
  70. package/dist/responses/collection/merchant.js +3 -0
  71. package/dist/responses/collection/merchant.js.map +1 -0
  72. package/dist/responses/collection/misc-item.d.ts +23 -0
  73. package/dist/responses/collection/misc-item.js +3 -0
  74. package/dist/responses/collection/misc-item.js.map +1 -0
  75. package/dist/responses/collection/pet.d.ts +105 -0
  76. package/dist/responses/collection/pet.js +3 -0
  77. package/dist/responses/collection/pet.js.map +1 -0
  78. package/dist/responses/collection/potion.d.ts +29 -0
  79. package/dist/responses/collection/potion.js +3 -0
  80. package/dist/responses/collection/potion.js.map +1 -0
  81. package/dist/responses/collection/random-event.d.ts +21 -0
  82. package/dist/responses/collection/random-event.js +3 -0
  83. package/dist/responses/collection/random-event.js.map +1 -0
  84. package/dist/responses/collection/rank.d.ts +36 -0
  85. package/dist/responses/collection/rank.js +3 -0
  86. package/dist/responses/collection/rank.js.map +1 -0
  87. package/dist/responses/collection/rarity.d.ts +12 -0
  88. package/dist/responses/collection/rarity.js +3 -0
  89. package/dist/responses/collection/rarity.js.map +1 -0
  90. package/dist/responses/collection/rebirth.d.ts +19 -0
  91. package/dist/responses/collection/rebirth.js +3 -0
  92. package/dist/responses/collection/rebirth.js.map +1 -0
  93. package/dist/responses/collection/secret-room.d.ts +9 -0
  94. package/dist/responses/collection/secret-room.js +3 -0
  95. package/dist/responses/collection/secret-room.js.map +1 -0
  96. package/dist/responses/collection/seed.d.ts +47 -0
  97. package/dist/responses/collection/seed.js +3 -0
  98. package/dist/responses/collection/seed.js.map +1 -0
  99. package/dist/responses/collection/shovel.d.ts +10 -0
  100. package/dist/responses/collection/shovel.js +3 -0
  101. package/dist/responses/collection/shovel.js.map +1 -0
  102. package/dist/responses/collection/sprinkler.d.ts +23 -0
  103. package/dist/responses/collection/sprinkler.js +3 -0
  104. package/dist/responses/collection/sprinkler.js.map +1 -0
  105. package/dist/responses/collection/ultimate.d.ts +28 -0
  106. package/dist/responses/collection/ultimate.js +3 -0
  107. package/dist/responses/collection/ultimate.js.map +1 -0
  108. package/dist/responses/collection/upgrade.d.ts +51 -0
  109. package/dist/responses/collection/upgrade.js +3 -0
  110. package/dist/responses/collection/upgrade.js.map +1 -0
  111. package/dist/responses/collection/watering-can.d.ts +10 -0
  112. package/dist/responses/collection/watering-can.js +3 -0
  113. package/dist/responses/collection/watering-can.js.map +1 -0
  114. package/dist/responses/collection/world.d.ts +12 -0
  115. package/dist/responses/collection/world.js +3 -0
  116. package/dist/responses/collection/world.js.map +1 -0
  117. package/dist/responses/collection/zone-flag.d.ts +23 -0
  118. package/dist/responses/collection/zone-flag.js +3 -0
  119. package/dist/responses/collection/zone-flag.js.map +1 -0
  120. package/dist/responses/collection/zone.d.ts +104 -0
  121. package/dist/responses/collection/zone.js +3 -0
  122. package/dist/responses/collection/zone.js.map +1 -0
  123. package/dump-result.js +16 -4
  124. package/example-web/react/package-lock.json +4900 -0
  125. package/example-web/react/package.json +28 -0
  126. package/example-web/react/public/index.html +12 -0
  127. package/example-web/react/src/App.css +95 -0
  128. package/example-web/react/src/App.tsx +32 -0
  129. package/example-web/react/src/ClanDetails.css +39 -0
  130. package/example-web/react/src/ClanDetails.tsx +119 -0
  131. package/example-web/react/src/Image.tsx +46 -0
  132. package/example-web/react/src/index.tsx +5 -0
  133. package/example-web/react/tsconfig.json +16 -0
  134. package/example-web/react/webpack.config.js +36 -0
  135. package/example-web/react2/package-lock.json +5248 -0
  136. package/example-web/react2/package.json +30 -0
  137. package/example-web/react2/public/_redirects +1 -0
  138. package/example-web/react2/public/icons/icon-192x192.png +0 -0
  139. package/example-web/react2/public/icons/icon-512x512.png +0 -0
  140. package/example-web/react2/public/index.html +31 -0
  141. package/example-web/react2/public/manifest.json +20 -0
  142. package/example-web/react2/public/service-worker.js +63 -0
  143. package/example-web/react2/src/App.tsx +33 -0
  144. package/example-web/react2/src/components/AchievementsComponent.tsx +41 -0
  145. package/example-web/react2/src/components/BoostsComponent.tsx +24 -0
  146. package/example-web/react2/src/components/BoothsComponent.tsx +32 -0
  147. package/example-web/react2/src/components/BoxesComponent.tsx +35 -0
  148. package/example-web/react2/src/components/BuffsComponent.tsx +25 -0
  149. package/example-web/react2/src/components/CharmsComponent.tsx +41 -0
  150. package/example-web/react2/src/components/CollectionConfigIndex.tsx +53 -0
  151. package/example-web/react2/src/components/CollectionsIndex.tsx +33 -0
  152. package/example-web/react2/src/components/CurrencyComponent.tsx +65 -0
  153. package/example-web/react2/src/components/DynamicCollectionConfigData.tsx +94 -0
  154. package/example-web/react2/src/components/EggsComponent.tsx +62 -0
  155. package/example-web/react2/src/components/EnchantsComponent.tsx +46 -0
  156. package/example-web/react2/src/components/ErrorComponent.tsx +16 -0
  157. package/example-web/react2/src/components/FishingRodsComponent.tsx +42 -0
  158. package/example-web/react2/src/components/FruitsComponent.tsx +36 -0
  159. package/example-web/react2/src/components/GenericFetchComponent.tsx +53 -0
  160. package/example-web/react2/src/components/GuildBattlesComponent.tsx +76 -0
  161. package/example-web/react2/src/components/Header.tsx +27 -0
  162. package/example-web/react2/src/components/HomePage.tsx +14 -0
  163. package/example-web/react2/src/components/HoverboardsComponent.tsx +47 -0
  164. package/example-web/react2/src/components/ImageComponent.tsx +64 -0
  165. package/example-web/react2/src/components/LootboxesComponent.tsx +26 -0
  166. package/example-web/react2/src/components/MasteryComponent.tsx +56 -0
  167. package/example-web/react2/src/components/MerchantsComponent.tsx +45 -0
  168. package/example-web/react2/src/components/MiscItemsComponent.tsx +37 -0
  169. package/example-web/react2/src/components/PetsComponent.tsx +62 -0
  170. package/example-web/react2/src/components/PotionsComponent.tsx +49 -0
  171. package/example-web/react2/src/components/RandomEventsComponent.tsx +46 -0
  172. package/example-web/react2/src/components/RanksComponent.tsx +87 -0
  173. package/example-web/react2/src/components/RarityComponent.tsx +24 -0
  174. package/example-web/react2/src/components/RebirthsComponent.tsx +37 -0
  175. package/example-web/react2/src/components/SecretRoomsComponent.tsx +23 -0
  176. package/example-web/react2/src/components/SeedsComponent.tsx +74 -0
  177. package/example-web/react2/src/components/ShovelsComponent.tsx +28 -0
  178. package/example-web/react2/src/components/SprinklersComponent.tsx +29 -0
  179. package/example-web/react2/src/components/UltimatesComponent.tsx +35 -0
  180. package/example-web/react2/src/components/UpgradesComponent.tsx +74 -0
  181. package/example-web/react2/src/components/WateringCansComponent.tsx +31 -0
  182. package/example-web/react2/src/components/WorldsComponent.tsx +36 -0
  183. package/example-web/react2/src/components/ZoneFlagsComponent.tsx +33 -0
  184. package/example-web/react2/src/components/ZonesComponent.tsx +89 -0
  185. package/example-web/react2/src/index.tsx +7 -0
  186. package/example-web/react2/tsconfig.json +16 -0
  187. package/example-web/react2/webpack.config.js +38 -0
  188. package/jest.config.js +2 -2
  189. package/package.json +16 -9
  190. package/src/__tests__/__snapshots__/ps99-api-changes.ts.snap +92438 -0
  191. package/src/__tests__/__snapshots__/ps99-api-live.ts.snap +1313 -86
  192. package/src/__tests__/ps99-api-changes.ts +9 -11
  193. package/src/__tests__/ps99-api-live.ts +35 -36
  194. package/src/__tests__/ps99-api.ts +2 -2
  195. package/src/index.ts +33 -1
  196. package/src/ps99-api.ts +21 -12
  197. package/src/responses/activeClanBattle.ts +30 -30
  198. package/src/responses/clan.ts +70 -70
  199. package/src/responses/clans.ts +9 -9
  200. package/src/responses/collection/achievement.ts +42 -0
  201. package/src/responses/collection/boost.ts +14 -0
  202. package/src/responses/collection/booth.ts +31 -0
  203. package/src/responses/collection/box.ts +28 -0
  204. package/src/responses/collection/buff.ts +11 -0
  205. package/src/responses/collection/charm.ts +32 -0
  206. package/src/responses/collection/collection-data.ts +14 -0
  207. package/src/responses/collection/currency.ts +54 -0
  208. package/src/responses/collection/egg.ts +47 -0
  209. package/src/responses/collection/enchantment.ts +35 -0
  210. package/src/responses/collection/fishing-rod.ts +21 -0
  211. package/src/responses/collection/fruit.ts +31 -0
  212. package/src/responses/collection/guild-battle.ts +45 -0
  213. package/src/responses/collection/hoverboard.ts +46 -0
  214. package/src/responses/collection/index.ts +78 -0
  215. package/src/responses/collection/lootbox.ts +23 -0
  216. package/src/responses/collection/mastery.ts +119 -0
  217. package/src/responses/collection/merchant.ts +16 -0
  218. package/src/responses/collection/misc-item.ts +26 -0
  219. package/src/responses/collection/pet.ts +115 -0
  220. package/src/responses/collection/potion.ts +33 -0
  221. package/src/responses/collection/random-event.ts +27 -0
  222. package/src/responses/collection/rank.ts +42 -0
  223. package/src/responses/collection/rarity.ts +14 -0
  224. package/src/responses/collection/rebirth.ts +22 -0
  225. package/src/responses/collection/secret-room.ts +14 -0
  226. package/src/responses/collection/seed.ts +55 -0
  227. package/src/responses/collection/shovel.ts +12 -0
  228. package/src/responses/collection/sprinkler.ts +26 -0
  229. package/src/responses/collection/ultimate.ts +31 -0
  230. package/src/responses/collection/upgrade.ts +58 -0
  231. package/src/responses/collection/watering-can.ts +15 -0
  232. package/src/responses/collection/world.ts +14 -0
  233. package/src/responses/collection/zone-flag.ts +26 -0
  234. package/src/responses/collection/zone.ts +115 -0
  235. package/src/responses/exists.ts +8 -8
  236. package/src/responses/rap.ts +9 -9
  237. package/tsconfig.json +2 -2
  238. package/.release.rc +0 -8
  239. package/dist/responses/collection.d.ts +0 -1357
  240. package/dist/responses/collection.js.map +0 -1
  241. package/dist/responses/collections.d.ts +0 -5
  242. package/dist/responses/collections.js.map +0 -1
  243. package/src/responses/collection.ts +0 -1543
  244. package/src/responses/collections.ts +0 -3
@@ -1,36 +1,34 @@
1
1
  import { expect, test } from "@jest/globals";
2
2
  import { PetSimulator99API } from "../ps99-api";
3
3
 
4
-
5
4
  /**
6
- * It's hard to snapshot these because certain values will always be changing but useful for dump-result checks
5
+ * It's hard assert these snapshots so .skip em
7
6
  */
8
- describe.skip("Pet Simulator Public Live API Test - Changing Items", () => {
7
+ describe("Pet Simulator Public Live API Test - Changing Items", () => {
9
8
  const api = new PetSimulator99API();
10
9
 
11
- test('Active Clan Battle', async () => {
10
+ test("Active Clan Battle", async () => {
12
11
  const results = await api.getActiveClanBattle();
13
12
  expect(results).toMatchSnapshot();
14
13
  });
15
14
 
16
- test('Get Clan', async () => {
17
- const results = await api.getClan('MMFC');
15
+ test("Get Clan", async () => {
16
+ const results = await api.getClan("MMFC");
18
17
  expect(results).toMatchSnapshot();
19
18
  });
20
19
 
21
- test('Get Clans', async () => {
22
- const results = await api.getClans({pageSize: 1});
20
+ test("Get Clans", async () => {
21
+ const results = await api.getClans({ pageSize: 1 });
23
22
  expect(results).toMatchSnapshot();
24
23
  });
25
24
 
26
- test('Get Exists', async () => {
25
+ test("Get Exists", async () => {
27
26
  const results = await api.getExists();
28
27
  expect(results).toMatchSnapshot();
29
28
  });
30
29
 
31
- test('Get RAP', async () => {
30
+ test("Get RAP", async () => {
32
31
  const results = await api.getRAP();
33
32
  expect(results).toMatchSnapshot();
34
33
  });
35
-
36
34
  });
@@ -1,177 +1,176 @@
1
1
  import { expect, test } from "@jest/globals";
2
2
  import { PetSimulator99API } from "../ps99-api";
3
3
 
4
-
5
4
  describe("Pet Simulator Public Live API Test", () => {
6
5
  const api = new PetSimulator99API();
7
6
 
8
- test('Collections Have Not Changed', async () => {
7
+ test("Collections Have Not Changed", async () => {
9
8
  const results = await api.getCollections();
10
9
  expect(results).toMatchSnapshot();
11
10
  });
12
-
11
+
13
12
  test("Achievements shape", async () => {
14
- const results = await api.getCollection('Achievements');
13
+ const results = await api.getCollection("Achievements");
15
14
  expect(results).toMatchSnapshot();
16
15
  });
17
16
 
18
17
  test("Boosts shape", async () => {
19
- const results = await api.getCollection('Boosts');
18
+ const results = await api.getCollection("Boosts");
20
19
  expect(results).toMatchSnapshot();
21
20
  });
22
21
 
23
22
  test("Booths shape", async () => {
24
- const results = await api.getCollection('Booths');
23
+ const results = await api.getCollection("Booths");
25
24
  expect(results).toMatchSnapshot();
26
25
  });
27
26
 
28
27
  test("Boxes shape", async () => {
29
- const results = await api.getCollection('Boxes');
28
+ const results = await api.getCollection("Boxes");
30
29
  expect(results).toMatchSnapshot();
31
30
  });
32
31
 
33
32
  test("Buffs shape", async () => {
34
- const results = await api.getCollection('Buffs');
33
+ const results = await api.getCollection("Buffs");
35
34
  expect(results).toMatchSnapshot();
36
35
  });
37
36
 
38
37
  test("Charms shape", async () => {
39
- const results = await api.getCollection('Charms');
38
+ const results = await api.getCollection("Charms");
40
39
  expect(results).toMatchSnapshot();
41
40
  });
42
41
 
43
42
  test("Currency shape", async () => {
44
- const results = await api.getCollection('Currency');
43
+ const results = await api.getCollection("Currency");
45
44
  expect(results).toMatchSnapshot();
46
45
  });
47
46
 
48
47
  test("Eggs shape", async () => {
49
- const results = await api.getCollection('Eggs');
48
+ const results = await api.getCollection("Eggs");
50
49
  expect(results).toMatchSnapshot();
51
50
  });
52
51
 
53
52
  test("Enchants shape", async () => {
54
- const results = await api.getCollection('Enchants');
53
+ const results = await api.getCollection("Enchants");
55
54
  expect(results).toMatchSnapshot();
56
55
  });
57
56
 
58
57
  test("FishingRods shape", async () => {
59
- const results = await api.getCollection('FishingRods');
58
+ const results = await api.getCollection("FishingRods");
60
59
  expect(results).toMatchSnapshot();
61
60
  });
62
61
 
63
62
  test("Fruits shape", async () => {
64
- const results = await api.getCollection('Fruits');
63
+ const results = await api.getCollection("Fruits");
65
64
  expect(results).toMatchSnapshot();
66
65
  });
67
66
 
68
67
  test("GuildBattles shape", async () => {
69
- const results = await api.getCollection('GuildBattles');
68
+ const results = await api.getCollection("GuildBattles");
70
69
  expect(results).toMatchSnapshot();
71
70
  });
72
71
 
73
72
  test("Hoverboards shape", async () => {
74
- const results = await api.getCollection('Hoverboards');
73
+ const results = await api.getCollection("Hoverboards");
75
74
  expect(results).toMatchSnapshot();
76
75
  });
77
76
 
78
77
  test("Lootboxes shape", async () => {
79
- const results = await api.getCollection('Lootboxes');
78
+ const results = await api.getCollection("Lootboxes");
80
79
  expect(results).toMatchSnapshot();
81
80
  });
82
81
 
83
82
  test("Mastery shape", async () => {
84
- const results = await api.getCollection('Mastery');
83
+ const results = await api.getCollection("Mastery");
85
84
  expect(results).toMatchSnapshot();
86
85
  });
87
86
 
88
87
  test("MiscItems shape", async () => {
89
- const results = await api.getCollection('MiscItems');
88
+ const results = await api.getCollection("MiscItems");
90
89
  expect(results).toMatchSnapshot();
91
90
  });
92
91
 
93
92
  test("Pets shape", async () => {
94
- const results = await api.getCollection('Pets');
93
+ const results = await api.getCollection("Pets");
95
94
  expect(results).toMatchSnapshot();
96
95
  });
97
96
 
98
97
  test("Potions shape", async () => {
99
- const results = await api.getCollection('Potions');
98
+ const results = await api.getCollection("Potions");
100
99
  expect(results).toMatchSnapshot();
101
100
  });
102
101
 
103
102
  test("RandomEvents shape", async () => {
104
- const results = await api.getCollection('RandomEvents');
103
+ const results = await api.getCollection("RandomEvents");
105
104
  expect(results).toMatchSnapshot();
106
105
  });
107
106
 
108
107
  test("Ranks shape", async () => {
109
- const results = await api.getCollection('Ranks');
108
+ const results = await api.getCollection("Ranks");
110
109
  expect(results).toMatchSnapshot();
111
110
  });
112
111
 
113
112
  test("Rarity shape", async () => {
114
- const results = await api.getCollection('Rarity');
113
+ const results = await api.getCollection("Rarity");
115
114
  expect(results).toMatchSnapshot();
116
115
  });
117
116
 
118
117
  test("Rebirths shape", async () => {
119
- const results = await api.getCollection('Rebirths');
118
+ const results = await api.getCollection("Rebirths");
120
119
  expect(results).toMatchSnapshot();
121
120
  });
122
121
 
123
122
  test("SecretRooms shape", async () => {
124
- const results = await api.getCollection('SecretRooms');
123
+ const results = await api.getCollection("SecretRooms");
125
124
  expect(results).toMatchSnapshot();
126
125
  });
127
126
 
128
127
  test("Seeds shape", async () => {
129
- const results = await api.getCollection('Seeds');
128
+ const results = await api.getCollection("Seeds");
130
129
  expect(results).toMatchSnapshot();
131
130
  });
132
131
 
133
132
  test("Shovels shape", async () => {
134
- const results = await api.getCollection('Shovels');
133
+ const results = await api.getCollection("Shovels");
135
134
  expect(results).toMatchSnapshot();
136
135
  });
137
136
 
138
137
  test("Sprinklers shape", async () => {
139
- const results = await api.getCollection('Sprinklers');
138
+ const results = await api.getCollection("Sprinklers");
140
139
  expect(results).toMatchSnapshot();
141
140
  });
142
141
 
143
142
  test("Ultimates shape", async () => {
144
- const results = await api.getCollection('Ultimates');
143
+ const results = await api.getCollection("Ultimates");
145
144
  expect(results).toMatchSnapshot();
146
145
  });
147
146
 
148
147
  test("Upgrades shape", async () => {
149
- const results = await api.getCollection('Upgrades');
148
+ const results = await api.getCollection("Upgrades");
150
149
  expect(results).toMatchSnapshot();
151
150
  });
152
151
 
153
152
  test("WateringCans shape", async () => {
154
- const results = await api.getCollection('WateringCans');
153
+ const results = await api.getCollection("WateringCans");
155
154
  expect(results).toMatchSnapshot();
156
155
  });
157
156
 
158
157
  test("Worlds shape", async () => {
159
- const results = await api.getCollection('Worlds');
158
+ const results = await api.getCollection("Worlds");
160
159
  expect(results).toMatchSnapshot();
161
160
  });
162
161
 
163
162
  test("ZoneFlags shape", async () => {
164
- const results = await api.getCollection('ZoneFlags');
163
+ const results = await api.getCollection("ZoneFlags");
165
164
  expect(results).toMatchSnapshot();
166
165
  });
167
166
 
168
167
  test("Zones shape", async () => {
169
- const results = await api.getCollection('Zones');
168
+ const results = await api.getCollection("Zones");
170
169
  expect(results).toMatchSnapshot();
171
170
  });
172
171
 
173
172
  test("Merchants shape", async () => {
174
- const results = await api.getCollection('Merchants');
173
+ const results = await api.getCollection("Merchants");
175
174
  expect(results).toMatchSnapshot();
176
175
  });
177
176
  });
@@ -145,7 +145,7 @@ describe("Pet Simulator Public API Tests", () => {
145
145
  params: {},
146
146
  responseEncoding: "BINARY",
147
147
  responseType: "arraybuffer",
148
- url: "https://biggamesapi.io/api/image/14615650278",
148
+ url: "https://biggamesapi.io/image/14615650278",
149
149
  });
150
150
  await api.getImage("rbxassetid://14976576332");
151
151
  expect(axios).toBeCalledWith({
@@ -153,7 +153,7 @@ describe("Pet Simulator Public API Tests", () => {
153
153
  params: {},
154
154
  responseEncoding: "BINARY",
155
155
  responseType: "arraybuffer",
156
- url: "https://biggamesapi.io/api/image/14976576332",
156
+ url: "https://biggamesapi.io/image/14976576332",
157
157
  });
158
158
  });
159
159
  });
package/src/index.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from "./ps99-api";
2
2
  export * from "./request-client/common";
3
3
  export * from "./request-client/axios";
4
- export * from "./responses/collections";
5
4
  export * from "./responses/clan";
6
5
  export * from "./responses/clans";
7
6
  export * from "./params/clans";
@@ -9,3 +8,36 @@ export * from "./responses/exists";
9
8
  export * from "./responses/rap";
10
9
  export * from "./responses/activeClanBattle";
11
10
  export * from "./responses/collection";
11
+ export * from "./responses/collection/achievement";
12
+ export * from "./responses/collection/boost";
13
+ export * from "./responses/collection/booth";
14
+ export * from "./responses/collection/box";
15
+ export * from "./responses/collection/buff";
16
+ export * from "./responses/collection/charm";
17
+ export * from "./responses/collection/currency";
18
+ export * from "./responses/collection/egg";
19
+ export * from "./responses/collection/enchantment";
20
+ export * from "./responses/collection/fishing-rod";
21
+ export * from "./responses/collection/fruit";
22
+ export * from "./responses/collection/guild-battle";
23
+ export * from "./responses/collection/hoverboard";
24
+ export * from "./responses/collection/lootbox";
25
+ export * from "./responses/collection/mastery";
26
+ export * from "./responses/collection/merchant";
27
+ export * from "./responses/collection/misc-item";
28
+ export * from "./responses/collection/pet";
29
+ export * from "./responses/collection/potion";
30
+ export * from "./responses/collection/random-event";
31
+ export * from "./responses/collection/rank";
32
+ export * from "./responses/collection/rarity";
33
+ export * from "./responses/collection/rebirth";
34
+ export * from "./responses/collection/secret-room";
35
+ export * from "./responses/collection/seed";
36
+ export * from "./responses/collection/shovel";
37
+ export * from "./responses/collection/sprinkler";
38
+ export * from "./responses/collection/ultimate";
39
+ export * from "./responses/collection/upgrade";
40
+ export * from "./responses/collection/watering-can";
41
+ export * from "./responses/collection/world";
42
+ export * from "./responses/collection/zone-flag";
43
+ export * from "./responses/collection/zone";
package/src/ps99-api.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { ApiRequestParams, RequestClient } from "./request-client/common";
2
2
  import { getAxiosRequest } from "./request-client/axios";
3
- import { CollectionsResponseBody } from "./responses/collections";
4
- import {Collection, GetCollectionResponse} from "./responses/collection";
3
+ import {Collection, CollectionName} from "./responses/collection";
5
4
  import { ClanResponseBody } from "./responses/clan";
6
5
  import { ClansResponseBody } from "./responses/clans";
7
6
  import { ClansSort, GetClansParams, SortOrder } from "./params/clans";
@@ -12,6 +11,11 @@ import { ActiveClanBattleResponseBody } from "./responses/activeClanBattle";
12
11
  export type PetSimulator99APIOptions = {
13
12
  requestClient?: RequestClient;
14
13
  };
14
+
15
+ export type ApiResponseBody<T> =
16
+ | { status: "ok"; data: T }
17
+ | { status: "error"; error: { message: string; ignore: boolean } };
18
+
15
19
  export class PetSimulator99API {
16
20
  public requestClient: RequestClient;
17
21
 
@@ -49,12 +53,12 @@ export class PetSimulator99API {
49
53
  }
50
54
 
51
55
  getCollections() {
52
- return this.request<CollectionsResponseBody>("/api/collections");
56
+ return this.request<ApiResponseBody<CollectionName[]>>("/api/collections");
53
57
  }
54
58
 
55
- getCollection<C extends Collection>(collection: C) {
56
- return this.request<GetCollectionResponse<C>>(
57
- `/api/collection/${collection}`,
59
+ getCollection<C extends CollectionName>(collectionName: C) {
60
+ return this.request<ApiResponseBody<Collection<C>[]>>(
61
+ `/api/collection/${collectionName}`,
58
62
  );
59
63
  }
60
64
 
@@ -72,15 +76,17 @@ export class PetSimulator99API {
72
76
  sort: sort || "Points",
73
77
  sortOrder: sortOrder || "desc",
74
78
  };
75
- return this.request<ClansResponseBody>("/api/clans", { params });
79
+ return this.request<ApiResponseBody<ClansResponseBody>>("/api/clans", {
80
+ params,
81
+ });
76
82
  }
77
83
 
78
84
  getClan(name: string) {
79
- return this.request<ClanResponseBody>(`/api/clan/${name}`);
85
+ return this.request<ApiResponseBody<ClanResponseBody>>(`/api/clan/${name}`);
80
86
  }
81
87
 
82
88
  getExists() {
83
- return this.request<ExistsResponseBody>(`/api/exists`);
89
+ return this.request<ApiResponseBody<ExistsResponseBody>>(`/api/exists`);
84
90
  }
85
91
 
86
92
  getRAP() {
@@ -88,14 +94,17 @@ export class PetSimulator99API {
88
94
  }
89
95
 
90
96
  getActiveClanBattle() {
91
- return this.request<ActiveClanBattleResponseBody>(`/api/activeClanBattle`);
97
+ return this.request<ApiResponseBody<ActiveClanBattleResponseBody>>(
98
+ `/api/activeClanBattle`,
99
+ );
92
100
  }
93
101
 
94
- getImage(rbxassetid: string) {
102
+ /** resolve rbxassetid:// references to image/png */
103
+ getImage(rbxassetid: string): Promise<Blob> {
95
104
  if (rbxassetid.startsWith("rbxassetid://")) {
96
105
  rbxassetid = rbxassetid.slice(13);
97
106
  }
98
- return this.request<Blob>(`/api/image/${rbxassetid}`, {
107
+ return this.request<Blob>(`/image/${rbxassetid}`, {
99
108
  responseType: "arraybuffer",
100
109
  responseEncoding: "BINARY",
101
110
  });
@@ -1,43 +1,43 @@
1
1
  export type ActiveBattleData = {
2
- _id: string
3
- category: string
4
- configData: ActiveBattleConfigData
5
- configName: string
6
- }
2
+ _id: string;
3
+ category: string;
4
+ configData: ActiveBattleConfigData;
5
+ configName: string;
6
+ };
7
7
 
8
8
  export type ActiveBattleConfigData = {
9
- FinishTime: number
10
- PlacementRewards: ActiveBattlePlacementReward[]
11
- Rewards: ActiveBattleRewards
12
- StartTime: number
13
- Title: string
14
- _id: string
15
- _script: any
16
- }
9
+ FinishTime: number;
10
+ PlacementRewards: ActiveBattlePlacementReward[];
11
+ Rewards: ActiveBattleRewards;
12
+ StartTime: number;
13
+ Title: string;
14
+ _id: string;
15
+ _script: any;
16
+ };
17
17
 
18
18
  export type ActiveBattlePlacementReward = {
19
- Best: number
20
- Item: ActiveBattleItem
21
- Worst: number
22
- }
19
+ Best: number;
20
+ Item: ActiveBattleItem;
21
+ Worst: number;
22
+ };
23
23
 
24
24
  export type ActiveBattleItem = {
25
- _data: ActiveBattleItemData
26
- }
25
+ _data: ActiveBattleItemData;
26
+ };
27
27
 
28
28
  export type ActiveBattleItemData = {
29
- id: string
30
- pt?: number
31
- }
29
+ id: string;
30
+ pt?: number;
31
+ };
32
32
 
33
33
  export type ActiveBattleRewards = {
34
- Bronze: any[]
35
- Gold: any[]
36
- Good: any[]
37
- Silver: any[]
38
- }
34
+ Bronze: any[];
35
+ Gold: any[];
36
+ Good: any[];
37
+ Silver: any[];
38
+ };
39
39
 
40
40
  export type ActiveClanBattleResponseBody = {
41
- status: string
42
- data: ActiveBattleData
43
- }
41
+ status: string;
42
+ data: ActiveBattleData;
43
+ };
@@ -1,91 +1,91 @@
1
1
  export type ClanResponseBody = {
2
- Battles: Battles
3
- BronzeMedals: number
4
- CountryCode: string
5
- Created: number
6
- DepositedDiamonds: number
7
- Desc: string
8
- DiamondContributions: DiamondContributions
9
- GoodMedals: number
10
- GuildLevel: number
11
- Icon: string
12
- LastKickTimestamp: number
13
- MemberCapacity: number
14
- Members: Member[]
15
- Name: string
16
- OfficerCapacity: number
17
- Owner: number
18
- SilverMedals: number
19
- Status: string
20
- StatusTimestamp: number
21
- StatusUsername: string
22
- }
2
+ Battles: Battles;
3
+ BronzeMedals: number;
4
+ CountryCode: string;
5
+ Created: number;
6
+ DepositedDiamonds: number;
7
+ Desc: string;
8
+ DiamondContributions: DiamondContributions;
9
+ GoodMedals: number;
10
+ GuildLevel: number;
11
+ /** use {@link PetSimulator99API.getImage} to get an image blob **/
12
+ Icon: string;
13
+ LastKickTimestamp: number;
14
+ MemberCapacity: number;
15
+ Members: Member[];
16
+ Name: string;
17
+ OfficerCapacity: number;
18
+ Owner: number;
19
+ SilverMedals: number;
20
+ Status: string;
21
+ StatusTimestamp: number;
22
+ StatusUsername: string;
23
+ };
23
24
 
24
- export type Battles = {[key: string]: PointsBattle | GoalBattle}
25
+ export type Battles = { [key: string]: PointsBattle | GoalBattle };
25
26
 
26
27
  export type PointsBattle = {
27
- AwardUserIDs: number[]
28
- BattleID: string
29
- EarnedMedal?: string
30
- Place?: number
31
- PointContributions: PointContribution[]
32
- Points: number
33
- ProcessedAwards: boolean
34
- }
28
+ AwardUserIDs: number[];
29
+ BattleID: string;
30
+ EarnedMedal?: string;
31
+ Place?: number;
32
+ PointContributions: PointContribution[];
33
+ Points: number;
34
+ ProcessedAwards: boolean;
35
+ };
35
36
 
36
37
  export type PointContribution = {
37
- Points: number
38
- UserID: number
39
- }
38
+ Points: number;
39
+ UserID: number;
40
+ };
40
41
 
41
42
  export type GoalBattle = {
42
- AwardUserIDs: any[]
43
- BattleID: string
44
- EarnedMedal?: string
45
- Goals: Goal[]
46
- Place?: number
47
- PointContributions: PointContribution[]
48
- Points: number
49
- ProcessedAwards: boolean
50
- }
43
+ AwardUserIDs: any[];
44
+ BattleID: string;
45
+ EarnedMedal?: string;
46
+ Goals: Goal[];
47
+ Place?: number;
48
+ PointContributions: PointContribution[];
49
+ Points: number;
50
+ ProcessedAwards: boolean;
51
+ };
51
52
 
52
53
  export type Goal = {
53
- Amount: number
54
- Contributions: Contributions
55
- Progress: number
56
- Stars: number
57
- Tier: number
58
- Type: number
59
- }
54
+ Amount: number;
55
+ Contributions: Contributions;
56
+ Progress: number;
57
+ Stars: number;
58
+ Tier: number;
59
+ Type: number;
60
+ };
60
61
 
61
- export type Contributions = {[key: string]: number}
62
+ export type Contributions = { [key: string]: number };
62
63
 
63
64
  export type HackerBattle = {
64
- AwardUserIDs: any[]
65
- BattleID: string
66
- Place: number
67
- PointContributions: PointContribution[]
68
- Points: number
69
- ProcessedAwards: boolean
70
- }
71
-
65
+ AwardUserIDs: any[];
66
+ BattleID: string;
67
+ Place: number;
68
+ PointContributions: PointContribution[];
69
+ Points: number;
70
+ ProcessedAwards: boolean;
71
+ };
72
72
 
73
73
  export type DiamondContributions = {
74
- AllTime: AllTime
75
- }
74
+ AllTime: AllTime;
75
+ };
76
76
 
77
77
  export type AllTime = {
78
- Data: Daum[]
79
- Sum: number
80
- }
78
+ Data: Daum[];
79
+ Sum: number;
80
+ };
81
81
 
82
82
  export type Daum = {
83
- Diamonds: number
84
- UserID: number
85
- }
83
+ Diamonds: number;
84
+ UserID: number;
85
+ };
86
86
 
87
87
  export type Member = {
88
- JoinTime: number
89
- PermissionLevel: number
90
- UserID: number
91
- }
88
+ JoinTime: number;
89
+ PermissionLevel: number;
90
+ UserID: number;
91
+ };
@@ -1,13 +1,13 @@
1
1
  export type ClansData = {
2
- CountryCode: string
3
- Created: number
4
- DepositedDiamonds: number
5
- Icon: string
6
- MemberCapacity: number
7
- Members: number
8
- Name: string
9
- Points: number
10
- }
2
+ CountryCode: string;
3
+ Created: number;
4
+ DepositedDiamonds: number;
5
+ Icon: string;
6
+ MemberCapacity: number;
7
+ Members: number;
8
+ Name: string;
9
+ Points: number;
10
+ };
11
11
 
12
12
  export type ClansResponseBody = {
13
13
  status: string;