@traisetech/otp-client
v0.1.1
Published
Universal OTP client for React, Expo, Web, and Node
Readme
@traisetech/otp-client
Universal OTP client usable in React, Expo, Web, and Node.
Install
npm install @traisetech/otp-client
Configure
- Option A: Programmatic
setBaseUrl('https://your-backend.ngrok-free.dev')
- Option B: Environment (Node/Web)
OTP_BASE_URL=https://your-backend.ngrok-free.dev
- Optional: Persist base URL
attachStorage(AsyncStorage)in React Native / Expo
Usage
import { setBaseUrl, requestOtp, verifyOtp, health } from '@traisetech/otp-client'
setBaseUrl('https://your-backend.ngrok-free.dev')
await health()
const req = await requestOtp('0786123456')
const ok = await verifyOtp('0786123456', '123456')React / Expo
import { attachStorage, setBaseUrl, requestOtp, verifyOtp } from '@traisetech/otp-client'
import AsyncStorage from '@react-native-async-storage/async-storage'
attachStorage(AsyncStorage)
setBaseUrl('https://your-backend.ngrok-free.dev')Node
const { requestOtp, verifyOtp } = require('@traisetech/otp-client')
process.env.OTP_BASE_URL = 'https://your-backend.ngrok-free.dev'API
setBaseUrl(url)sets backend base URLgetBaseUrl()retrieves current base URLattachStorage(storage)optional storage withgetItem/setItemhealth()→{ ok: true }requestOtp(phone)→{ success, phone, delivery, debugOtp? }verifyOtp(phone, otp)→{ success } | { success:false, error }
Notes
- Uses native
fetch(Node 18+ and browsers/React Native) - Includes 10s timeout via
AbortController - No dependencies; tree-shakeable
Publish
- Public npm package. Publishing is handled via CI on tagged releases.
