ps99-api 1.0.1 → 1.2.0

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