{"version":3,"sources":["../src/api/account.api.ts"],"names":["API_KEY_HEADER","AccountApi","opts","authorizationCode","invariant","response","NaluriChatError","data","tokenStore","refreshToken","version_default"],"mappings":";oKAMA,IAAMA,EAAiB,YASVC,EAAN,KAAiB,CACd,OACA,cACA,OACA,OAER,YAAYC,EAAsB,CAChC,OAAO,OAAO,KAAMA,CAAI,CAC1B,CAEA,MAAa,MAAMC,EAA2B,CAC5CC,EAAUD,EAAmB,iCAAiC,EAE9D,IAAME,EAAW,MAAM,MAAM,GAAG,KAAK,MAAM,cAAe,CACxD,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,kBAAAF,CACF,CAAC,EACD,QAAS,KAAK,WAAW,CAC3B,CAAC,EAED,GAAI,CAACE,EAAS,GACZ,MAAM,IAAIC,EAAgB,CACxB,KAAM,OACN,QAAS,iBACX,CAAC,EAGH,IAAMC,EAAQ,MAAMF,EAAS,KAAK,EAKlC,OAAAG,EAAW,QAAQ,cAAeD,EAAK,WAAW,EAClDC,EAAW,QAAQ,eAAgBD,EAAK,YAAY,EAEpD,KAAK,OAASA,EAAK,KAAK,GACxB,KAAK,cAAgBA,EAAK,UAEnBA,CACT,CAEA,MAAa,QAAQE,EAAsB,CACzCL,EAAUK,EAAc,4BAA4B,EAEpD,IAAMJ,EAAW,MAAM,MAAM,GAAG,KAAK,MAAM,gBAAiB,CAC1D,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,aAAcG,EAAW,QAAQ,cAAc,CACjD,CAAC,EACD,QAAS,KAAK,WAAW,CAC3B,CAAC,EAED,GAAI,CAACH,EAAS,GACZ,MAAM,IAAIC,EAAgB,CACxB,KAAM,OACN,QAAS,yBACX,CAAC,EAKH,OAFc,MAAMD,EAAS,KAAK,CAGpC,CAEA,MAAa,OAAOI,EAAsB,CACxCL,EAAUK,EAAc,4BAA4B,EAEpD,IAAMJ,EAAW,MAAM,MAAM,GAAG,KAAK,MAAM,eAAgB,CACzD,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,aAAAI,CACF,CAAC,EACD,QAAS,KAAK,WAAW,CAC3B,CAAC,EAED,GAAI,CAACJ,EAAS,GACZ,MAAM,IAAIC,EAAgB,CACxB,KAAM,OACN,QAAS,kBACX,CAAC,EAKH,OAFc,MAAMD,EAAS,KAAK,CAGpC,CAEO,WAAY,CACjB,OAAO,KAAK,MACd,CAEO,kBAAmB,CACxB,OAAO,KAAK,aACd,CAEO,WAAY,CACjB,OAAO,KAAK,MACd,CAEO,WAAY,CACjB,OAAO,KAAK,MACd,CAEU,YAAa,CACrB,MAAO,CACL,CAACL,CAAc,EAAG,KAAK,OACvB,OAAQ,mBACR,eAAgB,mBAChB,aAAc,wBAAwBU,CAAO,KAC7C,mBAAoBA,CACtB,CACF,CACF","sourcesContent":["import { NaluriChatError } from '@/errors';\nimport type { AccountUser, TokenPayload } from '@/types/account';\nimport { invariant } from '@/utils/invariant';\nimport { tokenStore } from '@/utils/tokenStore';\nimport version from '@/utils/version';\n\nconst API_KEY_HEADER = 'x-api-key';\n\nexport interface AccountOptions {\n  apiKey: string;\n  apiUrl: string;\n  timeoutMs?: number;\n  onRefreshTokenError?: () => void | Promise<void>;\n}\n\nexport class AccountApi {\n  private userId: string;\n  private userReference: string;\n  private apiKey: string;\n  private apiUrl: string;\n\n  constructor(opts: AccountOptions) {\n    Object.assign(this, opts);\n  }\n\n  public async login(authorizationCode: string) {\n    invariant(authorizationCode, 'authorization code is required.');\n\n    const response = await fetch(`${this.apiUrl}/auth/login`, {\n      method: 'POST',\n      body: JSON.stringify({\n        authorizationCode,\n      }),\n      headers: this.getHeaders(),\n    });\n\n    if (!response.ok) {\n      throw new NaluriChatError({\n        code: '4003',\n        message: 'Failed to login',\n      });\n    }\n\n    const data = (await response.json()) as TokenPayload & {\n      user: AccountUser;\n      reference: string;\n    };\n\n    tokenStore.setItem('accessToken', data.accessToken);\n    tokenStore.setItem('refreshToken', data.refreshToken);\n\n    this.userId = data.user.id;\n    this.userReference = data.reference;\n\n    return data;\n  }\n\n  public async refresh(refreshToken: string) {\n    invariant(refreshToken, 'refresh token is required.');\n\n    const response = await fetch(`${this.apiUrl}/auth/refresh`, {\n      method: 'POST',\n      body: JSON.stringify({\n        refreshToken: tokenStore.getItem('refreshToken'),\n      }),\n      headers: this.getHeaders(),\n    });\n\n    if (!response.ok) {\n      throw new NaluriChatError({\n        code: '4011',\n        message: 'Failed to refresh token',\n      });\n    }\n\n    const data = (await response.json()) as TokenPayload;\n\n    return data;\n  }\n\n  public async logout(refreshToken: string) {\n    invariant(refreshToken, 'refresh token is required.');\n\n    const response = await fetch(`${this.apiUrl}/auth/logout`, {\n      method: 'POST',\n      body: JSON.stringify({\n        refreshToken,\n      }),\n      headers: this.getHeaders(),\n    });\n\n    if (!response.ok) {\n      throw new NaluriChatError({\n        code: '4004',\n        message: 'Failed to logout',\n      });\n    }\n\n    const data = (await response.json()) as TokenPayload;\n\n    return data;\n  }\n\n  public getUserId() {\n    return this.userId;\n  }\n\n  public getUserReference() {\n    return this.userReference;\n  }\n\n  public getApiUrl() {\n    return this.apiUrl;\n  }\n\n  public getApiKey() {\n    return this.apiKey;\n  }\n\n  protected getHeaders() {\n    return {\n      [API_KEY_HEADER]: this.apiKey,\n      Accept: 'application/json',\n      'Content-Type': 'application/json',\n      'User-Agent': `Naluri Chat SDK /JS (${version}})`,\n      'x-nl-sdk-version': version,\n    };\n  }\n}\n"]}