Edit: /tmp/tsx-0/17887-36c7f67e4e69cf64d5570598367ae3bb245f7384 (9199B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/socket.ts\";(()=>{\n\"use strict\";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;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 __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var socket_exports={};__export(socket_exports,{setupSocket:()=>setupSocket});module.exports=__toCommonJS(socket_exports);var import_socket=require(\"socket.io\");var import_db=require(\"./db.js\");var import_db2=require(\"@canhelp/db\");var import_notif=require(\"./lib/notif.js\");var import_drizzle_orm=require(\"drizzle-orm\");var import_auth=require(\"./auth.js\");var import_email=require(\"./lib/email.js\");var import_nameUtils=require(\"./lib/nameUtils.js\");var import_translate=require(\"./translate.js\");var import_daily_limits=require(\"./lib/daily-limits.js\");var import_messaging_rules=require(\"./lib/messaging-rules.js\");function setupSocket(httpServer){const io=new import_socket.Server(httpServer,{cors:{origin:process.env.WEB_URL||\"http://localhost:3000\",credentials:true}});io.use(async(socket,next)=>{try{const token=socket.handshake.auth?.token||socket.handshake.headers?.authorization?.replace(\"Bearer \",\"\");const cookieHeader=socket.handshake.headers?.cookie;let session=null;if(token){const headers=new Headers({authorization:`Bearer ${token}`});session=await import_auth.auth.api.getSession({headers})}else if(cookieHeader){const headers=new Headers({cookie:cookieHeader});session=await import_auth.auth.api.getSession({headers})}if(!session)return next(new Error(\"Unauthorized\"));socket.data.userId=session.user.id;next()}catch{next(new Error(\"Unauthorized\"))}});io.on(\"connection\",socket=>{const userId=socket.data.userId;console.log(`[Socket] User connected: ${userId}`);socket.join(`user:${userId}`);socket.on(\"join_room\",async roomId=>{const[room]=await import_db.db.select().from(import_db2.chatRooms).where((0,import_drizzle_orm.eq)(import_db2.chatRooms.id,roomId));if(!room)return;if(room.customerId!==userId&&room.specialistId!==userId)return;socket.join(`room:${roomId}`)});socket.on(\"send_message\",async data=>{if(!data.roomId||!data.body?.trim()&&!data.imageUrl)return;if(data.imageUrl&&!data.imageUrl.startsWith(\"/api/uploads/\"))return;const[room]=await import_db.db.select().from(import_db2.chatRooms).where((0,import_drizzle_orm.eq)(import_db2.chatRooms.id,data.roomId));if(!room)return;if(room.customerId!==userId&&room.specialistId!==userId)return;const recipientId=room.customerId===userId?room.specialistId:room.customerId;const msgRule=await(0,import_messaging_rules.canSendMessage)(userId,recipientId);if(!msgRule.allowed){socket.emit(\"error_message\",{error:msgRule.reason,code:msgRule.code,senderTier:msgRule.senderTier,recipientTier:msgRule.recipientTier});return}const msgCheck=await(0,import_daily_limits.checkMessageLimit)(userId);if(!msgCheck.allowed){socket.emit(\"error_message\",{error:\"Daily message limit reached\",code:\"DAILY_LIMIT_REACHED\",limit:msgCheck.limit,current:msgCheck.current});return}const[msg]=await import_db.db.insert(import_db2.messages).values({roomId:data.roomId,senderId:userId,body:data.body?.trim()??\"\",imageUrl:data.imageUrl??null}).returning();(0,import_daily_limits.incrementMessages)(userId).catch(()=>{});io.to(`room:${data.roomId}`).emit(\"new_message\",msg);if(data.body?.trim()){(0,import_translate.translateMessageAllLocales)(data.body.trim(),data.locale??\"el\").then(async translations=>{await import_db.db.update(import_db2.messages).set({translations}).where((0,import_drizzle_orm.eq)(import_db2.messages.id,msg.id)).catch(()=>{});io.to(`room:${data.roomId}`).emit(\"message_translated\",{id:msg.id,roomId:data.roomId,translations})}).catch(()=>{})}const notifPreview=data.imageUrl?\"\\u{1F4F7} Photo\":data.body;const notif=await(0,import_notif.notifyNewMessage)(recipientId,notifPreview,data.roomId);if(notif)io.to(`user:${recipientId}`).emit(\"notification\",notif);const recipientSockets=await io.in(`user:${recipientId}`).fetchSockets();if(recipientSockets.length===0){const[sender]=await import_db.db.select().from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,userId));const[recipient]=await import_db.db.select().from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,recipientId));if(recipient?.email&&sender){(0,import_email.emailNewMessage)({to:recipient.email,recipientName:recipient.firstName||recipient.name||\"\\u03A7\\u03C1\\u03AE\\u03C3\\u03C4\\u03B7\",senderName:(0,import_nameUtils.abbrevName)(sender.firstName,sender.lastName,sender.name),preview:data.imageUrl?\"\\u{1F4F7} Photo\":data.body.slice(0,120),roomId:data.roomId,locale:recipient.locale||\"el\"}).catch(()=>{})}}});socket.on(\"mark_read\",async roomId=>{await import_db.db.update(import_db2.messages).set({isRead:true}).where((0,import_drizzle_orm.eq)(import_db2.messages.roomId,roomId))});socket.on(\"disconnect\",()=>{console.log(`[Socket] User disconnected: ${userId}`)})});return io}__name(setupSocket,\"setupSocket\");0&&(module.exports={setupSocket});\n})()\n","warnings":[],"map":{"version":3,"mappings":";mvBAAA,yHACA,kBAAuB,qBACvB,cAAmB,mBACnB,IAAAA,WAA2C,uBAC3C,iBAAiC,0BACjC,uBAAmB,uBACnB,gBAAqB,qBACrB,iBAAgC,0BAChC,qBAA2B,8BAC3B,qBAA2C,0BAC3C,wBAAqD,iCACrD,2BAA+B,oCAExB,SAAS,YAAY,WAAwB,CAClD,MAAM,GAAK,IAAI,qBAAO,WAAY,CAChC,KAAM,CACJ,OAAQ,QAAQ,IAAI,SAAW,wBAC/B,YAAa,IACf,CACF,CAAC,EAGD,GAAG,IAAI,MAAO,OAAQ,OAAS,CAC7B,GAAI,CACF,MAAM,MAAQ,OAAO,UAAU,MAAM,OAAS,OAAO,UAAU,SAAS,eAAe,QAAQ,UAAW,EAAE,EAC5G,MAAM,aAAe,OAAO,UAAU,SAAS,OAE/C,IAAI,QAAU,KAEd,GAAI,MAAO,CACT,MAAM,QAAU,IAAI,QAAQ,CAAE,cAAe,UAAU,KAAK,EAAG,CAAC,EAChE,QAAU,MAAM,iBAAK,IAAI,WAAW,CAAE,OAAQ,CAAC,CACjD,SAAW,aAAc,CACvB,MAAM,QAAU,IAAI,QAAQ,CAAE,OAAQ,YAAa,CAAC,EACpD,QAAU,MAAM,iBAAK,IAAI,WAAW,CAAE,OAAQ,CAAC,CACjD,CAEA,GAAI,CAAC,QAAS,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC,EACnD,OAAO,KAAK,OAAS,QAAQ,KAAK,GAClC,KAAK,CACP,MAAQ,CACN,KAAK,IAAI,MAAM,cAAc,CAAC,CAChC,CACF,CAAC,EAED,GAAG,GAAG,aAAe,QAAW,CAC9B,MAAM,OAAiB,OAAO,KAAK,OACnC,QAAQ,IAAI,4BAA4B,MAAM,EAAE,EAGhD,OAAO,KAAK,QAAQ,MAAM,EAAE,EAG5B,OAAO,GAAG,YAAa,MAAO,QAAmB,CAC/C,KAAM,CAAC,IAAI,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,oBAAS,EAAE,SAAM,uBAAG,qBAAU,GAAI,MAAM,CAAC,EAC/E,GAAI,CAAC,KAAM,OACX,GAAI,KAAK,aAAe,QAAU,KAAK,eAAiB,OAAQ,OAChE,OAAO,KAAK,QAAQ,MAAM,EAAE,CAC9B,CAAC,EAGD,OAAO,GAAG,eAAgB,MAAO,MAA+E,CAC9G,GAAI,CAAC,KAAK,QAAW,CAAC,KAAK,MAAM,KAAK,GAAK,CAAC,KAAK,SAAW,OAE5D,GAAI,KAAK,UAAY,CAAC,KAAK,SAAS,WAAW,eAAe,EAAG,OAEjE,KAAM,CAAC,IAAI,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,oBAAS,EAAE,SAAM,uBAAG,qBAAU,GAAI,KAAK,MAAM,CAAC,EACpF,GAAI,CAAC,KAAM,OACX,GAAI,KAAK,aAAe,QAAU,KAAK,eAAiB,OAAQ,OAGhE,MAAM,YAAc,KAAK,aAAe,OAAS,KAAK,aAAe,KAAK,WAC1E,MAAM,QAAU,QAAM,uCAAe,OAAQ,WAAW,EACxD,GAAI,CAAC,QAAQ,QAAS,CACpB,OAAO,KAAK,gBAAiB,CAC3B,MAAO,QAAQ,OACf,KAAM,QAAQ,KACd,WAAY,QAAQ,WACpB,cAAe,QAAQ,aACzB,CAAC,EACD,MACF,CAGA,MAAM,SAAW,QAAM,uCAAkB,MAAM,EAC/C,GAAI,CAAC,SAAS,QAAS,CACrB,OAAO,KAAK,gBAAiB,CAC3B,MAAO,8BACP,KAAM,sBACN,MAAO,SAAS,MAChB,QAAS,SAAS,OACpB,CAAC,EACD,MACF,CAEA,KAAM,CAAC,GAAG,EAAI,MAAM,aACjB,OAAO,mBAAQ,EACf,OAAO,CAAE,OAAQ,KAAK,OAAQ,SAAU,OAAQ,KAAM,KAAK,MAAM,KAAK,GAAK,GAAI,SAAU,KAAK,UAAY,IAAK,CAAC,EAChH,UAAU,KAGb,uCAAkB,MAAM,EAAE,MAAM,IAAM,CAAC,CAAC,EAExC,GAAG,GAAG,QAAQ,KAAK,MAAM,EAAE,EAAE,KAAK,cAAe,GAAG,EAGpD,GAAI,KAAK,MAAM,KAAK,EAAG,IACrB,6CAA2B,KAAK,KAAK,KAAK,EAAG,KAAK,QAAU,IAAI,EAAE,KAAK,MAAO,cAAiB,CAC7F,MAAM,aAAG,OAAO,mBAAQ,EAAE,IAAI,CAAE,YAAa,CAAC,EAAE,SAAM,uBAAG,oBAAS,GAAI,IAAI,EAAE,CAAC,EAAE,MAAM,IAAM,CAAC,CAAC,EAC7F,GAAG,GAAG,QAAQ,KAAK,MAAM,EAAE,EAAE,KAAK,qBAAsB,CAAE,GAAI,IAAI,GAAI,OAAQ,KAAK,OAAQ,YAAa,CAAC,CAC3G,CAAC,EAAE,MAAM,IAAM,CAAC,CAAC,CACnB,CAGA,MAAM,aAAe,KAAK,SAAW,kBAAa,KAAK,KACvD,MAAM,MAAQ,QAAM,+BAAiB,YAAa,aAAc,KAAK,MAAM,EAE3E,GAAI,MAAO,GAAG,GAAG,QAAQ,WAAW,EAAE,EAAE,KAAK,eAAgB,KAAK,EAGlE,MAAM,iBAAmB,MAAM,GAAG,GAAG,QAAQ,WAAW,EAAE,EAAE,aAAa,EACzE,GAAI,iBAAiB,SAAW,EAAG,CACjC,KAAM,CAAC,MAAM,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,gBAAK,EAAE,SAAM,uBAAG,iBAAM,GAAI,MAAM,CAAC,EACzE,KAAM,CAAC,SAAS,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,gBAAK,EAAE,SAAM,uBAAG,iBAAM,GAAI,WAAW,CAAC,EACjF,GAAI,WAAW,OAAS,OAAQ,IAC9B,8BAAgB,CACd,GAAI,UAAU,MACd,cAAe,UAAU,WAAa,UAAU,MAAQ,uCACxD,cAAY,6BAAW,OAAO,UAAW,OAAO,SAAU,OAAO,IAAI,EACrE,QAAS,KAAK,SAAW,kBAAa,KAAK,KAAK,MAAM,EAAG,GAAG,EAC5D,OAAQ,KAAK,OACb,OAAS,UAAU,QAAiC,IACtD,CAAC,EAAE,MAAM,IAAM,CAAC,CAAC,CACnB,CACF,CACF,CAAC,EAGD,OAAO,GAAG,YAAa,MAAO,QAAmB,CAC/C,MAAM,aACH,OAAO,mBAAQ,EACf,IAAI,CAAE,OAAQ,IAAK,CAAC,EACpB,SAAM,uBAAG,oBAAS,OAAQ,MAAM,CAAC,CACtC,CAAC,EAED,OAAO,GAAG,aAAc,IAAM,CAC5B,QAAQ,IAAI,+BAA+B,MAAM,EAAE,CACrD,CAAC,CACH,CAAC,EAED,OAAO,EACT,CA1IgB","names":["import_db"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/socket.ts"],"sourcesContent":[null]}}