{"version":3,"file":"utils/data/brief.mjs","sources":["../../../src/utils/data/brief.ts"],"sourcesContent":["import { Manifest, SDK } from '@rsdoctor/types';\nimport { Algorithm } from '@rsdoctor/utils/common';\nimport { BaseDataLoader } from './base';\nimport { Constants } from '@rsdoctor/types';\n\nexport class BriefDataLoader extends BaseDataLoader {\n  public isLocal() {\n    return false;\n  }\n\n  public async loadData<T extends Manifest.RsdoctorManifestMappingKeys>(\n    key: T,\n  ): Promise<Manifest.InferManifestDataValue<T>>;\n\n  public async loadData(key: string): Promise<unknown> {\n    console.log(`[loadData]-[key]: ${key}`);\n    const [scope] = this.getKeys(key);\n\n    console.log(`[loadData]-[scope]: ${scope}`);\n    const data = this.getData(scope);\n\n    if (!data) return;\n\n    let res = data;\n\n    // only cache by the root key in data\n    if (!this.shardingDataMap.has(scope)) {\n      const scopeData = this.parseData(res);\n\n      this.shardingDataMap.set(scope, Promise.resolve(scopeData));\n    }\n\n    res = await this.shardingDataMap.get(scope);\n    return res;\n  }\n\n  public getData(scope: keyof Manifest.RsdoctorManifestData) {\n    console.log(`[getData]-[scope]: ${scope}`);\n    return window[Constants.WINDOW_RSDOCTOR_TAG][scope];\n  }\n\n  private parseData(data: unknown): unknown {\n    if (typeof data === 'object' && data !== null) {\n      return data;\n    }\n\n    if (typeof data !== 'string') {\n      return data;\n    }\n\n    try {\n      return JSON.parse(Algorithm.decompressText(data));\n    } catch {\n      return data;\n    }\n  }\n\n  public async loadAPI<\n    T extends SDK.ServerAPI.API,\n    B extends\n      SDK.ServerAPI.InferRequestBodyType<T> = SDK.ServerAPI.InferRequestBodyType<T>,\n    R extends\n      SDK.ServerAPI.InferResponseType<T> = SDK.ServerAPI.InferResponseType<T>,\n  >(...args: B extends void ? [api: T] : [api: T, body: B]): Promise<R> {\n    return this.loader.loadAPI(...args) as R;\n  }\n\n  public dispose() {\n    super.dispose();\n  }\n\n  public onDataUpdate() {}\n\n  public removeOnDataUpdate() {}\n}\n"],"names":["BriefDataLoader","BaseDataLoader","key","console","scope","data","res","scopeData","Promise","window","Constants","JSON","Algorithm","args"],"mappings":";;;AAKO,MAAMA,wBAAwBC;IAC5B,UAAU;QACf,OAAO;IACT;IAMA,MAAa,SAASC,GAAW,EAAoB;QACnDC,QAAQ,GAAG,CAAC,CAAC,kBAAkB,EAAED,KAAK;QACtC,MAAM,CAACE,MAAM,GAAG,IAAI,CAAC,OAAO,CAACF;QAE7BC,QAAQ,GAAG,CAAC,CAAC,oBAAoB,EAAEC,OAAO;QAC1C,MAAMC,OAAO,IAAI,CAAC,OAAO,CAACD;QAE1B,IAAI,CAACC,MAAM;QAEX,IAAIC,MAAMD;QAGV,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACD,QAAQ;YACpC,MAAMG,YAAY,IAAI,CAAC,SAAS,CAACD;YAEjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACF,OAAOI,QAAQ,OAAO,CAACD;QAClD;QAEAD,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAACF;QACrC,OAAOE;IACT;IAEO,QAAQF,KAA0C,EAAE;QACzDD,QAAQ,GAAG,CAAC,CAAC,mBAAmB,EAAEC,OAAO;QACzC,OAAOK,MAAM,CAACC,UAAU,mBAAmB,CAAC,CAACN,MAAM;IACrD;IAEQ,UAAUC,IAAa,EAAW;QACxC,IAAI,AAAgB,YAAhB,OAAOA,QAAqBA,AAAS,SAATA,MAC9B,OAAOA;QAGT,IAAI,AAAgB,YAAhB,OAAOA,MACT,OAAOA;QAGT,IAAI;YACF,OAAOM,KAAK,KAAK,CAACC,UAAU,cAAc,CAACP;QAC7C,EAAE,OAAM;YACN,OAAOA;QACT;IACF;IAEA,MAAa,QAMX,GAAGQ,IAAmD,EAAc;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAIA;IAChC;IAEO,UAAU;QACf,KAAK,CAAC;IACR;IAEO,eAAe,CAAC;IAEhB,qBAAqB,CAAC;AAC/B"}