UNPKG

@trivia-api/models

Version:

Models for The Trivia API.

123 lines (122 loc) 3.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertUnknownCategoryToV2 = exports.convertV1OrV2CategoryToV1 = exports.convertV1OrV2CategoryToV2 = exports.getCategory = exports.CategoryMap = void 0; const question_1 = require("./guards/question"); const v2_1 = require("./v2"); /** * Used to map categories to common other formattings and spellings */ exports.CategoryMap = new Map(); exports.CategoryMap.set("Arts & Literature", [ "arts", "literature", "arts & literature", "arts_and_literature", "novels", ]); exports.CategoryMap.set("Film & TV", ["movies", "film", "film & tv", "film_and_tv"]); exports.CategoryMap.set("Food & Drink", [ "food & drink", "food_and_drink", "food", "drink", "alcohol", ]); exports.CategoryMap.set("General Knowledge", ["general_knowledge"]); exports.CategoryMap.set("Geography", ["geography"]); exports.CategoryMap.set("History", ["history"]); exports.CategoryMap.set("Music", ["music"]); exports.CategoryMap.set("Science", ["science"]); exports.CategoryMap.set("Society & Culture", [ "society & culture", "society_and_culture", "society", "culture", ]); exports.CategoryMap.set("Sport & Leisure", [ "sport_and_leisure", "sports", "sport", "sport & leisure", "games", ]); /** * Gets a DB Question category from any input string. * @param input * @returns */ const getCategory = (input) => { var _a; const [matchingLabel] = (_a = Array.from(exports.CategoryMap.entries()).find(([label, values]) => values.includes(decodeURI(input.toLowerCase())))) !== null && _a !== void 0 ? _a : []; return matchingLabel !== null && matchingLabel !== void 0 ? matchingLabel : "General Knowledge"; }; exports.getCategory = getCategory; /** * Convert a V1 category to a V2 category * @param category - The V1 category to convert * @returns The V2 category */ const convertV1OrV2CategoryToV2 = (category) => { switch (category) { case "Arts & Literature": return "arts_and_literature"; case "Film & TV": return "film_and_tv"; case "Food & Drink": return "food_and_drink"; case "General Knowledge": return "general_knowledge"; case "Geography": return "geography"; case "History": return "history"; case "Music": return "music"; case "Science": return "science"; case "Society & Culture": return "society_and_culture"; case "Sport & Leisure": return "sport_and_leisure"; default: return category; } }; exports.convertV1OrV2CategoryToV2 = convertV1OrV2CategoryToV2; const convertV1OrV2CategoryToV1 = (category) => { switch (category) { case "arts_and_literature": return "Arts & Literature"; case "film_and_tv": return "Film & TV"; case "food_and_drink": return "Food & Drink"; case "general_knowledge": return "General Knowledge"; case "geography": return "Geography"; case "history": return "History"; case "music": return "Music"; case "science": return "Science"; case "society_and_culture": return "Society & Culture"; case "sport_and_leisure": return "Sport & Leisure"; default: return category; } }; exports.convertV1OrV2CategoryToV1 = convertV1OrV2CategoryToV1; const convertUnknownCategoryToV2 = (category) => { if ((0, v2_1.isCategory)(category)) { return category; } if ((0, question_1.isQuestionCategory)(category)) { return (0, exports.convertV1OrV2CategoryToV2)(category); } return (0, exports.convertV1OrV2CategoryToV2)((0, exports.getCategory)(category)); }; exports.convertUnknownCategoryToV2 = convertUnknownCategoryToV2;