UNPKG

better-auth-harmony

Version:

Validation and normalization for better-auth

1 lines 960 B
import {APIError}from'better-auth/api';import {createAuthMiddleware}from'better-auth/plugins';import {parsePhoneNumberWithError,ParseError}from'libphonenumber-js/max';var u=new Set(["/sign-in/phone-number","/phone-number/forget-password","/phone-number/reset-password","/phone-number/send-otp","/phone-number/verify"]),s=({path:t})=>u.has(t);var l=({defaultCountry:t,defaultCallingCode:a,extract:h=true,acceptRawInputOnError:p=false,matchers:i=[s],normalizer:m=e=>parsePhoneNumberWithError(e,{defaultCountry:t,defaultCallingCode:a,extract:h}).number}={})=>({id:"harmony-phone-number",hooks:{before:[{matcher:e=>i.some(o=>o(e)),handler:createAuthMiddleware(async e=>{let{phoneNumber:o}=e.body;if(typeof o!="string")return;let r=o;try{r=await m(o,e.request);}catch(n){if(!p&&n instanceof ParseError)throw new APIError("BAD_REQUEST",{message:n.message});if(p)r=o;else throw n}return {context:{...e,body:{...e.body,phoneNumber:r}}}})}]}}),w=l;export{w as default};