UNPKG

@launchmenu/applet-dictionary

Version:
91 lines 7.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Wiktionary = void 0; const core_1 = require("@launchmenu/core"); const model_react_1 = require("model-react"); /** * A simple wiktionary API to retrieve words */ var Wiktionary; (function (Wiktionary) { const domain = "https://en.wiktionary.org/"; /** Search cache */ const allSearches = new core_1.SearchCache((term) => new model_react_1.DataLoader(async () => { if (term == "") return []; const result = await fetch(`${domain}/w/api.php?action=opensearch&format=json&search=${encodeURI(term)}`); const data = await result.json(); return data[1]; }, [])); const searches = new core_1.SearchCache((term, language) => new model_react_1.DataCacher(hook => { const items = allSearches.get(term).get(hook); return items.filter(item => get(item, language, hook).length > 0); })); /** Words cache */ const allWords = new core_1.SearchCache((term) => new model_react_1.DataLoader(async () => { const result = await fetch(`${domain}/api/rest_v1/page/definition/${encodeURI(term)}`); const data = await result.json(); if ("type" in data) return []; return Object.values(data) .flat() .map(({ definitions, language, partOfSpeech }) => ({ category: partOfSpeech, language, definitions: definitions.map(({ definition, parsedExamples, examples }) => { var _a; return ({ definition, examples: (_a = parsedExamples !== null && parsedExamples !== void 0 ? parsedExamples : examples === null || examples === void 0 ? void 0 : examples.map(example => ({ example }))) !== null && _a !== void 0 ? _a : [], }); }), })); }, [])); const words = new core_1.SearchCache((term, language) => new model_react_1.DataCacher(hook => { const items = allWords.get(term).get(hook); return items.filter(item => item.language == language); })); /** * Retrieves all definitions for the given word in a given language * @param term The word to retrieve the definitions for * @param language The language for which to retrieve the definitions * @param hook The hook to subscribe to changes * @returns The retrieved data */ function get(term, language, hook) { return words.get(term, language).get(hook); } Wiktionary.get = get; /** * Retrieves all definitions for the given word * @param term The word to retrieve the definitions for * @param hook The hook to subscribe to changes * @returns The retrieved data */ function getAll(term, hook) { return allWords.get(term).get(hook); } Wiktionary.getAll = getAll; /** * Retrieves all results for a given search term in a given language (applying autocorrection) * @param term The term to search for * @param language The language of the term to retrieve * @param hook The hook to subscribe to changes * @returns The search results */ function search(term, language, hook) { return searches.get(term, language).get(hook); } Wiktionary.search = search; /** * Retrieves all results for a given search term (applying autocorrection) * @param term The term to search for * @param hook The hook to subscribe to changes * @returns The search results */ function searchAll(term, hook) { return allSearches.get(term).get(hook); } Wiktionary.searchAll = searchAll; })(Wiktionary = exports.Wiktionary || (exports.Wiktionary = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2lrdGlvbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9XaWt0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUE2QztBQUM3Qyw2Q0FBOEQ7QUFNOUQ7O0dBRUc7QUFDSCxJQUFpQixVQUFVLENBNkcxQjtBQTdHRCxXQUFpQixVQUFVO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLDRCQUE0QixDQUFDO0lBRTVDLG1CQUFtQjtJQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLGtCQUFXLENBQy9CLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDYixJQUFJLHdCQUFVLENBQVcsS0FBSyxJQUFJLEVBQUU7UUFDaEMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUN0QixHQUFHLE1BQU0sbURBQW1ELFNBQVMsQ0FDakUsSUFBSSxDQUNQLEVBQUUsQ0FDTixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQXNCLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDYixDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBVyxDQUM1QixDQUFDLElBQVksRUFBRSxRQUFtQixFQUFFLEVBQUUsQ0FDbEMsSUFBSSx3QkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0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