authrix
Version:
Lightweight, flexible authentication library for Node.js and TypeScript.
1 lines • 3.18 kB
JavaScript
;var chunkRUOJ57HW_cjs=require('./chunk-RUOJ57HW.cjs'),chunkO5GBK76P_cjs=require('./chunk-O5GBK76P.cjs'),chunkIRGTWVM7_cjs=require('./chunk-IRGTWVM7.cjs'),g=require('bcryptjs'),a=require('jsonwebtoken');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var g__default=/*#__PURE__*/_interopDefault(g);var a__default=/*#__PURE__*/_interopDefault(a);async function m(e,r){let t=chunkIRGTWVM7_cjs.a.db;if(!t)throw new Error("Database not configured. Make sure initAuth() is called before using authentication functions.");if(!e||!e.trim())throw new Error("Email is required");if(!r||!r.trim())throw new Error("Password is required");if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e))throw new Error("Invalid email format");if(r.length<6)throw new Error("Password must be at least 6 characters long");if(await t.findUserByEmail(e))throw new Error("Email already registered");let s=await chunkO5GBK76P_cjs.b(r,{skipValidation:true}),c=await t.createUser({email:e,password:s}),l=chunkRUOJ57HW_cjs.a({id:c.id,email:e});return {user:{id:c.id,email:e},token:l,cookieOptions:{httpOnly:true,secure:process.env.NODE_ENV==="production",maxAge:1e3*60*60*24*7,sameSite:"lax",path:"/"}}}async function b(e,r,t){let o=await m(e,r);return t.cookie(chunkIRGTWVM7_cjs.a.cookieName,o.token,o.cookieOptions),o.user}async function w(e,r){let t=chunkIRGTWVM7_cjs.a.db;if(!t)throw new Error("Database not configured. Make sure initAuth() is called before using authentication functions.");let o=await t.findUserByEmail(e);if(!o)throw new Error("Invalid email or password");if(!await g__default.default.compare(r,o.password))throw new Error("Invalid email or password");let s=chunkRUOJ57HW_cjs.a({id:o.id,email:e});return {user:{id:o.id,email:e},token:s,cookieOptions:{httpOnly:true,secure:process.env.NODE_ENV==="production",maxAge:1e3*60*60*24*7,sameSite:"lax",path:"/"}}}async function C(e,r,t){let o=await w(e,r);return t.cookie(chunkIRGTWVM7_cjs.a.cookieName,o.token,o.cookieOptions),o.user}function h(){return {cookieName:chunkIRGTWVM7_cjs.a.cookieName,cookieOptions:{httpOnly:true,secure:process.env.NODE_ENV==="production",sameSite:"lax",path:"/",expires:new Date(0)},message:"Logged out successfully"}}function V(e){let r=h();return e.clearCookie&&e.clearCookie(r.cookieName,{httpOnly:true,secure:process.env.NODE_ENV==="production",sameSite:"lax",path:"/"}),{message:r.message}}function p(e){try{return a__default.default.verify(e,chunkIRGTWVM7_cjs.a.jwtSecret)}catch(r){throw r instanceof a__default.default.TokenExpiredError?new Error("Token expired"):r instanceof a__default.default.JsonWebTokenError?new Error("Invalid token"):new Error("Token verification failed")}}async function f(e){try{if(!e)return null;let r=p(e),t=chunkIRGTWVM7_cjs.a.db;if(!t)return null;let o=await t.findUserById(r.id);return o?{id:o.id,email:o.email,createdAt:o.createdAt}:null}catch{return null}}async function k(e){let r=e.cookies[chunkIRGTWVM7_cjs.a.cookieName];return f(r)}async function _(e){return await f(e)!==null}async function B(e){return await k(e)!==null}exports.a=m;exports.b=b;exports.c=w;exports.d=C;exports.e=h;exports.f=V;exports.g=p;exports.h=f;exports.i=k;exports.j=_;exports.k=B;