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~
1 lines • 3.8 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../src/browser.ts"],"sourcesContent":["import type { FexiosConfigs } from 'fexios'\nimport { WikiSaikouCore, WikiSaikouInitConfig } from './WikiSaikou.js'\nimport { resolveLegacyCtor } from './utils/resolveLegacyCtor.js'\nimport { WikiSaikouError, WikiSaikouErrorCode } from './models/errors.js'\nimport { MwApiParams } from './types.js'\n\n// re-export for library users\nexport * from './WikiSaikou.js'\n\nexport interface ClientLoginOptions extends MwApiParams {\n rememberMe?: boolean\n loginmessageformat?: string\n loginreturnurl?: string\n logincontinue?: boolean\n}\nexport type ClientLoginResult =\n | { status: 'PASS'; username: string }\n | {\n status: 'FAIL'\n username: never\n message: string\n messagecode: string\n canpreservestate: boolean\n }\n\n/**\n * WikiSaikou\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nexport class MediaWikiApi extends WikiSaikouCore {\n async clientLogin(\n username: string,\n password: string,\n params?: ClientLoginOptions\n ) {\n params ||= {}\n if (!params.logincontinue && !params.loginreturnurl) {\n params.loginreturnurl = location?.origin\n }\n const res = await this.postWithToken<{\n clientlogin: ClientLoginResult\n }>(\n 'login',\n {\n action: 'clientlogin',\n username,\n password,\n ...params,\n },\n {\n tokenName: 'logintoken',\n }\n )\n if (res?.data?.clientlogin?.status === 'PASS') {\n return res.data.clientlogin\n } else {\n throw new WikiSaikouError(\n WikiSaikouErrorCode.LOGIN_FAILED,\n res.data.clientlogin.message,\n res\n )\n }\n }\n}\n\n/**\n * WikiSaikou for foreign wiki\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nexport class MediaWikiForeignApi extends MediaWikiApi {\n /** @deprecated Use `new MediaWikiForeignApi(config)` instead */\n constructor(\n baseURL?: string,\n defaultOptions?: Partial<FexiosConfigs>,\n defaultParams?: MwApiParams\n )\n constructor(config?: WikiSaikouInitConfig)\n constructor(\n configOrBaseURL?: WikiSaikouInitConfig | string,\n defaultOptions?: Partial<FexiosConfigs>,\n defaultParams?: MwApiParams\n ) {\n const config = resolveLegacyCtor(\n configOrBaseURL,\n {\n credentials: 'include',\n mode: 'cors',\n ...defaultOptions,\n },\n {\n origin: location.origin,\n ...defaultParams,\n }\n )\n super(config)\n }\n}\n\n// aliases\nexport { MediaWikiApi as MwApi, MediaWikiForeignApi as ForeignApi }\n"],"names":["MediaWikiApi","WikiSaikouCore","username","password","params","res","WikiSaikouError","WikiSaikouErrorCode","MediaWikiForeignApi","configOrBaseURL","defaultOptions","defaultParams","config","resolveLegacyCtor"],"mappings":";;AA+BO,MAAMA,UAAqBC,EAAe;AAAA,EAC/C,MAAM,YACJC,GACAC,GACAC,GACA;AACA,IAAAA,MAAW,CAAA,GACP,CAACA,EAAO,iBAAiB,CAACA,EAAO,mBACnCA,EAAO,iBAAiB,UAAU;AAEpC,UAAMC,IAAM,MAAM,KAAK;AAAA,MAGrB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAAH;AAAA,QACA,UAAAC;AAAA,QACA,GAAGC;AAAA,MAAA;AAAA,MAEL;AAAA,QACE,WAAW;AAAA,MAAA;AAAA,IACb;AAEF,QAAIC,GAAK,MAAM,aAAa,WAAW;AACrC,aAAOA,EAAI,KAAK;AAEhB,UAAM,IAAIC;AAAA,MACRC,EAAoB;AAAA,MACpBF,EAAI,KAAK,YAAY;AAAA,MACrBA;AAAA,IAAA;AAAA,EAGN;AACF;AAQO,MAAMG,UAA4BR,EAAa;AAAA,EAQpD,YACES,GACAC,GACAC,GACA;AACA,UAAMC,IAASC;AAAA,MACbJ;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,MAAM;AAAA,QACN,GAAGC;AAAA,MAAA;AAAA,MAEL;AAAA,QACE,QAAQ,SAAS;AAAA,QACjB,GAAGC;AAAA,MAAA;AAAA,IACL;AAEF,UAAMC,CAAM;AAAA,EACd;AACF;"}