@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.
- package/.github/workflows/sync-api-cache.yml +3 -2
- package/CACHE_SYNC.md +84 -54
- package/CHANGELOG.md +34 -3
- package/README.md +210 -371
- package/data/.cache-manifest.json +112 -0
- package/data/arknightsendfield/characters/akekuri.json +75 -0
- package/data/arknightsendfield/characters/alesh.json +75 -0
- package/data/arknightsendfield/characters/antal.json +75 -0
- package/data/arknightsendfield/characters/arcane.json +75 -0
- package/data/arknightsendfield/characters/arclight.json +75 -0
- package/data/arknightsendfield/characters/ardelia.json +75 -0
- package/data/arknightsendfield/characters/avywenna.json +76 -0
- package/data/arknightsendfield/characters/camille.json +77 -0
- package/data/arknightsendfield/characters/catcher.json +76 -0
- package/data/arknightsendfield/characters/chenqianyu.json +76 -0
- package/data/arknightsendfield/characters/dapan.json +76 -0
- package/data/arknightsendfield/characters/ember.json +76 -0
- package/data/arknightsendfield/characters/endministrator.json +63 -0
- package/data/arknightsendfield/characters/estella.json +76 -0
- package/data/arknightsendfield/characters/fluorite.json +75 -0
- package/data/arknightsendfield/characters/gilberta.json +76 -0
- package/data/arknightsendfield/characters/laevatain.json +76 -0
- package/data/arknightsendfield/characters/lastrite.json +76 -0
- package/data/arknightsendfield/characters/lifeng.json +75 -0
- package/data/arknightsendfield/characters/liino.json +76 -0
- package/data/arknightsendfield/characters/mifu.json +75 -0
- package/data/arknightsendfield/characters/perlica.json +76 -0
- package/data/arknightsendfield/characters/pogranichnik.json +75 -0
- package/data/arknightsendfield/characters/purrchena.json +50 -0
- package/data/arknightsendfield/characters/rossi.json +77 -0
- package/data/arknightsendfield/characters/snowshine.json +75 -0
- package/data/arknightsendfield/characters/tangtang.json +76 -0
- package/data/arknightsendfield/characters/typhoeus.json +57 -0
- package/data/arknightsendfield/characters/wulfgard.json +77 -0
- package/data/arknightsendfield/characters/xaihi.json +76 -0
- package/data/arknightsendfield/characters/yvonne.json +76 -0
- package/data/arknightsendfield/characters/zhuangfangyi.json +76 -0
- package/data/fortnite/characters/agentjones.json +43 -0
- package/data/fortnite/characters/agentpeely.json +43 -0
- package/data/fortnite/characters/andyfangerson.json +42 -0
- package/data/fortnite/characters/antonia.json +43 -0
- package/data/fortnite/characters/anwar.json +44 -0
- package/data/fortnite/characters/aphrodite.json +43 -0
- package/data/fortnite/characters/apollo.json +36 -0
- package/data/fortnite/characters/arcticassassin.json +43 -0
- package/data/fortnite/characters/artemis.json +36 -0
- package/data/fortnite/characters/battlewoodboulevard.json +43 -0
- package/data/fortnite/characters/beastmode.json +45 -0
- package/data/fortnite/characters/bogstick.json +43 -0
- package/data/fortnite/characters/boxy.json +44 -0
- package/data/fortnite/characters/bravoleader.json +44 -0
- package/data/fortnite/characters/briteraider.json +43 -0
- package/data/fortnite/characters/brutalboxcars.json +46 -0
- package/data/fortnite/characters/bryne.json +44 -0
- package/data/fortnite/characters/buildersbarracks.json +38 -0
- package/data/fortnite/characters/bullshark.json +43 -0
- package/data/fortnite/characters/bumpybay.json +44 -0
- package/data/fortnite/characters/burd.json +44 -0
- package/data/fortnite/characters/burdemart.json +39 -0
- package/data/fortnite/characters/burdtogo.json +42 -0
- package/data/fortnite/characters/busansanctuary.json +39 -0
- package/data/fortnite/characters/calamaricanyon.json +41 -0
- package/data/fortnite/characters/canyoncrossing.json +45 -0
- package/data/fortnite/characters/captainjones.json +40 -0
- package/data/fortnite/characters/centurion.json +44 -0
- package/data/fortnite/characters/cerberus.json +43 -0
- package/data/fortnite/characters/charon.json +43 -0
- package/data/fortnite/characters/chiara.json +43 -0
- package/data/fortnite/characters/clara.json +43 -0
- package/data/fortnite/characters/classifiedcanyon.json +43 -0
- package/data/fortnite/characters/clawsylodge.json +41 -0
- package/data/fortnite/characters/cletuscornhole.json +43 -0
- package/data/fortnite/characters/contractgiller.json +44 -0
- package/data/fortnite/characters/corruptioncorners.json +42 -0
- package/data/fortnite/characters/countessdaraku.json +45 -0
- package/data/fortnite/characters/crackshotscabin.json +40 -0
- package/data/fortnite/characters/creepycamps.json +36 -0
- package/data/fortnite/characters/crimecity.json +47 -0
- package/data/fortnite/characters/dara.json +42 -0
- package/data/fortnite/characters/darkruby.json +43 -0
- package/data/fortnite/characters/demonsdojo.json +46 -0
- package/data/fortnite/characters/diamonddiva.json +43 -0
- package/data/fortnite/characters/donutdistrict.json +43 -0
- package/data/fortnite/characters/drakonsteelrider.json +43 -0
- package/data/fortnite/characters/dummy.json +45 -0
- package/data/fortnite/characters/edwardscissorhands.json +39 -0
- package/data/fortnite/characters/etheria.json +43 -0
- package/data/fortnite/characters/evergreenterrace.json +41 -0
- package/data/fortnite/characters/fishmarket.json +39 -0
- package/data/fortnite/characters/fishstick.json +45 -0
- package/data/fortnite/characters/fishthicc.json +43 -0
- package/data/fortnite/characters/fortressofsolitude.json +37 -0
- package/data/fortnite/characters/foxyfloodgate.json +43 -0
- package/data/fortnite/characters/freakyfields.json +38 -0
- package/data/fortnite/characters/goldengrove.json +41 -0
- package/data/fortnite/characters/graveheart.json +43 -0
- package/data/fortnite/characters/grievouscampsite.json +38 -0
- package/data/fortnite/characters/guardianamara.json +44 -0
- package/data/fortnite/characters/gwenpool.json +41 -0
- package/data/fortnite/characters/hanamuracourtyard.json +27 -0
- package/data/fortnite/characters/heartbreakranger.json +42 -0
- package/data/fortnite/characters/heatwaveharbor.json +41 -0
- package/data/fortnite/characters/heroichope.json +44 -0
- package/data/fortnite/characters/hope.json +43 -0
- package/data/fortnite/characters/hopefulheights.json +46 -0
- package/data/fortnite/characters/humblehills.json +41 -0
- package/data/fortnite/characters/innovatorslone.json +43 -0
- package/data/fortnite/characters/insight.json +43 -0
- package/data/fortnite/characters/ironman.json +40 -0
- package/data/fortnite/characters/jittershock.json +44 -0
- package/data/fortnite/characters/joeycaliente.json +44 -0
- package/data/fortnite/characters/jonithescarlet.json +43 -0
- package/data/fortnite/characters/khabylame.json +40 -0
- package/data/fortnite/characters/khari.json +44 -0
- package/data/fortnite/characters/kitbash.json +44 -0
- package/data/fortnite/characters/kitesflight.json +41 -0
- package/data/fortnite/characters/knightmare.json +43 -0
- package/data/fortnite/characters/laguna.json +43 -0
- package/data/fortnite/characters/lakespringfield.json +35 -0
- package/data/fortnite/characters/lakespringfieldgasstation.json +39 -0
- package/data/fortnite/characters/lanallane.json +42 -0
- package/data/fortnite/characters/lattelanding.json +41 -0
- package/data/fortnite/characters/lavendra.json +44 -0
- package/data/fortnite/characters/leelah.json +45 -0
- package/data/fortnite/characters/liftylodge.json +42 -0
- package/data/fortnite/characters/lonewolflair.json +42 -0
- package/data/fortnite/characters/longshot.json +41 -0
- package/data/fortnite/characters/lostlake.json +44 -0
- package/data/fortnite/characters/loveranger.json +44 -0
- package/data/fortnite/characters/mae.json +43 -0
- package/data/fortnite/characters/magicmosses.json +42 -0
- package/data/fortnite/characters/maskedmeadows.json +48 -0
- package/data/fortnite/characters/mechateamshadow.json +44 -0
- package/data/fortnite/characters/medusa.json +43 -0
- package/data/fortnite/characters/meowscles.json +42 -0
- package/data/fortnite/characters/mephisto.json +41 -0
- package/data/fortnite/characters/metalmouth.json +44 -0
- package/data/fortnite/characters/mincemeat.json +43 -0
- package/data/fortnite/characters/munitionsexpert.json +42 -0
- package/data/fortnite/characters/myna.json +42 -0
- package/data/fortnite/characters/newsanctuary.json +43 -0
- package/data/fortnite/characters/nia.json +42 -0
- package/data/fortnite/characters/nightshiftforest.json +43 -0
- package/data/fortnite/characters/nisha.json +42 -0
- package/data/fortnite/characters/nolanchance.json +43 -0
- package/data/fortnite/characters/noorah.json +44 -0
- package/data/fortnite/characters/odyssey.json +43 -0
- package/data/fortnite/characters/openaironsen.json +40 -0
- package/data/fortnite/characters/oscar.json +42 -0
- package/data/fortnite/characters/outlawoasis.json +40 -0
- package/data/fortnite/characters/outpostenclave.json +27 -0
- package/data/fortnite/characters/oxrhq.json +37 -0
- package/data/fortnite/characters/paintedpalms.json +41 -0
- package/data/fortnite/characters/peabody.json +42 -0
- package/data/fortnite/characters/peelosopherbananocrates.json +43 -0
- package/data/fortnite/characters/peely.json +41 -0
- package/data/fortnite/characters/peelybone.json +43 -0
- package/data/fortnite/characters/persephone.json +42 -0
- package/data/fortnite/characters/phaedra.json +42 -0
- package/data/fortnite/characters/phantommeowscles.json +43 -0
- package/data/fortnite/characters/piperpace.json +43 -0
- package/data/fortnite/characters/poseidon.json +42 -0
- package/data/fortnite/characters/pumpedpower.json +40 -0
- package/data/fortnite/characters/pumpinpipes.json +39 -0
- package/data/fortnite/characters/pumpkinking.json +40 -0
- package/data/fortnite/characters/purradisemeowscles.json +43 -0
- package/data/fortnite/characters/rangersrest.json +36 -0
- package/data/fortnite/characters/rebeloutpost.json +37 -0
- package/data/fortnite/characters/renegadeshadow.json +44 -0
- package/data/fortnite/characters/resistancebase.json +27 -0
- package/data/fortnite/characters/rippedtides.json +43 -0
- package/data/fortnite/characters/rollingblossomsfarm.json +41 -0
- package/data/fortnite/characters/royalebomber.json +38 -0
- package/data/fortnite/characters/ruckus.json +42 -0
- package/data/fortnite/characters/rust.json +41 -0
- package/data/fortnite/characters/sakuracircle.json +36 -0
- package/data/fortnite/characters/sandystrip.json +44 -0
- package/data/fortnite/characters/saskia.json +45 -0
- package/data/fortnite/characters/seaportcity.json +48 -0
- package/data/fortnite/characters/shakensanctuary.json +42 -0
- package/data/fortnite/characters/shimmerdusk.json +41 -0
- package/data/fortnite/characters/shinyshafts.json +38 -0
- package/data/fortnite/characters/shogunssolitude.json +46 -0
- package/data/fortnite/characters/shuri.json +39 -0
- package/data/fortnite/characters/silashesk.json +42 -0
- package/data/fortnite/characters/slurproom.json +40 -0
- package/data/fortnite/characters/snowheart.json +44 -0
- package/data/fortnite/characters/snowstriker.json +43 -0
- package/data/fortnite/characters/solidsnake.json +39 -0
- package/data/fortnite/characters/sonor.json +46 -0
- package/data/fortnite/characters/spartanassassin.json +43 -0
- package/data/fortnite/characters/spirithuntersaeko.json +41 -0
- package/data/fortnite/characters/springfieldnationalparkstore.json +38 -0
- package/data/fortnite/characters/springfieldnuclearpowerplant.json +39 -0
- package/data/fortnite/characters/springfieldslurpworks.json +40 -0
- package/data/fortnite/characters/squibblyshores.json +42 -0
- package/data/fortnite/characters/squibblyspointlighthouse.json +37 -0
- package/data/fortnite/characters/starroakley.json +45 -0
- package/data/fortnite/characters/steelsight.json +43 -0
- package/data/fortnite/characters/sticks.json +35 -0
- package/data/fortnite/characters/sunkenshores.json +42 -0
- package/data/fortnite/characters/sunstrider.json +42 -0
- package/data/fortnite/characters/suntanspecialist.json +43 -0
- package/data/fortnite/characters/supernovaacademy.json +27 -0
- package/data/fortnite/characters/t60powerarmor.json +39 -0
- package/data/fortnite/characters/thebattlewoods.json +44 -0
- package/data/fortnite/characters/thegreatturtle.json +37 -0
- package/data/fortnite/characters/theoperator.json +42 -0
- package/data/fortnite/characters/thequackaway.json +39 -0
- package/data/fortnite/characters/thestabilizer.json +38 -0
- package/data/fortnite/characters/theunderwriter.json +36 -0
- package/data/fortnite/characters/toyboxdocks.json +40 -0
- package/data/fortnite/characters/trace.json +43 -0
- package/data/fortnite/characters/triagetrooper.json +43 -0
- package/data/fortnite/characters/triggerfish.json +44 -0
- package/data/fortnite/characters/trogscave.json +38 -0
- package/data/fortnite/characters/utopiacity.json +27 -0
- package/data/fortnite/characters/vengeancejones.json +42 -0
- package/data/fortnite/characters/victoriasaint.json +43 -0
- package/data/fortnite/characters/vineyshafts.json +35 -0
- package/data/fortnite/characters/volpez.json +41 -0
- package/data/fortnite/characters/warmachine.json +40 -0
- package/data/fortnite/characters/wastelandermagneto.json +40 -0
- package/data/fortnite/characters/wonkeeland.json +41 -0
- package/data/game-codes/.cache-manifest.json +148 -0
- package/data/game-codes/directory.json +1196 -0
- package/data/game-codes/games/arknights-endfield.json +958 -0
- package/data/game-codes/games/borderlands-1.json +414 -0
- package/data/game-codes/games/borderlands-2.json +340 -0
- package/data/game-codes/games/borderlands-3.json +1025 -0
- package/data/game-codes/games/borderlands-4.json +3128 -0
- package/data/game-codes/games/borderlands-the-pre-sequel.json +599 -0
- package/data/game-codes/games/brawl-stars.json +4766 -0
- package/data/game-codes/games/clash-of-clans.json +4766 -0
- package/data/game-codes/games/clash-royale.json +5 -0
- package/data/game-codes/games/cookie-run-kingdom.json +5366 -0
- package/data/game-codes/games/fortnite.json +897 -0
- package/data/game-codes/games/genshin-impact.json +8520 -0
- package/data/game-codes/games/honkai-impact-3rd.json +405 -0
- package/data/game-codes/games/honkai-star-rail.json +9863 -0
- package/data/game-codes/games/neverness-to-everness.json +1695 -0
- package/data/game-codes/games/roblox-doors.json +1842 -0
- package/data/game-codes/games/roblox-rivals.json +2919 -0
- package/data/game-codes/games/tower-of-fantasy.json +2839 -0
- package/data/game-codes/games/warframe.json +20824 -0
- package/data/game-codes/games/wuthering-waves.json +2477 -0
- package/data/game-codes/games/zenless-zone-zero.json +3681 -0
- package/data/game-codes/status.json +580 -0
- package/data/genshinimpact/characters/aino.json +34 -0
- package/data/genshinimpact/characters/albedo.json +10 -9
- package/data/genshinimpact/characters/alhaitham.json +11 -10
- package/data/genshinimpact/characters/aloy.json +10 -9
- package/data/genshinimpact/characters/alyosha.json +34 -0
- package/data/genshinimpact/characters/amber.json +11 -10
- package/data/genshinimpact/characters/aratakiitto.json +11 -10
- package/data/genshinimpact/characters/arlecchino.json +11 -10
- package/data/genshinimpact/characters/baizhu.json +11 -10
- package/data/genshinimpact/characters/barbara.json +10 -9
- package/data/genshinimpact/characters/beidou.json +11 -10
- package/data/genshinimpact/characters/bennett.json +10 -9
- package/data/genshinimpact/characters/candace.json +11 -10
- package/data/genshinimpact/characters/charlotte.json +10 -9
- package/data/genshinimpact/characters/chasca.json +10 -9
- package/data/genshinimpact/characters/chevreuse.json +10 -9
- package/data/genshinimpact/characters/chiori.json +10 -9
- package/data/genshinimpact/characters/chongyun.json +11 -10
- package/data/genshinimpact/characters/citlali.json +10 -9
- package/data/genshinimpact/characters/clorinde.json +10 -9
- package/data/genshinimpact/characters/collei.json +11 -10
- package/data/genshinimpact/characters/columbina.json +34 -0
- package/data/genshinimpact/characters/cyno.json +11 -10
- package/data/genshinimpact/characters/dahlia.json +9 -8
- package/data/genshinimpact/characters/dehya.json +10 -9
- package/data/genshinimpact/characters/diluc.json +10 -9
- package/data/genshinimpact/characters/diona.json +10 -9
- package/data/genshinimpact/characters/dori.json +10 -9
- package/data/genshinimpact/characters/durin.json +10 -9
- package/data/genshinimpact/characters/emilie.json +10 -9
- package/data/genshinimpact/characters/escoffier.json +11 -10
- package/data/genshinimpact/characters/eula.json +10 -9
- package/data/genshinimpact/characters/faruzan.json +11 -10
- package/data/genshinimpact/characters/fischl.json +11 -10
- package/data/genshinimpact/characters/flins.json +34 -0
- package/data/genshinimpact/characters/freminet.json +10 -9
- package/data/genshinimpact/characters/furina.json +11 -10
- package/data/genshinimpact/characters/gaming.json +10 -9
- package/data/genshinimpact/characters/ganyu.json +10 -9
- package/data/genshinimpact/characters/gorou.json +11 -10
- package/data/genshinimpact/characters/hutao.json +11 -10
- package/data/genshinimpact/characters/iansan.json +10 -9
- package/data/genshinimpact/characters/ifa.json +34 -0
- package/data/genshinimpact/characters/illuga.json +34 -0
- package/data/genshinimpact/characters/ineffa.json +10 -9
- package/data/genshinimpact/characters/jahoda.json +34 -0
- package/data/genshinimpact/characters/jean.json +10 -9
- package/data/genshinimpact/characters/kachina.json +10 -9
- package/data/genshinimpact/characters/kaedeharakazuha.json +11 -10
- package/data/genshinimpact/characters/kaeya.json +10 -9
- package/data/genshinimpact/characters/kamisatoayaka.json +10 -9
- package/data/genshinimpact/characters/kamisatoayato.json +10 -9
- package/data/genshinimpact/characters/kaveh.json +11 -10
- package/data/genshinimpact/characters/keqing.json +10 -9
- package/data/genshinimpact/characters/kinich.json +10 -9
- package/data/genshinimpact/characters/kirara.json +10 -9
- package/data/genshinimpact/characters/klee.json +10 -9
- package/data/genshinimpact/characters/kujousara.json +10 -9
- package/data/genshinimpact/characters/kukishinobu.json +11 -10
- package/data/genshinimpact/characters/lanyan.json +10 -9
- package/data/genshinimpact/characters/lauma.json +34 -0
- package/data/genshinimpact/characters/layla.json +10 -9
- package/data/genshinimpact/characters/linnea.json +34 -0
- package/data/genshinimpact/characters/lisa.json +11 -10
- package/data/genshinimpact/characters/lohen.json +10 -9
- package/data/genshinimpact/characters/lynette.json +10 -9
- package/data/genshinimpact/characters/lyney.json +10 -9
- package/data/genshinimpact/characters/mavuika.json +10 -9
- package/data/genshinimpact/characters/mika.json +34 -0
- package/data/genshinimpact/characters/mikaschmidt.json +10 -9
- package/data/genshinimpact/characters/mona.json +11 -10
- package/data/genshinimpact/characters/mualani.json +10 -9
- package/data/genshinimpact/characters/nahida.json +11 -10
- package/data/genshinimpact/characters/navia.json +10 -9
- package/data/genshinimpact/characters/nefer.json +34 -0
- package/data/genshinimpact/characters/neuvillette.json +10 -9
- package/data/genshinimpact/characters/nicole.json +34 -0
- package/data/genshinimpact/characters/nilou.json +10 -9
- package/data/genshinimpact/characters/ningguang.json +10 -9
- package/data/genshinimpact/characters/noelle.json +11 -10
- package/data/genshinimpact/characters/odette.json +34 -0
- package/data/genshinimpact/characters/ororon.json +10 -9
- package/data/genshinimpact/characters/prune.json +9 -8
- package/data/genshinimpact/characters/qiqi.json +11 -10
- package/data/genshinimpact/characters/raidenshogun.json +11 -10
- package/data/genshinimpact/characters/razor.json +10 -9
- package/data/genshinimpact/characters/rosaria.json +11 -10
- package/data/genshinimpact/characters/sandrone.json +34 -0
- package/data/genshinimpact/characters/sangonomiyakokomi.json +11 -10
- package/data/genshinimpact/characters/sayu.json +10 -9
- package/data/genshinimpact/characters/sethos.json +10 -9
- package/data/genshinimpact/characters/shenhe.json +11 -10
- package/data/genshinimpact/characters/shikanoinheizou.json +11 -10
- package/data/genshinimpact/characters/sigewinne.json +10 -9
- package/data/genshinimpact/characters/skirk.json +10 -9
- package/data/genshinimpact/characters/sucrose.json +11 -10
- package/data/genshinimpact/characters/tartaglia.json +34 -0
- package/data/genshinimpact/characters/thoma.json +10 -9
- package/data/genshinimpact/characters/tighnari.json +11 -10
- package/data/genshinimpact/characters/traveler.json +34 -0
- package/data/genshinimpact/characters/varesa.json +10 -9
- package/data/genshinimpact/characters/varka.json +9 -8
- package/data/genshinimpact/characters/venti.json +11 -10
- package/data/genshinimpact/characters/wanderer.json +10 -9
- package/data/genshinimpact/characters/wonderlandmanekin.json +34 -0
- package/data/genshinimpact/characters/wriothesley.json +11 -10
- package/data/genshinimpact/characters/xiangling.json +11 -10
- package/data/genshinimpact/characters/xianyun.json +10 -9
- package/data/genshinimpact/characters/xiao.json +10 -9
- package/data/genshinimpact/characters/xilonen.json +10 -9
- package/data/genshinimpact/characters/xingqiu.json +11 -10
- package/data/genshinimpact/characters/xinyan.json +11 -10
- package/data/genshinimpact/characters/yaemiko.json +11 -10
- package/data/genshinimpact/characters/yanfei.json +11 -10
- package/data/genshinimpact/characters/yaoyao.json +11 -10
- package/data/genshinimpact/characters/yelan.json +10 -9
- package/data/genshinimpact/characters/yoimiya.json +11 -10
- package/data/genshinimpact/characters/yumemizukimizuki.json +10 -9
- package/data/genshinimpact/characters/yunjin.json +10 -9
- package/data/genshinimpact/characters/zhongli.json +10 -9
- package/data/genshinimpact/characters/zibai.json +10 -9
- package/data/genshinimpact/meta.json +12 -12
- package/data/honkaistarrail/characters/acheron.json +11 -10
- package/data/honkaistarrail/characters/aglaea.json +11 -10
- package/data/honkaistarrail/characters/anaxa.json +11 -10
- package/data/honkaistarrail/characters/archer.json +29 -0
- package/data/honkaistarrail/characters/argenti.json +11 -10
- package/data/honkaistarrail/characters/arlan.json +11 -10
- package/data/honkaistarrail/characters/ashveil.json +11 -10
- package/data/honkaistarrail/characters/asta.json +11 -10
- package/data/honkaistarrail/characters/aventurine.json +11 -10
- package/data/honkaistarrail/characters/bailu.json +11 -10
- package/data/honkaistarrail/characters/blackswan.json +11 -10
- package/data/honkaistarrail/characters/blade.json +11 -10
- package/data/honkaistarrail/characters/boothill.json +11 -10
- package/data/honkaistarrail/characters/bronya.json +11 -10
- package/data/honkaistarrail/characters/castorice.json +11 -10
- package/data/honkaistarrail/characters/cerydra.json +11 -10
- package/data/honkaistarrail/characters/cipher.json +11 -10
- package/data/honkaistarrail/characters/clara.json +11 -10
- package/data/honkaistarrail/characters/constance.json +11 -10
- package/data/honkaistarrail/characters/cyrene.json +11 -10
- package/data/honkaistarrail/characters/danheng.json +11 -10
- package/data/honkaistarrail/characters/danhengimbibitorlunae.json +29 -0
- package/data/honkaistarrail/characters/danhengpermansorterrae.json +29 -0
- package/data/honkaistarrail/characters/drratio.json +11 -10
- package/data/honkaistarrail/characters/evanescia.json +29 -0
- package/data/honkaistarrail/characters/evernight.json +29 -0
- package/data/honkaistarrail/characters/feixiao.json +11 -10
- package/data/honkaistarrail/characters/firefly.json +11 -10
- package/data/honkaistarrail/characters/fugue.json +29 -0
- package/data/honkaistarrail/characters/fuxuan.json +11 -10
- package/data/honkaistarrail/characters/gallagher.json +11 -10
- package/data/honkaistarrail/characters/gepard.json +11 -10
- package/data/honkaistarrail/characters/gilgamesh.json +29 -0
- package/data/honkaistarrail/characters/guinaifen.json +11 -10
- package/data/honkaistarrail/characters/hanya.json +11 -10
- package/data/honkaistarrail/characters/herta.json +11 -10
- package/data/honkaistarrail/characters/himeko.json +12 -11
- package/data/honkaistarrail/characters/himekonova.json +29 -0
- package/data/honkaistarrail/characters/hook.json +11 -10
- package/data/honkaistarrail/characters/huohuo.json +11 -10
- package/data/honkaistarrail/characters/hyacine.json +11 -10
- package/data/honkaistarrail/characters/hysilens.json +11 -10
- package/data/honkaistarrail/characters/jade.json +11 -10
- package/data/honkaistarrail/characters/jiaoqiu.json +11 -10
- package/data/honkaistarrail/characters/jingliu.json +11 -10
- package/data/honkaistarrail/characters/jingyuan.json +11 -10
- package/data/honkaistarrail/characters/kafka.json +11 -10
- package/data/honkaistarrail/characters/lingsha.json +11 -10
- package/data/honkaistarrail/characters/lisushang.json +11 -10
- package/data/honkaistarrail/characters/luka.json +11 -10
- package/data/honkaistarrail/characters/luocha.json +11 -10
- package/data/honkaistarrail/characters/lynx.json +11 -10
- package/data/honkaistarrail/characters/march7th.json +11 -10
- package/data/honkaistarrail/characters/misha.json +11 -10
- package/data/honkaistarrail/characters/mortenaxblade.json +29 -0
- package/data/honkaistarrail/characters/moze.json +11 -10
- package/data/honkaistarrail/characters/mydei.json +11 -10
- package/data/honkaistarrail/characters/natasha.json +11 -10
- package/data/honkaistarrail/characters/pela.json +11 -10
- package/data/honkaistarrail/characters/phainon.json +11 -10
- package/data/honkaistarrail/characters/qingque.json +11 -10
- package/data/honkaistarrail/characters/rappa.json +11 -10
- package/data/honkaistarrail/characters/rintohsaka.json +29 -0
- package/data/honkaistarrail/characters/robin.json +11 -10
- package/data/honkaistarrail/characters/ruanmei.json +11 -10
- package/data/honkaistarrail/characters/saber.json +29 -0
- package/data/honkaistarrail/characters/sampo.json +11 -10
- package/data/honkaistarrail/characters/seele.json +11 -10
- package/data/honkaistarrail/characters/serval.json +11 -10
- package/data/honkaistarrail/characters/silverwolf.json +11 -10
- package/data/honkaistarrail/characters/silverwolflv999.json +29 -0
- package/data/honkaistarrail/characters/sparkle.json +11 -10
- package/data/honkaistarrail/characters/sparxie.json +29 -0
- package/data/honkaistarrail/characters/sunday.json +29 -0
- package/data/honkaistarrail/characters/thedahlia.json +29 -0
- package/data/honkaistarrail/characters/theherta.json +29 -0
- package/data/honkaistarrail/characters/tingyun.json +11 -10
- package/data/honkaistarrail/characters/topaz.json +11 -10
- package/data/honkaistarrail/characters/topaznumby.json +29 -0
- package/data/honkaistarrail/characters/trailblazer.json +29 -0
- package/data/honkaistarrail/characters/tribbie.json +11 -10
- package/data/honkaistarrail/characters/welt.json +29 -0
- package/data/honkaistarrail/characters/weltyang.json +11 -10
- package/data/honkaistarrail/characters/xueyi.json +11 -10
- package/data/honkaistarrail/characters/yanqing.json +11 -10
- package/data/honkaistarrail/characters/yaoguang.json +11 -10
- package/data/honkaistarrail/characters/yukong.json +11 -10
- package/data/honkaistarrail/characters/yunli.json +11 -10
- package/data/honkaistarrail/meta.json +12 -12
- package/data/nte/characters/adler.json +13 -12
- package/data/nte/characters/aurelia.json +13 -12
- package/data/nte/characters/baicang.json +13 -12
- package/data/nte/characters/chaos.json +13 -12
- package/data/nte/characters/chiz.json +13 -12
- package/data/nte/characters/daffodill.json +13 -12
- package/data/nte/characters/edgar.json +13 -12
- package/data/nte/characters/esperzero.json +13 -12
- package/data/nte/characters/fadia.json +13 -12
- package/data/nte/characters/haniel.json +13 -12
- package/data/nte/characters/hathor.json +13 -12
- package/data/nte/characters/hotori.json +13 -12
- package/data/nte/characters/iroi.json +13 -12
- package/data/nte/characters/jiuyuan.json +13 -12
- package/data/nte/characters/lacrimosa.json +13 -12
- package/data/nte/characters/mint.json +13 -12
- package/data/nte/characters/nanally.json +13 -12
- package/data/nte/characters/sakiri.json +13 -12
- package/data/nte/characters/shinku.json +13 -12
- package/data/nte/characters/skia.json +13 -12
- package/data/nte/characters/zankou.json +51 -0
- package/data/nte/meta.json +12 -12
- package/data/toweroffantasy/characters/alyss.json +27 -0
- package/data/toweroffantasy/characters/annabella.json +23 -0
- package/data/toweroffantasy/characters/asuka.json +23 -0
- package/data/toweroffantasy/characters/bailing.json +23 -0
- package/data/toweroffantasy/characters/brevey.json +23 -0
- package/data/toweroffantasy/characters/claudia.json +23 -0
- package/data/toweroffantasy/characters/cobaltb.json +23 -0
- package/data/toweroffantasy/characters/cocoritter.json +23 -0
- package/data/toweroffantasy/characters/crow.json +23 -0
- package/data/toweroffantasy/characters/echo.json +23 -0
- package/data/toweroffantasy/characters/ene.json +23 -0
- package/data/toweroffantasy/characters/feise.json +25 -0
- package/data/toweroffantasy/characters/fenrir.json +23 -0
- package/data/toweroffantasy/characters/fiona.json +25 -0
- package/data/toweroffantasy/characters/frigg.json +23 -0
- package/data/toweroffantasy/characters/gnonno.json +23 -0
- package/data/toweroffantasy/characters/hilda.json +23 -0
- package/data/toweroffantasy/characters/huang.json +25 -0
- package/data/toweroffantasy/characters/huma.json +25 -0
- package/data/toweroffantasy/characters/icarus.json +23 -0
- package/data/toweroffantasy/characters/jiyu.json +25 -0
- package/data/toweroffantasy/characters/king.json +23 -0
- package/data/toweroffantasy/characters/lan.json +25 -0
- package/data/toweroffantasy/characters/lin.json +23 -0
- package/data/toweroffantasy/characters/linghan.json +23 -0
- package/data/toweroffantasy/characters/liuhuo.json +23 -0
- package/data/toweroffantasy/characters/lyra.json +23 -0
- package/data/toweroffantasy/characters/meryl.json +23 -0
- package/data/toweroffantasy/characters/mingjing.json +27 -0
- package/data/toweroffantasy/characters/nanyin.json +25 -0
- package/data/toweroffantasy/characters/nemesis.json +25 -0
- package/data/toweroffantasy/characters/pepper.json +23 -0
- package/data/toweroffantasy/characters/plotti.json +25 -0
- package/data/toweroffantasy/characters/roslyn.json +23 -0
- package/data/toweroffantasy/characters/rubilia.json +25 -0
- package/data/toweroffantasy/characters/ruby.json +25 -0
- package/data/toweroffantasy/characters/sakifuwa.json +23 -0
- package/data/toweroffantasy/characters/samir.json +23 -0
- package/data/toweroffantasy/characters/shiro.json +25 -0
- package/data/toweroffantasy/characters/tianlang.json +25 -0
- package/data/toweroffantasy/characters/tsubasa.json +23 -0
- package/data/toweroffantasy/characters/umi.json +23 -0
- package/data/toweroffantasy/characters/yanmiao.json +25 -0
- package/data/toweroffantasy/characters/yanuo.json +23 -0
- package/data/toweroffantasy/characters/yulan.json +23 -0
- package/data/toweroffantasy/characters/zero.json +23 -0
- package/data/vrchat/groups/clubzodiac.json +2 -1
- package/data/vrchat/groups/dirtydancers.json +2 -1
- package/data/vrchat/groups/drumsynews.json +2 -1
- package/data/vrchat/groups/ebola20.json +2 -1
- package/data/vrchat/groups/internationaldancersassociation.json +2 -1
- package/data/vrchat/groups/kannagang.json +2 -1
- package/data/vrchat/groups/lolisquad.json +2 -1
- package/data/vrchat/groups/nekonightsnightclub.json +2 -1
- package/data/vrchat/groups/nekostudios.json +2 -1
- package/data/vrchat/groups/nekosunecommunity.json +2 -1
- package/data/vrchat/groups/voidclub.json +2 -1
- package/data/vrchat/groups/voltdanceclub.json +2 -1
- package/data/vrchat/groups/vrceventsgroup.json +2 -1
- package/data/vrchat/groups/vrchatcommunitydiscord.json +2 -1
- package/data/vrchat/meta.json +11 -11
- package/data/vrchat/players/alto.json +8 -7
- package/data/vrchat/players/arcadum.json +9 -8
- package/data/vrchat/players/chairhandler.json +8 -7
- package/data/vrchat/players/chipz.json +8 -7
- package/data/vrchat/players/hikarivr.json +10 -9
- package/data/vrchat/players/kimple.json +9 -8
- package/data/vrchat/players/linkzr.json +7 -6
- package/data/vrchat/players/nagzz21.json +8 -7
- package/data/vrchat/players/nebride.json +9 -8
- package/data/vrchat/players/nekosunevr.json +10 -9
- package/data/vrchat/players/pokelawls.json +8 -7
- package/data/vrchat/players/qwonk.json +7 -6
- package/data/vrchat/players/roflgator.json +9 -8
- package/data/vrchat/players/scifri.json +6 -5
- package/data/vrchat/players/sodapoppin.json +8 -7
- package/data/vrchat/players/woops.json +8 -7
- package/data/vrchat/players/zentreya.json +9 -8
- package/data/vrchat/worlds/ascensionacademy.json +6 -5
- package/data/vrchat/worlds/clubvgl.json +7 -6
- package/data/vrchat/worlds/fightfinder.json +7 -6
- package/data/vrchat/worlds/hangouthouse.json +6 -5
- package/data/vrchat/worlds/nekostudioshalloween.json +8 -7
- package/data/vrchat/worlds/nekostudiosnewyear.json +8 -7
- package/data/vrchat/worlds/nekostudiosxmas.json +8 -7
- package/data/vrchat/worlds/nekosunevranimations2023.json +8 -7
- package/data/vrchat/worlds/nekosunevranimations20232024.json +10 -0
- package/data/vrchat/worlds/nekosunevranimations2024.json +8 -7
- package/data/vrchat/worlds/nekosunevranimations2025.json +8 -7
- package/data/vrchat/worlds/rumhamsavatarworld.json +6 -5
- package/data/vrchat/worlds/smewsranch.json +6 -5
- package/data/vrchat/worlds/smewsroom.json +6 -5
- package/data/vrchat/worlds/sunsetbar.json +6 -5
- package/data/vrchat/worlds/theblackcat.json +9 -8
- package/data/vrchat/worlds/thegreatpug.json +7 -6
- package/data/vrchat/worlds/themidnightbar.json +6 -5
- package/data/vrchat/worlds/voidclub.json +6 -5
- package/data/vrchat/worlds/voltdanceclub.json +6 -5
- package/data/vrchat/worlds/vrchathome.json +7 -6
- package/data/vrchat/worlds/whatalegend.json +5 -4
- package/data/warframe/characters/amesha.json +226 -0
- package/data/warframe/characters/ash.json +1354 -0
- package/data/warframe/characters/ashprime.json +1994 -0
- package/data/warframe/characters/atlas.json +916 -0
- package/data/warframe/characters/atlasprime.json +1632 -0
- package/data/warframe/characters/banshee.json +1036 -0
- package/data/warframe/characters/bansheeprime.json +1750 -0
- package/data/warframe/characters/baruuk.json +555 -0
- package/data/warframe/characters/baruukprime.json +1298 -0
- package/data/warframe/characters/bonewidow.json +354 -0
- package/data/warframe/characters/caliban.json +434 -0
- package/data/warframe/characters/calibanprime.json +683 -0
- package/data/warframe/characters/chroma.json +1344 -0
- package/data/warframe/characters/chromaprime.json +1977 -0
- package/data/warframe/characters/citrine.json +220 -0
- package/data/warframe/characters/cyte09.json +218 -0
- package/data/warframe/characters/dagath.json +194 -0
- package/data/warframe/characters/dante.json +223 -0
- package/data/warframe/characters/elytron.json +300 -0
- package/data/warframe/characters/ember.json +1209 -0
- package/data/warframe/characters/emberprime.json +1678 -0
- package/data/warframe/characters/equinox.json +958 -0
- package/data/warframe/characters/equinoxprime.json +1644 -0
- package/data/warframe/characters/excalibur.json +1603 -0
- package/data/warframe/characters/excaliburprime.json +1524 -0
- package/data/warframe/characters/excaliburumbra.json +397 -0
- package/data/warframe/characters/follie.json +246 -0
- package/data/warframe/characters/frost.json +1330 -0
- package/data/warframe/characters/frostprime.json +1686 -0
- package/data/warframe/characters/gara.json +925 -0
- package/data/warframe/characters/garaprime.json +1494 -0
- package/data/warframe/characters/garuda.json +851 -0
- package/data/warframe/characters/garudaprime.json +1449 -0
- package/data/warframe/characters/gauss.json +506 -0
- package/data/warframe/characters/gaussprime.json +1077 -0
- package/data/warframe/characters/grendel.json +463 -0
- package/data/warframe/characters/grendelprime.json +772 -0
- package/data/warframe/characters/gyre.json +381 -0
- package/data/warframe/characters/gyreprime.json +403 -0
- package/data/warframe/characters/harrow.json +916 -0
- package/data/warframe/characters/harrowprime.json +1700 -0
- package/data/warframe/characters/helminth.json +220 -0
- package/data/warframe/characters/hildryn.json +627 -0
- package/data/warframe/characters/hildrynprime.json +996 -0
- package/data/warframe/characters/hydroid.json +1028 -0
- package/data/warframe/characters/hydroidprime.json +1621 -0
- package/data/warframe/characters/inaros.json +976 -0
- package/data/warframe/characters/inarosprime.json +1721 -0
- package/data/warframe/characters/itzal.json +465 -0
- package/data/warframe/characters/ivara.json +1349 -0
- package/data/warframe/characters/ivaraprime.json +1921 -0
- package/data/warframe/characters/jade.json +240 -0
- package/data/warframe/characters/khora.json +804 -0
- package/data/warframe/characters/khoraprime.json +1403 -0
- package/data/warframe/characters/koumei.json +221 -0
- package/data/warframe/characters/kullervo.json +191 -0
- package/data/warframe/characters/lavos.json +511 -0
- package/data/warframe/characters/lavosprime.json +711 -0
- package/data/warframe/characters/limbo.json +1363 -0
- package/data/warframe/characters/limboprime.json +2084 -0
- package/data/warframe/characters/loki.json +1209 -0
- package/data/warframe/characters/lokiprime.json +1457 -0
- package/data/warframe/characters/mag.json +2089 -0
- package/data/warframe/characters/magprime.json +2532 -0
- package/data/warframe/characters/mesa.json +1195 -0
- package/data/warframe/characters/mesaprime.json +2059 -0
- package/data/warframe/characters/mirage.json +1561 -0
- package/data/warframe/characters/mirageprime.json +2257 -0
- package/data/warframe/characters/nekros.json +1235 -0
- package/data/warframe/characters/nekrosprime.json +1882 -0
- package/data/warframe/characters/nezha.json +868 -0
- package/data/warframe/characters/nezhaprime.json +1695 -0
- package/data/warframe/characters/nidus.json +1027 -0
- package/data/warframe/characters/nidusprime.json +1706 -0
- package/data/warframe/characters/nokko.json +308 -0
- package/data/warframe/characters/nova.json +1226 -0
- package/data/warframe/characters/novaprime.json +1667 -0
- package/data/warframe/characters/nyx.json +1610 -0
- package/data/warframe/characters/nyxprime.json +1967 -0
- package/data/warframe/characters/oberon.json +1249 -0
- package/data/warframe/characters/oberonprime.json +1872 -0
- package/data/warframe/characters/octavia.json +1049 -0
- package/data/warframe/characters/octaviaprime.json +1735 -0
- package/data/warframe/characters/odonata.json +336 -0
- package/data/warframe/characters/odonataprime.json +787 -0
- package/data/warframe/characters/oraxia.json +246 -0
- package/data/warframe/characters/orionsirius.json +134 -0
- package/data/warframe/characters/protea.json +521 -0
- package/data/warframe/characters/proteaprime.json +992 -0
- package/data/warframe/characters/qorvex.json +214 -0
- package/data/warframe/characters/revenant.json +931 -0
- package/data/warframe/characters/revenantprime.json +1494 -0
- package/data/warframe/characters/rhino.json +1344 -0
- package/data/warframe/characters/rhinoprime.json +1675 -0
- package/data/warframe/characters/saryn.json +1210 -0
- package/data/warframe/characters/sarynprime.json +2042 -0
- package/data/warframe/characters/sevagoth.json +478 -0
- package/data/warframe/characters/sevagothprime.json +910 -0
- package/data/warframe/characters/siriusorion.json +247 -0
- package/data/warframe/characters/styanax.json +320 -0
- package/data/warframe/characters/styanaxprime.json +321 -0
- package/data/warframe/characters/temple.json +271 -0
- package/data/warframe/characters/titania.json +1227 -0
- package/data/warframe/characters/titaniaprime.json +2000 -0
- package/data/warframe/characters/trinity.json +1097 -0
- package/data/warframe/characters/trinityprime.json +1849 -0
- package/data/warframe/characters/uriel.json +215 -0
- package/data/warframe/characters/valkyr.json +1165 -0
- package/data/warframe/characters/valkyrprime.json +1969 -0
- package/data/warframe/characters/vauban.json +1067 -0
- package/data/warframe/characters/vaubanprime.json +1614 -0
- package/data/warframe/characters/voidrig.json +355 -0
- package/data/warframe/characters/volt.json +1324 -0
- package/data/warframe/characters/voltprime.json +1843 -0
- package/data/warframe/characters/voruna.json +293 -0
- package/data/warframe/characters/vorunaprime.json +431 -0
- package/data/warframe/characters/wisp.json +824 -0
- package/data/warframe/characters/wispprime.json +908 -0
- package/data/warframe/characters/wukong.json +927 -0
- package/data/warframe/characters/wukongprime.json +1754 -0
- package/data/warframe/characters/xaku.json +620 -0
- package/data/warframe/characters/xakuprime.json +879 -0
- package/data/warframe/characters/yareli.json +409 -0
- package/data/warframe/characters/yareliprime.json +683 -0
- package/data/warframe/characters/zephyr.json +1149 -0
- package/data/warframe/characters/zephyrprime.json +1864 -0
- package/gamecodes.js +30 -4
- package/index.js +5 -3
- package/package.json +15 -3
- package/scripts/cache-sync-smoke.js +50 -3
- package/scripts/game-code-cache-smoke.js +46 -6
- package/scripts/sync-api-cache.js +87 -38
- package/scripts/sync-game-code-cache.js +42 -3
- package/data/game-codes/.gitkeep +0 -0
- package/data/vrchat/avatars/.gitkeep +0 -0
package/README.md
CHANGED
|
@@ -2,172 +2,186 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@nekosuneprojects/gaming-infos)
|
|
4
4
|
|
|
5
|
-
A Node.js data package for **game information, VRChat community data,
|
|
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
|
|
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.
|
|
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
|
-
##
|
|
13
|
+
## Installation
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
##
|
|
21
|
+
## Gaming Infos coverage
|
|
33
22
|
|
|
34
|
-
| Game | Slug |
|
|
23
|
+
| Game / franchise | Slug | Datasets |
|
|
35
24
|
|---|---|---|
|
|
36
|
-
| VRChat | `vrchat` | players
|
|
37
|
-
| Genshin Impact | `genshinimpact` | characters |
|
|
38
|
-
| Honkai: Star Rail | `honkaistarrail` | characters |
|
|
39
|
-
| Neverness to Everness | `nte` | characters |
|
|
40
|
-
| Wuthering Waves | `wutheringwaves` |
|
|
41
|
-
| Warframe | `warframe` |
|
|
42
|
-
| Fortnite | `fortnite` |
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
81
|
+
Examples:
|
|
62
82
|
|
|
63
83
|
```js
|
|
64
|
-
const
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
106
|
+
## Quick start
|
|
95
107
|
|
|
96
108
|
```js
|
|
97
|
-
const
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Live endpoint:
|
|
109
|
+
const info = require('@nekosuneprojects/gaming-infos');
|
|
101
110
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## `Game(game)`
|
|
111
|
+
async function main() {
|
|
112
|
+
const games = await info.Games();
|
|
107
113
|
|
|
108
|
-
|
|
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
|
-
|
|
111
|
-
const
|
|
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
|
-
|
|
122
|
+
const vrchatWorlds = await info.List('vrchat', 'worlds');
|
|
115
123
|
|
|
116
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
159
|
+
### Main helpers
|
|
154
160
|
|
|
155
|
-
|
|
161
|
+
```js
|
|
162
|
+
await info.Games();
|
|
163
|
+
await info.Game('codblackops2');
|
|
156
164
|
|
|
157
|
-
|
|
165
|
+
await info.List('codblackops2', 'characters');
|
|
166
|
+
await info.List('codblackops2', 'npcs');
|
|
167
|
+
await info.List('codblackops2', 'maps');
|
|
158
168
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
178
|
+
await info.Get('codblackops2', 'maps', 'map-slug');
|
|
179
|
+
await info.CacheInfo();
|
|
180
|
+
```
|
|
167
181
|
|
|
168
|
-
|
|
182
|
+
## Game Codes API
|
|
169
183
|
|
|
170
|
-
APINODE
|
|
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
|
-
|
|
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
|
|
196
|
+
const directory = await info.Codes();
|
|
197
|
+
const status = await info.CodesStatus();
|
|
187
198
|
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
| `
|
|
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()` |
|
|
243
|
+
| `CodesStatus()` | Game Codes source/sync status |
|
|
306
244
|
| `GameCodes(game, options)` | Active/Expired/Unknown code lists |
|
|
307
|
-
| `GameCode(game, code, options)` | One
|
|
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
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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
|
-
|
|
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
|
-
|
|
277
|
+
## Hourly fallback mirror
|
|
346
278
|
|
|
347
|
-
The
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
294
|
+
```json
|
|
295
|
+
{
|
|
296
|
+
"slug": "codblackops2",
|
|
297
|
+
"types": ["characters", "npcs", "maps"]
|
|
298
|
+
}
|
|
299
|
+
```
|
|
368
300
|
|
|
369
|
-
|
|
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
|
-
|
|
303
|
+
The mirror is atomic and last-good-safe:
|
|
372
304
|
|
|
373
|
-
|
|
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
|
-
|
|
315
|
+
See [CACHE_SYNC.md](CACHE_SYNC.md) for the detailed mirror design.
|
|
378
316
|
|
|
379
|
-
|
|
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
|
-
|
|
325
|
+
Tests cover additions, updates, removals, duplicate/invalid data, dynamic APINODE dataset discovery, partial HTTP failures, and last-good snapshot preservation.
|
|
393
326
|
|
|
394
|
-
|
|
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
|
-
|
|
362
|
+
## Data policy
|
|
435
363
|
|
|
436
|
-
|
|
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
|
-
|
|
366
|
+
## npm fallback note
|
|
473
367
|
|
|
474
|
-
|
|
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
|
-
|
|
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
|
-
[](https://gitads.dev/v1/ad-track?source=nekosuneprojects/gaming-infos@github)
|