{"version":3,"file":"browser.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":[],"mappings":";;;;AAyBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,qBAAqB,cAAA,CAAe;AAAA,EAC/C,MAAM,WAAA,CACJ,QAAA,EACA,QAAA,EACA,MAAA,EACA;AACA,IAAA,MAAA,KAAW,EAAC;AACZ,IAAA,IAAI,CAAC,MAAA,CAAO,aAAA,IAAiB,CAAC,OAAO,cAAA,EAAgB;AACnD,MAAA,MAAA,CAAO,iBAAiB,QAAA,EAAU,MAAA;AAAA,IACpC;AACA,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,aAAA;AAAA,MAGrB,OAAA;AAAA,MACA;AAAA,QACE,MAAA,EAAQ,aAAA;AAAA,QACR,QAAA;AAAA,QACA,QAAA;AAAA,QACA,GAAG;AAAA,OACL;AAAA,MACA;AAAA,QACE,SAAA,EAAW;AAAA;AACb,KACF;AACA,IAAA,IAAI,GAAA,EAAK,IAAA,EAAM,WAAA,EAAa,MAAA,KAAW,MAAA,EAAQ;AAC7C,MAAA,OAAO,IAAI,IAAA,CAAK,WAAA;AAAA,IAClB,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,eAAA;AAAA,QACR,mBAAA,CAAoB,YAAA;AAAA,QACpB,GAAA,CAAI,KAAK,WAAA,CAAY,OAAA;AAAA,QACrB;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACF;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,4BAA4B,YAAA,CAAa;AAAA,EAQpD,WAAA,CACE,eAAA,EACA,cAAA,EACA,aAAA,EACA;AACA,IAAA,MAAM,MAAA,GAAS,iBAAA;AAAA,MACb,eAAA;AAAA,MACA;AAAA,QACE,WAAA,EAAa,SAAA;AAAA,QACb,IAAA,EAAM,MAAA;AAAA,QACN,GAAG;AAAA,OACL;AAAA,MACA;AAAA,QACE,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,GAAG;AAAA;AACL,KACF;AACA,IAAA,KAAA,CAAM,MAAM,CAAA;AAAA,EACd;AACF;;;;"}