npm.io
15.24.1-v1764736647694 • Published 7 months ago

@magicwenli/league-fan-assets

Licence
MIT
Version
15.24.1-v1764736647694
Deps
0
Vulns
0
Weekly
0

@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-assets

Quick 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, prefer source: { kind: "cdragon" } (CDragon sends Access-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.json

Also 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 -- --force

Versioning

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.

Keywords