@launchmenu/applet-dictionary
Version:
An applet to find dictionary definitions
91 lines • 7.54 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2lrdGlvbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9XaWt0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUE2QztBQUM3Qyw2Q0FBOEQ7QUFNOUQ7O0dBRUc7QUFDSCxJQUFpQixVQUFVLENBNkcxQjtBQTdHRCxXQUFpQixVQUFVO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLDRCQUE0QixDQUFDO0lBRTVDLG1CQUFtQjtJQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLGtCQUFXLENBQy9CLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDYixJQUFJLHdCQUFVLENBQVcsS0FBSyxJQUFJLEVBQUU7UUFDaEMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUN0QixHQUFHLE1BQU0sbURBQW1ELFNBQVMsQ0FDakUsSUFBSSxDQUNQLEVBQUUsQ0FDTixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQXNCLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDYixDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBVyxDQUM1QixDQUFDLElBQVksRUFBRSxRQUFtQixFQUFFLEVBQUUsQ0FDbEMsSUFBSSx3QkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FDVCxDQUFDO0lBRUYsa0JBQWtCO0lBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVcsQ0FDNUIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUNiLElBQUksd0JBQVUsQ0FBYyxLQUFLLElBQUksRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FDdEIsR0FBRyxNQUFNLGdDQUFnQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDN0QsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFxQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxJQUFJLE1BQU0sSUFBSSxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNyQixJQUFJLEVBQUU7YUFDTixHQUFHLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsUUFBUSxFQUFFLFlBQXFDO1lBQy9DLFFBQVE7WUFDUixXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FDeEIsQ0FBQyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBRTs7Z0JBQUMsT0FBQSxDQUFDO29CQUN6QyxVQUFVO29CQUNWLFFBQVEsUUFDSixjQUFjLGFBQWQsY0FBYyxjQUFkLGNBQWMsR0FDZCxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLG9DQUNwQyxFQUFFO2lCQUNULENBQUMsQ0FBQTthQUFBLENBQ0w7U0FDSixDQUFDLENBQUMsQ0FBQztJQUNaLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDYixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVyxDQUN6QixDQUFDLElBQVksRUFBRSxRQUFtQixFQUFFLEVBQUUsQ0FDbEMsSUFBSSx3QkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILFNBQWdCLEdBQUcsQ0FDZixJQUFZLEVBQ1osUUFBbUIsRUFDbkIsSUFBZ0I7UUFFaEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQU5lLGNBQUcsTUFNbEIsQ0FBQTtJQUVEOzs7OztPQUtHO0lBQ0gsU0FBZ0IsTUFBTSxDQUFDLElBQVksRUFBRSxJQUFnQjtRQUNqRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFGZSxpQkFBTSxTQUVyQixDQUFBO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBZ0IsTUFBTSxDQUNsQixJQUFZLEVBQ1osUUFBbUIsRUFDbkIsSUFBZ0I7UUFFaEIsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQU5lLGlCQUFNLFNBTXJCLENBQUE7SUFFRDs7Ozs7T0FLRztJQUNILFNBQWdCLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBZ0I7UUFDcEQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRmUsb0JBQVMsWUFFeEIsQ0FBQTtBQUNMLENBQUMsRUE3R2dCLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBNkcxQiJ9