wiki-saikou
Version:
The library provides the out of box accessing to MediaWiki API in both browsers & Node.js, and the syntax is very similar to vanilla `new mw.Api()`. TypeScript definition included~
53 lines (52 loc) • 2.28 kB
TypeScript
import { FexiosFinalContext } from 'fexios';
import { MwApiResponseError } from '../types.js';
/**
* Error codes for WikiSaikouError
*/
export declare enum WikiSaikouErrorCode {
HTTP_ERROR = "HTTP_ERROR",
LOGIN_FAILED = "LOGIN_FAILED",
LOGIN_RETRY_LIMIT_EXCEEDED = "LOGIN_RETRY_LIMIT_EXCEEDED",
TOKEN_RETRY_LIMIT_EXCEEDED = "TOKEN_RETRY_LIMIT_EXCEEDED"
}
/**
* WikiSaikou Error:
* - Transport/network failures (e.g., fetch failure, HTTP layer issues)
* - SDK behavioral errors such as exhausted internal retries or misconfigurations
* Note: When MediaWiki API responds with JSON containing error/errors, a MediaWikiApiError should be thrown instead
*/
export declare class WikiSaikouError extends Error {
readonly code: WikiSaikouErrorCode;
readonly message: string;
readonly cause?: FexiosFinalContext | undefined;
readonly name = "WikiSaikouError";
constructor(code: WikiSaikouErrorCode, message?: string, cause?: FexiosFinalContext | undefined);
static is(data?: any, code?: WikiSaikouErrorCode): data is WikiSaikouError;
}
/**
* Server-side (MediaWiki API) business error:
* - fetch succeeded but JSON includes `error` or `errors.length > 0`
* - Special states (e.g., login NeedToken/WrongToken) are also considered API-side errors
* Note: network/retry issues belong to WikiSaikouError, not this class
*/
export declare class MediaWikiApiError extends Error {
readonly errors: MwApiResponseError[];
readonly cause?: FexiosFinalContext | undefined;
readonly name = "MediaWikiApiError";
readonly code: string;
constructor(errors: MwApiResponseError[], cause?: FexiosFinalContext | undefined);
get firstError(): MwApiResponseError;
isBadTokenError(): boolean;
toString(): string;
static is(data?: any): data is MediaWikiApiError;
static normalizeErrors(errors: MwApiResponseError[]): MwApiResponseError[];
}
/**
* Helper functions for WikiSaikouError and MediaWikiApiError
*/
export declare namespace WikiSaikouError {
function includesMediaWikiApiError(data?: any): boolean;
const normalizeMwApiErrors: typeof MediaWikiApiError.normalizeErrors;
function extractMediaWikiApiErrors(data?: any): MwApiResponseError[];
function isBadTokenError(data?: any): boolean;
}