Edit: /tmp/tsx-0/17887-363710242142e505c656bc77fbe181d65a23de8c (13078B)
{"code":"__filename=\"/opt/canhelp/node_modules/better-auth/dist/plugins/magic-link/index.mjs\";(()=>{\nvar __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:true}):target,mod));var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var magic_link_exports={};__export(magic_link_exports,{magicLink:()=>magicLink});module.exports=__toCommonJS(magic_link_exports);var import_origin_check=require(\"../../api/middlewares/origin-check.mjs\");var import_schema=require(\"../../db/schema.mjs\");var import_random=require(\"../../crypto/random.mjs\");var import_crypto=require(\"../../crypto/index.mjs\");var import_cookies=require(\"../../cookies/index.mjs\");var import_api=require(\"../../api/index.mjs\");var import_utils=require(\"./utils.mjs\");var import_api2=require(\"@better-auth/core/api\");var z=__toESM(require(\"zod\"));const signInMagicLinkBodySchema=z.object({email:z.email().meta({description:\"Email address to send the magic link\"}),name:z.string().meta({description:'User display name. Only used if the user is registering for the first time. Eg: \"my-name\"'}).optional(),callbackURL:z.string().meta({description:\"URL to redirect after magic link verification\"}).optional(),newUserCallbackURL:z.string().meta({description:\"URL to redirect after new user signup. Only used if the user is registering for the first time.\"}).optional(),errorCallbackURL:z.string().meta({description:\"URL to redirect after error.\"}).optional(),metadata:z.record(z.string(),z.any()).meta({description:\"Additional metadata to pass to sendMagicLink.\"}).optional()});const magicLinkVerifyQuerySchema=z.object({token:z.string().meta({description:\"Verification token\"}),callbackURL:z.string().meta({description:'URL to redirect after magic link verification, if not provided the user will be redirected to the root URL. Eg: \"/dashboard\"'}).optional(),errorCallbackURL:z.string().meta({description:\"URL to redirect after error.\"}).optional(),newUserCallbackURL:z.string().meta({description:\"URL to redirect after new user signup. Only used if the user is registering for the first time.\"}).optional()});const magicLink=__name(options=>{const opts={storeToken:\"plain\",allowedAttempts:1,...options};async function storeToken(ctx,token){if(opts.storeToken===\"hashed\")return await(0,import_utils.defaultKeyHasher)(token);if(typeof opts.storeToken===\"object\"&&\"type\"in opts.storeToken&&opts.storeToken.type===\"custom-hasher\")return await opts.storeToken.hash(token);return token}__name(storeToken,\"storeToken\");return{id:\"magic-link\",endpoints:{signInMagicLink:(0,import_api2.createAuthEndpoint)(\"/sign-in/magic-link\",{method:\"POST\",requireHeaders:true,body:signInMagicLinkBodySchema,metadata:{openapi:{operationId:\"signInWithMagicLink\",description:\"Sign in with magic link\",responses:{200:{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{status:{type:\"boolean\"}}}}}}}}}},async ctx=>{const{email,metadata}=ctx.body;const verificationToken=opts?.generateToken?await opts.generateToken(email):(0,import_random.generateRandomString)(32,\"a-z\",\"A-Z\");const storedToken=await storeToken(ctx,verificationToken);await ctx.context.internalAdapter.createVerificationValue({identifier:storedToken,value:JSON.stringify({email,name:ctx.body.name,attempt:0}),expiresAt:new Date(Date.now()+(opts.expiresIn||300)*1e3)});const realBaseURL=new URL(ctx.context.baseURL);const pathname=realBaseURL.pathname===\"/\"?\"\":realBaseURL.pathname;const basePath=pathname?\"\":ctx.context.options.basePath||\"\";const url=new URL(`${pathname}${basePath}/magic-link/verify`,realBaseURL.origin);url.searchParams.set(\"token\",verificationToken);url.searchParams.set(\"callbackURL\",ctx.body.callbackURL||\"/\");if(ctx.body.newUserCallbackURL)url.searchParams.set(\"newUserCallbackURL\",ctx.body.newUserCallbackURL);if(ctx.body.errorCallbackURL)url.searchParams.set(\"errorCallbackURL\",ctx.body.errorCallbackURL);await options.sendMagicLink({email,url:url.toString(),token:verificationToken,metadata},ctx);return ctx.json({status:true})}),magicLinkVerify:(0,import_api2.createAuthEndpoint)(\"/magic-link/verify\",{method:\"GET\",query:magicLinkVerifyQuerySchema,use:[(0,import_origin_check.originCheck)(ctx=>{return ctx.query.callbackURL?decodeURIComponent(ctx.query.callbackURL):\"/\"}),(0,import_origin_check.originCheck)(ctx=>{return ctx.query.newUserCallbackURL?decodeURIComponent(ctx.query.newUserCallbackURL):\"/\"}),(0,import_origin_check.originCheck)(ctx=>{return ctx.query.errorCallbackURL?decodeURIComponent(ctx.query.errorCallbackURL):\"/\"})],requireHeaders:true,metadata:{openapi:{operationId:\"verifyMagicLink\",description:\"Verify magic link\",responses:{200:{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{session:{$ref:\"#/components/schemas/Session\"},user:{$ref:\"#/components/schemas/User\"}}}}}}}}}},async ctx=>{const token=ctx.query.token;const callbackURL=new URL(ctx.query.callbackURL?decodeURIComponent(ctx.query.callbackURL):\"/\",ctx.context.baseURL).toString();const errorCallbackURL=new URL(ctx.query.errorCallbackURL?decodeURIComponent(ctx.query.errorCallbackURL):callbackURL,ctx.context.baseURL);function redirectWithError(error){errorCallbackURL.searchParams.set(\"error\",error);throw ctx.redirect(errorCallbackURL.toString())}__name(redirectWithError,\"redirectWithError\");const newUserCallbackURL=new URL(ctx.query.newUserCallbackURL?decodeURIComponent(ctx.query.newUserCallbackURL):callbackURL,ctx.context.baseURL).toString();const storedToken=await storeToken(ctx,token);const tokenValue=await ctx.context.internalAdapter.findVerificationValue(storedToken);if(!tokenValue)redirectWithError(\"INVALID_TOKEN\");if(tokenValue.expiresAt
=opts.allowedAttempts){await ctx.context.internalAdapter.deleteVerificationByIdentifier(storedToken);redirectWithError(\"ATTEMPTS_EXCEEDED\")}await ctx.context.internalAdapter.updateVerificationByIdentifier(storedToken,{value:JSON.stringify({email,name,attempt:attempt+1})});let isNewUser=false;let user=await ctx.context.internalAdapter.findUserByEmail(email).then(res=>res?.user);if(!user)if(!opts.disableSignUp){const newUser=await ctx.context.internalAdapter.createUser({email,emailVerified:true,name:name||\"\"});isNewUser=true;user=newUser;if(!user)redirectWithError(\"failed_to_create_user\")}else redirectWithError(\"new_user_signup_disabled\");if(!user.emailVerified)user=await ctx.context.internalAdapter.updateUser(user.id,{emailVerified:true});const session=await ctx.context.internalAdapter.createSession(user.id);if(!session)redirectWithError(\"failed_to_create_session\");await(0,import_cookies.setSessionCookie)(ctx,{session,user});if(!ctx.query.callbackURL)return ctx.json({token:session.token,user:(0,import_schema.parseUserOutput)(ctx.context.options,user)});if(isNewUser)throw ctx.redirect(newUserCallbackURL);throw ctx.redirect(callbackURL)})},rateLimit:[{pathMatcher(path){return path.startsWith(\"/sign-in/magic-link\")||path.startsWith(\"/magic-link/verify\")},window:opts.rateLimit?.window||60,max:opts.rateLimit?.max||5}],options}},\"magicLink\");0&&(module.exports={magicLink});\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["import_api"],"ignoreList":[],"sources":["/opt/canhelp/node_modules/better-auth/dist/plugins/magic-link/index.mjs"],"sourcesContent":[null]}}