@lol-inspector/league-commons
v1.3.0
Published
Shared logic for League of Legends apps (Champion lists, fuzzy search, summoner spells)
Maintainers
Readme
@gkucmierz/league-commons
A shared utility library for applications within the League of Legends ecosystem. It currently focuses on static champion data, summoner spells, and advanced fuzzy search capabilities.
Installation
This package is published globally on the public npmjs.com registry. To install:
npm install @gkucmierz/league-commonsAvailable Features & API
1. champNames (Array)
A complete, alphabetical list of all available champions in the game (Strings). It serves as a Single Source of Truth across all applications in the ecosystem.
import { champNames } from '@gkucmierz/league-commons';
console.log(champNames.includes('Aatrox')); // true
console.log(champNames.length); // Total number of champions2. fuzzySearchChampions(query) (Function)
An intelligent fuzzy search function based on Levenshtein distance. It returns a sorted list of champions that best match the given query, making it highly resilient to typos and partial inputs.
Parameters:
query(String): The search query. If empty, it returns the full alphabetical list.
Returns:
Array<String>: A sorted list of matching champion names.
Example:
import { fuzzySearchChampions } from '@gkucmierz/league-commons';
// Searching with typos or abbreviations
const results = fuzzySearchChampions('wukn');
console.log(results); // ['Wukong', ...]
// Empty query returns all champions
const all = fuzzySearchChampions(''); 3. normalizeChampionName(name) (Function)
Resolves any string representation of a champion name into its canonical Data Dragon ID. Highly useful for standardizing inputs with spaces, dots, or casing inconsistencies.
Example:
import { normalizeChampionName } from '@gkucmierz/league-commons';
console.log(normalizeChampionName('Nunu & Willump')); // 'Nunu'
console.log(normalizeChampionName('wukong')); // 'MonkeyKing'
console.log(normalizeChampionName('Renata Glasc')); // 'Renata'4. compareChampions(nameA, nameB) (Function)
Safely compares two champion strings by ignoring casing, spaces, punctuation, and exception mappings.
Example:
import { compareChampions } from '@gkucmierz/league-commons';
console.log(compareChampions('Wukong', 'MonkeyKing')); // true
console.log(compareChampions('nunu&willump', 'Nunu')); // true5. OFFLINE_CHAMPION_DICTIONARY & CHAMPION_ID_EXCEPTIONS (Objects)
Direct access to the underlying mapping dictionaries for offline fallback support or custom logic routing.
6. summonerSpells (Array)
A ready-to-use dictionary (array format) of summoner spells mapped to their official Riot API identifiers (Riot ID).
Example:
import { summonerSpells } from '@gkucmierz/league-commons';
// Example: Automatic mapping for the LCU Agent policy
console.log(summonerSpells.find(s => s.name === 'Flash').id); // 47. calculateKdaRatio(scores) (Function)
Calculates a formatted KDA (Kills/Deaths/Assists) ratio from a standard score object. Automatically handles edge cases like zero deaths (perfect KDA).
Example:
import { calculateKdaRatio } from '@gkucmierz/league-commons';
const scores = { kills: 9, deaths: 2, assists: 3 };
console.log(calculateKdaRatio(scores)); // "6.00"
const perfect = { kills: 5, deaths: 0, assists: 2 };
console.log(calculateKdaRatio(perfect)); // "7.00"Build & Publishing (CI/CD)
This package utilizes an automated CI/CD pipeline via Gitea Actions. Every push to the main branch automatically publishes a new release to the npm registry using a global secret tied to the gkucmierz user.
