UNPKG

entity-finder

Version:
89 lines (88 loc) 3.58 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.searchWithExtracts = exports.search = exports.prefixSearch = exports.openSearch = exports.query = void 0; const request_1 = require("../request"); const OPTIONS = { params: { format: "json" } }; function createOptions(lang, qs) { const options = { params: Object.assign({}, qs || {}, OPTIONS.params), url: "https://" + lang + ".wikipedia.org/w/api.php" }; return options; } function query(lang, qs = {}) { qs.action = "query"; const _a = createOptions(lang, qs), { url } = _a, options = __rest(_a, ["url"]); return request_1.default(url, options); } exports.query = query; function openSearch(lang, search, opts) { opts = opts || {}; const qs = { search: search, action: "opensearch", redirects: opts.redirects || "resolve", suggest: true, profile: opts.profile || "normal", limit: opts.limit || 10 }; const _a = createOptions(lang, qs), { url } = _a, options = __rest(_a, ["url"]); return request_1.default(url, options); } exports.openSearch = openSearch; function prefixSearch(lang, name, options = {}) { return __awaiter(this, void 0, void 0, function* () { const qs = Object.assign(Object.assign({}, options), { action: "query", generator: "prefixsearch", gpssearch: name, gpsprofile: "normal", prop: "extracts", exintro: 1, explaintext: 1, redirects: 1 }); const results = yield query(lang, qs); if (!results || !results.query || !results.query.pages) return []; return Object.keys(results.query.pages).map((pageid) => results.query.pages[pageid]); }); } exports.prefixSearch = prefixSearch; function search(lang, srsearch) { const qs = { srsearch: srsearch, list: "search", srprop: "size" }; return query(lang, qs); } exports.search = search; function searchWithExtracts(lang, srsearch, options) { const qs = { gsrsearch: srsearch, generator: "search", prop: "extracts", exintro: 1, explaintext: 1, format: "json", utf8: 1 }; return query(lang, Object.assign(Object.assign({}, options), qs)); } exports.searchWithExtracts = searchWithExtracts;