/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/the-butcher@1.0.6/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const fs=require("fs");let ent=" ",entName=" ",eventType=" ",getEntityByUrl=(e,t,n)=>{try{let r=n.entities?n.entities:{};for(const t in r)if(-1!==e.url.indexOf(t)||r[t].requests&&-1!==r[t].requests.indexOf(request.url)){ent=t;break}let s,i=r&&r[ent]?r[ent].field:"name";try{s=JSON.parse(t)}catch(e){s=t}let l=s.data||s.response||s.result||s;entName=l[i]||e.body[i]||e.body.name||e.body.email||" "}catch(e){console.log(e)}ent||"auth"===eventType?"auth"===eventType&&(ent="user"):(ent="",entName="")},getAction=(e,t)=>{let n=" ";const r={get:"read",delete:"delete",put:"edit"};let s={read:["read","get","list"],create:["create","add"],delete:["delete","remove"],edit:["edit","update"],auth:["login","signin","signup","auth"]};for(const t in r)if(e.method.toLowerCase()===t){n=r[t];break}for(const t in s){let r=s[t];for(let s=0;s<r.length;s++)if(-1!==e.url.indexOf(r[s])){n=t;break}}201===t&&(n="create"),eventType=n},writeToFile=(e,t)=>{let n=t||"debug.log";fs.appendFile(n,e,(e=>{console.error(e)}))},logger=async(e,t,n)=>{let r,s=e.headers["x-forwarded-for"]||e.connection.remoteAddress||e.ip,i=-1!==s.indexOf(":")?s.split(":"):[s],l=i[i.length-1],o=(new Date).toISOString(),a=e.user?e.user.email:" ",d=n.user||a;const u=t.write,f=t.end,g=[];t.write=(...e)=>{g.push(Buffer.from(e[0])),u.apply(t,e)},t.end=(...s)=>{s[0]&&g.push(Buffer.from(s[0])),r=t.statusCode>=200&&t.statusCode<=299;let i=Buffer.concat(g).toString("utf8");f.apply(t,s);let a=n.field?n.field:"name";getAction(e,t.statusCode),n.entity?(ent=n.entity.type,entName=e.body[n.entity.field]):getEntityByUrl(e,i,n);let u=getMessage(i,t.statusCode,a,e,n.requestDescription);const p=`\n{"timestamp": "${o}", "log_type": "audit", "client_ip": "${l}", "username": "${d}", "entity_type": "${ent}", "entity_name": "${entName}","event_type": "${eventType}", "event_message": "${u}", "event_success": "${r}"}`;let c=n.fileName?n.fileName:"debug.log";n.writeToFile?writeToFile(p,c):console.log(p)}},getMessage=(e,t,n,r,s)=>{let{url:i}=r,l=" ";if(s)if("string"==typeof s)l=s;else{let t=s[i.replace("/","")],n=r.body[t.field]||e[t.field];l=`${t.text} - ${n}`}else try{let r=JSON.parse(e);r.data||r.response||r.results||r.result;l=t>=200&&t<=299?r[n]?r[n]:i:r.message||r.error||r.errorMessage||" "}catch(t){l="string"!=typeof e||-1!==e.indexOf("!DOCTYPE")?"Error":e}return l};module.exports=logger;
//# sourceMappingURL=/sm/4f9059a9a6977a989fe62a16b88c302d9a4f63984ec1d515ac8b1f97c7d027f8.map