UNPKG

brawlhalla-api-ts

Version:

TypeScript wrapper for the Brawlhalla API.

63 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var levenshtein = require("fast-levenshtein"); var legends_1 = require("../data/legends"); var weapons_1 = require("../data/weapons"); var legend_1 = require("../models/legend"); var LegendUtils = (function () { function LegendUtils() { } LegendUtils.findLegendById = function (legendId) { var legendFound = LegendUtils.legends.find(function (legend) { return legend.id === legendId; }); if (legendFound === undefined) { console.warn('Legend not found! Unknown ID given'); legendFound = new legend_1.Legend(legendId, 'Unknown', weapons_1.sword, weapons_1.sword); } return legendFound; }; LegendUtils.findLegendByName = function (legendName) { var legendFound = LegendUtils.legends.find(function (legend) { return legend.name === legendName; }); if (legendFound === undefined) { console.warn('Legend not found! Unknown name given'); legendFound = new legend_1.Legend(-1, legendName, weapons_1.sword, weapons_1.sword); } return legendFound; }; LegendUtils.findLegendByApproximateName = function (legendToFindName) { if (LegendUtils.legendSegmentMap.has(legendToFindName)) { var matchingLegend = LegendUtils.legendSegmentMap.get(legendToFindName); if (matchingLegend === undefined) { throw new Error('Something went really wrong!'); } return matchingLegend; } var shortestDistance = -1; var legendWithShortestDistance; LegendUtils.legendSegmentMap.forEach(function (legend, legendSegment) { var currentDistance = levenshtein.get(legendSegment, legendToFindName); if (shortestDistance === -1 || currentDistance < shortestDistance) { shortestDistance = currentDistance; legendWithShortestDistance = legend; } }); if (legendWithShortestDistance === undefined) { throw new Error('Something went really wrong!'); } var shortestAllowedDistance = 3; if (shortestDistance > shortestAllowedDistance) { console.warn("Distance is over " + shortestAllowedDistance + "! Weird results can be expected"); } return legendWithShortestDistance; }; LegendUtils.legends = legends_1.legends; LegendUtils.legendSegmentMap = legends_1.legends.reduce(function (legendNameSegments, legend) { legendNameSegments.set(legend.name, legend); legend.name.split(' ').forEach(function (legendNameSegment) { legendNameSegments.set(legendNameSegment, legend); }); return legendNameSegments; }, new Map()); return LegendUtils; }()); exports.LegendUtils = LegendUtils; //# sourceMappingURL=LegendUtils.js.map