{"version":3,"file":"HeadlessUserClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessUserClient.ts"],"sourcesContent":["import { INetworkClient } from '../NetworkClient';\nimport {\n  ConsumerState,\n  IHeadlessUserClient,\n  ResponseCommon,\n  StytchProjectConfigurationInput,\n  UnsubscribeFunction,\n  UpdateResponse,\n  User,\n  UserGetConnectedAppsResponse,\n  UserInfo,\n  UserOnChangeCallback,\n  UserUpdateOptions,\n  UserUpdateResponse,\n} from '../public';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { omitUser, removeResponseCommon, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessUserClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessUserClient\n{\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n  ) {}\n\n  get = async (): Promise<User> => {\n    const resp = await this._networkClient.fetchSDK<User & ResponseCommon>({\n      url: '/users/me',\n      method: 'GET',\n    });\n    const user = removeResponseCommon(resp);\n    this._subscriptionService.updateUser(user);\n    return user;\n  };\n\n  getSync = (): User | null => {\n    return this._subscriptionService.getUser();\n  };\n\n  getInfo = (): UserInfo => ({\n    user: this.getSync(),\n    fromCache: this._subscriptionService.getFromCache(),\n  });\n\n  update = async (options: UserUpdateOptions) => {\n    validateInDev('stytch.user.update', options, {\n      untrusted_metadata: 'optionalObject',\n    });\n    const resp = await this._networkClient.fetchSDK<WithUser<UserUpdateResponse>>({\n      url: '/users/me',\n      body: options,\n      method: 'PUT',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteEmail = async (emailId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/emails/${emailId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deletePhoneNumber = async (phoneId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/phone_numbers/${phoneId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteTOTP = async (totpId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/totps/${totpId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteCryptoWallet = async (cryptoWalletId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/crypto_wallets/${cryptoWalletId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteOAuthRegistration = async (oauthUserRegistrationId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/oauth/${oauthUserRegistrationId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteWebauthnRegistration = async (webAuthnId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/webauthn_registrations/${webAuthnId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteBiometricRegistration = async (biometricRegistrationId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/biometric_registrations/${biometricRegistrationId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  onChange = (callback: UserOnChangeCallback): UnsubscribeFunction => {\n    let lastVal = this._subscriptionService.getUser();\n    const listener = (state: ConsumerState | null) => {\n      if (state?.user !== lastVal) {\n        lastVal = state?.user ?? null;\n        callback(lastVal);\n      }\n    };\n    return this._subscriptionService.subscribeToState(listener);\n  };\n\n  getConnectedApps = async () => {\n    return await this._networkClient.fetchSDK<UserGetConnectedAppsResponse>({\n      url: '/users/connected_apps',\n      method: 'GET',\n    });\n  };\n\n  revokedConnectedApp = async (connectedAppId: string) => {\n    return await this._networkClient.fetchSDK<ResponseCommon>({\n      url: `/users/connected_apps/${connectedAppId}/revoke`,\n      method: 'POST',\n    });\n  };\n}\n"],"names":["HeadlessUserClient","_subscriptionService","_networkClient","get","resp","fetchSDK","url","method","user","removeResponseCommon","updateUser","getSync","getUser","getInfo","fromCache","getFromCache","update","options","validateInDev","untrusted_metadata","body","__user","omitUser","deleteEmail","emailId","deletePhoneNumber","phoneId","deleteTOTP","totpId","deleteCryptoWallet","cryptoWalletId","deleteOAuthRegistration","oauthUserRegistrationId","deleteWebauthnRegistration","webAuthnId","deleteBiometricRegistration","biometricRegistrationId","onChange","callback","lastVal","listener","state","subscribeToState","getConnectedApps","revokedConnectedApp","connectedAppId"],"mappings":"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"}