module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},29173,(e,t,r)=>{t.exports=e.x("@prisma/client",()=>require("@prisma/client"))},55966,e=>{"use strict";var t=e.i(25785),r=e.i(40895),a=e.i(18598),n=e.i(42046),s=e.i(44631),o=e.i(23914),i=e.i(32067),l=e.i(40494),d=e.i(65208),u=e.i(51950),p=e.i(38406),c=e.i(88021),x=e.i(88950),h=e.i(72379),R=e.i(37057),m=e.i(64184),w=e.i(93695);e.i(57919);var f=e.i(33119),v=e.i(75287),g=e.i(77491),E=e.i(16658),y=e.i(45942);async function C(e,{params:t}){try{let e=await (0,g.getServerSession)(E.authOptions);if(!e?.user?.id)return v.NextResponse.json({error:"未授权"},{status:401});let{treeId:r}=await t,a=await y.prisma.familyTree.findFirst({where:{id:r,OR:[{ownerId:e.user.id},{collaborators:{some:{userId:e.user.id}}}]},include:{owner:{select:{id:!0,name:!0,email:!0}},_count:{select:{members:!0,collaborators:!0}}}});if(!a)return v.NextResponse.json({error:"家族树不存在或无权访问"},{status:404});let n="VIEWER";if(a.ownerId===e.user.id)n="OWNER";else{let t=await y.prisma.treeCollaborator.findUnique({where:{treeId_userId:{treeId:a.id,userId:e.user.id}}});t&&(n=t.role)}return console.log("🌳 GET /api/trees/[treeId] 返回数据:",{treeId:r,userId:e.user.id,treeName:a.name,currentUserRole:n,membersCount:a._count.members,collaboratorsCount:a._count.collaborators}),v.NextResponse.json({tree:{...a,currentUserRole:n}})}catch(e){return console.error("获取家族树失败:",e),v.NextResponse.json({error:"获取家族树失败"},{status:500})}}async function N(e,{params:t}){try{let r=await (0,g.getServerSession)(E.authOptions);if(!r?.user?.id)return v.NextResponse.json({error:"未授权"},{status:401});let{treeId:a}=await t,{name:n,description:s}=await e.json(),o=await y.prisma.familyTree.findFirst({where:{id:a,ownerId:r.user.id}});if(!o)return v.NextResponse.json({error:"家族树不存在或无权修改"},{status:404});let i=await y.prisma.familyTree.update({where:{id:a},data:{name:n||o.name,description:void 0!==s?s:o.description},include:{owner:{select:{id:!0,name:!0,email:!0}}}});return v.NextResponse.json({tree:i})}catch(e){return console.error("更新家族树失败:",e),v.NextResponse.json({error:"更新家族树失败"},{status:500})}}async function b(e,{params:t}){try{let e=await (0,g.getServerSession)(E.authOptions);if(!e?.user?.id)return v.NextResponse.json({error:"未授权"},{status:401});let{treeId:r}=await t;if(!await y.prisma.familyTree.findFirst({where:{id:r,ownerId:e.user.id}}))return v.NextResponse.json({error:"家族树不存在或无权删除"},{status:404});return await y.prisma.familyTree.delete({where:{id:r}}),v.NextResponse.json({success:!0})}catch(e){return console.error("删除家族树失败:",e),v.NextResponse.json({error:"删除家族树失败"},{status:500})}}e.s(["DELETE",()=>b,"GET",()=>C,"PATCH",()=>N],28601);var T=e.i(28601);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/trees/[treeId]/route",pathname:"/api/trees/[treeId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/Documents/go-new/chinese-family-tree/app/api/trees/[treeId]/route.ts",nextConfigOutput:"standalone",userland:T}),{workAsyncStorage:j,workUnitAsyncStorage:A,serverHooks:O}=I;function S(){return(0,a.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:A})}async function P(e,t,a){I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/trees/[treeId]/route";v=v.replace(/\/index$/,"")||"/";let g=await I.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,params:y,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:T,routerServerContext:j,isOnDemandRevalidate:A,revalidateOnlyGenerated:O,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:_}=g,q=(0,l.normalizeAppPath)(v),k=!!(T.dynamicRoutes[q]||T.routes[S]),H=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,N,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!T.routes[S],t=T.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await H();throw new w.NoFallbackError}}let U=null;!k||I.isDev||b||(U="/index"===(U=S)?"/":U);let M=!0===I.isDev||!k,D=k&&!M;_&&P&&(0,o.setReferenceManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:_,serverModuleMap:(0,i.createServerModuleMap)({serverActionsManifest:_})});let F=e.method||"GET",$=(0,s.getTracer)(),K=$.getActiveScopeSpan(),L={params:y,prerenderManifest:T,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a)=>I.onRequestError(e,t,a,j)},sharedContext:{buildId:E}},B=new d.NodeNextRequest(e),G=new d.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let o=async e=>I.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${F} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${F} ${v}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&A&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let l=L.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=L.renderOpts.collectedTags;if(!k)return await (0,x.sendResponse)(B,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})},j),t}},u=await I.handleResponse({req:e,nextConfig:C,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:i});if(!k)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&k||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,R.getCacheControlHeader)(u.cacheControl)),await (0,x.sendResponse)(B,G,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};K?await l(K):await $.withPropagatedContext(e.headers,()=>$.trace(p.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},l))}catch(t){if(t instanceof w.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})}),k)throw t;return await (0,x.sendResponse)(B,G,new Response(null,{status:500})),null}}e.s(["handler",()=>P,"patchFetch",()=>S,"routeModule",()=>I,"serverHooks",()=>O,"workAsyncStorage",()=>j,"workUnitAsyncStorage",()=>A],55966)}]; //# sourceMappingURL=%5Broot-of-the-server%5D__80494a23._.js.map