{"version":3,"file":"HeadlessOTPClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessOTPClient.ts"],"sourcesContent":["import { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n  IHeadlessOTPsClient,\n  OTPAuthenticateOptions,\n  OTPCodeEmailOptions,\n  OTPCodeOptions,\n  OTPCodeSMSOptions,\n  OTPsAuthenticateResponse,\n  OTPsLoginOrCreateResponse,\n  OTPsSendResponse,\n  StytchProjectConfigurationInput,\n} from '../public';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessOTPClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessOTPsClient<TProjectConfiguration>\n{\n  authenticate: (\n    code: string,\n    method_id: string,\n    options: OTPAuthenticateOptions,\n  ) => Promise<OTPsAuthenticateResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n    private dfpProtectedAuth: IDFPProtectedAuthProvider,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(\n      async (code: string, method_id: string, options: OTPAuthenticateOptions) => {\n        validateInDev(\n          'stytch.otps.authenticate',\n          { code, ...options },\n          {\n            code: 'string',\n            session_duration_minutes: 'number',\n          },\n        );\n        const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n        const requestBody = {\n          token: code,\n          method_id,\n          dfp_telemetry_id,\n          captcha_token,\n          ...options,\n        };\n        const resp = await this._networkClient.retriableFetchSDK<\n          WithUser<OTPsAuthenticateResponse<TProjectConfiguration>>\n        >({\n          url: '/otps/authenticate',\n          body: requestBody,\n          method: 'POST',\n          retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n        });\n\n        return omitUser(resp);\n      },\n    );\n  }\n\n  sms = {\n    loginOrCreate: async (phone_number: string, options: OTPCodeSMSOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/sms/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (phone_number: string, options: OTPCodeSMSOptions): Promise<OTPsSendResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/sms/send/secondary' : '/otps/sms/send/primary';\n\n      return this._networkClient.retriableFetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n  };\n\n  whatsapp = {\n    loginOrCreate: async (phone_number: string, options: OTPCodeOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, dfp_telemetry_id, captcha_token };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/whatsapp/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (phone_number: string, options: OTPCodeOptions): Promise<OTPsSendResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/whatsapp/send/secondary' : '/otps/whatsapp/send/primary';\n\n      return this._networkClient.retriableFetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n  };\n\n  email = {\n    loginOrCreate: async (email: string, options: OTPCodeEmailOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, email, captcha_token, dfp_telemetry_id };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/email/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (email: string, options: OTPCodeEmailOptions): Promise<OTPsSendResponse> => {\n      const captcha_token = await this.executeRecaptcha();\n      const requestBody = { ...options, email, captcha_token };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/email/send/secondary' : '/otps/email/send/primary';\n\n      return this._networkClient.fetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n      });\n    },\n  };\n}\n"],"names":["HeadlessOTPClient","authenticate","executeRecaptcha","Promise","resolve","undefined","dfpProtectedAuth","_networkClient","_subscriptionService","withUpdateSession","code","method_id","options","validateInDev","session_duration_minutes","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","requestBody","token","resp","retriableFetchSDK","url","body","method","retryCallback","retryWithCaptchaAndDFP","omitUser","sms","loginOrCreate","phone_number","send","isLoggedIn","getSession","endpoint","whatsapp","email","fetchSDK"],"mappings":"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"}