"use strict";exports.id=9834,exports.ids=[9834],exports.modules={14182:(e,t,r)=>{r.d(t,{$R:()=>i,Ui:()=>c,XB:()=>a,XR:()=>l,YE:()=>n,ZT:()=>d,b4:()=>u,oD:()=>o});var s=r(91043);let n={endpoint:"https://dome-api.slm-lab.net",region:"us-east-1",bucket:process.env.S3_BUCKET||"pages",accessKey:"4aBT4CMb7JIMMyUtp4Pl",secretKey:"HGn39XhCIlqOjmDVzRK9MED2Fci2rYvDDgbLFElg"},o=new s.S3Client({region:n.region,endpoint:n.endpoint,credentials:{accessKeyId:n.accessKey,secretAccessKey:n.secretKey},forcePathStyle:!0});async function i(e,t,r){let i=new s.PutObjectCommand({Bucket:n.bucket,Key:e,Body:"string"==typeof t?Buffer.from(t,"utf-8"):t,ContentType:r||"text/plain"});return await o.send(i),{key:e}}async function a(e){try{let t=new s.GetObjectCommand({Bucket:n.bucket,Key:e}),r=await o.send(t);if(!r.Body)return null;let i=[];for await(let e of r.Body)i.push(e);return Buffer.concat(i).toString("utf-8")}catch(e){return console.error("Error getting object content:",e),null}}async function l(e){let t=new s.DeleteObjectCommand({Bucket:n.bucket,Key:e});await o.send(t)}async function c(e,t){let r=`user-${e}/${t}/`,i=new s.ListObjectsV2Command({Bucket:n.bucket,Prefix:r,Delimiter:"/"});return((await o.send(i)).Contents||[]).filter(e=>e.Key&&!e.Key.endsWith("/")&&!e.Key.includes(".placeholder")).map(e=>({key:e.Key,name:e.Key.split("/").pop()||e.Key,size:e.Size,lastModified:e.LastModified}))}function u(e,t){if(!e)return"";if(e.startsWith("http"))return e;let r=e.startsWith("/")?e.substring(1):e,s=n.endpoint?.replace(/\/$/,""),o=t||n.bucket;return s?`${s}/${o}/${r}`:r}async function d(e){for(let t of["notes","diary","health","contacts"])try{let r=`user-${e}/${t}/`;await i(r,"","application/x-directory");let s=`user-${e}/${t}/.placeholder`;await i(s,"Folder placeholder","text/plain"),console.log(`Created folder: ${r}`)}catch(r){console.error(`Error creating folder ${t} for user ${e}:`,r)}}},29834:(e,t,r)=>{r.r(t),r.d(t,{DELETE:()=>d,GET:()=>l,POST:()=>c,PUT:()=>u});var s=r(32190),n=r(19854),o=r(26690),i=r(14182);async function a(e){let t=await (0,n.getServerSession)(o.N);return t?.user?.id?{authorized:!0,userId:t.user.id}:(console.error("Unauthorized access attempt:",{url:e.url,method:e.method,headers:Object.fromEntries(e.headers)}),{authorized:!1,userId:null})}async function l(e){try{let{authorized:t,userId:r}=await a(e);if(!t||!r)return s.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:n}=new URL(e.url),o=n.get("folder");if(!o)return s.NextResponse.json({error:"Folder parameter is required"},{status:400});let l=o.toLowerCase();console.log(`Listing files for user ${r} in folder: ${o} (normalized: ${l})`);let c=await (0,i.Ui)(r,o);return 0===c.length&&o!==l&&(console.log(`No files found with original case, trying lowercase: ${l}`),c=await (0,i.Ui)(r,l)),s.NextResponse.json(c)}catch(e){return console.error("Error listing files:",e),s.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function c(e){try{let{authorized:t,userId:r}=await a(e);if(!t||!r)return s.NextResponse.json({error:"Unauthorized"},{status:401});let{title:n,content:o,folder:l}=await e.json().catch(()=>({}));if(!n||!o||!l)return s.NextResponse.json({error:"Missing required fields",received:{title:!!n,content:!!o,folder:!!l}},{status:400});let c=l.toLowerCase(),u=`user-${r}/${c}/${n}${n.endsWith(".md")?"":".md"}`;console.log("Creating file in S3:",{key:u,contentLength:o.length});let d=await (0,i.$R)(u,o);return s.NextResponse.json(d)}catch(e){return console.error("Error creating file:",e),s.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function u(e){try{let t,{authorized:r,userId:n}=await a(e);if(!r||!n)return s.NextResponse.json({error:"Unauthorized"},{status:401});let{id:o,title:l,content:c,folder:u,mime:d}=await e.json().catch(()=>({}));if(o){if(!o.includes(`user-${n}/`))return s.NextResponse.json({error:"Unauthorized access to file"},{status:403});t=o}else{if(!l||!u)return s.NextResponse.json({error:"Missing required fields",received:{title:!!l,folder:!!u}},{status:400});let e=u.toLowerCase();t=`user-${n}/${e}/${l}${l.endsWith(".md")?"":".md"}`}console.log("Updating file in S3:",{key:t,contentLength:c?.length});let f=await (0,i.$R)(t,c,d);return s.NextResponse.json(f)}catch(e){return console.error("Error updating file:",e),s.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function d(e){try{let{authorized:t,userId:r}=await a(e);if(!t||!r)return s.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:n}=new URL(e.url),o=n.get("id");if(!o)return s.NextResponse.json({error:"Missing file id"},{status:400});if(!o.includes(`user-${r}/`))return s.NextResponse.json({error:"Unauthorized access to file"},{status:403});return console.log("Deleting file from S3:",{key:o}),await (0,i.XR)(o),s.NextResponse.json({success:!0})}catch(e){return console.error("Error deleting file:",e),s.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}}};