@nekosuneprojects/gaming-infos 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (716) hide show
  1. package/.github/workflows/sync-api-cache.yml +3 -2
  2. package/CACHE_SYNC.md +84 -54
  3. package/CHANGELOG.md +34 -3
  4. package/README.md +210 -371
  5. package/data/.cache-manifest.json +112 -0
  6. package/data/arknightsendfield/characters/akekuri.json +75 -0
  7. package/data/arknightsendfield/characters/alesh.json +75 -0
  8. package/data/arknightsendfield/characters/antal.json +75 -0
  9. package/data/arknightsendfield/characters/arcane.json +75 -0
  10. package/data/arknightsendfield/characters/arclight.json +75 -0
  11. package/data/arknightsendfield/characters/ardelia.json +75 -0
  12. package/data/arknightsendfield/characters/avywenna.json +76 -0
  13. package/data/arknightsendfield/characters/camille.json +77 -0
  14. package/data/arknightsendfield/characters/catcher.json +76 -0
  15. package/data/arknightsendfield/characters/chenqianyu.json +76 -0
  16. package/data/arknightsendfield/characters/dapan.json +76 -0
  17. package/data/arknightsendfield/characters/ember.json +76 -0
  18. package/data/arknightsendfield/characters/endministrator.json +63 -0
  19. package/data/arknightsendfield/characters/estella.json +76 -0
  20. package/data/arknightsendfield/characters/fluorite.json +75 -0
  21. package/data/arknightsendfield/characters/gilberta.json +76 -0
  22. package/data/arknightsendfield/characters/laevatain.json +76 -0
  23. package/data/arknightsendfield/characters/lastrite.json +76 -0
  24. package/data/arknightsendfield/characters/lifeng.json +75 -0
  25. package/data/arknightsendfield/characters/liino.json +76 -0
  26. package/data/arknightsendfield/characters/mifu.json +75 -0
  27. package/data/arknightsendfield/characters/perlica.json +76 -0
  28. package/data/arknightsendfield/characters/pogranichnik.json +75 -0
  29. package/data/arknightsendfield/characters/purrchena.json +50 -0
  30. package/data/arknightsendfield/characters/rossi.json +77 -0
  31. package/data/arknightsendfield/characters/snowshine.json +75 -0
  32. package/data/arknightsendfield/characters/tangtang.json +76 -0
  33. package/data/arknightsendfield/characters/typhoeus.json +57 -0
  34. package/data/arknightsendfield/characters/wulfgard.json +77 -0
  35. package/data/arknightsendfield/characters/xaihi.json +76 -0
  36. package/data/arknightsendfield/characters/yvonne.json +76 -0
  37. package/data/arknightsendfield/characters/zhuangfangyi.json +76 -0
  38. package/data/fortnite/characters/agentjones.json +43 -0
  39. package/data/fortnite/characters/agentpeely.json +43 -0
  40. package/data/fortnite/characters/andyfangerson.json +42 -0
  41. package/data/fortnite/characters/antonia.json +43 -0
  42. package/data/fortnite/characters/anwar.json +44 -0
  43. package/data/fortnite/characters/aphrodite.json +43 -0
  44. package/data/fortnite/characters/apollo.json +36 -0
  45. package/data/fortnite/characters/arcticassassin.json +43 -0
  46. package/data/fortnite/characters/artemis.json +36 -0
  47. package/data/fortnite/characters/battlewoodboulevard.json +43 -0
  48. package/data/fortnite/characters/beastmode.json +45 -0
  49. package/data/fortnite/characters/bogstick.json +43 -0
  50. package/data/fortnite/characters/boxy.json +44 -0
  51. package/data/fortnite/characters/bravoleader.json +44 -0
  52. package/data/fortnite/characters/briteraider.json +43 -0
  53. package/data/fortnite/characters/brutalboxcars.json +46 -0
  54. package/data/fortnite/characters/bryne.json +44 -0
  55. package/data/fortnite/characters/buildersbarracks.json +38 -0
  56. package/data/fortnite/characters/bullshark.json +43 -0
  57. package/data/fortnite/characters/bumpybay.json +44 -0
  58. package/data/fortnite/characters/burd.json +44 -0
  59. package/data/fortnite/characters/burdemart.json +39 -0
  60. package/data/fortnite/characters/burdtogo.json +42 -0
  61. package/data/fortnite/characters/busansanctuary.json +39 -0
  62. package/data/fortnite/characters/calamaricanyon.json +41 -0
  63. package/data/fortnite/characters/canyoncrossing.json +45 -0
  64. package/data/fortnite/characters/captainjones.json +40 -0
  65. package/data/fortnite/characters/centurion.json +44 -0
  66. package/data/fortnite/characters/cerberus.json +43 -0
  67. package/data/fortnite/characters/charon.json +43 -0
  68. package/data/fortnite/characters/chiara.json +43 -0
  69. package/data/fortnite/characters/clara.json +43 -0
  70. package/data/fortnite/characters/classifiedcanyon.json +43 -0
  71. package/data/fortnite/characters/clawsylodge.json +41 -0
  72. package/data/fortnite/characters/cletuscornhole.json +43 -0
  73. package/data/fortnite/characters/contractgiller.json +44 -0
  74. package/data/fortnite/characters/corruptioncorners.json +42 -0
  75. package/data/fortnite/characters/countessdaraku.json +45 -0
  76. package/data/fortnite/characters/crackshotscabin.json +40 -0
  77. package/data/fortnite/characters/creepycamps.json +36 -0
  78. package/data/fortnite/characters/crimecity.json +47 -0
  79. package/data/fortnite/characters/dara.json +42 -0
  80. package/data/fortnite/characters/darkruby.json +43 -0
  81. package/data/fortnite/characters/demonsdojo.json +46 -0
  82. package/data/fortnite/characters/diamonddiva.json +43 -0
  83. package/data/fortnite/characters/donutdistrict.json +43 -0
  84. package/data/fortnite/characters/drakonsteelrider.json +43 -0
  85. package/data/fortnite/characters/dummy.json +45 -0
  86. package/data/fortnite/characters/edwardscissorhands.json +39 -0
  87. package/data/fortnite/characters/etheria.json +43 -0
  88. package/data/fortnite/characters/evergreenterrace.json +41 -0
  89. package/data/fortnite/characters/fishmarket.json +39 -0
  90. package/data/fortnite/characters/fishstick.json +45 -0
  91. package/data/fortnite/characters/fishthicc.json +43 -0
  92. package/data/fortnite/characters/fortressofsolitude.json +37 -0
  93. package/data/fortnite/characters/foxyfloodgate.json +43 -0
  94. package/data/fortnite/characters/freakyfields.json +38 -0
  95. package/data/fortnite/characters/goldengrove.json +41 -0
  96. package/data/fortnite/characters/graveheart.json +43 -0
  97. package/data/fortnite/characters/grievouscampsite.json +38 -0
  98. package/data/fortnite/characters/guardianamara.json +44 -0
  99. package/data/fortnite/characters/gwenpool.json +41 -0
  100. package/data/fortnite/characters/hanamuracourtyard.json +27 -0
  101. package/data/fortnite/characters/heartbreakranger.json +42 -0
  102. package/data/fortnite/characters/heatwaveharbor.json +41 -0
  103. package/data/fortnite/characters/heroichope.json +44 -0
  104. package/data/fortnite/characters/hope.json +43 -0
  105. package/data/fortnite/characters/hopefulheights.json +46 -0
  106. package/data/fortnite/characters/humblehills.json +41 -0
  107. package/data/fortnite/characters/innovatorslone.json +43 -0
  108. package/data/fortnite/characters/insight.json +43 -0
  109. package/data/fortnite/characters/ironman.json +40 -0
  110. package/data/fortnite/characters/jittershock.json +44 -0
  111. package/data/fortnite/characters/joeycaliente.json +44 -0
  112. package/data/fortnite/characters/jonithescarlet.json +43 -0
  113. package/data/fortnite/characters/khabylame.json +40 -0
  114. package/data/fortnite/characters/khari.json +44 -0
  115. package/data/fortnite/characters/kitbash.json +44 -0
  116. package/data/fortnite/characters/kitesflight.json +41 -0
  117. package/data/fortnite/characters/knightmare.json +43 -0
  118. package/data/fortnite/characters/laguna.json +43 -0
  119. package/data/fortnite/characters/lakespringfield.json +35 -0
  120. package/data/fortnite/characters/lakespringfieldgasstation.json +39 -0
  121. package/data/fortnite/characters/lanallane.json +42 -0
  122. package/data/fortnite/characters/lattelanding.json +41 -0
  123. package/data/fortnite/characters/lavendra.json +44 -0
  124. package/data/fortnite/characters/leelah.json +45 -0
  125. package/data/fortnite/characters/liftylodge.json +42 -0
  126. package/data/fortnite/characters/lonewolflair.json +42 -0
  127. package/data/fortnite/characters/longshot.json +41 -0
  128. package/data/fortnite/characters/lostlake.json +44 -0
  129. package/data/fortnite/characters/loveranger.json +44 -0
  130. package/data/fortnite/characters/mae.json +43 -0
  131. package/data/fortnite/characters/magicmosses.json +42 -0
  132. package/data/fortnite/characters/maskedmeadows.json +48 -0
  133. package/data/fortnite/characters/mechateamshadow.json +44 -0
  134. package/data/fortnite/characters/medusa.json +43 -0
  135. package/data/fortnite/characters/meowscles.json +42 -0
  136. package/data/fortnite/characters/mephisto.json +41 -0
  137. package/data/fortnite/characters/metalmouth.json +44 -0
  138. package/data/fortnite/characters/mincemeat.json +43 -0
  139. package/data/fortnite/characters/munitionsexpert.json +42 -0
  140. package/data/fortnite/characters/myna.json +42 -0
  141. package/data/fortnite/characters/newsanctuary.json +43 -0
  142. package/data/fortnite/characters/nia.json +42 -0
  143. package/data/fortnite/characters/nightshiftforest.json +43 -0
  144. package/data/fortnite/characters/nisha.json +42 -0
  145. package/data/fortnite/characters/nolanchance.json +43 -0
  146. package/data/fortnite/characters/noorah.json +44 -0
  147. package/data/fortnite/characters/odyssey.json +43 -0
  148. package/data/fortnite/characters/openaironsen.json +40 -0
  149. package/data/fortnite/characters/oscar.json +42 -0
  150. package/data/fortnite/characters/outlawoasis.json +40 -0
  151. package/data/fortnite/characters/outpostenclave.json +27 -0
  152. package/data/fortnite/characters/oxrhq.json +37 -0
  153. package/data/fortnite/characters/paintedpalms.json +41 -0
  154. package/data/fortnite/characters/peabody.json +42 -0
  155. package/data/fortnite/characters/peelosopherbananocrates.json +43 -0
  156. package/data/fortnite/characters/peely.json +41 -0
  157. package/data/fortnite/characters/peelybone.json +43 -0
  158. package/data/fortnite/characters/persephone.json +42 -0
  159. package/data/fortnite/characters/phaedra.json +42 -0
  160. package/data/fortnite/characters/phantommeowscles.json +43 -0
  161. package/data/fortnite/characters/piperpace.json +43 -0
  162. package/data/fortnite/characters/poseidon.json +42 -0
  163. package/data/fortnite/characters/pumpedpower.json +40 -0
  164. package/data/fortnite/characters/pumpinpipes.json +39 -0
  165. package/data/fortnite/characters/pumpkinking.json +40 -0
  166. package/data/fortnite/characters/purradisemeowscles.json +43 -0
  167. package/data/fortnite/characters/rangersrest.json +36 -0
  168. package/data/fortnite/characters/rebeloutpost.json +37 -0
  169. package/data/fortnite/characters/renegadeshadow.json +44 -0
  170. package/data/fortnite/characters/resistancebase.json +27 -0
  171. package/data/fortnite/characters/rippedtides.json +43 -0
  172. package/data/fortnite/characters/rollingblossomsfarm.json +41 -0
  173. package/data/fortnite/characters/royalebomber.json +38 -0
  174. package/data/fortnite/characters/ruckus.json +42 -0
  175. package/data/fortnite/characters/rust.json +41 -0
  176. package/data/fortnite/characters/sakuracircle.json +36 -0
  177. package/data/fortnite/characters/sandystrip.json +44 -0
  178. package/data/fortnite/characters/saskia.json +45 -0
  179. package/data/fortnite/characters/seaportcity.json +48 -0
  180. package/data/fortnite/characters/shakensanctuary.json +42 -0
  181. package/data/fortnite/characters/shimmerdusk.json +41 -0
  182. package/data/fortnite/characters/shinyshafts.json +38 -0
  183. package/data/fortnite/characters/shogunssolitude.json +46 -0
  184. package/data/fortnite/characters/shuri.json +39 -0
  185. package/data/fortnite/characters/silashesk.json +42 -0
  186. package/data/fortnite/characters/slurproom.json +40 -0
  187. package/data/fortnite/characters/snowheart.json +44 -0
  188. package/data/fortnite/characters/snowstriker.json +43 -0
  189. package/data/fortnite/characters/solidsnake.json +39 -0
  190. package/data/fortnite/characters/sonor.json +46 -0
  191. package/data/fortnite/characters/spartanassassin.json +43 -0
  192. package/data/fortnite/characters/spirithuntersaeko.json +41 -0
  193. package/data/fortnite/characters/springfieldnationalparkstore.json +38 -0
  194. package/data/fortnite/characters/springfieldnuclearpowerplant.json +39 -0
  195. package/data/fortnite/characters/springfieldslurpworks.json +40 -0
  196. package/data/fortnite/characters/squibblyshores.json +42 -0
  197. package/data/fortnite/characters/squibblyspointlighthouse.json +37 -0
  198. package/data/fortnite/characters/starroakley.json +45 -0
  199. package/data/fortnite/characters/steelsight.json +43 -0
  200. package/data/fortnite/characters/sticks.json +35 -0
  201. package/data/fortnite/characters/sunkenshores.json +42 -0
  202. package/data/fortnite/characters/sunstrider.json +42 -0
  203. package/data/fortnite/characters/suntanspecialist.json +43 -0
  204. package/data/fortnite/characters/supernovaacademy.json +27 -0
  205. package/data/fortnite/characters/t60powerarmor.json +39 -0
  206. package/data/fortnite/characters/thebattlewoods.json +44 -0
  207. package/data/fortnite/characters/thegreatturtle.json +37 -0
  208. package/data/fortnite/characters/theoperator.json +42 -0
  209. package/data/fortnite/characters/thequackaway.json +39 -0
  210. package/data/fortnite/characters/thestabilizer.json +38 -0
  211. package/data/fortnite/characters/theunderwriter.json +36 -0
  212. package/data/fortnite/characters/toyboxdocks.json +40 -0
  213. package/data/fortnite/characters/trace.json +43 -0
  214. package/data/fortnite/characters/triagetrooper.json +43 -0
  215. package/data/fortnite/characters/triggerfish.json +44 -0
  216. package/data/fortnite/characters/trogscave.json +38 -0
  217. package/data/fortnite/characters/utopiacity.json +27 -0
  218. package/data/fortnite/characters/vengeancejones.json +42 -0
  219. package/data/fortnite/characters/victoriasaint.json +43 -0
  220. package/data/fortnite/characters/vineyshafts.json +35 -0
  221. package/data/fortnite/characters/volpez.json +41 -0
  222. package/data/fortnite/characters/warmachine.json +40 -0
  223. package/data/fortnite/characters/wastelandermagneto.json +40 -0
  224. package/data/fortnite/characters/wonkeeland.json +41 -0
  225. package/data/game-codes/.cache-manifest.json +148 -0
  226. package/data/game-codes/directory.json +1196 -0
  227. package/data/game-codes/games/arknights-endfield.json +958 -0
  228. package/data/game-codes/games/borderlands-1.json +414 -0
  229. package/data/game-codes/games/borderlands-2.json +340 -0
  230. package/data/game-codes/games/borderlands-3.json +1025 -0
  231. package/data/game-codes/games/borderlands-4.json +3128 -0
  232. package/data/game-codes/games/borderlands-the-pre-sequel.json +599 -0
  233. package/data/game-codes/games/brawl-stars.json +4766 -0
  234. package/data/game-codes/games/clash-of-clans.json +4766 -0
  235. package/data/game-codes/games/clash-royale.json +5 -0
  236. package/data/game-codes/games/cookie-run-kingdom.json +5366 -0
  237. package/data/game-codes/games/fortnite.json +897 -0
  238. package/data/game-codes/games/genshin-impact.json +8520 -0
  239. package/data/game-codes/games/honkai-impact-3rd.json +405 -0
  240. package/data/game-codes/games/honkai-star-rail.json +9863 -0
  241. package/data/game-codes/games/neverness-to-everness.json +1695 -0
  242. package/data/game-codes/games/roblox-doors.json +1842 -0
  243. package/data/game-codes/games/roblox-rivals.json +2919 -0
  244. package/data/game-codes/games/tower-of-fantasy.json +2839 -0
  245. package/data/game-codes/games/warframe.json +20824 -0
  246. package/data/game-codes/games/wuthering-waves.json +2477 -0
  247. package/data/game-codes/games/zenless-zone-zero.json +3681 -0
  248. package/data/game-codes/status.json +580 -0
  249. package/data/genshinimpact/characters/aino.json +34 -0
  250. package/data/genshinimpact/characters/albedo.json +10 -9
  251. package/data/genshinimpact/characters/alhaitham.json +11 -10
  252. package/data/genshinimpact/characters/aloy.json +10 -9
  253. package/data/genshinimpact/characters/alyosha.json +34 -0
  254. package/data/genshinimpact/characters/amber.json +11 -10
  255. package/data/genshinimpact/characters/aratakiitto.json +11 -10
  256. package/data/genshinimpact/characters/arlecchino.json +11 -10
  257. package/data/genshinimpact/characters/baizhu.json +11 -10
  258. package/data/genshinimpact/characters/barbara.json +10 -9
  259. package/data/genshinimpact/characters/beidou.json +11 -10
  260. package/data/genshinimpact/characters/bennett.json +10 -9
  261. package/data/genshinimpact/characters/candace.json +11 -10
  262. package/data/genshinimpact/characters/charlotte.json +10 -9
  263. package/data/genshinimpact/characters/chasca.json +10 -9
  264. package/data/genshinimpact/characters/chevreuse.json +10 -9
  265. package/data/genshinimpact/characters/chiori.json +10 -9
  266. package/data/genshinimpact/characters/chongyun.json +11 -10
  267. package/data/genshinimpact/characters/citlali.json +10 -9
  268. package/data/genshinimpact/characters/clorinde.json +10 -9
  269. package/data/genshinimpact/characters/collei.json +11 -10
  270. package/data/genshinimpact/characters/columbina.json +34 -0
  271. package/data/genshinimpact/characters/cyno.json +11 -10
  272. package/data/genshinimpact/characters/dahlia.json +9 -8
  273. package/data/genshinimpact/characters/dehya.json +10 -9
  274. package/data/genshinimpact/characters/diluc.json +10 -9
  275. package/data/genshinimpact/characters/diona.json +10 -9
  276. package/data/genshinimpact/characters/dori.json +10 -9
  277. package/data/genshinimpact/characters/durin.json +10 -9
  278. package/data/genshinimpact/characters/emilie.json +10 -9
  279. package/data/genshinimpact/characters/escoffier.json +11 -10
  280. package/data/genshinimpact/characters/eula.json +10 -9
  281. package/data/genshinimpact/characters/faruzan.json +11 -10
  282. package/data/genshinimpact/characters/fischl.json +11 -10
  283. package/data/genshinimpact/characters/flins.json +34 -0
  284. package/data/genshinimpact/characters/freminet.json +10 -9
  285. package/data/genshinimpact/characters/furina.json +11 -10
  286. package/data/genshinimpact/characters/gaming.json +10 -9
  287. package/data/genshinimpact/characters/ganyu.json +10 -9
  288. package/data/genshinimpact/characters/gorou.json +11 -10
  289. package/data/genshinimpact/characters/hutao.json +11 -10
  290. package/data/genshinimpact/characters/iansan.json +10 -9
  291. package/data/genshinimpact/characters/ifa.json +34 -0
  292. package/data/genshinimpact/characters/illuga.json +34 -0
  293. package/data/genshinimpact/characters/ineffa.json +10 -9
  294. package/data/genshinimpact/characters/jahoda.json +34 -0
  295. package/data/genshinimpact/characters/jean.json +10 -9
  296. package/data/genshinimpact/characters/kachina.json +10 -9
  297. package/data/genshinimpact/characters/kaedeharakazuha.json +11 -10
  298. package/data/genshinimpact/characters/kaeya.json +10 -9
  299. package/data/genshinimpact/characters/kamisatoayaka.json +10 -9
  300. package/data/genshinimpact/characters/kamisatoayato.json +10 -9
  301. package/data/genshinimpact/characters/kaveh.json +11 -10
  302. package/data/genshinimpact/characters/keqing.json +10 -9
  303. package/data/genshinimpact/characters/kinich.json +10 -9
  304. package/data/genshinimpact/characters/kirara.json +10 -9
  305. package/data/genshinimpact/characters/klee.json +10 -9
  306. package/data/genshinimpact/characters/kujousara.json +10 -9
  307. package/data/genshinimpact/characters/kukishinobu.json +11 -10
  308. package/data/genshinimpact/characters/lanyan.json +10 -9
  309. package/data/genshinimpact/characters/lauma.json +34 -0
  310. package/data/genshinimpact/characters/layla.json +10 -9
  311. package/data/genshinimpact/characters/linnea.json +34 -0
  312. package/data/genshinimpact/characters/lisa.json +11 -10
  313. package/data/genshinimpact/characters/lohen.json +10 -9
  314. package/data/genshinimpact/characters/lynette.json +10 -9
  315. package/data/genshinimpact/characters/lyney.json +10 -9
  316. package/data/genshinimpact/characters/mavuika.json +10 -9
  317. package/data/genshinimpact/characters/mika.json +34 -0
  318. package/data/genshinimpact/characters/mikaschmidt.json +10 -9
  319. package/data/genshinimpact/characters/mona.json +11 -10
  320. package/data/genshinimpact/characters/mualani.json +10 -9
  321. package/data/genshinimpact/characters/nahida.json +11 -10
  322. package/data/genshinimpact/characters/navia.json +10 -9
  323. package/data/genshinimpact/characters/nefer.json +34 -0
  324. package/data/genshinimpact/characters/neuvillette.json +10 -9
  325. package/data/genshinimpact/characters/nicole.json +34 -0
  326. package/data/genshinimpact/characters/nilou.json +10 -9
  327. package/data/genshinimpact/characters/ningguang.json +10 -9
  328. package/data/genshinimpact/characters/noelle.json +11 -10
  329. package/data/genshinimpact/characters/odette.json +34 -0
  330. package/data/genshinimpact/characters/ororon.json +10 -9
  331. package/data/genshinimpact/characters/prune.json +9 -8
  332. package/data/genshinimpact/characters/qiqi.json +11 -10
  333. package/data/genshinimpact/characters/raidenshogun.json +11 -10
  334. package/data/genshinimpact/characters/razor.json +10 -9
  335. package/data/genshinimpact/characters/rosaria.json +11 -10
  336. package/data/genshinimpact/characters/sandrone.json +34 -0
  337. package/data/genshinimpact/characters/sangonomiyakokomi.json +11 -10
  338. package/data/genshinimpact/characters/sayu.json +10 -9
  339. package/data/genshinimpact/characters/sethos.json +10 -9
  340. package/data/genshinimpact/characters/shenhe.json +11 -10
  341. package/data/genshinimpact/characters/shikanoinheizou.json +11 -10
  342. package/data/genshinimpact/characters/sigewinne.json +10 -9
  343. package/data/genshinimpact/characters/skirk.json +10 -9
  344. package/data/genshinimpact/characters/sucrose.json +11 -10
  345. package/data/genshinimpact/characters/tartaglia.json +34 -0
  346. package/data/genshinimpact/characters/thoma.json +10 -9
  347. package/data/genshinimpact/characters/tighnari.json +11 -10
  348. package/data/genshinimpact/characters/traveler.json +34 -0
  349. package/data/genshinimpact/characters/varesa.json +10 -9
  350. package/data/genshinimpact/characters/varka.json +9 -8
  351. package/data/genshinimpact/characters/venti.json +11 -10
  352. package/data/genshinimpact/characters/wanderer.json +10 -9
  353. package/data/genshinimpact/characters/wonderlandmanekin.json +34 -0
  354. package/data/genshinimpact/characters/wriothesley.json +11 -10
  355. package/data/genshinimpact/characters/xiangling.json +11 -10
  356. package/data/genshinimpact/characters/xianyun.json +10 -9
  357. package/data/genshinimpact/characters/xiao.json +10 -9
  358. package/data/genshinimpact/characters/xilonen.json +10 -9
  359. package/data/genshinimpact/characters/xingqiu.json +11 -10
  360. package/data/genshinimpact/characters/xinyan.json +11 -10
  361. package/data/genshinimpact/characters/yaemiko.json +11 -10
  362. package/data/genshinimpact/characters/yanfei.json +11 -10
  363. package/data/genshinimpact/characters/yaoyao.json +11 -10
  364. package/data/genshinimpact/characters/yelan.json +10 -9
  365. package/data/genshinimpact/characters/yoimiya.json +11 -10
  366. package/data/genshinimpact/characters/yumemizukimizuki.json +10 -9
  367. package/data/genshinimpact/characters/yunjin.json +10 -9
  368. package/data/genshinimpact/characters/zhongli.json +10 -9
  369. package/data/genshinimpact/characters/zibai.json +10 -9
  370. package/data/genshinimpact/meta.json +12 -12
  371. package/data/honkaistarrail/characters/acheron.json +11 -10
  372. package/data/honkaistarrail/characters/aglaea.json +11 -10
  373. package/data/honkaistarrail/characters/anaxa.json +11 -10
  374. package/data/honkaistarrail/characters/archer.json +29 -0
  375. package/data/honkaistarrail/characters/argenti.json +11 -10
  376. package/data/honkaistarrail/characters/arlan.json +11 -10
  377. package/data/honkaistarrail/characters/ashveil.json +11 -10
  378. package/data/honkaistarrail/characters/asta.json +11 -10
  379. package/data/honkaistarrail/characters/aventurine.json +11 -10
  380. package/data/honkaistarrail/characters/bailu.json +11 -10
  381. package/data/honkaistarrail/characters/blackswan.json +11 -10
  382. package/data/honkaistarrail/characters/blade.json +11 -10
  383. package/data/honkaistarrail/characters/boothill.json +11 -10
  384. package/data/honkaistarrail/characters/bronya.json +11 -10
  385. package/data/honkaistarrail/characters/castorice.json +11 -10
  386. package/data/honkaistarrail/characters/cerydra.json +11 -10
  387. package/data/honkaistarrail/characters/cipher.json +11 -10
  388. package/data/honkaistarrail/characters/clara.json +11 -10
  389. package/data/honkaistarrail/characters/constance.json +11 -10
  390. package/data/honkaistarrail/characters/cyrene.json +11 -10
  391. package/data/honkaistarrail/characters/danheng.json +11 -10
  392. package/data/honkaistarrail/characters/danhengimbibitorlunae.json +29 -0
  393. package/data/honkaistarrail/characters/danhengpermansorterrae.json +29 -0
  394. package/data/honkaistarrail/characters/drratio.json +11 -10
  395. package/data/honkaistarrail/characters/evanescia.json +29 -0
  396. package/data/honkaistarrail/characters/evernight.json +29 -0
  397. package/data/honkaistarrail/characters/feixiao.json +11 -10
  398. package/data/honkaistarrail/characters/firefly.json +11 -10
  399. package/data/honkaistarrail/characters/fugue.json +29 -0
  400. package/data/honkaistarrail/characters/fuxuan.json +11 -10
  401. package/data/honkaistarrail/characters/gallagher.json +11 -10
  402. package/data/honkaistarrail/characters/gepard.json +11 -10
  403. package/data/honkaistarrail/characters/gilgamesh.json +29 -0
  404. package/data/honkaistarrail/characters/guinaifen.json +11 -10
  405. package/data/honkaistarrail/characters/hanya.json +11 -10
  406. package/data/honkaistarrail/characters/herta.json +11 -10
  407. package/data/honkaistarrail/characters/himeko.json +12 -11
  408. package/data/honkaistarrail/characters/himekonova.json +29 -0
  409. package/data/honkaistarrail/characters/hook.json +11 -10
  410. package/data/honkaistarrail/characters/huohuo.json +11 -10
  411. package/data/honkaistarrail/characters/hyacine.json +11 -10
  412. package/data/honkaistarrail/characters/hysilens.json +11 -10
  413. package/data/honkaistarrail/characters/jade.json +11 -10
  414. package/data/honkaistarrail/characters/jiaoqiu.json +11 -10
  415. package/data/honkaistarrail/characters/jingliu.json +11 -10
  416. package/data/honkaistarrail/characters/jingyuan.json +11 -10
  417. package/data/honkaistarrail/characters/kafka.json +11 -10
  418. package/data/honkaistarrail/characters/lingsha.json +11 -10
  419. package/data/honkaistarrail/characters/lisushang.json +11 -10
  420. package/data/honkaistarrail/characters/luka.json +11 -10
  421. package/data/honkaistarrail/characters/luocha.json +11 -10
  422. package/data/honkaistarrail/characters/lynx.json +11 -10
  423. package/data/honkaistarrail/characters/march7th.json +11 -10
  424. package/data/honkaistarrail/characters/misha.json +11 -10
  425. package/data/honkaistarrail/characters/mortenaxblade.json +29 -0
  426. package/data/honkaistarrail/characters/moze.json +11 -10
  427. package/data/honkaistarrail/characters/mydei.json +11 -10
  428. package/data/honkaistarrail/characters/natasha.json +11 -10
  429. package/data/honkaistarrail/characters/pela.json +11 -10
  430. package/data/honkaistarrail/characters/phainon.json +11 -10
  431. package/data/honkaistarrail/characters/qingque.json +11 -10
  432. package/data/honkaistarrail/characters/rappa.json +11 -10
  433. package/data/honkaistarrail/characters/rintohsaka.json +29 -0
  434. package/data/honkaistarrail/characters/robin.json +11 -10
  435. package/data/honkaistarrail/characters/ruanmei.json +11 -10
  436. package/data/honkaistarrail/characters/saber.json +29 -0
  437. package/data/honkaistarrail/characters/sampo.json +11 -10
  438. package/data/honkaistarrail/characters/seele.json +11 -10
  439. package/data/honkaistarrail/characters/serval.json +11 -10
  440. package/data/honkaistarrail/characters/silverwolf.json +11 -10
  441. package/data/honkaistarrail/characters/silverwolflv999.json +29 -0
  442. package/data/honkaistarrail/characters/sparkle.json +11 -10
  443. package/data/honkaistarrail/characters/sparxie.json +29 -0
  444. package/data/honkaistarrail/characters/sunday.json +29 -0
  445. package/data/honkaistarrail/characters/thedahlia.json +29 -0
  446. package/data/honkaistarrail/characters/theherta.json +29 -0
  447. package/data/honkaistarrail/characters/tingyun.json +11 -10
  448. package/data/honkaistarrail/characters/topaz.json +11 -10
  449. package/data/honkaistarrail/characters/topaznumby.json +29 -0
  450. package/data/honkaistarrail/characters/trailblazer.json +29 -0
  451. package/data/honkaistarrail/characters/tribbie.json +11 -10
  452. package/data/honkaistarrail/characters/welt.json +29 -0
  453. package/data/honkaistarrail/characters/weltyang.json +11 -10
  454. package/data/honkaistarrail/characters/xueyi.json +11 -10
  455. package/data/honkaistarrail/characters/yanqing.json +11 -10
  456. package/data/honkaistarrail/characters/yaoguang.json +11 -10
  457. package/data/honkaistarrail/characters/yukong.json +11 -10
  458. package/data/honkaistarrail/characters/yunli.json +11 -10
  459. package/data/honkaistarrail/meta.json +12 -12
  460. package/data/nte/characters/adler.json +13 -12
  461. package/data/nte/characters/aurelia.json +13 -12
  462. package/data/nte/characters/baicang.json +13 -12
  463. package/data/nte/characters/chaos.json +13 -12
  464. package/data/nte/characters/chiz.json +13 -12
  465. package/data/nte/characters/daffodill.json +13 -12
  466. package/data/nte/characters/edgar.json +13 -12
  467. package/data/nte/characters/esperzero.json +13 -12
  468. package/data/nte/characters/fadia.json +13 -12
  469. package/data/nte/characters/haniel.json +13 -12
  470. package/data/nte/characters/hathor.json +13 -12
  471. package/data/nte/characters/hotori.json +13 -12
  472. package/data/nte/characters/iroi.json +13 -12
  473. package/data/nte/characters/jiuyuan.json +13 -12
  474. package/data/nte/characters/lacrimosa.json +13 -12
  475. package/data/nte/characters/mint.json +13 -12
  476. package/data/nte/characters/nanally.json +13 -12
  477. package/data/nte/characters/sakiri.json +13 -12
  478. package/data/nte/characters/shinku.json +13 -12
  479. package/data/nte/characters/skia.json +13 -12
  480. package/data/nte/characters/zankou.json +51 -0
  481. package/data/nte/meta.json +12 -12
  482. package/data/toweroffantasy/characters/alyss.json +27 -0
  483. package/data/toweroffantasy/characters/annabella.json +23 -0
  484. package/data/toweroffantasy/characters/asuka.json +23 -0
  485. package/data/toweroffantasy/characters/bailing.json +23 -0
  486. package/data/toweroffantasy/characters/brevey.json +23 -0
  487. package/data/toweroffantasy/characters/claudia.json +23 -0
  488. package/data/toweroffantasy/characters/cobaltb.json +23 -0
  489. package/data/toweroffantasy/characters/cocoritter.json +23 -0
  490. package/data/toweroffantasy/characters/crow.json +23 -0
  491. package/data/toweroffantasy/characters/echo.json +23 -0
  492. package/data/toweroffantasy/characters/ene.json +23 -0
  493. package/data/toweroffantasy/characters/feise.json +25 -0
  494. package/data/toweroffantasy/characters/fenrir.json +23 -0
  495. package/data/toweroffantasy/characters/fiona.json +25 -0
  496. package/data/toweroffantasy/characters/frigg.json +23 -0
  497. package/data/toweroffantasy/characters/gnonno.json +23 -0
  498. package/data/toweroffantasy/characters/hilda.json +23 -0
  499. package/data/toweroffantasy/characters/huang.json +25 -0
  500. package/data/toweroffantasy/characters/huma.json +25 -0
  501. package/data/toweroffantasy/characters/icarus.json +23 -0
  502. package/data/toweroffantasy/characters/jiyu.json +25 -0
  503. package/data/toweroffantasy/characters/king.json +23 -0
  504. package/data/toweroffantasy/characters/lan.json +25 -0
  505. package/data/toweroffantasy/characters/lin.json +23 -0
  506. package/data/toweroffantasy/characters/linghan.json +23 -0
  507. package/data/toweroffantasy/characters/liuhuo.json +23 -0
  508. package/data/toweroffantasy/characters/lyra.json +23 -0
  509. package/data/toweroffantasy/characters/meryl.json +23 -0
  510. package/data/toweroffantasy/characters/mingjing.json +27 -0
  511. package/data/toweroffantasy/characters/nanyin.json +25 -0
  512. package/data/toweroffantasy/characters/nemesis.json +25 -0
  513. package/data/toweroffantasy/characters/pepper.json +23 -0
  514. package/data/toweroffantasy/characters/plotti.json +25 -0
  515. package/data/toweroffantasy/characters/roslyn.json +23 -0
  516. package/data/toweroffantasy/characters/rubilia.json +25 -0
  517. package/data/toweroffantasy/characters/ruby.json +25 -0
  518. package/data/toweroffantasy/characters/sakifuwa.json +23 -0
  519. package/data/toweroffantasy/characters/samir.json +23 -0
  520. package/data/toweroffantasy/characters/shiro.json +25 -0
  521. package/data/toweroffantasy/characters/tianlang.json +25 -0
  522. package/data/toweroffantasy/characters/tsubasa.json +23 -0
  523. package/data/toweroffantasy/characters/umi.json +23 -0
  524. package/data/toweroffantasy/characters/yanmiao.json +25 -0
  525. package/data/toweroffantasy/characters/yanuo.json +23 -0
  526. package/data/toweroffantasy/characters/yulan.json +23 -0
  527. package/data/toweroffantasy/characters/zero.json +23 -0
  528. package/data/vrchat/groups/clubzodiac.json +2 -1
  529. package/data/vrchat/groups/dirtydancers.json +2 -1
  530. package/data/vrchat/groups/drumsynews.json +2 -1
  531. package/data/vrchat/groups/ebola20.json +2 -1
  532. package/data/vrchat/groups/internationaldancersassociation.json +2 -1
  533. package/data/vrchat/groups/kannagang.json +2 -1
  534. package/data/vrchat/groups/lolisquad.json +2 -1
  535. package/data/vrchat/groups/nekonightsnightclub.json +2 -1
  536. package/data/vrchat/groups/nekostudios.json +2 -1
  537. package/data/vrchat/groups/nekosunecommunity.json +2 -1
  538. package/data/vrchat/groups/voidclub.json +2 -1
  539. package/data/vrchat/groups/voltdanceclub.json +2 -1
  540. package/data/vrchat/groups/vrceventsgroup.json +2 -1
  541. package/data/vrchat/groups/vrchatcommunitydiscord.json +2 -1
  542. package/data/vrchat/meta.json +11 -11
  543. package/data/vrchat/players/alto.json +8 -7
  544. package/data/vrchat/players/arcadum.json +9 -8
  545. package/data/vrchat/players/chairhandler.json +8 -7
  546. package/data/vrchat/players/chipz.json +8 -7
  547. package/data/vrchat/players/hikarivr.json +10 -9
  548. package/data/vrchat/players/kimple.json +9 -8
  549. package/data/vrchat/players/linkzr.json +7 -6
  550. package/data/vrchat/players/nagzz21.json +8 -7
  551. package/data/vrchat/players/nebride.json +9 -8
  552. package/data/vrchat/players/nekosunevr.json +10 -9
  553. package/data/vrchat/players/pokelawls.json +8 -7
  554. package/data/vrchat/players/qwonk.json +7 -6
  555. package/data/vrchat/players/roflgator.json +9 -8
  556. package/data/vrchat/players/scifri.json +6 -5
  557. package/data/vrchat/players/sodapoppin.json +8 -7
  558. package/data/vrchat/players/woops.json +8 -7
  559. package/data/vrchat/players/zentreya.json +9 -8
  560. package/data/vrchat/worlds/ascensionacademy.json +6 -5
  561. package/data/vrchat/worlds/clubvgl.json +7 -6
  562. package/data/vrchat/worlds/fightfinder.json +7 -6
  563. package/data/vrchat/worlds/hangouthouse.json +6 -5
  564. package/data/vrchat/worlds/nekostudioshalloween.json +8 -7
  565. package/data/vrchat/worlds/nekostudiosnewyear.json +8 -7
  566. package/data/vrchat/worlds/nekostudiosxmas.json +8 -7
  567. package/data/vrchat/worlds/nekosunevranimations2023.json +8 -7
  568. package/data/vrchat/worlds/nekosunevranimations20232024.json +10 -0
  569. package/data/vrchat/worlds/nekosunevranimations2024.json +8 -7
  570. package/data/vrchat/worlds/nekosunevranimations2025.json +8 -7
  571. package/data/vrchat/worlds/rumhamsavatarworld.json +6 -5
  572. package/data/vrchat/worlds/smewsranch.json +6 -5
  573. package/data/vrchat/worlds/smewsroom.json +6 -5
  574. package/data/vrchat/worlds/sunsetbar.json +6 -5
  575. package/data/vrchat/worlds/theblackcat.json +9 -8
  576. package/data/vrchat/worlds/thegreatpug.json +7 -6
  577. package/data/vrchat/worlds/themidnightbar.json +6 -5
  578. package/data/vrchat/worlds/voidclub.json +6 -5
  579. package/data/vrchat/worlds/voltdanceclub.json +6 -5
  580. package/data/vrchat/worlds/vrchathome.json +7 -6
  581. package/data/vrchat/worlds/whatalegend.json +5 -4
  582. package/data/warframe/characters/amesha.json +226 -0
  583. package/data/warframe/characters/ash.json +1354 -0
  584. package/data/warframe/characters/ashprime.json +1994 -0
  585. package/data/warframe/characters/atlas.json +916 -0
  586. package/data/warframe/characters/atlasprime.json +1632 -0
  587. package/data/warframe/characters/banshee.json +1036 -0
  588. package/data/warframe/characters/bansheeprime.json +1750 -0
  589. package/data/warframe/characters/baruuk.json +555 -0
  590. package/data/warframe/characters/baruukprime.json +1298 -0
  591. package/data/warframe/characters/bonewidow.json +354 -0
  592. package/data/warframe/characters/caliban.json +434 -0
  593. package/data/warframe/characters/calibanprime.json +683 -0
  594. package/data/warframe/characters/chroma.json +1344 -0
  595. package/data/warframe/characters/chromaprime.json +1977 -0
  596. package/data/warframe/characters/citrine.json +220 -0
  597. package/data/warframe/characters/cyte09.json +218 -0
  598. package/data/warframe/characters/dagath.json +194 -0
  599. package/data/warframe/characters/dante.json +223 -0
  600. package/data/warframe/characters/elytron.json +300 -0
  601. package/data/warframe/characters/ember.json +1209 -0
  602. package/data/warframe/characters/emberprime.json +1678 -0
  603. package/data/warframe/characters/equinox.json +958 -0
  604. package/data/warframe/characters/equinoxprime.json +1644 -0
  605. package/data/warframe/characters/excalibur.json +1603 -0
  606. package/data/warframe/characters/excaliburprime.json +1524 -0
  607. package/data/warframe/characters/excaliburumbra.json +397 -0
  608. package/data/warframe/characters/follie.json +246 -0
  609. package/data/warframe/characters/frost.json +1330 -0
  610. package/data/warframe/characters/frostprime.json +1686 -0
  611. package/data/warframe/characters/gara.json +925 -0
  612. package/data/warframe/characters/garaprime.json +1494 -0
  613. package/data/warframe/characters/garuda.json +851 -0
  614. package/data/warframe/characters/garudaprime.json +1449 -0
  615. package/data/warframe/characters/gauss.json +506 -0
  616. package/data/warframe/characters/gaussprime.json +1077 -0
  617. package/data/warframe/characters/grendel.json +463 -0
  618. package/data/warframe/characters/grendelprime.json +772 -0
  619. package/data/warframe/characters/gyre.json +381 -0
  620. package/data/warframe/characters/gyreprime.json +403 -0
  621. package/data/warframe/characters/harrow.json +916 -0
  622. package/data/warframe/characters/harrowprime.json +1700 -0
  623. package/data/warframe/characters/helminth.json +220 -0
  624. package/data/warframe/characters/hildryn.json +627 -0
  625. package/data/warframe/characters/hildrynprime.json +996 -0
  626. package/data/warframe/characters/hydroid.json +1028 -0
  627. package/data/warframe/characters/hydroidprime.json +1621 -0
  628. package/data/warframe/characters/inaros.json +976 -0
  629. package/data/warframe/characters/inarosprime.json +1721 -0
  630. package/data/warframe/characters/itzal.json +465 -0
  631. package/data/warframe/characters/ivara.json +1349 -0
  632. package/data/warframe/characters/ivaraprime.json +1921 -0
  633. package/data/warframe/characters/jade.json +240 -0
  634. package/data/warframe/characters/khora.json +804 -0
  635. package/data/warframe/characters/khoraprime.json +1403 -0
  636. package/data/warframe/characters/koumei.json +221 -0
  637. package/data/warframe/characters/kullervo.json +191 -0
  638. package/data/warframe/characters/lavos.json +511 -0
  639. package/data/warframe/characters/lavosprime.json +711 -0
  640. package/data/warframe/characters/limbo.json +1363 -0
  641. package/data/warframe/characters/limboprime.json +2084 -0
  642. package/data/warframe/characters/loki.json +1209 -0
  643. package/data/warframe/characters/lokiprime.json +1457 -0
  644. package/data/warframe/characters/mag.json +2089 -0
  645. package/data/warframe/characters/magprime.json +2532 -0
  646. package/data/warframe/characters/mesa.json +1195 -0
  647. package/data/warframe/characters/mesaprime.json +2059 -0
  648. package/data/warframe/characters/mirage.json +1561 -0
  649. package/data/warframe/characters/mirageprime.json +2257 -0
  650. package/data/warframe/characters/nekros.json +1235 -0
  651. package/data/warframe/characters/nekrosprime.json +1882 -0
  652. package/data/warframe/characters/nezha.json +868 -0
  653. package/data/warframe/characters/nezhaprime.json +1695 -0
  654. package/data/warframe/characters/nidus.json +1027 -0
  655. package/data/warframe/characters/nidusprime.json +1706 -0
  656. package/data/warframe/characters/nokko.json +308 -0
  657. package/data/warframe/characters/nova.json +1226 -0
  658. package/data/warframe/characters/novaprime.json +1667 -0
  659. package/data/warframe/characters/nyx.json +1610 -0
  660. package/data/warframe/characters/nyxprime.json +1967 -0
  661. package/data/warframe/characters/oberon.json +1249 -0
  662. package/data/warframe/characters/oberonprime.json +1872 -0
  663. package/data/warframe/characters/octavia.json +1049 -0
  664. package/data/warframe/characters/octaviaprime.json +1735 -0
  665. package/data/warframe/characters/odonata.json +336 -0
  666. package/data/warframe/characters/odonataprime.json +787 -0
  667. package/data/warframe/characters/oraxia.json +246 -0
  668. package/data/warframe/characters/orionsirius.json +134 -0
  669. package/data/warframe/characters/protea.json +521 -0
  670. package/data/warframe/characters/proteaprime.json +992 -0
  671. package/data/warframe/characters/qorvex.json +214 -0
  672. package/data/warframe/characters/revenant.json +931 -0
  673. package/data/warframe/characters/revenantprime.json +1494 -0
  674. package/data/warframe/characters/rhino.json +1344 -0
  675. package/data/warframe/characters/rhinoprime.json +1675 -0
  676. package/data/warframe/characters/saryn.json +1210 -0
  677. package/data/warframe/characters/sarynprime.json +2042 -0
  678. package/data/warframe/characters/sevagoth.json +478 -0
  679. package/data/warframe/characters/sevagothprime.json +910 -0
  680. package/data/warframe/characters/siriusorion.json +247 -0
  681. package/data/warframe/characters/styanax.json +320 -0
  682. package/data/warframe/characters/styanaxprime.json +321 -0
  683. package/data/warframe/characters/temple.json +271 -0
  684. package/data/warframe/characters/titania.json +1227 -0
  685. package/data/warframe/characters/titaniaprime.json +2000 -0
  686. package/data/warframe/characters/trinity.json +1097 -0
  687. package/data/warframe/characters/trinityprime.json +1849 -0
  688. package/data/warframe/characters/uriel.json +215 -0
  689. package/data/warframe/characters/valkyr.json +1165 -0
  690. package/data/warframe/characters/valkyrprime.json +1969 -0
  691. package/data/warframe/characters/vauban.json +1067 -0
  692. package/data/warframe/characters/vaubanprime.json +1614 -0
  693. package/data/warframe/characters/voidrig.json +355 -0
  694. package/data/warframe/characters/volt.json +1324 -0
  695. package/data/warframe/characters/voltprime.json +1843 -0
  696. package/data/warframe/characters/voruna.json +293 -0
  697. package/data/warframe/characters/vorunaprime.json +431 -0
  698. package/data/warframe/characters/wisp.json +824 -0
  699. package/data/warframe/characters/wispprime.json +908 -0
  700. package/data/warframe/characters/wukong.json +927 -0
  701. package/data/warframe/characters/wukongprime.json +1754 -0
  702. package/data/warframe/characters/xaku.json +620 -0
  703. package/data/warframe/characters/xakuprime.json +879 -0
  704. package/data/warframe/characters/yareli.json +409 -0
  705. package/data/warframe/characters/yareliprime.json +683 -0
  706. package/data/warframe/characters/zephyr.json +1149 -0
  707. package/data/warframe/characters/zephyrprime.json +1864 -0
  708. package/gamecodes.js +30 -4
  709. package/index.js +5 -3
  710. package/package.json +15 -3
  711. package/scripts/cache-sync-smoke.js +50 -3
  712. package/scripts/game-code-cache-smoke.js +46 -6
  713. package/scripts/sync-api-cache.js +87 -38
  714. package/scripts/sync-game-code-cache.js +42 -3
  715. package/data/game-codes/.gitkeep +0 -0
  716. package/data/vrchat/avatars/.gitkeep +0 -0
package/README.md CHANGED
@@ -2,172 +2,186 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@nekosuneprojects/gaming-infos.svg)](https://www.npmjs.com/package/@nekosuneprojects/gaming-infos)
4
4
 
5
- A Node.js data package for **game information, VRChat community data, characters, redeem codes, and creator codes**.
5
+ A Node.js data package for **multi-game information, Fortnite skins/NPCs/maps, Call of Duty characters/NPCs/maps, VRChat community data, redeem codes, and creator codes**.
6
6
 
7
- The package is **API-first**: it reads from the NekoSuneVR V5 API whenever possible, then automatically falls back to bundled JSON when the API is unavailable. The fallback data in this repository is mirrored from APINODE once per day using an atomic add/change/remove synchronization system.
7
+ The package is **API-first**: it reads from the NekoSuneVR V5 API whenever possible, then automatically falls back to bundled JSON when the API is unavailable. The fallback repository checks APINODE every hour and only commits real add/change/remove data updates.
8
8
 
9
- Current package version: **2.2.0**
9
+ Current package source version: **2.4.0**
10
10
 
11
- ---
11
+ > Published npm releases are immutable. The GitHub source can be ahead of the version currently available from the npm registry until a new package release is published.
12
12
 
13
- ## ✨ What it provides
13
+ ## Installation
14
14
 
15
- - 🎮 Multi-game metadata and character data
16
- - 🌐 Live NekoSuneVR V5 API lookups
17
- - 💾 Automatic local JSON fallback when the API is unavailable
18
- - 🔄 Daily APINODE → repository cache synchronization
19
- - 🧹 Add/change/remove mirroring so deleted API entries disappear from the next successful fallback snapshot
20
- - 🛡️ Last-good-cache protection if APINODE is down or a sync only partially succeeds
21
- - 👤 VRChat players
22
- - 👥 VRChat groups
23
- - 🌍 VRChat worlds
24
- - 🧍 VRChat avatars
25
- - 🧝 Character/roster datasets for supported games
26
- - 🎁 Redeem-code and creator-code helpers
27
- - 📊 Game-code directory, counts, aliases, status, and source-cache information
28
- - 🧪 Offline smoke tests for cache replacement and failure recovery
15
+ ```bash
16
+ npm install @nekosuneprojects/gaming-infos
17
+ ```
29
18
 
30
- ---
19
+ Requires Node.js 18+.
31
20
 
32
- ## 🎮 Gaming Infos coverage
21
+ ## Gaming Infos coverage
33
22
 
34
- | Game | Slug | Data |
23
+ | Game / franchise | Slug | Datasets |
35
24
  |---|---|---|
36
- | VRChat | `vrchat` | players, groups, worlds, avatars |
37
- | Genshin Impact | `genshinimpact` | characters |
38
- | Honkai: Star Rail | `honkaistarrail` | characters |
39
- | Neverness to Everness | `nte` | characters |
40
- | Wuthering Waves | `wutheringwaves` | Resonators under `characters` |
41
- | Warframe | `warframe` | Warframes under `characters` |
42
- | Fortnite | `fortnite` | current/released Battle Royale characters |
43
- | Zenless Zone Zero | `zenlesszonezero` | Agents under `characters` |
44
- | Tower of Fantasy | `toweroffantasy` | Simulacra under `characters` |
45
- | Arknights: Endfield | `arknightsendfield` | Operators under `characters` |
46
-
47
- The Game Codes system is separate and its supported game list is returned dynamically by the APINODE `/codes` directory endpoint.
48
-
49
- ---
25
+ | VRChat | `vrchat` | `players`, `groups`, `worlds`, `avatars` |
26
+ | Genshin Impact | `genshinimpact` | `characters` |
27
+ | Honkai: Star Rail | `honkaistarrail` | `characters` |
28
+ | Neverness to Everness | `nte` | `characters` |
29
+ | Wuthering Waves | `wutheringwaves` | `characters` (Resonators) |
30
+ | Warframe | `warframe` | `characters` (Warframes) |
31
+ | **Fortnite** | `fortnite` | `characters` = released skins/Outfits, `npcs` = Battle Royale NPCs, `maps` = Named Locations/maps |
32
+ | **Call of Duty mainline** | see table below | `characters`, `npcs`, `maps` per title |
33
+ | Zenless Zone Zero | `zenlesszonezero` | `characters` (Agents) |
34
+ | Tower of Fantasy | `toweroffantasy` | `characters` (Simulacra) |
35
+ | Arknights: Endfield | `arknightsendfield` | `characters` (Operators) |
36
+
37
+ ## Call of Duty mainline coverage
38
+
39
+ Version 2.4.0 adds the mainline PC/console Call of Duty series from the original **Call of Duty (2003)** through **Black Ops 7**, plus **Modern Warfare 4 (2026)** public beta/official announcement data.
40
+
41
+ | Title | Slug | Year/status |
42
+ |---|---|---:|
43
+ | Call of Duty | `cod2003` | 2003 |
44
+ | Call of Duty 2 | `cod2` | 2005 |
45
+ | Call of Duty 3 | `cod3` | 2006 |
46
+ | Call of Duty 4: Modern Warfare | `cod4modernwarfare` | 2007 |
47
+ | Call of Duty: World at War | `codworldatwar` | 2008 |
48
+ | Call of Duty: Modern Warfare 2 | `codmodernwarfare2` | 2009 |
49
+ | Call of Duty: Black Ops | `codblackops` | 2010 |
50
+ | Call of Duty: Modern Warfare 3 | `codmodernwarfare3` | 2011 |
51
+ | Call of Duty: Black Ops II | `codblackops2` | 2012 |
52
+ | Call of Duty: Ghosts | `codghosts` | 2013 |
53
+ | Call of Duty: Advanced Warfare | `codadvancedwarfare` | 2014 |
54
+ | Call of Duty: Black Ops III | `codblackops3` | 2015 |
55
+ | Call of Duty: Infinite Warfare | `codinfinitewarfare` | 2016 |
56
+ | Call of Duty: WWII | `codwwii` | 2017 |
57
+ | Call of Duty: Black Ops 4 | `codblackops4` | 2018 |
58
+ | Call of Duty: Modern Warfare (2019) | `codmodernwarfare2019` | 2019 |
59
+ | Call of Duty: Black Ops Cold War | `codblackopscoldwar` | 2020 |
60
+ | Call of Duty: Vanguard | `codvanguard` | 2021 |
61
+ | Call of Duty: Modern Warfare II | `codmodernwarfareii2022` | 2022 |
62
+ | Call of Duty: Modern Warfare III | `codmodernwarfareiii2023` | 2023 |
63
+ | Call of Duty: Black Ops 6 | `codblackops6` | 2024 |
64
+ | Call of Duty: Black Ops 7 | `codblackops7` | 2025 |
65
+ | Call of Duty: Modern Warfare 4 | `codmodernwarfare4` | 2026 beta / announced launch |
66
+
67
+ ### Call of Duty dataset rules
68
+
69
+ Each Call of Duty title uses the same three public datasets:
50
70
 
51
- ## 📦 Installation
52
-
53
- ```bash
54
- npm install @nekosuneprojects/gaming-infos
71
+ ```text
72
+ <cod-slug>/characters → playable/main characters, protagonists, Operators and Specialists
73
+ <cod-slug>/npcs → other campaign/game character and NPC records
74
+ <cod-slug>/maps → multiplayer, Zombies, Warzone and other public map/mission records
55
75
  ```
56
76
 
57
- Requires **Node.js 18 or newer**.
77
+ Historical released titles are populated from public Call of Duty Wiki game-specific categories. APINODE excludes categories marked cut, unused, cancelled, unreleased, non-canon, prototype/concept, screenshot/image-only, or file-only.
58
78
 
59
- ---
79
+ `codmodernwarfare4` is handled more strictly while the game is pre-release: only **officially published Activision beta/public announcement information** is accepted. Leaks, datamines, hidden APIs, and unofficial unreleased lists are not imported. Campaign NPCs are not invented; they only appear once publicly identified by an allowed source.
60
80
 
61
- # 🚀 Quick start
81
+ Examples:
62
82
 
63
83
  ```js
64
- const gamingInfos = require('@nekosuneprojects/gaming-infos');
84
+ const bo2Characters = await info.List('codblackops2', 'characters');
85
+ const mw2CampaignNpcs = await info.List('codmodernwarfare2', 'npcs');
86
+ const cod4Maps = await info.List('cod4modernwarfare', 'maps');
87
+ const mw4PublicMaps = await info.List('codmodernwarfare4', 'maps');
65
88
 
66
- async function main() {
67
- const games = await gamingInfos.Games();
68
- const vrchat = await gamingInfos.Game('vrchat');
89
+ const oneCharacter = await info.Characters('codblackops2', 'character-slug');
90
+ const oneNpc = await info.NPCs('codblackops2', 'npc-slug');
91
+ const oneMap = await info.Maps('codblackops2', 'map-slug');
92
+ ```
69
93
 
70
- const worlds = await gamingInfos.List('vrchat', 'worlds');
71
- const avatars = await gamingInfos.List('vrchat', 'avatars');
72
- const genshinCharacters = await gamingInfos.List('genshinimpact', 'characters');
73
- const wuwaCharacters = await gamingInfos.List('wutheringwaves', 'characters');
94
+ ## Fortnite dataset rules
74
95
 
75
- console.log({
76
- gameCount: games.length,
77
- vrchat,
78
- worlds: worlds.length,
79
- avatars: avatars.length,
80
- genshinCharacters: genshinCharacters.length,
81
- wuwaCharacters: wuwaCharacters.length
82
- });
83
- }
96
+ Fortnite is deliberately separated into three API/package datasets:
84
97
 
85
- main();
98
+ ```text
99
+ fortnite/characters → released Outfit cosmetics / skins
100
+ fortnite/npcs → Battle Royale NPCs / Characters
101
+ fortnite/maps → Named Locations / map locations
86
102
  ```
87
103
 
88
- ---
89
-
90
- # 🧠 Gaming Infos API
91
-
92
- ## `Games()`
104
+ A map/location should never appear in the skins dataset. APINODE also removes legacy NPC duplicates when a title is confirmed by the Fortnite Named Locations catalog.
93
105
 
94
- Returns every game with bundled/API Gaming Infos metadata.
106
+ ## Quick start
95
107
 
96
108
  ```js
97
- const games = await gamingInfos.Games();
98
- ```
99
-
100
- Live endpoint:
109
+ const info = require('@nekosuneprojects/gaming-infos');
101
110
 
102
- ```http
103
- GET /v5/games/api/gaming-infos
104
- ```
105
-
106
- ## `Game(game)`
111
+ async function main() {
112
+ const games = await info.Games();
107
113
 
108
- Returns game-level metadata.
114
+ const fortniteSkins = await info.List('fortnite', 'characters');
115
+ const fortniteNpcs = await info.List('fortnite', 'npcs');
116
+ const fortniteMaps = await info.List('fortnite', 'maps');
109
117
 
110
- ```js
111
- const game = await gamingInfos.Game('warframe');
112
- ```
118
+ const blackOps2Characters = await info.List('codblackops2', 'characters');
119
+ const blackOps2Npcs = await info.List('codblackops2', 'npcs');
120
+ const blackOps2Maps = await info.List('codblackops2', 'maps');
113
121
 
114
- ## `List(game, type)`
122
+ const vrchatWorlds = await info.List('vrchat', 'worlds');
115
123
 
116
- Returns every entity for a game/type.
124
+ console.log({
125
+ games: games.length,
126
+ fortniteSkins: fortniteSkins.length,
127
+ blackOps2Characters: blackOps2Characters.length,
128
+ blackOps2Npcs: blackOps2Npcs.length,
129
+ blackOps2Maps: blackOps2Maps.length,
130
+ vrchatWorlds: vrchatWorlds.length,
131
+ });
132
+ }
117
133
 
118
- ```js
119
- const resonators = await gamingInfos.List('wutheringwaves', 'characters');
120
- const agents = await gamingInfos.List('zenlesszonezero', 'characters');
121
- const operators = await gamingInfos.List('arknightsendfield', 'characters');
122
- const vrchatGroups = await gamingInfos.List('vrchat', 'groups');
134
+ main();
123
135
  ```
124
136
 
125
- Live endpoint:
137
+ ## Gaming Infos API
138
+
139
+ Live APINODE endpoints:
126
140
 
127
141
  ```http
142
+ GET /v5/games/api/gaming-infos
128
143
  GET /v5/games/api/gaming-infos/:game/:type
144
+ GET /v5/games/api/gaming-infos/:game/:type/:name
129
145
  ```
130
146
 
131
- ## Single-entity helpers
132
-
133
- ```js
134
- await gamingInfos.Worlds('vrchat', 'world-slug');
135
- await gamingInfos.Groups('vrchat', 'group-slug');
136
- await gamingInfos.Players('vrchat', 'player-slug');
137
- await gamingInfos.Avatars('vrchat', 'avatar-slug');
138
- await gamingInfos.Characters('warframe', 'warframe-slug');
139
- ```
140
-
141
- Generic lookup:
147
+ The root endpoint publishes each game's stable `slug` and available `types`. Type-list responses publish stable entity `slug` values for detail lookups.
142
148
 
143
- ```js
144
- await gamingInfos.Get('vrchat', 'worlds', 'world-slug');
145
- ```
146
-
147
- Live endpoint:
149
+ Examples:
148
150
 
149
151
  ```http
150
- GET /v5/games/api/gaming-infos/:game/:type/:name
152
+ GET /v5/games/api/gaming-infos/codblackops2/characters
153
+ GET /v5/games/api/gaming-infos/codblackops2/npcs
154
+ GET /v5/games/api/gaming-infos/codblackops2/maps
155
+ GET /v5/games/api/gaming-infos/codmodernwarfare4/characters
156
+ GET /v5/games/api/gaming-infos/codmodernwarfare4/maps
151
157
  ```
152
158
 
153
- The V5 API returns stable `slug` values for list entries. Use those slugs for detail lookups instead of trying to generate filenames from display names yourself.
159
+ ### Main helpers
154
160
 
155
- ## `CacheInfo()`
161
+ ```js
162
+ await info.Games();
163
+ await info.Game('codblackops2');
156
164
 
157
- Reads information about the last mirrored Gaming Infos fallback snapshot.
165
+ await info.List('codblackops2', 'characters');
166
+ await info.List('codblackops2', 'npcs');
167
+ await info.List('codblackops2', 'maps');
158
168
 
159
- ```js
160
- const cache = await gamingInfos.CacheInfo();
161
- console.log(cache?.syncedAt, cache?.contentHash);
162
- ```
169
+ await info.Characters('codblackops2', 'character-slug');
170
+ await info.NPCs('codblackops2', 'npc-slug');
171
+ await info.Maps('codblackops2', 'map-slug');
163
172
 
164
- ---
173
+ await info.Worlds('vrchat', 'world-slug');
174
+ await info.Groups('vrchat', 'group-slug');
175
+ await info.Players('vrchat', 'player-slug');
176
+ await info.Avatars('vrchat', 'avatar-slug');
165
177
 
166
- # 🎁 Game Codes API
178
+ await info.Get('codblackops2', 'maps', 'map-slug');
179
+ await info.CacheInfo();
180
+ ```
167
181
 
168
- Version 2.2.0 adds API-first redeem-code and creator-code support using the same fallback model.
182
+ ## Game Codes API
169
183
 
170
- APINODE endpoints:
184
+ Game Codes are separate from Gaming Infos and are discovered dynamically from APINODE.
171
185
 
172
186
  ```http
173
187
  GET /v5/games/api/codes
@@ -176,39 +190,19 @@ GET /v5/games/api/codes/:game
176
190
  GET /v5/games/api/codes/:game/:code
177
191
  ```
178
192
 
179
- `/codes/status` is cache/status data only and does **not** trigger website scraping or a source refresh.
180
-
181
- ## `Codes()`
182
-
183
- Returns the Game Codes directory, including supported games, aliases, metadata, counters, source counts, and endpoint information.
193
+ Package helpers:
184
194
 
185
195
  ```js
186
- const directory = await gamingInfos.Codes();
196
+ const directory = await info.Codes();
197
+ const status = await info.CodesStatus();
187
198
 
188
- console.log(directory.games);
189
- console.log(directory.aliases);
190
- ```
191
-
192
- ## `CodesStatus()`
193
-
194
- Returns the cached source-refresh state.
195
-
196
- ```js
197
- const status = await gamingInfos.CodesStatus();
199
+ const codes = await info.GameCodes('fortnite');
200
+ const allCodes = await info.GameCodes('fortnite', { includeUnknown: true });
201
+ const oneCode = await info.GameCode('fortnite', 'SOME-CODE');
202
+ const codeCache = await info.CodeCacheInfo();
198
203
  ```
199
204
 
200
- ## `GameCodes(game, options)`
201
-
202
- Returns code lists using the existing APINODE response shape:
203
-
204
- ```js
205
- const fortniteCodes = await gamingInfos.GameCodes('fortnite');
206
-
207
- console.log(fortniteCodes.Active);
208
- console.log(fortniteCodes.Expired);
209
- ```
210
-
211
- Default shape:
205
+ Default per-game shape:
212
206
 
213
207
  ```json
214
208
  {
@@ -217,15 +211,7 @@ Default shape:
217
211
  }
218
212
  ```
219
213
 
220
- Include queued/unknown records:
221
-
222
- ```js
223
- const allFortniteCodes = await gamingInfos.GameCodes('fortnite', {
224
- includeUnknown: true
225
- });
226
- ```
227
-
228
- Which can return:
214
+ With `includeUnknown: true`:
229
215
 
230
216
  ```json
231
217
  {
@@ -235,189 +221,132 @@ Which can return:
235
221
  }
236
222
  ```
237
223
 
238
- Filtering is supported:
239
-
240
- ```js
241
- const creatorCodes = await gamingInfos.GameCodes('fortnite', {
242
- category: 'creator-code',
243
- includeUnknown: true
244
- });
245
-
246
- const freeCodes = await gamingInfos.GameCodes('genshin-impact', {
247
- claimType: 'free'
248
- });
249
- ```
250
-
251
- Timezone can also be passed through to the live API:
252
-
253
- ```js
254
- const codes = await gamingInfos.GameCodes('fortnite', {
255
- timezone: 'Europe/London',
256
- includeUnknown: true
257
- });
258
- ```
259
-
260
- Cached aliases from the `/codes` directory are resolved during API outages as well, so aliases such as `fn`, `genshin`, `hsr`, or `wuwa` can still map to their canonical cached game dataset.
261
-
262
- ## `GameCode(game, code, options)`
263
-
264
- Looks up one specific code.
265
-
266
- ```js
267
- const creator = await gamingInfos.GameCode('fortnite', 'NEKOSUNEVR');
268
- console.log(creator);
269
- ```
270
-
271
- Live endpoint:
272
-
273
- ```http
274
- GET /v5/games/api/codes/:game/:code
275
- ```
276
-
277
- When APINODE is unavailable, the package searches the locally mirrored Active, Expired, and Unknown code buckets.
278
-
279
- ## `CodeCacheInfo()`
280
-
281
- Returns the local Game Codes cache manifest.
282
-
283
- ```js
284
- const codeCache = await gamingInfos.CodeCacheInfo();
285
- console.log(codeCache?.syncedAt, codeCache?.stats);
286
- ```
287
-
288
- ---
224
+ `GameCodes()` also supports `category`, `claimType`, and `timezone` options.
289
225
 
290
- # 📚 Function reference
226
+ ## Function reference
291
227
 
292
228
  | Function | Purpose |
293
229
  |---|---|
294
230
  | `Games()` | List Gaming Infos games |
295
231
  | `Game(game)` | Get game metadata |
296
- | `List(game, type)` | List every entry for one game/type |
232
+ | `List(game, type)` | List a complete dataset |
233
+ | `Characters(game, name)` | Get one character/skin/Operator/roster entity |
234
+ | `NPCs(game, name)` | Get one NPC |
235
+ | `Maps(game, name)` | Get one map/location |
297
236
  | `Worlds(game, name)` | Get one world |
298
237
  | `Groups(game, name)` | Get one group |
299
238
  | `Players(game, name)` | Get one player |
300
239
  | `Avatars(game, name)` | Get one avatar |
301
- | `Characters(game, name)` | Get one character/Warframe/Agent/etc. |
302
- | `Get(game, type, name)` | Generic entity lookup |
240
+ | `Get(game, type, name)` | Generic Gaming Infos detail lookup |
303
241
  | `CacheInfo()` | Gaming Infos fallback manifest |
304
242
  | `Codes()` | Game Codes directory |
305
- | `CodesStatus()` | Cached Game Codes source status |
243
+ | `CodesStatus()` | Game Codes source/sync status |
306
244
  | `GameCodes(game, options)` | Active/Expired/Unknown code lists |
307
- | `GameCode(game, code, options)` | One specific redeem/creator code |
245
+ | `GameCode(game, code, options)` | One redeem/creator code |
308
246
  | `CodeCacheInfo()` | Game Codes fallback manifest |
309
247
 
310
- ---
311
-
312
- # 💾 API-first fallback behavior
313
-
314
- Normal reads follow this path:
248
+ ## API-first fallback behavior
315
249
 
316
250
  ```text
317
- Application
318
- │
319
- ▼
320
- NekoSuneVR V5 API
321
- │
322
- ├── available ──► return live data
323
- │
324
- └── unavailable
325
- │
326
- ▼
251
+ application
252
+ ↓
253
+ live APINODE
254
+ ├─ success → use current live data
255
+ └─ unavailable/error
256
+ ↓
327
257
  bundled data/
328
- │
329
- ▼
330
- return last-good fallback
258
+ ↓
259
+ last-good fallback
331
260
  ```
332
261
 
333
- The package does not need an API key for the public read endpoints documented above.
334
-
335
262
  Set this to force local-only reads:
336
263
 
337
264
  ```bash
338
265
  GAMING_INFOS_DISABLE_API=1
339
266
  ```
340
267
 
341
- ---
268
+ Useful runtime variables:
342
269
 
343
- # 🔄 Daily fallback synchronization
270
+ | Variable | Default |
271
+ |---|---|
272
+ | `GAMING_INFOS_API_BASE` | `https://api.nekosunevr.co.uk` |
273
+ | `GAMING_INFOS_API_PATH` | `/v5/games/api/gaming-infos` |
274
+ | `GAME_CODES_API_PATH` | `/v5/games/api/codes` |
275
+ | `GAMING_INFOS_TIMEOUT_MS` | `4000` |
344
276
 
345
- The repository automatically runs the cache mirror **once every day at 03:23 UTC** through GitHub Actions.
277
+ ## Hourly fallback mirror
346
278
 
347
- The combined command is:
279
+ The GitHub Action checks APINODE **every hour at minute 23**.
348
280
 
349
281
  ```bash
350
282
  npm run sync:cache
351
283
  ```
352
284
 
353
- That performs both:
285
+ This mirrors both:
354
286
 
355
287
  ```bash
356
288
  npm run sync:gaming-infos-cache
357
289
  npm run sync:game-codes-cache
358
290
  ```
359
291
 
360
- The synchronization process is designed to be authoritative and failure-safe:
292
+ Gaming Infos now **auto-discovers games and dataset types** from the APINODE root response. The built-in manifest remains a compatibility/safety baseline for older APINODE deployments, but when the API reports:
361
293
 
362
- 1. Download the complete configured API snapshot into a temporary directory.
363
- 2. Validate all required responses.
364
- 3. Calculate content hashes and add/change/remove statistics.
365
- 4. Replace the old fallback only after the new snapshot succeeds completely.
366
- 5. Keep the previous fallback untouched if the API fails, times out, returns an error, or produces an incomplete snapshot.
367
- 6. Commit actual fallback changes back to the repository.
294
+ ```json
295
+ {
296
+ "slug": "codblackops2",
297
+ "types": ["characters", "npcs", "maps"]
298
+ }
299
+ ```
368
300
 
369
- Successful syncs mirror **additions, modifications, and removals**. If APINODE removes an entry, that entry is removed from the fallback during the next successful mirror.
301
+ the mirror automatically includes all three datasets. This is how all Call of Duty titles are picked up without hard-coding 23 package mirror entries, and it also makes future public game/type additions easier to propagate.
370
302
 
371
- Gaming Infos and Game Codes use independent atomic caches so a failure in one dataset cannot destroy the last-good snapshot of the other.
303
+ The mirror is atomic and last-good-safe:
372
304
 
373
- See [CACHE_SYNC.md](CACHE_SYNC.md) for the detailed cache architecture.
305
+ 1. Download the root Gaming Infos directory and merge its `slug`/`types` declarations into the effective mirror manifest.
306
+ 2. Download every game meta + every discovered/configured dataset to a temporary tree.
307
+ 3. Validate all required endpoints and entity slugs.
308
+ 4. Calculate hashes and add/change/remove statistics.
309
+ 5. Replace the old snapshot only after the new one succeeds completely.
310
+ 6. Keep the previous snapshot if APINODE is unavailable or any required dataset fails.
311
+ 7. Commit only when stable content actually changed.
374
312
 
375
- ---
313
+ Game-code countdown seconds are not stored as meaningful repository changes; fallback countdowns are recalculated from stable expiry dates when read.
376
314
 
377
- # 🧪 Cache tests
315
+ See [CACHE_SYNC.md](CACHE_SYNC.md) for the detailed mirror design.
378
316
 
379
- Run all cache safety tests:
317
+ ## Cache tests
380
318
 
381
319
  ```bash
382
320
  npm run test:all-cache
383
- ```
384
-
385
- Or individually:
386
-
387
- ```bash
388
321
  npm run test:cache-sync
389
322
  npm run test:game-code-cache
390
323
  ```
391
324
 
392
- The tests cover scenarios including:
325
+ Tests cover additions, updates, removals, duplicate/invalid data, dynamic APINODE dataset discovery, partial HTTP failures, and last-good snapshot preservation.
393
326
 
394
- - new entries appearing
395
- - existing entries changing
396
- - upstream entries being removed
397
- - duplicate/invalid data protection
398
- - partial API failures
399
- - simulated HTTP 5xx outages
400
- - preserving the last-good fallback after a failed sync
327
+ ## Fallback structure
401
328
 
402
- ---
403
-
404
- # 📁 Fallback data structure
329
+ After APINODE has populated a title and the hourly mirror has completed successfully, the repository structure includes entries like:
405
330
 
406
331
  ```text
407
332
  data/
408
- ├── genshinimpact/
409
- │ ├── meta.json
410
- │ └── characters/
411
- ├── honkaistarrail/
412
- ├── nte/
413
- ├── wutheringwaves/
414
- ├── warframe/
415
333
  ├── fortnite/
416
- ├── zenlesszonezero/
417
- ├── toweroffantasy/
418
- ├── arknightsendfield/
419
- ├── vrchat/
420
334
  │ ├── meta.json
335
+ │ ├── characters/
336
+ │ ├── npcs/
337
+ │ └── maps/
338
+ ├── codblackops2/
339
+ │ ├── meta.json
340
+ │ ├── characters/
341
+ │ ├── npcs/
342
+ │ └── maps/
343
+ ├── codmodernwarfare4/
344
+ │ ├── meta.json
345
+ │ ├── characters/
346
+ │ ├── npcs/
347
+ │ └── maps/
348
+ ├── ...
349
+ ├── vrchat/
421
350
  │ ├── players/
422
351
  │ ├── groups/
423
352
  │ ├── worlds/
@@ -428,108 +357,18 @@ data/
428
357
  ├── status.json
429
358
  ├── .cache-manifest.json
430
359
  └── games/
431
- └── <game>.json
432
360
  ```
433
361
 
434
- An entity with no verified image can use:
362
+ ## Data policy
435
363
 
436
- ```json
437
- {
438
- "image": ""
439
- }
440
- ```
441
-
442
- Consumers should treat a blank image string as "no verified image available".
443
-
444
- ---
445
-
446
- # ⚙️ Environment variables
447
-
448
- ## Runtime API reads
449
-
450
- | Variable | Default | Purpose |
451
- |---|---|---|
452
- | `GAMING_INFOS_API_BASE` | `https://api.nekosunevr.co.uk` | NekoSuneVR APINODE base URL |
453
- | `GAMING_INFOS_API_PATH` | `/v5/games/api/gaming-infos` | Gaming Infos path |
454
- | `GAME_CODES_API_PATH` | `/v5/games/api/codes` | Game Codes path |
455
- | `GAMING_INFOS_DISABLE_API` | unset | `1`/`true` forces local-only operation |
456
- | `GAMING_INFOS_TIMEOUT_MS` | `4000` | Runtime API timeout before fallback |
457
-
458
- ## Cache mirror
459
-
460
- | Variable | Default | Purpose |
461
- |---|---|---|
462
- | `GAMING_INFOS_CACHE_TIMEOUT_MS` | `15000` | Gaming Infos sync request timeout |
463
- | `GAMING_INFOS_CACHE_RETRIES` | `2` | Gaming Infos retry count |
464
- | `GAMING_INFOS_CACHE_RETRY_DELAY_MS` | `750` | Gaming Infos retry delay |
465
- | `GAME_CODES_CACHE_TIMEOUT_MS` | `15000` | Game Codes sync request timeout |
466
- | `GAME_CODES_CACHE_RETRIES` | `2` | Game Codes retry count |
467
- | `GAME_CODES_CACHE_RETRY_DELAY_MS` | `750` | Game Codes retry delay |
468
- | `GAME_CODES_CACHE_GAME_DELAY_MS` | small delay | Delay between per-game code snapshots |
469
-
470
- ---
364
+ Only add publicly available released data, or clearly official public beta/announcement information for a currently pre-release title. Do not add private profiles, private messages, authentication data, leaks, unofficial unreleased lists, datamined content, hidden APIs, or client-memory extraction.
471
365
 
472
- # 📝 Example character entry
366
+ ## npm fallback note
473
367
 
474
- Different games expose different fields. Consumers should use the fields relevant to that game rather than assuming every title has the same schema.
368
+ Published npm releases are immutable. The GitHub repository fallback can update hourly, but an already-installed npm release keeps the files bundled with that release until upgraded. Normal package reads still use live APINODE first when it is available.
475
369
 
476
- ```json
477
- {
478
- "name": "Example Character",
479
- "slug": "examplecharacter",
480
- "rarity": "5-star",
481
- "element": "Electro",
482
- "weapon": "Sword",
483
- "description": "Public character information.",
484
- "image": "https://example.com/character.webp",
485
- "url": "https://example.com/source",
486
- "source": {
487
- "provider": "Public source",
488
- "publicDataOnly": true
489
- }
490
- }
491
- ```
370
+ ## Disclaimer
492
371
 
493
- ---
494
-
495
- # 🤝 Contributions
496
-
497
- Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).
498
-
499
- Please follow these rules:
500
-
501
- - Only include publicly available data or data you have permission to publish.
502
- - Do not include private profiles, private Discord messages, DMs, private logs, authentication data, or personal information.
503
- - Do not add leaks, datamined/unreleased content, hidden APIs, memory-inspection data, or client-extracted private data.
504
- - Respect each game's Terms of Service and community rules.
505
- - Keep sources clear and verifiable.
506
- - Do not submit harassment, defamation, doxxing, or invasive profile information.
507
-
508
- ---
509
-
510
- # ⚠️ Package fallback note
511
-
512
- GitHub repository cache snapshots update automatically, but published npm packages are immutable.
513
-
514
- An already-installed npm release keeps the fallback JSON bundled with that release until you update the package. While APINODE is online, live API reads still provide current data without requiring a package release.
515
-
516
- ---
517
-
518
- # ⚠️ Disclaimer
519
-
520
- This project is not affiliated with or endorsed by VRChat Inc., HoYoverse, Kuro Games, Digital Extremes, Epic Games, Hotta Studio, Hypergryph/GRYPHLINE, or any other game publisher represented by the data.
521
-
522
- Game names, logos, characters, and related trademarks belong to their respective owners.
523
-
524
- ---
525
-
526
- # 🧠 Credits
372
+ This project is not affiliated with or endorsed by Activision, Epic Games, VRChat Inc., HoYoverse, Kuro Games, Digital Extremes, Hotta Studio, Hypergryph/GRYPHLINE, or other publishers represented by the data. Game names, logos, characters, and related trademarks belong to their respective owners.
527
373
 
528
374
  Maintained by **NekoSune Projects**.
529
-
530
- Contributions are welcome — keep the data public, accurate, and game-friendly.
531
-
532
- <!-- GitAds-Verify: 2XHQSF1IKOWF4FH8P2TRI5GRWIJG2TJP -->
533
-
534
- ## GitAds Sponsored
535
- [![Sponsored by GitAds](https://gitads.dev/v1/ad-serve?source=nekosuneprojects/gaming-infos@github)](https://gitads.dev/v1/ad-track?source=nekosuneprojects/gaming-infos@github)