{"version":3,"sources":["../src/api/chat.api.ts"],"names":["Observable","ChatApi","opts","WsClient","options","data","loading","error","networkStatus","observer","chatCache","chatCache_default"],"mappings":";kFAWA,OAAS,cAAAA,MAAkB,2BAiBpB,IAAMC,EAAN,KAAc,CACF,WACT,OACA,oBAER,YAAYC,EAAsB,CAChC,OAAO,OAAO,KAAMA,CAAI,EACxB,KAAK,OAAS,IAAIC,EAAS,KAAK,WAAY,KAAK,mBAAmB,CACtE,CAEA,MAAa,MAGXC,EAAsE,CACtE,GAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,cAAAC,CAAc,EAAI,MAAM,KAAK,OACxD,SAAS,EACT,MAAyBJ,CAAO,EACnC,MAAO,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,cAAAC,CAAc,CAC/C,CAEA,MAAa,OAGXJ,EAA0E,CAC1E,OAAO,MAAM,KAAK,OAAO,SAAS,EAAE,OAA0BA,CAAO,CACvE,CAEO,UAGLA,EAA0E,CAC1E,OAAAA,EAAQ,YAAc,cAEf,IAAIJ,EAAYS,GACrB,KAAK,OACF,SAAS,EACT,UAAUL,CAAO,EACjB,UAAU,CACT,KAAOC,GAASI,EAAS,KAAKJ,CAAI,EAClC,MAAQE,GAAUE,EAAS,MAAMF,CAAK,EACtC,SAAU,IAAME,EAAS,SAAS,CACpC,CAAC,CACL,CACF,CAEO,QAILL,EACoC,CACpC,OAAAA,EAAQ,YAAc,oBACf,KAAK,OAAO,SAAS,EAAE,WAA8BA,CAAO,CACrE,CAEO,gBAAuB,CAC5B,KAAK,OAAO,SAAS,EAAE,aAAa,SAAS,EAAsB,CACrE,CACF,EAEaM,EAAYC","sourcesContent":["import {\n  ApolloQueryResult,\n  FetchPolicy,\n  FetchResult,\n  MutationOptions,\n  ObservableQuery,\n  OperationVariables,\n  QueryOptions,\n  SubscriptionOptions,\n  WatchQueryOptions,\n} from '@apollo/client/core';\nimport { Observable } from '@apollo/client/utilities';\nimport _cache from '@/config/chatCache';\nimport { WsClient } from '@/utils/wsClient';\nimport { AccountApi } from './account.api';\n\nexport interface AuthTokens {\n  accessToken: string;\n  refreshToken: string;\n}\nexport interface ChatApiOptions {\n  accountApi: AccountApi;\n  onRefreshTokenError?: () => Promise<void>;\n  refreshTokens?: () => Promise<AuthTokens>;\n  requestPolicy?: FetchPolicy;\n  subscriptionListener?: () => void;\n}\n\nexport class ChatApi {\n  private readonly accountApi: AccountApi;\n  private client: WsClient;\n  private onRefreshTokenError?: () => Promise<void>;\n\n  constructor(opts: ChatApiOptions) {\n    Object.assign(this, opts);\n    this.client = new WsClient(this.accountApi, this.onRefreshTokenError);\n  }\n\n  public async query<\n    TData = any,\n    TVariables extends OperationVariables = Record<string, any>\n  >(options: QueryOptions<TVariables>): Promise<ApolloQueryResult<TData>> {\n    const { data, loading, error, networkStatus } = await this.client\n      .instance()\n      .query<TData, TVariables>(options);\n    return { data, loading, error, networkStatus };\n  }\n\n  public async mutate<\n    TData = any,\n    TVariables extends OperationVariables = Record<string, any>\n  >(options: MutationOptions<TData, TVariables>): Promise<FetchResult<TData>> {\n    return await this.client.instance().mutate<TData, TVariables>(options);\n  }\n\n  public subscribe<\n    TData = any,\n    TVariables extends OperationVariables = Record<string, any>\n  >(options: SubscriptionOptions<TVariables>): Observable<FetchResult<TData>> {\n    options.fetchPolicy = 'cache-first';\n\n    return new Observable((observer) =>\n      this.client\n        .instance()\n        .subscribe(options)\n        .subscribe({\n          next: (data) => observer.next(data),\n          error: (error) => observer.error(error),\n          complete: () => observer.complete(),\n        })\n    );\n  }\n\n  public refetch<\n    TData = any,\n    TVariables extends OperationVariables = Record<string, any>\n  >(\n    options: WatchQueryOptions<TVariables>\n  ): ObservableQuery<TData, TVariables> {\n    options.fetchPolicy = 'cache-and-network';\n    return this.client.instance().watchQuery<TData, TVariables>(options);\n  }\n\n  public unSubscribeAll(): void {\n    this.client.instance().onResetStore(async () => console.log('done'));\n  }\n}\n\nexport const chatCache = _cache;\n"]}