ps99-api 1.1.0 → 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 (225) 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/README.md +5 -6
  5. package/dist/index.d.ts +32 -1
  6. package/dist/index.js +32 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/ps99-api.d.ts +17 -7
  9. package/dist/ps99-api.js +5 -2
  10. package/dist/ps99-api.js.map +1 -1
  11. package/dist/responses/clan.d.ts +1 -0
  12. package/dist/responses/collection/achievement.d.ts +39 -0
  13. package/dist/responses/{collections.js → collection/achievement.js} +1 -1
  14. package/dist/responses/collection/achievement.js.map +1 -0
  15. package/dist/responses/collection/boost.d.ts +14 -0
  16. package/dist/responses/{collection.js → collection/boost.js} +1 -1
  17. package/dist/responses/collection/boost.js.map +1 -0
  18. package/dist/responses/collection/booth.d.ts +36 -0
  19. package/dist/responses/collection/booth.js +3 -0
  20. package/dist/responses/collection/booth.js.map +1 -0
  21. package/dist/responses/collection/box.d.ts +33 -0
  22. package/dist/responses/collection/box.js +3 -0
  23. package/dist/responses/collection/box.js.map +1 -0
  24. package/dist/responses/collection/buff.d.ts +16 -0
  25. package/dist/responses/collection/buff.js +3 -0
  26. package/dist/responses/collection/buff.js.map +1 -0
  27. package/dist/responses/collection/charm.d.ts +35 -0
  28. package/dist/responses/collection/charm.js +3 -0
  29. package/dist/responses/collection/charm.js.map +1 -0
  30. package/dist/responses/collection/currency.d.ts +51 -0
  31. package/dist/responses/collection/currency.js +3 -0
  32. package/dist/responses/collection/currency.js.map +1 -0
  33. package/dist/responses/collection/egg.d.ts +49 -0
  34. package/dist/responses/collection/egg.js +3 -0
  35. package/dist/responses/collection/egg.js.map +1 -0
  36. package/dist/responses/collection/enchantment.d.ts +38 -0
  37. package/dist/responses/collection/enchantment.js +3 -0
  38. package/dist/responses/collection/enchantment.js.map +1 -0
  39. package/dist/responses/collection/fishing-rod.d.ts +23 -0
  40. package/dist/responses/collection/fishing-rod.js +3 -0
  41. package/dist/responses/collection/fishing-rod.js.map +1 -0
  42. package/dist/responses/collection/fruit.d.ts +34 -0
  43. package/dist/responses/collection/fruit.js +3 -0
  44. package/dist/responses/collection/fruit.js.map +1 -0
  45. package/dist/responses/collection/guild-battle.d.ts +41 -0
  46. package/dist/responses/collection/guild-battle.js +3 -0
  47. package/dist/responses/collection/guild-battle.js.map +1 -0
  48. package/dist/responses/collection/hoverboard.d.ts +47 -0
  49. package/dist/responses/collection/hoverboard.js +3 -0
  50. package/dist/responses/collection/hoverboard.js.map +1 -0
  51. package/dist/responses/collection/index.d.ts +37 -0
  52. package/dist/responses/collection/index.js +3 -0
  53. package/dist/responses/collection/index.js.map +1 -0
  54. package/dist/responses/collection/lootbox.d.ts +27 -0
  55. package/dist/responses/collection/lootbox.js +3 -0
  56. package/dist/responses/collection/lootbox.js.map +1 -0
  57. package/dist/responses/collection/mastery.d.ts +120 -0
  58. package/dist/responses/collection/mastery.js +3 -0
  59. package/dist/responses/collection/mastery.js.map +1 -0
  60. package/dist/responses/collection/merchant.d.ts +21 -0
  61. package/dist/responses/collection/merchant.js +3 -0
  62. package/dist/responses/collection/merchant.js.map +1 -0
  63. package/dist/responses/collection/misc-item.d.ts +30 -0
  64. package/dist/responses/collection/misc-item.js +3 -0
  65. package/dist/responses/collection/misc-item.js.map +1 -0
  66. package/dist/responses/collection/pet.d.ts +112 -0
  67. package/dist/responses/collection/pet.js +3 -0
  68. package/dist/responses/collection/pet.js.map +1 -0
  69. package/dist/responses/collection/potion.d.ts +36 -0
  70. package/dist/responses/collection/potion.js +3 -0
  71. package/dist/responses/collection/potion.js.map +1 -0
  72. package/dist/responses/collection/random-event.d.ts +28 -0
  73. package/dist/responses/collection/random-event.js +3 -0
  74. package/dist/responses/collection/random-event.js.map +1 -0
  75. package/dist/responses/collection/rank.d.ts +51 -0
  76. package/dist/responses/collection/rank.js +3 -0
  77. package/dist/responses/collection/rank.js.map +1 -0
  78. package/dist/responses/collection/rarity.d.ts +19 -0
  79. package/dist/responses/collection/rarity.js +3 -0
  80. package/dist/responses/collection/rarity.js.map +1 -0
  81. package/dist/responses/collection/rebirth.d.ts +26 -0
  82. package/dist/responses/collection/rebirth.js +3 -0
  83. package/dist/responses/collection/rebirth.js.map +1 -0
  84. package/dist/responses/collection/secret-room.d.ts +46 -0
  85. package/dist/responses/collection/secret-room.js +3 -0
  86. package/dist/responses/collection/secret-room.js.map +1 -0
  87. package/dist/responses/collection/seed.d.ts +1 -0
  88. package/dist/responses/collection/seed.js +3 -0
  89. package/dist/responses/collection/seed.js.map +1 -0
  90. package/dist/responses/collection/shovel.d.ts +17 -0
  91. package/dist/responses/collection/shovel.js +3 -0
  92. package/dist/responses/collection/shovel.js.map +1 -0
  93. package/dist/responses/collection/sprinkler.d.ts +30 -0
  94. package/dist/responses/collection/sprinkler.js +3 -0
  95. package/dist/responses/collection/sprinkler.js.map +1 -0
  96. package/dist/responses/collection/ultimate.d.ts +34 -0
  97. package/dist/responses/collection/ultimate.js +3 -0
  98. package/dist/responses/collection/ultimate.js.map +1 -0
  99. package/dist/responses/collection/upgrade.d.ts +58 -0
  100. package/dist/responses/collection/upgrade.js +3 -0
  101. package/dist/responses/collection/upgrade.js.map +1 -0
  102. package/dist/responses/collection/watering-can.d.ts +17 -0
  103. package/dist/responses/collection/watering-can.js +3 -0
  104. package/dist/responses/collection/watering-can.js.map +1 -0
  105. package/dist/responses/collection/world.d.ts +19 -0
  106. package/dist/responses/collection/world.js +3 -0
  107. package/dist/responses/collection/world.js.map +1 -0
  108. package/dist/responses/collection/zone-flag.d.ts +30 -0
  109. package/dist/responses/collection/zone-flag.js +3 -0
  110. package/dist/responses/collection/zone-flag.js.map +1 -0
  111. package/dist/responses/collection/zone.d.ts +181 -0
  112. package/dist/responses/collection/zone.js +3 -0
  113. package/dist/responses/collection/zone.js.map +1 -0
  114. package/dump-result.js +3 -4
  115. package/example-web/react/package-lock.json +4900 -0
  116. package/example-web/react/package.json +28 -0
  117. package/example-web/react/public/index.html +12 -0
  118. package/example-web/react/src/App.css +95 -0
  119. package/example-web/react/src/App.tsx +32 -0
  120. package/example-web/react/src/ClanDetails.css +39 -0
  121. package/example-web/react/src/ClanDetails.tsx +119 -0
  122. package/example-web/react/src/Image.tsx +46 -0
  123. package/example-web/react/src/index.tsx +5 -0
  124. package/example-web/react/tsconfig.json +16 -0
  125. package/example-web/react/webpack.config.js +36 -0
  126. package/example-web/react2/package-lock.json +5211 -0
  127. package/example-web/react2/package.json +29 -0
  128. package/example-web/react2/public/icons/icon-192x192.png +0 -0
  129. package/example-web/react2/public/icons/icon-512x512.png +0 -0
  130. package/example-web/react2/public/index.html +31 -0
  131. package/example-web/react2/public/manifest.json +20 -0
  132. package/example-web/react2/public/service-worker.js +62 -0
  133. package/example-web/react2/src/App.tsx +148 -0
  134. package/example-web/react2/src/components/AchievementsComponent.tsx +37 -0
  135. package/example-web/react2/src/components/BoostsComponent.tsx +38 -0
  136. package/example-web/react2/src/components/BoothsComponent.tsx +38 -0
  137. package/example-web/react2/src/components/BoxesComponent.tsx +38 -0
  138. package/example-web/react2/src/components/BuffsComponent.tsx +37 -0
  139. package/example-web/react2/src/components/CharmsComponent.tsx +46 -0
  140. package/example-web/react2/src/components/CurrencyComponent.tsx +38 -0
  141. package/example-web/react2/src/components/EggsComponent.tsx +39 -0
  142. package/example-web/react2/src/components/EnchantsComponent.tsx +49 -0
  143. package/example-web/react2/src/components/ErrorComponent.tsx +16 -0
  144. package/example-web/react2/src/components/FishingRodsComponent.tsx +38 -0
  145. package/example-web/react2/src/components/FruitsComponent.tsx +44 -0
  146. package/example-web/react2/src/components/GuildBattlesComponent.tsx +46 -0
  147. package/example-web/react2/src/components/HoverboardsComponent.tsx +38 -0
  148. package/example-web/react2/src/components/ImageComponent.tsx +46 -0
  149. package/example-web/react2/src/components/LootboxesComponent.tsx +38 -0
  150. package/example-web/react2/src/components/MasteryComponent.tsx +38 -0
  151. package/example-web/react2/src/components/MerchantsComponent.tsx +34 -0
  152. package/example-web/react2/src/components/MiscItemsComponent.tsx +55 -0
  153. package/example-web/react2/src/components/PetsComponent.tsx +43 -0
  154. package/example-web/react2/src/components/PotionsComponent.tsx +44 -0
  155. package/example-web/react2/src/components/RandomEventsComponent.tsx +39 -0
  156. package/example-web/react2/src/components/RanksComponent.tsx +36 -0
  157. package/example-web/react2/src/components/RarityComponent.tsx +33 -0
  158. package/example-web/react2/src/components/RebirthsComponent.tsx +34 -0
  159. package/example-web/react2/src/components/SecretRoomsComponent.tsx +33 -0
  160. package/example-web/react2/src/components/SeedsComponent.tsx +39 -0
  161. package/example-web/react2/src/components/ShovelsComponent.tsx +38 -0
  162. package/example-web/react2/src/components/SprinklersComponent.tsx +38 -0
  163. package/example-web/react2/src/components/UltimatesComponent.tsx +39 -0
  164. package/example-web/react2/src/components/UpgradesComponent.tsx +49 -0
  165. package/example-web/react2/src/components/WateringCansComponent.tsx +40 -0
  166. package/example-web/react2/src/components/WorldsComponent.tsx +34 -0
  167. package/example-web/react2/src/components/ZoneFlagsComponent.tsx +38 -0
  168. package/example-web/react2/src/components/ZonesComponent.tsx +34 -0
  169. package/example-web/react2/src/index.tsx +5 -0
  170. package/example-web/react2/tsconfig.json +16 -0
  171. package/example-web/react2/webpack.config.js +42 -0
  172. package/jest.config.js +2 -2
  173. package/package.json +13 -8
  174. package/src/__tests__/__snapshots__/ps99-api-changes.ts.snap +90437 -0
  175. package/src/__tests__/ps99-api-changes.ts +8 -10
  176. package/src/__tests__/ps99-api-live.ts +35 -36
  177. package/src/__tests__/ps99-api.ts +2 -2
  178. package/src/index.ts +32 -1
  179. package/src/ps99-api.ts +19 -10
  180. package/src/responses/activeClanBattle.ts +30 -30
  181. package/src/responses/clan.ts +70 -70
  182. package/src/responses/clans.ts +9 -9
  183. package/src/responses/collection/achievement.ts +39 -0
  184. package/src/responses/collection/boost.ts +14 -0
  185. package/src/responses/collection/booth.ts +36 -0
  186. package/src/responses/collection/box.ts +33 -0
  187. package/src/responses/collection/buff.ts +16 -0
  188. package/src/responses/collection/charm.ts +38 -0
  189. package/src/responses/collection/currency.ts +56 -0
  190. package/src/responses/collection/egg.ts +52 -0
  191. package/src/responses/collection/enchantment.ts +41 -0
  192. package/src/responses/collection/fishing-rod.ts +24 -0
  193. package/src/responses/collection/fruit.ts +37 -0
  194. package/src/responses/collection/guild-battle.ts +48 -0
  195. package/src/responses/collection/hoverboard.ts +49 -0
  196. package/src/responses/collection/index.ts +74 -0
  197. package/src/responses/collection/lootbox.ts +29 -0
  198. package/src/responses/collection/mastery.ts +125 -0
  199. package/src/responses/collection/merchant.ts +22 -0
  200. package/src/responses/collection/misc-item.ts +32 -0
  201. package/src/responses/collection/pet.ts +121 -0
  202. package/src/responses/collection/potion.ts +39 -0
  203. package/src/responses/collection/random-event.ts +30 -0
  204. package/src/responses/collection/rank.ts +58 -0
  205. package/src/responses/collection/rarity.ts +20 -0
  206. package/src/responses/collection/rebirth.ts +28 -0
  207. package/src/responses/collection/secret-room.ts +50 -0
  208. package/src/responses/collection/seed.ts +0 -0
  209. package/src/responses/collection/shovel.ts +18 -0
  210. package/src/responses/collection/sprinkler.ts +32 -0
  211. package/src/responses/collection/ultimate.ts +36 -0
  212. package/src/responses/collection/upgrade.ts +64 -0
  213. package/src/responses/collection/watering-can.ts +18 -0
  214. package/src/responses/collection/world.ts +20 -0
  215. package/src/responses/collection/zone-flag.ts +32 -0
  216. package/src/responses/collection/zone.ts +208 -0
  217. package/src/responses/exists.ts +8 -8
  218. package/src/responses/rap.ts +9 -9
  219. package/tsconfig.json +2 -2
  220. package/dist/responses/collection.d.ts +0 -1357
  221. package/dist/responses/collection.js.map +0 -1
  222. package/dist/responses/collections.d.ts +0 -5
  223. package/dist/responses/collections.js.map +0 -1
  224. package/src/responses/collection.ts +0 -1543
  225. package/src/responses/collections.ts +0 -3
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "example-ps99-api-webapp-2",
3
+ "version": "1.0.0",
4
+ "description": "A demonstration of using the Pet Simulator 99 node-ps99-api library.",
5
+ "private": true,
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1",
8
+ "build": "npx webpack",
9
+ "dev": "npx webpack serve --config webpack.config.js --live-reload --mode=development"
10
+ },
11
+ "author": "",
12
+ "license": "ISC",
13
+ "dependencies": {
14
+ "ps99-api": "file:../.."
15
+ },
16
+ "devDependencies": {
17
+ "@types/react": "^18.3.3",
18
+ "@types/react-dom": "^18.3.0",
19
+ "copy-webpack-plugin": "^12.0.2",
20
+ "css-loader": "^7.1.2",
21
+ "react": "^18.3.1",
22
+ "react-dom": "^18.3.1",
23
+ "ts-loader": "^9.5.1",
24
+ "typescript": "^5.5.2",
25
+ "webpack": "^5.92.0",
26
+ "webpack-cli": "^5.1.4",
27
+ "webpack-dev-server": "^5.0.4"
28
+ }
29
+ }
@@ -0,0 +1,31 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Pet Simulator 99 API</title>
7
+ <link rel="manifest" href="/manifest.json" />
8
+ <link rel="icon" href="/icons/icon-192x192.png" />
9
+ </head>
10
+ <body>
11
+ <div id="root"></div>
12
+ <script src="./bundle.js"></script>
13
+ <script>
14
+ if ("serviceWorker" in navigator) {
15
+ window.addEventListener("load", function () {
16
+ navigator.serviceWorker.register("/service-worker.js").then(
17
+ function (registration) {
18
+ console.log(
19
+ "ServiceWorker registration successful with scope: ",
20
+ registration.scope,
21
+ );
22
+ },
23
+ function (error) {
24
+ console.log("ServiceWorker registration failed: ", error);
25
+ },
26
+ );
27
+ });
28
+ }
29
+ </script>
30
+ </body>
31
+ </html>
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "Pet Simulator 99 API",
3
+ "short_name": "PS99",
4
+ "start_url": ".",
5
+ "display": "standalone",
6
+ "background_color": "#ffffff",
7
+ "theme_color": "#000000",
8
+ "icons": [
9
+ {
10
+ "src": "/icons/icon-192x192.png",
11
+ "sizes": "192x192",
12
+ "type": "image/png"
13
+ },
14
+ {
15
+ "src": "/icons/icon-512x512.png",
16
+ "sizes": "512x512",
17
+ "type": "image/png"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,62 @@
1
+ const CACHE_NAME = "ps99-cache-v1";
2
+ const urlsToCache = [
3
+ "/",
4
+ "/bundle.js",
5
+ "/manifest.json",
6
+ "/icons/icon-192x192.png",
7
+ "/icons/icon-512x512.png",
8
+ ];
9
+
10
+ self.addEventListener("install", (event) => {
11
+ event.waitUntil(
12
+ caches.open(CACHE_NAME).then((cache) => {
13
+ console.log("Opened cache");
14
+ return cache.addAll(urlsToCache);
15
+ }),
16
+ );
17
+ });
18
+
19
+ self.addEventListener("fetch", (event) => {
20
+ if (event.request.url.includes("/api/")) {
21
+ event.respondWith(
22
+ caches.match(event.request).then((response) => {
23
+ if (response) {
24
+ return response;
25
+ }
26
+ return fetch(event.request).then((response) => {
27
+ if (
28
+ !response ||
29
+ response.status !== 200 ||
30
+ response.type !== "basic"
31
+ ) {
32
+ return response;
33
+ }
34
+ const responseToCache = response.clone();
35
+ caches.open(CACHE_NAME).then((cache) => {
36
+ cache.put(event.request, responseToCache);
37
+ });
38
+ return response;
39
+ });
40
+ }),
41
+ );
42
+ } else {
43
+ event.respondWith(
44
+ fetch(event.request).catch(() => caches.match(event.request)),
45
+ );
46
+ }
47
+ });
48
+
49
+ self.addEventListener("activate", (event) => {
50
+ const cacheWhitelist = [CACHE_NAME];
51
+ event.waitUntil(
52
+ caches.keys().then((cacheNames) => {
53
+ return Promise.all(
54
+ cacheNames.map((cacheName) => {
55
+ if (cacheWhitelist.indexOf(cacheName) === -1) {
56
+ return caches.delete(cacheName);
57
+ }
58
+ }),
59
+ );
60
+ }),
61
+ );
62
+ });
@@ -0,0 +1,148 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { PetSimulator99API } from "ps99-api";
3
+
4
+ import AchievementsComponent from "./components/AchievementsComponent";
5
+ import BoostsComponent from "./components/BoostsComponent";
6
+ import BoothsComponent from "./components/BoothsComponent";
7
+ import BoxesComponent from "./components/BoxesComponent";
8
+ import BuffsComponent from "./components/BuffsComponent";
9
+ import CharmsComponent from "./components/CharmsComponent";
10
+ import CurrencyComponent from "./components/CurrencyComponent";
11
+ import EggsComponent from "./components/EggsComponent";
12
+ import EnchantsComponent from "./components/EnchantsComponent";
13
+ import FishingRodsComponent from "./components/FishingRodsComponent";
14
+ import FruitsComponent from "./components/FruitsComponent";
15
+ import GuildBattlesComponent from "./components/GuildBattlesComponent";
16
+ import HoverboardsComponent from "./components/HoverboardsComponent";
17
+ import LootboxesComponent from "./components/LootboxesComponent";
18
+ import MasteryComponent from "./components/MasteryComponent";
19
+ import MerchantsComponent from "./components/MerchantsComponent";
20
+ import MiscItemsComponent from "./components/MiscItemsComponent";
21
+ import PetsComponent from "./components/PetsComponent";
22
+ import PotionsComponent from "./components/PotionsComponent";
23
+ import RandomEventsComponent from "./components/RandomEventsComponent";
24
+ import RanksComponent from "./components/RanksComponent";
25
+ import RarityComponent from "./components/RarityComponent";
26
+ import RebirthsComponent from "./components/RebirthsComponent";
27
+ import SecretRoomsComponent from "./components/SecretRoomsComponent";
28
+ import SeedsComponent from "./components/SeedsComponent";
29
+ import ShovelsComponent from "./components/ShovelsComponent";
30
+ import SprinklersComponent from "./components/SprinklersComponent";
31
+ import UltimatesComponent from "./components/UltimatesComponent";
32
+ import UpgradesComponent from "./components/UpgradesComponent";
33
+ import WateringCansComponent from "./components/WateringCansComponent";
34
+ import WorldsComponent from "./components/WorldsComponent";
35
+ import ZoneFlagsComponent from "./components/ZoneFlagsComponent";
36
+ import ZonesComponent from "./components/ZonesComponent";
37
+
38
+ const App: React.FC = () => {
39
+ const [collections, setCollections] = useState([]);
40
+ const [selectedCollection, setSelectedCollection] = useState<string | null>(
41
+ null,
42
+ );
43
+
44
+ useEffect(() => {
45
+ const fetchCollections = async () => {
46
+ const api = new PetSimulator99API();
47
+ const response = await api.getCollections();
48
+ console.log("Fetched collections:", response); // Add this line
49
+ if (response.status === "ok") {
50
+ setCollections(response.data);
51
+ } else {
52
+ console.error("Failed to fetch collections", response); // Add this line
53
+ }
54
+ };
55
+ fetchCollections();
56
+ }, []);
57
+
58
+ const renderComponent = () => {
59
+ switch (selectedCollection) {
60
+ case "Achievements":
61
+ return <AchievementsComponent />;
62
+ case "Boosts":
63
+ return <BoostsComponent />;
64
+ case "Booths":
65
+ return <BoothsComponent />;
66
+ case "Boxes":
67
+ return <BoxesComponent />;
68
+ case "Buffs":
69
+ return <BuffsComponent />;
70
+ case "Charms":
71
+ return <CharmsComponent />;
72
+ case "Currency":
73
+ return <CurrencyComponent />;
74
+ case "Eggs":
75
+ return <EggsComponent />;
76
+ case "Enchants":
77
+ return <EnchantsComponent />;
78
+ case "FishingRods":
79
+ return <FishingRodsComponent />;
80
+ case "Fruits":
81
+ return <FruitsComponent />;
82
+ case "GuildBattles":
83
+ return <GuildBattlesComponent />;
84
+ case "Hoverboards":
85
+ return <HoverboardsComponent />;
86
+ case "Lootboxes":
87
+ return <LootboxesComponent />;
88
+ case "Mastery":
89
+ return <MasteryComponent />;
90
+ case "Merchants":
91
+ return <MerchantsComponent />;
92
+ case "MiscItems":
93
+ return <MiscItemsComponent />;
94
+ case "Pets":
95
+ return <PetsComponent />;
96
+ case "Potions":
97
+ return <PotionsComponent />;
98
+ case "RandomEvents":
99
+ return <RandomEventsComponent />;
100
+ case "Ranks":
101
+ return <RanksComponent />;
102
+ case "Rarity":
103
+ return <RarityComponent />;
104
+ case "Rebirths":
105
+ return <RebirthsComponent />;
106
+ case "SecretRooms":
107
+ return <SecretRoomsComponent />;
108
+ case "Seeds":
109
+ return <SeedsComponent />;
110
+ case "Shovels":
111
+ return <ShovelsComponent />;
112
+ case "Sprinklers":
113
+ return <SprinklersComponent />;
114
+ case "Ultimates":
115
+ return <UltimatesComponent />;
116
+ case "Upgrades":
117
+ return <UpgradesComponent />;
118
+ case "WateringCans":
119
+ return <WateringCansComponent />;
120
+ case "Worlds":
121
+ return <WorldsComponent />;
122
+ case "ZoneFlags":
123
+ return <ZoneFlagsComponent />;
124
+ case "Zones":
125
+ return <ZonesComponent />;
126
+ default:
127
+ return <div>Please select a collection</div>;
128
+ }
129
+ };
130
+
131
+ return (
132
+ <div>
133
+ <h1>Pet Simulator 99 Collections</h1>
134
+ <nav>
135
+ <ul>
136
+ {collections.map((collection, index) => (
137
+ <li key={index} onClick={() => setSelectedCollection(collection)}>
138
+ {collection}
139
+ </li>
140
+ ))}
141
+ </ul>
142
+ </nav>
143
+ <div>{renderComponent()}</div>
144
+ </div>
145
+ );
146
+ };
147
+
148
+ export default App;
@@ -0,0 +1,37 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { AchievementData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const AchievementsComponent: React.FC = () => {
6
+ const [achievements, setAchievements] = useState<AchievementData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchAchievements = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Achievements");
12
+ if (response.status === "ok") {
13
+ setAchievements(response.data);
14
+ }
15
+ };
16
+ fetchAchievements();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Achievements</h2>
22
+ <ul>
23
+ {achievements.map((achievement, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={achievement.configData.Icon}
27
+ alt={achievement.configData.Name}
28
+ />
29
+ <span>{achievement.configData.Name}</span>
30
+ </li>
31
+ ))}
32
+ </ul>
33
+ </div>
34
+ );
35
+ };
36
+
37
+ export default AchievementsComponent;
@@ -0,0 +1,38 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { BoostData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const BoostsComponent: React.FC = () => {
6
+ const [boosts, setBoosts] = useState<BoostData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchBoosts = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Boosts");
12
+ if (response.status === "ok") {
13
+ setBoosts(response.data);
14
+ }
15
+ };
16
+ fetchBoosts();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Boosts</h2>
22
+ <ul>
23
+ {boosts.map((boost, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={boost.configData.Icon}
27
+ alt={boost.configData.DisplayName}
28
+ />
29
+ <span>{boost.configData.DisplayName}</span>
30
+ <span>{boost.configData.MaximumPercent}%</span>
31
+ </li>
32
+ ))}
33
+ </ul>
34
+ </div>
35
+ );
36
+ };
37
+
38
+ export default BoostsComponent;
@@ -0,0 +1,38 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { BoothData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const BoothsComponent: React.FC = () => {
6
+ const [booths, setBooths] = useState<BoothData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchBooths = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Booths");
12
+ if (response.status === "ok") {
13
+ setBooths(response.data);
14
+ }
15
+ };
16
+ fetchBooths();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Booths</h2>
22
+ <ul>
23
+ {booths.map((booth, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={booth.configData.Icon}
27
+ alt={booth.configData.DisplayName}
28
+ />
29
+ <span>{booth.configData.DisplayName}</span>
30
+ <span>{booth.configData.Desc}</span>
31
+ </li>
32
+ ))}
33
+ </ul>
34
+ </div>
35
+ );
36
+ };
37
+
38
+ export default BoothsComponent;
@@ -0,0 +1,38 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { BoxData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const BoxesComponent: React.FC = () => {
6
+ const [boxes, setBoxes] = useState<BoxData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchBoxes = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Boxes");
12
+ if (response.status === "ok") {
13
+ setBoxes(response.data);
14
+ }
15
+ };
16
+ fetchBoxes();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Boxes</h2>
22
+ <ul>
23
+ {boxes.map((box, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={box.configData.Icons[index].Icon}
27
+ alt={box.configData.DisplayName}
28
+ />
29
+ <span>{box.configData.DisplayName}</span>
30
+ <span>{box.configData.Desc}</span>
31
+ </li>
32
+ ))}
33
+ </ul>
34
+ </div>
35
+ );
36
+ };
37
+
38
+ export default BoxesComponent;
@@ -0,0 +1,37 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { BuffData, PetSimulator99API } from "ps99-api";
3
+
4
+ const BuffsComponent: React.FC = () => {
5
+ const [buffs, setBuffs] = useState<BuffData[]>([]);
6
+
7
+ useEffect(() => {
8
+ const fetchBuffs = async () => {
9
+ const api = new PetSimulator99API();
10
+ const response = await api.getCollection("Buffs");
11
+ if (response.status === "ok") {
12
+ setBuffs(response.data);
13
+ }
14
+ };
15
+ fetchBuffs();
16
+ }, []);
17
+
18
+ return (
19
+ <div>
20
+ <h2>Buffs</h2>
21
+ <ul>
22
+ {buffs.map((buff, index) => (
23
+ <li key={index}>
24
+ <span>{buff.configData.DisplayName}</span>
25
+ <span>Length: {buff.configData.Length}</span>
26
+ <span>
27
+ Associated Item Class: {buff.configData.AssociatedItemClass}
28
+ </span>
29
+ <span>Associated Item ID: {buff.configData.AssociatedItemID}</span>
30
+ </li>
31
+ ))}
32
+ </ul>
33
+ </div>
34
+ );
35
+ };
36
+
37
+ export default BuffsComponent;
@@ -0,0 +1,46 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { CharmData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const CharmsComponent: React.FC = () => {
6
+ const [charms, setCharms] = useState<CharmData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchCharms = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Charms");
12
+ if (response.status === "ok") {
13
+ setCharms(response.data);
14
+ }
15
+ };
16
+ fetchCharms();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Charms</h2>
22
+ <ul>
23
+ {charms.map((charm, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={charm.configData.Icon}
27
+ alt={`Charm ${index + 1}`}
28
+ />
29
+ <span>Base Tier: {charm.configData.BaseTier}</span>
30
+ <span>Max Tier: {charm.configData.MaxTier}</span>
31
+ {charm.configData.Tiers.map((tier, tierIndex) => (
32
+ <div key={tierIndex}>
33
+ <span>Tier {tierIndex + 1}:</span>
34
+ <span>{tier.DisplayName}</span>
35
+ <span>Power: {tier.Power}</span>
36
+ <span>Rarity: {tier.Rarity.DisplayName}</span>
37
+ </div>
38
+ ))}
39
+ </li>
40
+ ))}
41
+ </ul>
42
+ </div>
43
+ );
44
+ };
45
+
46
+ export default CharmsComponent;
@@ -0,0 +1,38 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { CurrencyData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const CurrencyComponent: React.FC = () => {
6
+ const [currencies, setCurrencies] = useState<CurrencyData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchCurrencies = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Currency");
12
+ if (response.status === "ok") {
13
+ setCurrencies(response.data);
14
+ }
15
+ };
16
+ fetchCurrencies();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Currency</h2>
22
+ <ul>
23
+ {currencies.map((currency, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={currency.configData.BagTiers[index].image}
27
+ alt={currency.configData.DisplayName}
28
+ />
29
+ <span>{currency.configData.DisplayName}</span>
30
+ <span>{currency.configData.Desc}</span>
31
+ </li>
32
+ ))}
33
+ </ul>
34
+ </div>
35
+ );
36
+ };
37
+
38
+ export default CurrencyComponent;
@@ -0,0 +1,39 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { EggData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const EggsComponent: React.FC = () => {
6
+ const [eggs, setEggs] = useState<EggData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchEggs = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Eggs");
12
+ if (response.status === "ok") {
13
+ setEggs(response.data);
14
+ }
15
+ };
16
+ fetchEggs();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Eggs</h2>
22
+ <ul>
23
+ {eggs.map((egg, index) => (
24
+ <li key={index}>
25
+ <ImageComponent
26
+ src={egg.configData.icon}
27
+ alt={egg.configData.name}
28
+ />
29
+ <span>{egg.configData.name}</span>
30
+ <span>Currency: {egg.configData.currency}</span>
31
+ <span>Pets: {egg.configData.pets.length}</span>
32
+ </li>
33
+ ))}
34
+ </ul>
35
+ </div>
36
+ );
37
+ };
38
+
39
+ export default EggsComponent;
@@ -0,0 +1,49 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { EnchantmentData, PetSimulator99API } from "ps99-api";
3
+ import ImageComponent from "./ImageComponent";
4
+
5
+ const EnchantsComponent: React.FC = () => {
6
+ const [enchants, setEnchants] = useState<EnchantmentData[]>([]);
7
+
8
+ useEffect(() => {
9
+ const fetchEnchants = async () => {
10
+ const api = new PetSimulator99API();
11
+ const response = await api.getCollection("Enchants");
12
+ if (response.status === "ok") {
13
+ setEnchants(response.data);
14
+ }
15
+ };
16
+ fetchEnchants();
17
+ }, []);
18
+
19
+ return (
20
+ <div>
21
+ <h2>Enchants</h2>
22
+ <ul>
23
+ {enchants.map((enchant, index) => (
24
+ <li key={index}>
25
+ {enchant.configData.PageIcon && (
26
+ <ImageComponent
27
+ src={enchant.configData.PageIcon}
28
+ alt={`Enchant ${index + 1}`}
29
+ />
30
+ )}
31
+ <span>Base Tier: {enchant.configData.BaseTier}</span>
32
+ <span>Max Tier: {enchant.configData.MaxTier}</span>
33
+ {enchant.configData.Tiers.map((tier, tierIndex) => (
34
+ <div key={tierIndex}>
35
+ <ImageComponent src={tier.Icon} alt={tier.DisplayName} />
36
+ <span>Tier {tierIndex + 1}:</span>
37
+ <span>{tier.DisplayName}</span>
38
+ <span>Power: {tier.Power}</span>
39
+ <span>Rarity: {tier.Rarity.DisplayName}</span>
40
+ </div>
41
+ ))}
42
+ </li>
43
+ ))}
44
+ </ul>
45
+ </div>
46
+ );
47
+ };
48
+
49
+ export default EnchantsComponent;
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+
3
+ interface ErrorProps {
4
+ message: string;
5
+ }
6
+
7
+ const ErrorComponent: React.FC<ErrorProps> = ({ message }) => {
8
+ return (
9
+ <div>
10
+ <h2>Error</h2>
11
+ <p>{message}</p>
12
+ </div>
13
+ );
14
+ };
15
+
16
+ export default ErrorComponent;