@nekosuneprojects/gaming-infos 2.1.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 +73 -0
- package/CACHE_SYNC.md +202 -0
- package/CHANGELOG.md +54 -2
- package/README.md +304 -136
- 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/arknightsendfield/meta.json +14 -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/fortnite/meta.json +14 -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/toweroffantasy/meta.json +14 -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/data/warframe/meta.json +14 -0
- package/data/wutheringwaves/meta.json +14 -0
- package/data/zenlesszonezero/meta.json +14 -0
- package/gamecodes.js +204 -0
- package/index.js +36 -17
- package/package.json +33 -3
- package/scripts/cache-sync-smoke.js +139 -0
- package/scripts/game-code-cache-smoke.js +125 -0
- package/scripts/sync-all-cache.js +18 -0
- package/scripts/sync-api-cache.js +368 -0
- package/scripts/sync-game-code-cache.js +283 -0
- package/scripts/sync-gaming-info-cache.js +46 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Sync APINODE fallback caches
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
schedule:
|
|
6
|
+
# Hourly change-watch at minute 23. The mirror hashes API content and only
|
|
7
|
+
# commits when APINODE actually added, changed, repaired or removed data.
|
|
8
|
+
- cron: "23 * * * *"
|
|
9
|
+
push:
|
|
10
|
+
branches:
|
|
11
|
+
- main
|
|
12
|
+
paths:
|
|
13
|
+
- "scripts/sync-api-cache.js"
|
|
14
|
+
- "scripts/sync-gaming-info-cache.js"
|
|
15
|
+
- "scripts/sync-game-code-cache.js"
|
|
16
|
+
- "scripts/sync-all-cache.js"
|
|
17
|
+
- "scripts/cache-sync-smoke.js"
|
|
18
|
+
- "scripts/game-code-cache-smoke.js"
|
|
19
|
+
- "gamecodes.js"
|
|
20
|
+
- "index.js"
|
|
21
|
+
- "package.json"
|
|
22
|
+
- "CACHE_SYNC.md"
|
|
23
|
+
- ".github/workflows/sync-api-cache.yml"
|
|
24
|
+
|
|
25
|
+
permissions:
|
|
26
|
+
contents: write
|
|
27
|
+
|
|
28
|
+
concurrency:
|
|
29
|
+
group: gaming-infos-api-cache
|
|
30
|
+
cancel-in-progress: false
|
|
31
|
+
|
|
32
|
+
jobs:
|
|
33
|
+
sync:
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- name: Checkout
|
|
37
|
+
uses: actions/checkout@v4
|
|
38
|
+
with:
|
|
39
|
+
fetch-depth: 0
|
|
40
|
+
|
|
41
|
+
- name: Use Node.js 22
|
|
42
|
+
uses: actions/setup-node@v4
|
|
43
|
+
with:
|
|
44
|
+
node-version: 22
|
|
45
|
+
|
|
46
|
+
- name: Test atomic cache behavior
|
|
47
|
+
run: npm run test:all-cache
|
|
48
|
+
|
|
49
|
+
- name: Mirror APINODE gaming-infos and game codes
|
|
50
|
+
run: npm run sync:cache
|
|
51
|
+
env:
|
|
52
|
+
GAMING_INFOS_API_BASE: https://api.nekosunevr.co.uk
|
|
53
|
+
GAMING_INFOS_API_PATH: /v5/games/api/gaming-infos
|
|
54
|
+
GAME_CODES_API_PATH: /v5/games/api/codes
|
|
55
|
+
GAMING_INFOS_CACHE_TIMEOUT_MS: 20000
|
|
56
|
+
GAMING_INFOS_CACHE_RETRIES: 2
|
|
57
|
+
GAME_CODES_CACHE_TIMEOUT_MS: 20000
|
|
58
|
+
GAME_CODES_CACHE_RETRIES: 2
|
|
59
|
+
GAME_CODES_CACHE_GAME_DELAY_MS: 150
|
|
60
|
+
|
|
61
|
+
- name: Commit fallback changes
|
|
62
|
+
shell: bash
|
|
63
|
+
run: |
|
|
64
|
+
git add -A data
|
|
65
|
+
if git diff --cached --quiet; then
|
|
66
|
+
echo "Fallback caches already match APINODE."
|
|
67
|
+
exit 0
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
git config user.name "github-actions[bot]"
|
|
71
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
72
|
+
git commit -m "chore(cache): mirror APINODE fallback data [skip ci]"
|
|
73
|
+
git push
|
package/CACHE_SYNC.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# APINODE fallback-cache mirror
|
|
2
|
+
|
|
3
|
+
`@nekosuneprojects/gaming-infos` is API-first. Normal reads try the NekoSuneVR V5 API before using bundled JSON under `data/`.
|
|
4
|
+
|
|
5
|
+
The repository keeps **two independent last-good fallback snapshots** synchronized automatically:
|
|
6
|
+
|
|
7
|
+
- Gaming Infos: `GET /v5/games/api/gaming-infos`
|
|
8
|
+
- Game Codes: `GET /v5/games/api/codes`
|
|
9
|
+
|
|
10
|
+
## Schedule
|
|
11
|
+
|
|
12
|
+
The GitHub Action runs an **hourly APINODE change-watch at minute 23** and can also be started manually with `workflow_dispatch`.
|
|
13
|
+
|
|
14
|
+
The mirror uses full content hashes, so an hourly check with no stable API data changes creates **no commit**. If APINODE adds, updates, repairs, moves, or removes a game-info file or game-code record, the next successful hourly pass mirrors that change into this repository.
|
|
15
|
+
|
|
16
|
+
## Gaming Infos dataset discovery
|
|
17
|
+
|
|
18
|
+
Gaming Infos cache schema 2 no longer depends only on a hard-coded game manifest.
|
|
19
|
+
|
|
20
|
+
The mirror first requests:
|
|
21
|
+
|
|
22
|
+
```http
|
|
23
|
+
GET /v5/games/api/gaming-infos
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Modern APINODE responses expose each game's stable `slug` and dataset `types`, for example:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"slug": "codblackops2",
|
|
31
|
+
"types": ["characters", "npcs", "maps"]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The mirror merges those declarations into its safety/baseline manifest and then fetches every discovered game/type. This means the full Call of Duty catalog, and future public Gaming Infos games/types, can propagate into the repository without adding one hard-coded mirror entry per title.
|
|
36
|
+
|
|
37
|
+
The built-in baseline remains for compatibility with older APINODE deployments and can still be replaced explicitly with `GAMING_INFOS_CACHE_MANIFEST_JSON`.
|
|
38
|
+
|
|
39
|
+
Current important datasets include:
|
|
40
|
+
|
|
41
|
+
| Game / family | API type(s) |
|
|
42
|
+
|---|---|
|
|
43
|
+
| VRChat | `players`, `groups`, `worlds`, `avatars` |
|
|
44
|
+
| Genshin Impact | `characters` |
|
|
45
|
+
| Honkai: Star Rail | `characters` |
|
|
46
|
+
| Neverness to Everness | `characters` |
|
|
47
|
+
| Wuthering Waves | `characters` (Resonators) |
|
|
48
|
+
| Warframe | `characters` (Warframes) |
|
|
49
|
+
| Fortnite | `characters` = released Outfits/skins, `npcs` = Battle Royale NPCs, `maps` = Named Locations/maps |
|
|
50
|
+
| Call of Duty mainline | `characters`, `npcs`, `maps` per title, auto-discovered from APINODE |
|
|
51
|
+
| Zenless Zone Zero | `characters` (Agents) |
|
|
52
|
+
| Tower of Fantasy | `characters` (Simulacra) |
|
|
53
|
+
| Arknights: Endfield | `characters` (Operators) |
|
|
54
|
+
|
|
55
|
+
Call of Duty covers mainline slugs from `cod2003` through `codblackops7`, plus `codmodernwarfare4`. The 2026 MW4 dataset is restricted upstream to official Activision beta/public announcement information; the fallback never expands that policy by scraping separate unofficial data.
|
|
56
|
+
|
|
57
|
+
## Mirrored Game Codes endpoints
|
|
58
|
+
|
|
59
|
+
The hourly mirror also caches:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
GET /v5/games/api/codes
|
|
63
|
+
GET /v5/games/api/codes/status
|
|
64
|
+
GET /v5/games/api/codes/:game?includeUnknown=true
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`/codes/status` only reads APINODE's cached source state. It does **not** trigger source website refreshes.
|
|
68
|
+
|
|
69
|
+
The per-game request uses `includeUnknown=true`, so the fallback contains all three buckets when available:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"Active": [],
|
|
74
|
+
"Expired": [],
|
|
75
|
+
"Unknown": []
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The repository does not store ticking `expiresInSeconds` / `countdown` values as authoritative file changes. Those values are rehydrated from stable `expiresAt` dates when the package reads a local fallback, preventing pointless hourly commits.
|
|
80
|
+
|
|
81
|
+
## Atomic synchronization / deletion behavior
|
|
82
|
+
|
|
83
|
+
Each cache is authoritative only **after its complete API download succeeds**.
|
|
84
|
+
|
|
85
|
+
For Gaming Infos:
|
|
86
|
+
|
|
87
|
+
1. Temporarily preserve `data/game-codes/` outside the Gaming Infos snapshot.
|
|
88
|
+
2. Fetch the root Gaming Infos endpoint.
|
|
89
|
+
3. Merge valid root `slug` + `types` declarations into the effective manifest.
|
|
90
|
+
4. Fetch every effective game's meta endpoint.
|
|
91
|
+
5. Fetch every discovered/configured type-list endpoint.
|
|
92
|
+
6. Validate every response and entity slug.
|
|
93
|
+
7. Build a completely separate temporary snapshot.
|
|
94
|
+
8. Atomically replace the Gaming Infos `data/` snapshot only after every required request succeeds.
|
|
95
|
+
9. Restore the previous Game Codes fallback before the code phase begins.
|
|
96
|
+
|
|
97
|
+
For Game Codes:
|
|
98
|
+
|
|
99
|
+
1. Fetch `/codes` and validate its game directory.
|
|
100
|
+
2. Fetch cache-only `/codes/status`.
|
|
101
|
+
3. Fetch every listed game's full `Active` / `Expired` / `Unknown` snapshot.
|
|
102
|
+
4. Normalize volatile request-time/countdown values.
|
|
103
|
+
5. Build a separate temporary `data/game-codes/` tree.
|
|
104
|
+
6. Only after every game succeeds, atomically replace the old Game Codes snapshot.
|
|
105
|
+
|
|
106
|
+
Because successful API snapshots are authoritative, **adds, changes and removals are mirrored**. If APINODE moves an old Fortnite record between datasets, or removes/changes a Call of Duty entity, the next fully successful mirror reproduces that structure in the fallback.
|
|
107
|
+
|
|
108
|
+
If APINODE is down, times out, returns 429/5xx, or one required endpoint fails halfway through, that cache is **not replaced**. The previous last-good fallback remains available.
|
|
109
|
+
|
|
110
|
+
## APINODE synchronization / repair propagation
|
|
111
|
+
|
|
112
|
+
APINODE performs content synchronization and data-quality repair before this repository consumes the public API. That includes bad Game Code cleanup, image repair, Fortnite dataset separation, and the database-backed Call of Duty public-data sync.
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
APINODE source refresh / repair
|
|
116
|
+
↓
|
|
117
|
+
Gaming Infos + Game Codes API
|
|
118
|
+
↓
|
|
119
|
+
hourly GitHub change-watch
|
|
120
|
+
↓
|
|
121
|
+
repository data/ fallback
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Package API
|
|
125
|
+
|
|
126
|
+
```js
|
|
127
|
+
const info = require('@nekosuneprojects/gaming-infos');
|
|
128
|
+
|
|
129
|
+
// Fortnite
|
|
130
|
+
await info.List('fortnite', 'characters');
|
|
131
|
+
await info.List('fortnite', 'npcs');
|
|
132
|
+
await info.List('fortnite', 'maps');
|
|
133
|
+
|
|
134
|
+
// Call of Duty
|
|
135
|
+
await info.List('codblackops2', 'characters');
|
|
136
|
+
await info.List('codblackops2', 'npcs');
|
|
137
|
+
await info.List('codblackops2', 'maps');
|
|
138
|
+
await info.List('codmodernwarfare4', 'maps');
|
|
139
|
+
|
|
140
|
+
await info.Characters('codblackops2', 'character-slug');
|
|
141
|
+
await info.NPCs('codblackops2', 'npc-slug');
|
|
142
|
+
await info.Maps('codblackops2', 'map-slug');
|
|
143
|
+
|
|
144
|
+
// Other Gaming Infos
|
|
145
|
+
await info.List('vrchat', 'avatars');
|
|
146
|
+
await info.Characters('wutheringwaves', 'cartethyia');
|
|
147
|
+
|
|
148
|
+
// Game Codes
|
|
149
|
+
await info.Codes();
|
|
150
|
+
await info.CodesStatus();
|
|
151
|
+
await info.GameCodes('fortnite', { includeUnknown: true });
|
|
152
|
+
await info.GameCode('fortnite', 'NEKOSUNEVR');
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Commands
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
npm run test:all-cache
|
|
159
|
+
npm run sync:cache
|
|
160
|
+
|
|
161
|
+
# Debug individually
|
|
162
|
+
npm run sync:gaming-infos-cache
|
|
163
|
+
npm run sync:game-codes-cache
|
|
164
|
+
npm run test:cache-sync
|
|
165
|
+
npm run test:game-code-cache
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Override APINODE while testing:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
GAMING_INFOS_API_BASE=http://localhost:3000 npm run sync:cache
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Useful variables:
|
|
175
|
+
|
|
176
|
+
| Variable | Default | Purpose |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| `GAMING_INFOS_API_BASE` | `https://api.nekosunevr.co.uk` | APINODE host used by both caches |
|
|
179
|
+
| `GAMING_INFOS_API_PATH` | `/v5/games/api/gaming-infos` | Gaming Infos path |
|
|
180
|
+
| `GAME_CODES_API_PATH` | `/v5/games/api/codes` | Game Codes path |
|
|
181
|
+
| `GAMING_INFOS_CACHE_MANIFEST_JSON` | baseline + root discovery | Optional explicit baseline manifest |
|
|
182
|
+
| `GAMING_INFOS_CACHE_TIMEOUT_MS` | `15000` | Gaming Infos per-request timeout |
|
|
183
|
+
| `GAMING_INFOS_CACHE_RETRIES` | `2` | Gaming Infos retry count |
|
|
184
|
+
| `GAME_CODES_CACHE_TIMEOUT_MS` | `15000` | Game Codes sync request timeout |
|
|
185
|
+
| `GAME_CODES_CACHE_RETRIES` | `2` | Game Codes retry count |
|
|
186
|
+
| `GAME_CODES_CACHE_GAME_DELAY_MS` | `150` | Small delay between game-list requests |
|
|
187
|
+
|
|
188
|
+
## Runtime fallback behavior
|
|
189
|
+
|
|
190
|
+
The package remains API-first:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
application
|
|
194
|
+
↓
|
|
195
|
+
live APINODE
|
|
196
|
+
├─ success → current API response
|
|
197
|
+
└─ unavailable/error → last-good bundled fallback
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
A successful changed Gaming Infos snapshot records `data/.cache-manifest.json` with schema version 2, its effective game/type manifest, content hash, counts and add/change/remove statistics. Game Codes records `data/game-codes/.cache-manifest.json` separately. The hash comparison ignores manifest timestamps and other explicitly volatile values.
|
|
201
|
+
|
|
202
|
+
Note: npm releases are immutable. Repository fallback files update automatically, but an already-installed npm version keeps the snapshot bundled with that release until upgraded. Live API reads still remain current whenever APINODE is available.
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,59 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 2.4.0 - 2026-08-24
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Added mainline Call of Duty Gaming Infos coverage from `cod2003` (Call of Duty 2003) through `codblackops7`, plus `codmodernwarfare4` for official 2026 beta/public announcement data.
|
|
14
|
+
- Added per-title Call of Duty `characters`, `npcs`, and `maps` datasets. `characters` is intended for playable/main characters, protagonists, Operators and Specialists; `npcs` contains other campaign/game character records; `maps` contains public multiplayer/Zombies/Warzone/map/mission records.
|
|
15
|
+
- Added Call of Duty examples and the complete supported slug list to `README.md`.
|
|
16
|
+
- Added mirror smoke coverage for APINODE root `slug`/`types` auto-discovery.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Gaming Infos fallback synchronization now auto-discovers games and dataset types from APINODE's root response instead of requiring every new game/type to be hard-coded into the package mirror.
|
|
20
|
+
- Gaming Infos cache manifests now use schema version 2 and record that dataset types were auto-discovered.
|
|
21
|
+
- Updated package metadata and keywords for Call of Duty, Modern Warfare, Black Ops, characters, NPCs and maps.
|
|
22
|
+
- Bumped the package source version to `2.4.0`.
|
|
23
|
+
|
|
24
|
+
### Data policy
|
|
25
|
+
- Historical Call of Duty data is limited to public released-game sources. Cut, unused, cancelled, unofficial unreleased, non-canon, prototype/concept and image-only categories are excluded.
|
|
26
|
+
- Modern Warfare 4 data is limited to official Activision beta/public announcement information while the title is pre-release; leaks/datamines are not mirrored.
|
|
27
|
+
|
|
28
|
+
## 2.3.0 - 2026-08-24
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- Added `NPCs(game, name)` and `Maps(game, name)` helpers.
|
|
32
|
+
- Added dedicated Fortnite `npcs` and `maps` datasets alongside `characters`.
|
|
33
|
+
- Fortnite `characters` now means released Outfit/skin records rather than Battle Royale NPCs.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- The fallback mirror now fetches `fortnite/characters`, `fortnite/npcs`, and `fortnite/maps` independently from APINODE.
|
|
37
|
+
- The repository APINODE change-watch runs hourly and only commits real content changes.
|
|
38
|
+
- Volatile Game Code countdown fields are excluded from fallback hashes and are rehydrated from `expiresAt` when the local fallback is read.
|
|
39
|
+
- Updated package metadata for Fortnite skins, NPCs, and maps.
|
|
40
|
+
|
|
41
|
+
## 2.2.0 - 2026-08-24
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- Added API-first Game Codes helpers: `Codes()`, `CodesStatus()`, `GameCodes(game, options)`, `GameCode(game, code, options)`, and `CodeCacheInfo()`.
|
|
45
|
+
- Added an atomic `data/game-codes/` fallback mirror for `/v5/games/api/codes`, cache-only `/status`, and every per-game Active/Expired/Unknown dataset.
|
|
46
|
+
- Added game-code fallback alias resolution using the cached `/codes` directory aliases.
|
|
47
|
+
- Added game-code cache smoke tests covering additions, changes, removals, and partial API outages.
|
|
48
|
+
- Added `Avatars(game, name)` for VRChat avatar records.
|
|
49
|
+
- Added public Gaming Infos support for Wuthering Waves Resonators, Warframe Warframes, Fortnite current/released Battle Royale characters, Zenless Zone Zero Agents, Tower of Fantasy Simulacra, and Arknights: Endfield Operators.
|
|
50
|
+
- Expanded the mirrored VRChat datasets to include players, groups, worlds, and avatars.
|
|
51
|
+
- Added `CacheInfo()` for inspecting the last mirrored Gaming Infos snapshot.
|
|
52
|
+
- Added automatic fallback-cache manifests with source URL, content hash, counts, and add/change/remove statistics.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- `npm run sync:cache` now mirrors both Gaming Infos and Game Codes.
|
|
56
|
+
- The automatic cache workflow was changed to a daily schedule in this release and was subsequently upgraded to an hourly change-watch in 2.3.0.
|
|
57
|
+
- Gaming Infos and Game Codes are mirrored as independent atomic snapshots so a failure in one cache cannot destroy the other cache's last-good data.
|
|
58
|
+
- Successful mirror runs synchronize additions, updates, and removals from APINODE while failed or partial runs preserve the previous fallback snapshot.
|
|
59
|
+
- Local fallback entities expose stable slugs so offline lookups match live API behavior more closely.
|
|
60
|
+
- Expanded the package description and keywords for the new games, VRChat avatars, and redeem/creator-code support.
|
|
61
|
+
- Reworked `README.md` to document the full supported-game matrix, API-first fallback behavior, Game Codes API helpers, sync workflow, cache commands, configuration, and examples.
|
|
62
|
+
|
|
10
63
|
## 2.1.0 - 2026-08-02
|
|
11
64
|
|
|
12
65
|
### Added
|
|
@@ -27,10 +80,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
27
80
|
- Renamed package from `vrchat-infos` to `gaming-infos` to reflect multi-game support (VRChat today, Genshin Impact and more coming soon).
|
|
28
81
|
- `data/` is now scoped per game: `data/<game>/worlds`, `data/<game>/groups`, `data/<game>/players`, `data/<game>/meta.json`. VRChat data moved under `data/vrchat/`.
|
|
29
82
|
- Every lookup function now takes a `game` as its first argument, e.g. `Worlds('vrchat', 'theblackcat')` instead of `Worlds('theblackcat')`.
|
|
30
|
-
- Added `Game(game)` for game-level
|
|
83
|
+
- Added `Game(game)` for game-level info, `Characters(game, name)` for character-based games, and a generic `Get(game, type, name)` escape hatch.
|
|
31
84
|
|
|
32
85
|
### Added
|
|
33
86
|
- Lookups now try the NekoSuneVR V5 API first (`GAMING_INFOS_API_BASE`, default `https://api.nekosunevr.co.uk`) and fall back to the bundled local JSON if the API is unreachable, so data can be updated in real time without republishing this package. Set `GAMING_INFOS_DISABLE_API=1` to force local-only lookups.
|
|
34
87
|
- Added `genshinimpact`, `nte` (Neverness to Everness), and `honkaistarrail` games, each with `meta.json`.
|
|
35
88
|
- Added all 104 currently-released Genshin Impact characters, all 20 currently-playable NTE characters, and all 69 currently-released Honkai: Star Rail characters under their respective `data/<game>/characters/` folders.
|
|
36
|
-
|