Edit: /tmp/tsx-0/17887-2f9c24b5d3b6f0382fbc0c13c8587fc4caa07102 (10330B)
{"code":"__filename=\"/opt/canhelp/node_modules/better-auth/dist/plugins/siwe/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 siwe_exports={};__export(siwe_exports,{siwe:()=>siwe});module.exports=__toCommonJS(siwe_exports);var import_is_api_error=require(\"../../utils/is-api-error.mjs\");var import_url=require(\"../../utils/url.mjs\");var import_schema=require(\"../../db/schema.mjs\");var import_cookies=require(\"../../cookies/index.mjs\");var import_api=require(\"../../api/index.mjs\");var import_hashing=require(\"../../utils/hashing.mjs\");var import_schema2=require(\"./schema.mjs\");var import_api2=require(\"@better-auth/core/api\");var z=__toESM(require(\"zod\"));const getSiweNonceBodySchema=z.object({walletAddress:z.string().regex(/^0[xX][a-fA-F0-9]{40}$/i).length(42),chainId:z.number().int().positive().optional().default(1)});const siwe=__name(options=>({id:\"siwe\",schema:(0,import_schema.mergeSchema)(import_schema2.schema,options?.schema),endpoints:{getSiweNonce:(0,import_api2.createAuthEndpoint)(\"/siwe/nonce\",{method:\"POST\",body:getSiweNonceBodySchema},async ctx=>{const{walletAddress:rawWalletAddress,chainId}=ctx.body;const walletAddress=(0,import_hashing.toChecksumAddress)(rawWalletAddress);const nonce=await options.getNonce();await ctx.context.internalAdapter.createVerificationValue({identifier:`siwe:${walletAddress}:${chainId}`,value:nonce,expiresAt:new Date(Date.now()+900*1e3)});return ctx.json({nonce})}),verifySiweMessage:(0,import_api2.createAuthEndpoint)(\"/siwe/verify\",{method:\"POST\",body:z.object({message:z.string().min(1),signature:z.string().min(1),walletAddress:z.string().regex(/^0[xX][a-fA-F0-9]{40}$/i).length(42),chainId:z.number().int().positive().optional().default(1),email:z.email().optional()}).refine(data=>options.anonymous!==false||!!data.email,{message:\"Email is required when the anonymous plugin option is disabled.\",path:[\"email\"]}),requireRequest:true},async ctx=>{const{message,signature,walletAddress:rawWalletAddress,chainId,email}=ctx.body;const walletAddress=(0,import_hashing.toChecksumAddress)(rawWalletAddress);const isAnon=options.anonymous??true;if(!isAnon&&!email)throw import_api.APIError.fromStatus(\"BAD_REQUEST\",{message:\"Email is required when anonymous is disabled.\",status:400});try{const verification=await ctx.context.internalAdapter.findVerificationValue(`siwe:${walletAddress}:${chainId}`);if(!verification||new Date>verification.expiresAt)throw import_api.APIError.fromStatus(\"UNAUTHORIZED\",{message:\"Unauthorized: Invalid or expired nonce\",status:401,code:\"UNAUTHORIZED_INVALID_OR_EXPIRED_NONCE\"});const{value:nonce}=verification;if(!await options.verifyMessage({message,signature,address:walletAddress,chainId,cacao:{h:{t:\"caip122\"},p:{domain:options.domain,aud:options.domain,nonce,iss:options.domain,version:\"1\"},s:{t:\"eip191\",s:signature}}}))throw import_api.APIError.fromStatus(\"UNAUTHORIZED\",{message:\"Unauthorized: Invalid SIWE signature\",status:401});await ctx.context.internalAdapter.deleteVerificationByIdentifier(`siwe:${walletAddress}:${chainId}`);let user=null;const existingWalletAddress=await ctx.context.adapter.findOne({model:\"walletAddress\",where:[{field:\"address\",operator:\"eq\",value:walletAddress},{field:\"chainId\",operator:\"eq\",value:chainId}]});if(existingWalletAddress)user=await ctx.context.adapter.findOne({model:\"user\",where:[{field:\"id\",operator:\"eq\",value:existingWalletAddress.userId}]});else{const anyWalletAddress=await ctx.context.adapter.findOne({model:\"walletAddress\",where:[{field:\"address\",operator:\"eq\",value:walletAddress}]});if(anyWalletAddress)user=await ctx.context.adapter.findOne({model:\"user\",where:[{field:\"id\",operator:\"eq\",value:anyWalletAddress.userId}]})}if(!user){const domain=options.emailDomainName??(0,import_url.getOrigin)(ctx.context.baseURL);const userEmail=!isAnon&&email?email:`${walletAddress}@${domain}`;const{name,avatar}=await options.ensLookup?.({walletAddress})??{};user=await ctx.context.internalAdapter.createUser({name:name??walletAddress,email:userEmail,image:avatar??\"\"});await ctx.context.adapter.create({model:\"walletAddress\",data:{userId:user.id,address:walletAddress,chainId,isPrimary:true,createdAt:new Date}});await ctx.context.internalAdapter.createAccount({userId:user.id,providerId:\"siwe\",accountId:`${walletAddress}:${chainId}`,createdAt:new Date,updatedAt:new Date})}else if(!existingWalletAddress){await ctx.context.adapter.create({model:\"walletAddress\",data:{userId:user.id,address:walletAddress,chainId,isPrimary:false,createdAt:new Date}});await ctx.context.internalAdapter.createAccount({userId:user.id,providerId:\"siwe\",accountId:`${walletAddress}:${chainId}`,createdAt:new Date,updatedAt:new Date})}const session=await ctx.context.internalAdapter.createSession(user.id);if(!session)throw import_api.APIError.fromStatus(\"INTERNAL_SERVER_ERROR\",{message:\"Internal Server Error\",status:500});await(0,import_cookies.setSessionCookie)(ctx,{session,user});return ctx.json({token:session.token,success:true,user:{id:user.id,walletAddress,chainId}})}catch(error){if((0,import_is_api_error.isAPIError)(error))throw error;throw import_api.APIError.fromStatus(\"UNAUTHORIZED\",{message:\"Something went wrong. Please try again later.\",error:error instanceof Error?error.message:\"Unknown error\",status:401})}})},options}),\"siwe\");0&&(module.exports={siwe});\n})()\n","warnings":[],"map":{"version":3,"mappings":";i/BAAA,6HAA2B,wCAC3B,eAA0B,+BAC1B,kBAA4B,+BAC5B,mBAAiC,mCACjC,eAAyB,+BACzB,mBAAkC,mCAClC,IAAAA,eAAuB,wBACvB,IAAAC,YAAmC,iCACnC,MAAmB,wBAGnB,MAAM,uBAAyB,EAAE,OAAO,CACvC,cAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,EAAE,OAAO,EAAE,EACpE,QAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAC1D,CAAC,EACD,MAAM,KAAO,OAAC,UAAa,CAC1B,GAAI,OACJ,UAAQ,2BAAY,sBAAQ,SAAS,MAAM,EAC3C,UAAW,CACV,gBAAc,gCAAmB,cAAe,CAC/C,OAAQ,OACR,KAAM,sBACP,EAAG,MAAO,KAAQ,CACjB,KAAM,CAAE,cAAe,iBAAkB,OAAQ,EAAI,IAAI,KACzD,MAAM,iBAAgB,kCAAkB,gBAAgB,EACxD,MAAM,MAAQ,MAAM,QAAQ,SAAS,EACrC,MAAM,IAAI,QAAQ,gBAAgB,wBAAwB,CACzD,WAAY,QAAQ,aAAa,IAAI,OAAO,GAC5C,MAAO,MACP,UAAW,IAAI,KAAK,KAAK,IAAI,EAAI,IAAM,GAAG,CAC3C,CAAC,EACD,OAAO,IAAI,KAAK,CAAE,KAAM,CAAC,CAC1B,CAAC,EACD,qBAAmB,gCAAmB,eAAgB,CACrD,OAAQ,OACR,KAAM,EAAE,OAAO,CACd,QAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EACzB,UAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAC3B,cAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,EAAE,OAAO,EAAE,EACpE,QAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,EACzD,MAAO,EAAE,MAAM,EAAE,SAAS,CAC3B,CAAC,EAAE,OAAQ,MAAS,QAAQ,YAAc,OAAS,CAAC,CAAC,KAAK,MAAO,CAChE,QAAS,kEACT,KAAM,CAAC,OAAO,CACf,CAAC,EACD,eAAgB,IACjB,EAAG,MAAO,KAAQ,CACjB,KAAM,CAAE,QAAS,UAAW,cAAe,iBAAkB,QAAS,KAAM,EAAI,IAAI,KACpF,MAAM,iBAAgB,kCAAkB,gBAAgB,EACxD,MAAM,OAAS,QAAQ,WAAa,KACpC,GAAI,CAAC,QAAU,CAAC,MAAO,MAAM,oBAAS,WAAW,cAAe,CAC/D,QAAS,gDACT,OAAQ,GACT,CAAC,EACD,GAAI,CACH,MAAM,aAAe,MAAM,IAAI,QAAQ,gBAAgB,sBAAsB,QAAQ,aAAa,IAAI,OAAO,EAAE,EAC/G,GAAI,CAAC,cAAgC,IAAI,KAAS,aAAa,UAAW,MAAM,oBAAS,WAAW,eAAgB,CACnH,QAAS,yCACT,OAAQ,IACR,KAAM,uCACP,CAAC,EACD,KAAM,CAAE,MAAO,KAAM,EAAI,aACzB,GAAI,CAAC,MAAM,QAAQ,cAAc,CAChC,QACA,UACA,QAAS,cACT,QACA,MAAO,CACN,EAAG,CAAE,EAAG,SAAU,EAClB,EAAG,CACF,OAAQ,QAAQ,OAChB,IAAK,QAAQ,OACb,MACA,IAAK,QAAQ,OACb,QAAS,GACV,EACA,EAAG,CACF,EAAG,SACH,EAAG,SACJ,CACD,CACD,CAAC,EAAG,MAAM,oBAAS,WAAW,eAAgB,CAC7C,QAAS,uCACT,OAAQ,GACT,CAAC,EACD,MAAM,IAAI,QAAQ,gBAAgB,+BAA+B,QAAQ,aAAa,IAAI,OAAO,EAAE,EACnG,IAAI,KAAO,KACX,MAAM,sBAAwB,MAAM,IAAI,QAAQ,QAAQ,QAAQ,CAC/D,MAAO,gBACP,MAAO,CAAC,CACP,MAAO,UACP,SAAU,KACV,MAAO,aACR,EAAG,CACF,MAAO,UACP,SAAU,KACV,MAAO,OACR,CAAC,CACF,CAAC,EACD,GAAI,sBAAuB,KAAO,MAAM,IAAI,QAAQ,QAAQ,QAAQ,CACnE,MAAO,OACP,MAAO,CAAC,CACP,MAAO,KACP,SAAU,KACV,MAAO,sBAAsB,MAC9B,CAAC,CACF,CAAC,MACI,CACJ,MAAM,iBAAmB,MAAM,IAAI,QAAQ,QAAQ,QAAQ,CAC1D,MAAO,gBACP,MAAO,CAAC,CACP,MAAO,UACP,SAAU,KACV,MAAO,aACR,CAAC,CACF,CAAC,EACD,GAAI,iBAAkB,KAAO,MAAM,IAAI,QAAQ,QAAQ,QAAQ,CAC9D,MAAO,OACP,MAAO,CAAC,CACP,MAAO,KACP,SAAU,KACV,MAAO,iBAAiB,MACzB,CAAC,CACF,CAAC,CACF,CACA,GAAI,CAAC,KAAM,CACV,MAAM,OAAS,QAAQ,oBAAmB,sBAAU,IAAI,QAAQ,OAAO,EACvE,MAAM,UAAY,CAAC,QAAU,MAAQ,MAAQ,GAAG,aAAa,IAAI,MAAM,GACvE,KAAM,CAAE,KAAM,MAAO,EAAI,MAAM,QAAQ,YAAY,CAAE,aAAc,CAAC,GAAK,CAAC,EAC1E,KAAO,MAAM,IAAI,QAAQ,gBAAgB,WAAW,CACnD,KAAM,MAAQ,cACd,MAAO,UACP,MAAO,QAAU,EAClB,CAAC,EACD,MAAM,IAAI,QAAQ,QAAQ,OAAO,CAChC,MAAO,gBACP,KAAM,CACL,OAAQ,KAAK,GACb,QAAS,cACT,QACA,UAAW,KACX,UAA2B,IAAI,IAChC,CACD,CAAC,EACD,MAAM,IAAI,QAAQ,gBAAgB,cAAc,CAC/C,OAAQ,KAAK,GACb,WAAY,OACZ,UAAW,GAAG,aAAa,IAAI,OAAO,GACtC,UAA2B,IAAI,KAC/B,UAA2B,IAAI,IAChC,CAAC,CACF,SAAW,CAAC,sBAAuB,CAClC,MAAM,IAAI,QAAQ,QAAQ,OAAO,CAChC,MAAO,gBACP,KAAM,CACL,OAAQ,KAAK,GACb,QAAS,cACT,QACA,UAAW,MACX,UAA2B,IAAI,IAChC,CACD,CAAC,EACD,MAAM,IAAI,QAAQ,gBAAgB,cAAc,CAC/C,OAAQ,KAAK,GACb,WAAY,OACZ,UAAW,GAAG,aAAa,IAAI,OAAO,GACtC,UAA2B,IAAI,KAC/B,UAA2B,IAAI,IAChC,CAAC,CACF,CACA,MAAM,QAAU,MAAM,IAAI,QAAQ,gBAAgB,cAAc,KAAK,EAAE,EACvE,GAAI,CAAC,QAAS,MAAM,oBAAS,WAAW,wBAAyB,CAChE,QAAS,wBACT,OAAQ,GACT,CAAC,EACD,QAAM,iCAAiB,IAAK,CAC3B,QACA,IACD,CAAC,EACD,OAAO,IAAI,KAAK,CACf,MAAO,QAAQ,MACf,QAAS,KACT,KAAM,CACL,GAAI,KAAK,GACT,cACA,OACD,CACD,CAAC,CACF,OAAS,MAAO,CACf,MAAI,gCAAW,KAAK,EAAG,MAAM,MAC7B,MAAM,oBAAS,WAAW,eAAgB,CACzC,QAAS,gDACT,MAAO,iBAAiB,MAAQ,MAAM,QAAU,gBAChD,OAAQ,GACT,CAAC,CACF,CACD,CAAC,CACF,EACA,OACD,GAxLa","names":["import_schema","import_api"],"ignoreList":[],"sources":["/opt/canhelp/node_modules/better-auth/dist/plugins/siwe/index.mjs"],"sourcesContent":[null]}}