{"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;"}