@magicwenli/league-fan-assets
v2.0.0
Published
Typed League of Legends asset loaders (icons, emotes, wards, loot, champions, skins) for league-fan
Maintainers
Readme
@magicwenli/league-fan-assets
Typed TypeScript library for loading and normalizing League of Legends client assets for league-fan.
v2 breaking change: this package no longer ships multi‑MB JSON on npm.
The npm package is a lightweight loader + types. Prebuilt JSON snapshots are published as GitHub Releases (data-v{gameVersion}).
Install
npm install @magicwenli/league-fan-assetsQuick start
import { createClient, assetUrl, splitSkinId } from "@magicwenli/league-fan-assets";
// Live CommunityDragon
const live = createClient({
lang: "zh_cn",
source: { kind: "cdragon", patch: "latest" },
});
const icons = await live.summonerIcons();
const champions = await live.champions();
const skins = await live.skins();
// Prebuilt snapshot from GitHub Releases
const cached = createClient({
lang: "default",
source: { kind: "release" }, // latest data-v* release
});Asset categories
| Category | Description |
|----------|-------------|
| summoner-icons / summoner-icon-sets | Profile icons |
| summoner-emotes | Emotes |
| ward-skins / ward-skin-sets | Ward skins |
| loot | Chest loot (filtered) |
| champions | Champion summary |
| skinlines | Skin lines |
| universes | Universes |
| skins | Full skins map (quest tiers expanded) |
| added | Diff vs previous snapshot (release only) |
| version | Data Dragon realm version |
Data backends
A) CommunityDragon (live)
createClient({ source: { kind: "cdragon", patch: "pbe" } })Fetches raw CDragon JSON and applies shared transforms (path rewrite, loot filter, quest skin expansion, …).
B) GitHub Releases (prebuilt)
Daily CI builds normalized JSON and publishes data-v{version} releases.
CORS note: GitHub Release download URLs are not browser-CORS-friendly. Use
source: { kind: "release" }from Node, SSR, or a proxy/CDN with CORS. For pure browser apps, prefersource: { kind: "cdragon" }(CDragon sendsAccess-Control-Allow-Origin: *).
Asset names are flattened (GitHub Releases are flat):
| Logical path | Release asset |
|--------------|---------------|
| default/summoner-icons.json | default__summoner-icons.json |
| zh_cn/skins.json | zh_cn__skins.json |
| manifest.json | manifest.json |
https://github.com/league-fan/league-fan-assets/releases/latest/download/default__champions.jsonAlso attached: league-fan-assets-data-{version}.tar.gz with nested folders.
import { releaseDataUrl } from "@magicwenli/league-fan-assets";
releaseDataUrl({ category: "skins", lang: "zh_cn", version: "15.24.1" });Helpers
assetUrl(path, { patch, lang, category })— rewrite/lol-game-data/assets/...splitSkinId(id)—{ champId, skinIndex }getRarityUrl(rarity)/modelviewerUrl(skinId)getGameVersion()— Tencent DDragon realm version
Scripts
npm test
npm run build # library → dist/
npm run build:data # snapshots → data/out/ (network)
npm run build:data -- --forceVersioning
| Channel | Scheme | When |
|---------|--------|------|
| npm lib | Semver 2.x | API changes (v2.0.0 tag) |
| data | data-v15.24.1 | Game version changes (cron) |
Migration from v1 (unpkg JSON)
Before:
fetch("https://unpkg.com/@magicwenli/league-fan-assets/zh_cn/summoner-icons.json")After:
const client = createClient({
lang: "zh_cn",
source: { kind: "release" }, // or cdragon
});
const icons = await client.summonerIcons();Old v1 data-only npm versions remain on the registry for historical unpkg URLs but are no longer updated.
License
MIT. Game assets © Riot Games. This project is not endorsed by Riot.
