mwn
Version:
JavaScript & TypeScript MediaWiki bot framework for Node.js
284 lines (283 loc) • 6.49 kB
TypeScript
export interface ApiResponse {
query?: Record<string, any>;
[prop: string]: any;
}
export interface ApiResponseSubType {
[prop: string]: any;
}
export type ApiEditResponse = {
result: string;
pageid: number;
title: string;
contentmodel: string;
nochange?: true;
oldrevid: number;
newrevid: number;
newtimestamp: string;
};
export type ApiMoveResponse = ApiResponse;
export type ApiDeleteResponse = ApiResponse;
export type ApiUndeleteResponse = ApiResponse;
export type ApiProtectResponse = ApiResponse;
export type ApiUploadResponse = ApiResponse;
export type ApiRollbackResponse = ApiResponse;
export type ApiBlockResponse = ApiResponse;
export type ApiUnblockResponse = ApiResponse;
export type ApiEmailUserResponse = ApiResponse;
export type ApiQueryUsersResponse = ApiResponse;
export type ApiQueryGlobalUserInfoResponse = ApiResponse;
export interface ApiQueryResponse {
batchcomplete?: true;
continue?: {
continue: string;
[prop: string]: string;
};
query: {
pages?: Array<ApiPage>;
allpages?: ApiPageList;
backlinks?: ApiPageList;
allcategories?: Array<{
category: string;
}>;
allimages?: Array<{
name: string;
timestamp: string;
url: string;
descriptionurl: string;
descriptionshorturl: string;
ns: number;
title: string;
}>;
alllinks?: ApiLinkList;
alltransclusions?: ApiLinkList;
allfileusages?: ApiLinkList;
allredirects?: ApiLinkList;
categorymembers: any;
[prop: string]: any;
};
}
export type ApiLinkList = Array<{
ns?: number;
title?: string;
fromid?: number;
}>;
export type ApiPageList = Array<{
pageid: number;
ns: number;
title: string;
}>;
export interface ApiParseResponse {
title: string;
pageid: number;
revid: number;
text: string;
langlinks: Array<{
lang: string;
url: string;
langname: string;
autonym: string;
title: string;
}>;
categories: Array<{
sortkey: string;
category: string;
hidden?: true;
}>;
links: Array<{
ns: number;
title: string;
exists: boolean;
}>;
templates: Array<{
ns: number;
title: string;
exists: boolean;
}>;
images: string[];
externallinks: string[];
sections: Array<{
toclevel: number;
level: string;
line: string;
number: string;
index: string;
fromtitle: string;
byteoffset: number;
anchor: string;
}>;
parsewarnings: Array<any>;
displaytitle: string;
iwlinks: Array<{
prefix: string;
url: string;
title: string;
}>;
properties: {
notoc: '';
noindex: '';
[name: string]: string;
};
}
export type ApiSearchResult = {
ns: number;
title: string;
pageid: number;
size: number;
wordcount: number;
snippet: string;
timestamp: string;
isfilematch: boolean;
titlesnippet: string;
categorysnippet: string;
sectionsnippet?: string;
redirecttitle?: string;
redirectsnippet?: string;
};
export type UserContribution = {
userid: number;
user: string;
pageid: number;
revid: number;
parentid: number;
ns: number;
title: string;
timestamp: string;
new: boolean;
minor: boolean;
top: boolean;
comment: string;
size: number;
};
export type LogEvent = {
logid: number;
ns: number;
title: string;
pageid: number;
logpage: number;
params: any;
type: string;
action: string;
user: string;
timestamp: string;
comment: string;
};
export type RecentChange = {
type: string;
ns: number;
title: string;
pageid: number;
revid: number;
old_revid: number;
rcid: number;
timestamp: string;
user?: string;
userid?: number;
bot?: boolean;
new?: boolean;
minor?: boolean;
oldlen?: number;
newlen?: number;
comment?: string;
parsedcomment?: string;
redirect?: boolean;
tags?: string[];
sha1?: string;
oresscores?: Record<string, any>;
};
export interface ApiPage {
pageid: number;
ns: number;
title: string;
missing?: true;
invalid?: true;
revisions?: Array<ApiRevision>;
categories?: Array<LinkTarget>;
templates?: Array<LinkTarget>;
links?: Array<LinkTarget>;
images?: Array<LinkTarget>;
linkshere?: Array<ReverseLinkTarget>;
transcludedin?: Array<ReverseLinkTarget>;
fileusage?: Array<ReverseLinkTarget>;
extlinks?: Array<{
url: string;
}>;
iwlinks?: Array<{
prefix: string;
title: string;
}>;
langlinks?: Array<{
lang: string;
title: string;
}>;
langlinkscount?: number;
imagerepository?: string;
badfile?: boolean;
imageinfo?: Array<ImageInfo>;
categoryinfo?: {
size: number;
pages: number;
files: number;
subcats: number;
hidden: boolean;
};
[prop: string]: any;
}
export type LinkTarget = {
ns: number;
title: string;
};
export type ReverseLinkTarget = {
pageid: number;
ns: number;
title: string;
redirect: boolean;
};
export interface ApiRevision extends ApiRevisionSlot {
revid?: number;
parentid?: number;
minor?: boolean;
userhidden?: true;
anon?: true;
user?: string;
userid?: number;
timestamp?: string;
roles?: string[];
commenthidden?: true;
comment?: string;
parsedcomment?: string;
slots?: {
main: ApiRevisionSlot;
[slotname: string]: ApiRevisionSlot;
};
}
export interface ApiRevisionSlot {
size?: number;
sha1?: string;
contentmodel?: string;
contentformat?: string;
content?: string;
}
export type ImageInfo = {
timestamp?: string;
userid?: number;
user?: string;
size?: number;
width?: number;
height?: number;
parsedcomment?: string;
comment?: string;
html?: string;
canonicaltitle?: string;
url?: string;
descriptionurl?: string;
descriptionshorturl?: string;
sha1?: string;
metadata?: Array<{
name: string;
value: any;
}>;
extmetadata?: any;
mime?: string;
mediatype?: string;
bitdepth?: number;
};