mirror of
https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
synced 2025-08-29 22:05:57 +02:00
374 lines
7.8 KiB
TypeScript
374 lines
7.8 KiB
TypeScript
// Definitions by: Balazs Mocsai <https://github.com/mbale>
|
|
|
|
declare module 'wikijs' {
|
|
/**
|
|
* Default Options
|
|
*
|
|
* @interface Options
|
|
*/
|
|
interface Options {
|
|
/**
|
|
* URL of Wikipedia API
|
|
*
|
|
* @type {string}
|
|
* @memberof Options
|
|
*/
|
|
apiUrl?: string;
|
|
/**
|
|
* When accessing the API using a cross-domain AJAX request (CORS), set this to the originating domain.
|
|
* This must be included in any pre-flight request, and therefore must be part of the request URI (not the POST body).
|
|
* This must match one of the origins in the Origin header exactly, so it has to be set to something like https://en.wikipedia.org or https://meta.wikimedia.org.
|
|
* If this parameter does not match the Origin header, a 403 response will be returned.
|
|
* If this parameter matches the Origin header and the origin is whitelisted, an Access-Control-Allow-Origin header will be set.
|
|
*
|
|
* @type {string}
|
|
* @memberof Options
|
|
*/
|
|
origin?: string;
|
|
/**
|
|
* The Headers sent to be sent along with the request
|
|
*
|
|
* @type {HeadersInit}
|
|
* @memberof Options
|
|
*/
|
|
headers?: HeadersInit;
|
|
}
|
|
|
|
/**
|
|
* Coordinate object
|
|
*
|
|
* @interface Coordinates
|
|
*/
|
|
interface Coordinates {
|
|
lat: number;
|
|
lon: number;
|
|
primary: string;
|
|
globe: string;
|
|
}
|
|
|
|
/**
|
|
* Link object { lang, title }
|
|
*
|
|
* @interface Link
|
|
*/
|
|
interface Link {
|
|
lang: string;
|
|
title: string;
|
|
}
|
|
|
|
/**
|
|
* Image container
|
|
*
|
|
* @interface Image
|
|
*/
|
|
interface Image {
|
|
ns: number;
|
|
title: string;
|
|
missing: string;
|
|
known: string;
|
|
imagerepository: string;
|
|
imageinfo: object[];
|
|
}
|
|
|
|
interface Result {
|
|
results: string[];
|
|
query: string;
|
|
next(): Promise<Result>;
|
|
}
|
|
|
|
interface RawPage {
|
|
pageid: number;
|
|
ns: number;
|
|
title: string;
|
|
touched: string;
|
|
lastrevid: number;
|
|
counter: number;
|
|
length: number;
|
|
fullurl: string;
|
|
editurl: string;
|
|
}
|
|
|
|
/**
|
|
* WikiPage
|
|
*
|
|
* @interface Page
|
|
*/
|
|
interface Page {
|
|
raw: RawPage;
|
|
/**
|
|
* Paginated backlinks from page
|
|
*
|
|
* @param {boolean} aggregated
|
|
* @param {number} limit
|
|
* @returns {Promise<string[]>}
|
|
* @memberof Page
|
|
*/
|
|
backlinks(aggregated?: boolean, limit?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Paginated categories from page
|
|
*
|
|
* @param {boolean} aggregated
|
|
* @param {number} limit
|
|
* @returns {Promise<string[]>}
|
|
* @memberof Page
|
|
*/
|
|
categories(aggregated?: boolean, limit?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Text content from page
|
|
*
|
|
* @returns {Promise<string>}
|
|
* @memberof Page
|
|
*/
|
|
content(): Promise<string>;
|
|
|
|
/**
|
|
* Geographical coordinates from page
|
|
*
|
|
* @returns {Promise<Coordinates>}
|
|
* @memberof Page
|
|
*/
|
|
coordinates(): Promise<Coordinates>;
|
|
|
|
/**
|
|
* Get full information from page
|
|
*
|
|
* @returns {Promise<object>}
|
|
* @memberof Page
|
|
*/
|
|
fullInfo(): Promise<object>;
|
|
|
|
/**
|
|
* HTML from page
|
|
*
|
|
* @returns {Promise<string>}
|
|
* @memberof Page
|
|
*/
|
|
html(): Promise<string>;
|
|
|
|
/**
|
|
* Image URL's from page
|
|
*
|
|
* info Object contains key/value pairs of infobox data, or specific value if key given
|
|
* @returns {Promise<string[]>}
|
|
* @memberof Page
|
|
*/
|
|
images(): Promise<string[]>;
|
|
|
|
/**
|
|
* Get information from page
|
|
*
|
|
* @param {string} [key]
|
|
* Information key. Falsy keys are ignored
|
|
* @returns {Promise<object>}
|
|
* @memberof Page
|
|
*/
|
|
info(key?: string): Promise<object>;
|
|
|
|
/**
|
|
* Get list of links to different translations
|
|
*
|
|
* @returns {Promise<Link[]>}
|
|
* @memberof Page
|
|
*/
|
|
langlinks(): Promise<Link[]>;
|
|
|
|
/**
|
|
* Paginated links from page
|
|
*
|
|
* @param {boolean} [aggregated]
|
|
* return all links (default is true)
|
|
* @param {number} [limit]
|
|
* number of links per page
|
|
* @returns {Promise<string[]>}
|
|
* @memberof Page
|
|
*/
|
|
links(aggregated?: boolean, limit?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Main image URL from infobox on page
|
|
*
|
|
* @returns {Promise<string>}
|
|
* @memberof Page
|
|
*/
|
|
mainImage(): Promise<string>;
|
|
|
|
/**
|
|
* Raw content from page
|
|
*
|
|
* @returns {Promise<string>}
|
|
* @memberof Page
|
|
*/
|
|
rawContent(): Promise<string>;
|
|
|
|
/**
|
|
* Raw data from images from page
|
|
*
|
|
* @returns {Promise<Image[]>}
|
|
* @memberof Page
|
|
*/
|
|
rawImages(): Promise<Image[]>;
|
|
|
|
/**
|
|
* References from page
|
|
*
|
|
* @returns {Promise<string[]>}
|
|
* @memberof Page
|
|
*/
|
|
references(): Promise<string[]>;
|
|
|
|
/**
|
|
* Text summary from page
|
|
*
|
|
* @returns {Promise<string>}
|
|
* @memberof Page
|
|
*/
|
|
summary(): Promise<string>;
|
|
|
|
/**
|
|
* Tables from page
|
|
*
|
|
* @returns {Promise<any>}
|
|
* @memberof Page
|
|
*/
|
|
tables(): Promise<any>;
|
|
|
|
/**
|
|
* Get URL for wiki page
|
|
*
|
|
* @return {String}
|
|
* @memberof Page
|
|
*/
|
|
url(): string;
|
|
}
|
|
|
|
/**
|
|
* WikiJs is a node.js library which serves as an interface to Wikipedia (or any MediaWiki).
|
|
*
|
|
* @param {Options} [options]
|
|
*/
|
|
export default function WikiJS(
|
|
options?: Options
|
|
): {
|
|
/**
|
|
* Get Page by PageId
|
|
*
|
|
* @param {string} pageID
|
|
* id of the page
|
|
* @returns {Promise<Page>}
|
|
*/
|
|
findById(pageID: string): Promise<Page>;
|
|
|
|
/**
|
|
* Find page by query and optional predicate
|
|
* @example
|
|
* wiki.find('luke skywalker').then(page => console.log(page.title));
|
|
* @method Wiki#find
|
|
* @param {string} search query
|
|
* @param {function} [predicate] - testing function for choosing which page result to fetch. Default is first result.
|
|
* @return {Promise}
|
|
*/
|
|
find(query: string, predicate?: (pages: Page[]) => Page): Promise<Page>;
|
|
|
|
/**
|
|
* Geographical Search
|
|
*
|
|
* @param {number} lat
|
|
* latitude
|
|
* @param {number} lon
|
|
* longitude
|
|
* @param {number} [radius]
|
|
* search radius in kilometers (default: 1km)
|
|
* @returns {Promise<string[]>}
|
|
*/
|
|
geoSearch(lat: number, lon: number, radius?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Get Page
|
|
*
|
|
* @param {string} title
|
|
* title of article
|
|
* @returns {Promise<Page>}
|
|
*/
|
|
page(title: string): Promise<Page>;
|
|
|
|
/**
|
|
* Fetch all page titles in wiki
|
|
* @method Wiki#allPages
|
|
* @return {Array} Array of pages
|
|
*/
|
|
allPages(): Promise<string[]>;
|
|
|
|
/**
|
|
* Random articles
|
|
*
|
|
* @param {number} [limit]
|
|
* limits the number of random articles
|
|
* @returns {Promise<string[]>}
|
|
*/
|
|
random(limit?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Search articles
|
|
*
|
|
* @param {string} query
|
|
* keyword query
|
|
* @param {number} [limit]
|
|
* limits the number of results
|
|
* @returns {Promise<Result>}
|
|
*/
|
|
search(query: string, limit?: number): Promise<Result>;
|
|
|
|
/**
|
|
* Opensearch (mainly used as a backup to normal text search)
|
|
* @param {string} query - keyword query
|
|
* @param {Number} limit - limits the number of results
|
|
* @return {Promise<string[]>} List of page title results
|
|
*/
|
|
opensearch(query: string, limit?: number): Promise<string[]>;
|
|
|
|
/**
|
|
* Search articles using "fuzzy" prefixsearch
|
|
*
|
|
* @param {string} query
|
|
* keyword query
|
|
* @param {number} [limit]
|
|
* limits the number of results
|
|
* @returns {Promise<Result>}
|
|
*/
|
|
prefixSearch(query: string, limit?: number): Promise<Result>;
|
|
|
|
/**
|
|
* @summary Find the most viewed pages with counts
|
|
* @example
|
|
* wiki.mostViewed().then(list => console.log(`${list[0].title}: ${list[0].count}`))
|
|
* @method Wiki#mostViewed
|
|
* @returns {Promise} - Array of {title,count}
|
|
*/
|
|
mostViewed(): Promise<{ title: string; count: number }[]>;
|
|
|
|
/**
|
|
* Fetch all page titles in wiki
|
|
* @method Wiki#allPages
|
|
* @return {Promise<string[]>} Array of pages
|
|
*/
|
|
allPages(): Promise<string[]>;
|
|
|
|
/**
|
|
* Fetch all categories in wiki
|
|
* @method Wiki#allCategories
|
|
* @return {Promise<string[]>} Array of categories
|
|
*/
|
|
allCategories(): Promise<string[]>;
|
|
|
|
/**
|
|
* Fetch all pages in category
|
|
* @method Wiki#pagesInCategory
|
|
* @param {String} category Category to fetch from
|
|
* @return {Promise<string[]>} Array of pages
|
|
*/
|
|
pagesInCategory(category: string): Promise<string[]>;
|
|
};
|
|
}
|