wiki-viewer 1.8.4 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  4. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/index.html +1 -1
  20. package/.next/standalone/.next/server/app/index.rsc +1 -1
  21. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  24. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  26. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00lep-u._.js +1 -1
  27. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00qu86p._.js +1 -1
  28. package/.next/standalone/.next/server/chunks/[root-of-the-server]__036mhjp._.js +2 -2
  29. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05t~v6l._.js +1 -1
  30. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09cqzem._.js +1 -1
  31. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0_601._.js +1 -1
  32. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ae3dk6._.js +1 -1
  33. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d7x3e1._.js +1 -1
  34. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e7vs98._.js +1 -1
  35. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fxzg4v._.js +1 -1
  36. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gda_iu._.js +1 -1
  37. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0hu~q20._.js +1 -1
  38. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-8clq._.js +1 -1
  39. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0otb8ra._.js +1 -1
  40. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p0-p__._.js +1 -1
  41. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0piofm3._.js +1 -1
  42. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rrf-jr._.js +1 -1
  43. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s6_lzw._.js +1 -1
  44. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sh13v5._.js +1 -1
  45. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ta~flu._.js +1 -1
  46. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0v4im4p._.js +1 -1
  47. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vatqe-._.js +1 -1
  48. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vdb2nr._.js +1 -1
  49. package/.next/standalone/.next/server/chunks/[root-of-the-server]__123._fe._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1377.79._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1378-ox._.js +1 -1
  52. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13hp4tw._.js +2 -2
  53. package/.next/standalone/.next/server/edge/chunks/0p91_next_dist_0nh.6nc._.js +2 -2
  54. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  55. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  56. package/.next/standalone/.next/server/pages/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/500.html +1 -1
  58. package/.next/standalone/README.md +5 -3
  59. package/.next/standalone/bin/wiki-viewer.js +13 -3
  60. package/.next/standalone/node_modules/.pnpm/better-sqlite3@12.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  61. package/.next/standalone/package.json +1 -1
  62. package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -0
  63. package/.next/standalone/src/lib/auth/admin.ts +8 -0
  64. package/.next/standalone/src/lib/workspace-context.ts +13 -0
  65. package/.next/standalone/src/middleware.ts +5 -0
  66. package/README.md +5 -3
  67. package/bin/wiki-viewer.js +13 -3
  68. package/package.json +16 -10
  69. /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → NN8w2BNeE9aJeGzUsWJ8G}/_buildManifest.js +0 -0
  70. /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → NN8w2BNeE9aJeGzUsWJ8G}/_clientMiddlewareManifest.js +0 -0
  71. /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → NN8w2BNeE9aJeGzUsWJ8G}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){h=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},249361,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),g=e.i(702414),R=e.i(402662),_=e.i(254226),k=e.i(583627),y=e.i(359211);async function A(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let a=await (0,_.requireUser)(e);if(!a.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:s}=await t,n=await (0,y.getWorkspace)(s);if(!n)return g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,k.isAdmin)(a.user.id,a.user.email);if(!(0,y.userCanAccess)(n,a.user.id,i))return g.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let o=await e.json();if(void 0!==o.allowedUserIds&&!i)return g.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});void 0!==o.name&&await (0,y.renameWorkspace)(s,o.name.trim()),void 0!==o.pinnedPaths&&await (0,y.setWorkspacePins)(s,o.pinnedPaths),void 0!==o.allowedUserIds&&await (0,y.setWorkspaceAccess)(s,o.allowedUserIds);let l=await (0,y.getWorkspace)(s);return g.NextResponse.json({ok:!0,workspace:l})}async function E(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let a=await (0,k.requireAdmin)(e);if(!a.ok)return g.NextResponse.json({error:a.code},{status:a.status});let{id:s}=await t;return await (0,y.getWorkspace)(s)?(await (0,y.removeWorkspace)(s),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404})}e.s(["DELETE",0,E,"PATCH",0,A,"runtime",0,"nodejs"],692671);var I=e.i(692671);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/route",pathname:"/api/system/workspaces/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:N,serverHooks:P}=C;async function x(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/[id]/route";g=g.replace(/\/index$/,"")||"/";let R=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:y,parsedUrl:A,isDraftMode:E,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:S,serverActionsManifest:U}=R,D=(0,o.normalizeAppPath)(g),T=!!(I.dynamicRoutes[D]||I.routes[x]),b=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,A,!1):t.end("This page could not be found"),null);if(T&&!E){let e=!!I.routes[x],t=I.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!T||C.isDev||E||(j="/index"===(j=x)?"/":j);let q=!0===C.isDev||!T,W=T&&!q;U&&S&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:S,serverActionsManifest:U});let M=e.method||"GET",H=(0,n.getTracer)(),B=H.getActiveScopeSpan(),$=!!(null==O?void 0:O.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,y,I,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:k,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>C.onRequestError(e,t,a,s,O)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),t}},u=await C.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&T||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:N})},"routeModule",0,C,"serverHooks",0,P,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,N],249361)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){h=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},249361,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),g=e.i(702414),_=e.i(402662),R=e.i(254226),k=e.i(583627),y=e.i(359211);async function A(e,{params:t}){let r=(0,_.checkOrigin)(e);if(r)return r;let a=await (0,R.requireUser)(e);if(!a.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:s}=await t,n=await (0,y.getWorkspace)(s);if(!n)return g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,k.isAdmin)(a.user.id,a.user.email);if(!(0,y.userCanAccess)(n,a.user.id,i))return g.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let o=await e.json();if(void 0!==o.allowedUserIds&&!i)return g.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});void 0!==o.name&&await (0,y.renameWorkspace)(s,o.name.trim()),void 0!==o.pinnedPaths&&await (0,y.setWorkspacePins)(s,o.pinnedPaths),void 0!==o.allowedUserIds&&await (0,y.setWorkspaceAccess)(s,o.allowedUserIds);let l=await (0,y.getWorkspace)(s);return g.NextResponse.json({ok:!0,workspace:l})}async function I(e,{params:t}){let r=(0,_.checkOrigin)(e);if(r)return r;let a=await (0,k.requireAdmin)(e);if(!a.ok)return g.NextResponse.json({error:a.code},{status:a.status});let{id:s}=await t;return await (0,y.getWorkspace)(s)?(await (0,y.removeWorkspace)(s),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404})}e.s(["DELETE",0,I,"PATCH",0,A,"runtime",0,"nodejs"],692671);var E=e.i(692671);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/route",pathname:"/api/system/workspaces/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:N,serverHooks:P}=C;async function x(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/[id]/route";g=g.replace(/\/index$/,"")||"/";let _=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:y,parsedUrl:A,isDraftMode:I,prerenderManifest:E,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:S,serverActionsManifest:U}=_,D=(0,o.normalizeAppPath)(g),T=!!(E.dynamicRoutes[D]||E.routes[x]),b=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,A,!1):t.end("This page could not be found"),null);if(T&&!I){let e=!!E.routes[x],t=E.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!T||C.isDev||I||(j="/index"===(j=x)?"/":j);let q=!0===C.isDev||!T,W=T&&!q;U&&S&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:S,serverActionsManifest:U});let H=e.method||"GET",M=(0,n.getTracer)(),B=M.getActiveScopeSpan(),$=!!(null==O?void 0:O.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,y,E,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:k,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>C.onRequestError(e,t,a,s,O)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${H} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),t}},u=await C.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&T||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:N})},"routeModule",0,C,"serverHooks",0,P,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,N],249361)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__05t~v6l._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),s=e.i(798003);async function n(){return(await (0,s.readConfig)()).workspaces??[]}async function a(e){return(await n()).find(t=>t.id===e)??null}async function i(e){let n=t.default.resolve(e.rootDir),a={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(n),rootDir:n,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,s.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],a]})),a}function o(e,t){return(0,s.updateConfig)(r=>{let s=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:s}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,s.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let f=!1;async function h(){if(f)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),n=await (0,s.readConfig)();if((n.workspaces??[]).length>0||!e(n)){f=!0;return}let a=null;await (0,s.updateConfig)(s=>{let n=s.workspaces??[],i=e(s);if(n.length>0||!i)return s;let o=t.default.resolve(i);return a={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:s.pinnedPaths},{...s,workspaces:[a]}}),a&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${a.name}" (${a.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,a,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let s=t.default.resolve(e,r);return s===e||s.startsWith(e+t.default.sep)?s:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),n=e.i(504445),a=e.i(359211);async function i(e){await (0,a.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,a.getWorkspace)(r)??null;let s=await (0,a.listWorkspaces)();if(0===s.length){let e;return(e=(0,n.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return s.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,s.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,a.userCanAccess)(l,t.user.id,n)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:n}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),n=e.headers.get("referer");if(!s&&!n)return null;let a=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)s.add(`${t}://${e}${n}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e,t){return r.default.join(e,".proof",t+".json")}async function n(e,r){let n=s(e,r);try{let e=await (0,t.readFile)(n,"utf-8"),r=JSON.parse(e);if(1!==r.schemaVersion)throw Error(`Sidecar schema version mismatch: expected 1, got ${r.schemaVersion}`);return r}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function a(e,n,a){let i=s(e,n);await (0,t.mkdir)(r.default.dirname(i),{recursive:!0});let o=i+".tmp";await (0,t.writeFile)(o,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(o,i)}async function i(e,n,a){let i=s(e,n),o=s(e,a);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(i,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let n=s(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["deleteSidecar",0,o,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:1,path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],suggestions:[],archivedSuggestions:[],events:[],nextEventId:1,lastAck:{},fingerprint:"",blockProvenance:{}}},"moveSidecar",0,i,"readSidecar",0,n,"writeSidecar",0,a])},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let s of t){let t={...s,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),s=r.length>0?Math.min(...r):1/0,n=e.events.length-t,a=e.events.filter((e,t)=>t>=n||e.id>s);e.events=a}])},794776,e=>{"use strict";let t,r=Number.isFinite(t=parseInt(process.env.AGENT_RATE_LIMIT??"",10))&&t>0?t:60;e.s(["OPS_PER_MINUTE",0,r,"SIDECAR_EVENT_TRIM_SIZE",0,1e3,"SIDECAR_TRIM_EVERY_N_MUTATIONS",0,100])},265484,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),n=e.i(475331),a=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),f=e.i(682278),h=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),R=e.i(666680),g=e.i(912714),_=e.i(750227),k=e.i(702414),E=e.i(402662),y=e.i(660038),I=e.i(359211),A=e.i(307764),S=e.i(832852),N=e.i(973909),O=e.i(794776);let x=new Set(["txt","md","markdown","json","yaml","yml","toml","csv","tsv","xml","html","css","js","ts","tsx","jsx","sh","bash","zsh","rb","py","go","rs","java","c","cpp","h","php","swift","kt","lua","sql","scss","mmd","mermaid","ini","env","log","conf"]),D=new Set(["md","markdown"]);function C(e){let t=e.split(".").pop()?.toLowerCase()??"";return x.has(t)}function T(e){let t=e.split(".").pop()?.toLowerCase()??"";return D.has(t)}async function P(e){let t=await (0,y.resolveWorkspaceForUser)(e);if(!t.ok)return k.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:s}=new URL(e.url),n=s.get("path")??"",a=(0,I.safeWorkspacePath)(r,n);if(!a)return k.NextResponse.json({error:"Invalid path"},{status:400});if(!C(_.default.basename(a)))return k.NextResponse.json({error:"Not a text file"},{status:400});try{let e=await (0,g.readFile)(a);if(e.length>1048576)return k.NextResponse.json({error:"File too large (max 1MB)"},{status:413});let t=e.toString("utf-8"),s={};if(T(_.default.basename(a))){let e=await (0,N.readSidecar)(r,n);e&&(s["X-Wiki-Revision"]=String(e.revision),s["X-Wiki-Fingerprint"]=e.fingerprint)}return k.NextResponse.json({content:t},{headers:s})}catch{return k.NextResponse.json({error:"File not found"},{status:404})}}async function U(e){let t=(0,E.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e);if(!r.ok)return k.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,n=await e.json(),a=n.path,i=n.content;if(!a||"string"!=typeof a)return k.NextResponse.json({error:"Invalid path"},{status:400});if("string"!=typeof i)return k.NextResponse.json({error:"Missing content"},{status:400});let o=(0,I.safeWorkspacePath)(s,a);if(!o)return k.NextResponse.json({error:"Invalid path"},{status:400});if(!C(_.default.basename(o)))return k.NextResponse.json({error:"Not a text file"},{status:400});if(!T(_.default.basename(o)))try{return await (0,g.mkdir)(_.default.dirname(o),{recursive:!0}),await (0,g.writeFile)(o,i,"utf-8"),k.NextResponse.json({ok:!0})}catch{return k.NextResponse.json({error:"Failed to save"},{status:500})}return(0,S.withFileMutex)(`${s}\u0000${a}`,async()=>{let e=await (0,N.readSidecar)(s,a)??(0,N.emptySidecar)(a);if(void 0===n.baseRevision||"number"!=typeof n.baseRevision)return k.NextResponse.json({error:"BASE_REVISION_REQUIRED",message:"baseRevision is required when saving markdown files."},{status:400});if(n.baseRevision!==e.revision)return k.NextResponse.json({error:"STALE_REVISION",currentRevision:e.revision,message:"File was modified since your last read. Reload and retry."},{status:409});try{await (0,g.mkdir)(_.default.dirname(o),{recursive:!0}),await (0,g.writeFile)(o,i,"utf-8")}catch{return k.NextResponse.json({error:"Failed to save"},{status:500})}let t=e.revision+1;return e.revision=t,e.fingerprint="sha256:"+(0,R.createHash)("sha256").update(i,"utf8").digest("hex"),e.updatedAt=new Date().toISOString(),(0,A.emitEvents)(e,[{type:"file.edited",at:new Date().toISOString(),by:`user:${r.userId}`,revision:t}]),(0,A.trimEvents)(e,O.SIDECAR_EVENT_TRIM_SIZE),await (0,N.writeSidecar)(s,a,e),k.NextResponse.json({ok:!0,revision:t})})}e.s(["GET",0,P,"PUT",0,U],400832);var b=e.i(400832);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/content/route",pathname:"/api/wiki/content",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/content/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:q,workUnitAsyncStorage:W,serverHooks:M}=j;async function F(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/wiki/content/route";R=R.replace(/\/index$/,"")||"/";let g=await j.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:E,parsedUrl:y,isDraftMode:I,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:x,clientReferenceManifest:D,serverActionsManifest:C}=g,T=(0,o.normalizeAppPath)(R),P=!!(A.dynamicRoutes[T]||A.routes[x]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,y,!1):t.end("This page could not be found"),null);if(P&&!I){let e=!!A.routes[x],t=A.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new w.NoFallbackError}}let b=null;!P||j.isDev||I||(b="/index"===(b=x)?"/":b);let q=!0===j.isDev||!P,W=P&&!q;C&&D&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:D,serverActionsManifest:C});let M=e.method||"GET",F=(0,a.getTracer)(),B=F.getActiveScopeSpan(),H=!!(null==S?void 0:S.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,A,$);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let K={params:k,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>j.onRequestError(e,t,s,n,S)},sharedContext:{buildId:_}},V=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>j.handle(G,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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 s=r.get("next.route");if(s){let t=`${M} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${M} ${R}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&N&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(V,z,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,s=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,S),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!P)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&P||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&B?await o(B):(n=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${R}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof w.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,S),P)throw t;return await (0,p.sendResponse)(V,z,new Response(null,{status:500})),null}}e.s(["handler",0,F,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:W})},"routeModule",0,j,"serverHooks",0,M,"workAsyncStorage",0,q,"workUnitAsyncStorage",0,W],265484)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),s=e.i(798003);async function a(){return(await (0,s.readConfig)()).workspaces??[]}async function n(e){return(await a()).find(t=>t.id===e)??null}async function i(e){let a=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(a),rootDir:a,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,s.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,s.updateConfig)(r=>{let s=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:s}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,s.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let f=!1;async function h(){if(f)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),a=await (0,s.readConfig)();if((a.workspaces??[]).length>0||!e(a)){f=!0;return}let n=null;await (0,s.updateConfig)(s=>{let a=s.workspaces??[],i=e(s);if(a.length>0||!i)return s;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:s.pinnedPaths},{...s,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,a,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let s=t.default.resolve(e,r);return s===e||s.startsWith(e+t.default.sep)?s:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),a=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let s=await (0,n.listWorkspaces)();if(0===s.length){let e;return(e=(0,a.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return s.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){if("1"===process.env.WIKI_NO_AUTH){let t=await i(e);return t?{ok:!0,ws:t,rootDir:t.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let a=await (0,s.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,a)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:a}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),a=e.headers.get("referer");if(!s&&!a)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)s.add(`${t}://${e}${a}`);return s}(e.headers.get("host")??"");if(s)return n.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e,t){return r.default.join(e,".proof",t+".json")}async function a(e,r){let a=s(e,r);try{let e=await (0,t.readFile)(a,"utf-8"),r=JSON.parse(e);if(1!==r.schemaVersion)throw Error(`Sidecar schema version mismatch: expected 1, got ${r.schemaVersion}`);return r}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function n(e,a,n){let i=s(e,a);await (0,t.mkdir)(r.default.dirname(i),{recursive:!0});let o=i+".tmp";await (0,t.writeFile)(o,JSON.stringify(n,null,2),"utf-8"),await (0,t.rename)(o,i)}async function i(e,a,n){let i=s(e,a),o=s(e,n);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(i,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let a=s(e,r);try{await (0,t.unlink)(a)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["deleteSidecar",0,o,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:1,path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],suggestions:[],archivedSuggestions:[],events:[],nextEventId:1,lastAck:{},fingerprint:"",blockProvenance:{}}},"moveSidecar",0,i,"readSidecar",0,a,"writeSidecar",0,n])},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let s of t){let t={...s,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),s=r.length>0?Math.min(...r):1/0,a=e.events.length-t,n=e.events.filter((e,t)=>t>=a||e.id>s);e.events=n}])},794776,e=>{"use strict";let t,r=Number.isFinite(t=parseInt(process.env.AGENT_RATE_LIMIT??"",10))&&t>0?t:60;e.s(["OPS_PER_MINUTE",0,r,"SIDECAR_EVENT_TRIM_SIZE",0,1e3,"SIDECAR_TRIM_EVERY_N_MUTATIONS",0,100])},265484,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),f=e.i(682278),h=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),R=e.i(666680),g=e.i(912714),_=e.i(750227),k=e.i(702414),E=e.i(402662),I=e.i(660038),y=e.i(359211),A=e.i(307764),S=e.i(832852),N=e.i(973909),O=e.i(794776);let x=new Set(["txt","md","markdown","json","yaml","yml","toml","csv","tsv","xml","html","css","js","ts","tsx","jsx","sh","bash","zsh","rb","py","go","rs","java","c","cpp","h","php","swift","kt","lua","sql","scss","mmd","mermaid","ini","env","log","conf"]),D=new Set(["md","markdown"]);function C(e){let t=e.split(".").pop()?.toLowerCase()??"";return x.has(t)}function T(e){let t=e.split(".").pop()?.toLowerCase()??"";return D.has(t)}async function U(e){let t=await (0,I.resolveWorkspaceForUser)(e);if(!t.ok)return k.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:s}=new URL(e.url),a=s.get("path")??"",n=(0,y.safeWorkspacePath)(r,a);if(!n)return k.NextResponse.json({error:"Invalid path"},{status:400});if(!C(_.default.basename(n)))return k.NextResponse.json({error:"Not a text file"},{status:400});try{let e=await (0,g.readFile)(n);if(e.length>1048576)return k.NextResponse.json({error:"File too large (max 1MB)"},{status:413});let t=e.toString("utf-8"),s={};if(T(_.default.basename(n))){let e=await (0,N.readSidecar)(r,a);e&&(s["X-Wiki-Revision"]=String(e.revision),s["X-Wiki-Fingerprint"]=e.fingerprint)}return k.NextResponse.json({content:t},{headers:s})}catch{return k.NextResponse.json({error:"File not found"},{status:404})}}async function P(e){let t=(0,E.checkOrigin)(e);if(t)return t;let r=await (0,I.resolveWorkspaceForUser)(e);if(!r.ok)return k.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,a=await e.json(),n=a.path,i=a.content;if(!n||"string"!=typeof n)return k.NextResponse.json({error:"Invalid path"},{status:400});if("string"!=typeof i)return k.NextResponse.json({error:"Missing content"},{status:400});let o=(0,y.safeWorkspacePath)(s,n);if(!o)return k.NextResponse.json({error:"Invalid path"},{status:400});if(!C(_.default.basename(o)))return k.NextResponse.json({error:"Not a text file"},{status:400});if(!T(_.default.basename(o)))try{return await (0,g.mkdir)(_.default.dirname(o),{recursive:!0}),await (0,g.writeFile)(o,i,"utf-8"),k.NextResponse.json({ok:!0})}catch{return k.NextResponse.json({error:"Failed to save"},{status:500})}return(0,S.withFileMutex)(`${s}\u0000${n}`,async()=>{let e=await (0,N.readSidecar)(s,n)??(0,N.emptySidecar)(n);if(void 0===a.baseRevision||"number"!=typeof a.baseRevision)return k.NextResponse.json({error:"BASE_REVISION_REQUIRED",message:"baseRevision is required when saving markdown files."},{status:400});if(a.baseRevision!==e.revision)return k.NextResponse.json({error:"STALE_REVISION",currentRevision:e.revision,message:"File was modified since your last read. Reload and retry."},{status:409});try{await (0,g.mkdir)(_.default.dirname(o),{recursive:!0}),await (0,g.writeFile)(o,i,"utf-8")}catch{return k.NextResponse.json({error:"Failed to save"},{status:500})}let t=e.revision+1;return e.revision=t,e.fingerprint="sha256:"+(0,R.createHash)("sha256").update(i,"utf8").digest("hex"),e.updatedAt=new Date().toISOString(),(0,A.emitEvents)(e,[{type:"file.edited",at:new Date().toISOString(),by:`user:${r.userId}`,revision:t}]),(0,A.trimEvents)(e,O.SIDECAR_EVENT_TRIM_SIZE),await (0,N.writeSidecar)(s,n,e),k.NextResponse.json({ok:!0,revision:t})})}e.s(["GET",0,U,"PUT",0,P],400832);var b=e.i(400832);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/content/route",pathname:"/api/wiki/content",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/content/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:W,workUnitAsyncStorage:q,serverHooks:M}=j;async function F(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),j.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/wiki/content/route";R=R.replace(/\/index$/,"")||"/";let g=await j.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:E,parsedUrl:I,isDraftMode:y,prerenderManifest:A,routerServerContext:S,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:x,clientReferenceManifest:D,serverActionsManifest:C}=g,T=(0,o.normalizeAppPath)(R),U=!!(A.dynamicRoutes[T]||A.routes[x]),P=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,I,!1):t.end("This page could not be found"),null);if(U&&!y){let e=!!A.routes[x],t=A.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await P();throw new w.NoFallbackError}}let b=null;!U||j.isDev||y||(b="/index"===(b=x)?"/":b);let W=!0===j.isDev||!U,q=U&&!W;C&&D&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:D,serverActionsManifest:C});let M=e.method||"GET",F=(0,n.getTracer)(),H=F.getActiveScopeSpan(),B=!!(null==S?void 0:S.isWrappedByNextServer),$=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,A,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:W,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>j.onRequestError(e,t,s,a,S)},sharedContext:{buildId:_}},V=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>j.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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 s=r.get("next.route");if(s){let t=`${M} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${M} ${R}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&N&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(V,z,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:N})},!1,S),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};B&&H?await o(H):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof w.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:N})},!1,S),U)throw t;return await (0,p.sendResponse)(V,z,new Response(null,{status:500})),null}}e.s(["handler",0,F,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:W,workUnitAsyncStorage:q})},"routeModule",0,j,"serverHooks",0,M,"workAsyncStorage",0,W,"workUnitAsyncStorage",0,q],265484)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__09cqzem._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),s=e.i(798003);async function a(){return(await (0,s.readConfig)()).workspaces??[]}async function n(e){return(await a()).find(t=>t.id===e)??null}async function i(e){let a=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(a),rootDir:a,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,s.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,s.updateConfig)(r=>{let s=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:s}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,s.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let m=!1;async function w(){if(m)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),a=await (0,s.readConfig)();if((a.workspaces??[]).length>0||!e(a)){m=!0;return}let n=null;await (0,s.updateConfig)(s=>{let a=s.workspaces??[],i=e(s);if(a.length>0||!i)return s;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:s.pinnedPaths},{...s,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),m=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,a,"migrateConfigToWorkspaces",0,w,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let s=t.default.resolve(e,r);return s===e||s.startsWith(e+t.default.sep)?s:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),a=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let s=await (0,n.listWorkspaces)();if(0===s.length){let e;return(e=(0,a.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return s.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let a=await (0,s.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,a)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:a}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__068ni_k._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),s=e.i(798003);async function a(){return(await (0,s.readConfig)()).workspaces??[]}async function n(e){return(await a()).find(t=>t.id===e)??null}async function i(e){let a=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(a),rootDir:a,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,s.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,s.updateConfig)(r=>{let s=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:s}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,s.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function c(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function d(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let _=!1;async function m(){if(_)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),a=await (0,s.readConfig)();if((a.workspaces??[]).length>0||!e(a)){_=!0;return}let n=null;await (0,s.updateConfig)(s=>{let a=s.workspaces??[],i=e(s);if(a.length>0||!i)return s;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:s.pinnedPaths},{...s,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),_=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,a,"migrateConfigToWorkspaces",0,m,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let s=t.default.resolve(e,r);return s===e||s.startsWith(e+t.default.sep)?s:null},"setWorkspaceAccess",0,c,"setWorkspacePins",0,d,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),a=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let s=await (0,n.listWorkspaces)();if(0===s.length){let e;return(e=(0,a.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return s.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){if("1"===process.env.WIKI_NO_AUTH){let t=await i(e);return t?{ok:!0,ws:t,rootDir:t.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let a=await (0,s.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,a)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:a}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__068ni_k._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0_0_601._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function s(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,s,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function n(){return(await (0,a.readConfig)()).workspaces??[]}async function s(e){return(await n()).find(t=>t.id===e)??null}async function i(e){let n=t.default.resolve(e.rootDir),s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(n),rootDir:n,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),n=await (0,a.readConfig)();if((n.workspaces??[]).length>0||!e(n)){h=!0;return}let s=null;await (0,a.updateConfig)(a=>{let n=a.workspaces??[],i=e(a);if(n.length>0||!i)return a;let o=t.default.resolve(i);return s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},232906,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),n=e.i(475331),s=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),g=e.i(702414),_=e.i(402662),R=e.i(254226),y=e.i(583627),k=e.i(359211);async function A(e,{params:t}){let r=(0,_.checkOrigin)(e);if(r)return r;let a=await (0,R.requireUser)(e);if(!a.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,s=await (0,k.getWorkspace)(n);if(!s)return g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,y.isAdmin)(a.user.id,a.user.email);return(0,k.userCanAccess)(s,a.user.id,i)?(await (0,k.touchWorkspace)(n),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}e.s(["POST",0,A,"runtime",0,"nodejs"],374200);var C=e.i(374200);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/open/route",pathname:"/api/system/workspaces/[id]/open",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/open/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:O,serverHooks:N}=E;async function S(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/[id]/open/route";g=g.replace(/\/index$/,"")||"/";let _=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:k,parsedUrl:A,isDraftMode:C,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,resolvedPathname:P,clientReferenceManifest:x,serverActionsManifest:U}=_,D=(0,o.normalizeAppPath)(g),T=!!(I.dynamicRoutes[D]||I.routes[P]),b=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,A,!1):t.end("This page could not be found"),null);if(T&&!C){let e=!!I.routes[P],t=I.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!T||E.isDev||C||(j="/index"===(j=P)?"/":j);let q=!0===E.isDev||!T,M=T&&!q;U&&x&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:x,serverActionsManifest:U});let W=e.method||"GET",H=(0,s.getTracer)(),B=H.getActiveScopeSpan(),$=!!(null==O?void 0:O.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,k,I,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,O)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>E.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${W} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${W} ${g}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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:v.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 E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,O),t}},u=await E.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!T)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&T||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${W} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,O),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:O})},"routeModule",0,E,"serverHooks",0,N,"workAsyncStorage",0,I,"workUnitAsyncStorage",0,O],232906)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function s(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,s,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function n(){return(await (0,a.readConfig)()).workspaces??[]}async function s(e){return(await n()).find(t=>t.id===e)??null}async function i(e){let n=t.default.resolve(e.rootDir),s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(n),rootDir:n,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),n=await (0,a.readConfig)();if((n.workspaces??[]).length>0||!e(n)){h=!0;return}let s=null;await (0,a.updateConfig)(a=>{let n=a.workspaces??[],i=e(a);if(n.length>0||!i)return a;let o=t.default.resolve(i);return s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},232906,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),n=e.i(475331),s=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),g=e.i(702414),_=e.i(402662),R=e.i(254226),y=e.i(583627),k=e.i(359211);async function A(e,{params:t}){let r=(0,_.checkOrigin)(e);if(r)return r;let a=await (0,R.requireUser)(e);if(!a.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,s=await (0,k.getWorkspace)(n);if(!s)return g.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,y.isAdmin)(a.user.id,a.user.email);return(0,k.userCanAccess)(s,a.user.id,i)?(await (0,k.touchWorkspace)(n),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}e.s(["POST",0,A,"runtime",0,"nodejs"],374200);var C=e.i(374200);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/open/route",pathname:"/api/system/workspaces/[id]/open",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/open/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:O,serverHooks:N}=I;async function S(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/[id]/open/route";g=g.replace(/\/index$/,"")||"/";let _=await I.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:k,parsedUrl:A,isDraftMode:C,prerenderManifest:E,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,resolvedPathname:P,clientReferenceManifest:x,serverActionsManifest:U}=_,T=(0,o.normalizeAppPath)(g),D=!!(E.dynamicRoutes[T]||E.routes[P]),b=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!C){let e=!!E.routes[P],t=E.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!D||I.isDev||C||(j="/index"===(j=P)?"/":j);let q=!0===I.isDev||!D,W=D&&!q;U&&x&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:x,serverActionsManifest:U});let H=e.method||"GET",M=(0,s.getTracer)(),B=M.getActiveScopeSpan(),$=!!(null==O?void 0:O.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,k,E,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:y,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>I.onRequestError(e,t,a,n,O)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>I.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${H} ${g}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(z,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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:v.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:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),t}},u=await I.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!D)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&D||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(n=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:N})},!1,O),D)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:O})},"routeModule",0,I,"serverHooks",0,N,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,O],232906)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0ae3dk6._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let f=!1;async function h(){if(f)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){f=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let a=await (0,n.listWorkspaces)();if(0===a.length){let e;return(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let s=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,s)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:s}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},275859,e=>{"use strict";var t=e.i(912714),r=e.i(750227);async function a(e,a){try{let s=r.default.join(e,a,"package.json");return(await (0,t.stat)(s)).isFile()}catch{return!1}}async function s(e,a){try{let s=r.default.join(e,a,"index.html");return(await (0,t.stat)(s)).isFile()}catch{return!1}}e.s(["isAppFolder",0,s,"isNodeApp",0,a])},424218,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),f=e.i(682278),h=e.i(157569),w=e.i(844146),m=e.i(193695);e.i(105888);var R=e.i(530564),g=e.i(912714),v=e.i(750227),_=e.i(702414),k=e.i(402662),y=e.i(660038),A=e.i(359211),E=e.i(275859);async function O(e){let t=await (0,y.resolveWorkspaceForUser)(e);if(!t.ok)return _.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:a}=new URL(e.url),s=a.get("dir")??"",n=(0,A.safeWorkspacePath)(r,s);if(!n)return _.NextResponse.json({error:"Invalid path"},{status:400});try{let e;try{e=await (0,g.readdir)(n)}catch{return _.NextResponse.json({entries:[]})}let t=await Promise.all(e.map(async e=>{let t=v.default.join(n,e),a=await (0,g.stat)(t);if(a.isDirectory()){let t=s?`${s}/${e}`:e;if(await (0,E.isNodeApp)(r,t))return{name:e,type:"node-app",modifiedAt:a.mtime.toISOString()};let n=await (0,E.isAppFolder)(r,t);return{name:e,type:n?"app":"dir",modifiedAt:a.mtime.toISOString()}}return{name:e,type:"file",size:a.size,modifiedAt:a.mtime.toISOString()}}));return t.sort((e,t)=>{let r="dir"===e.type||"app"===e.type||"node-app"===e.type,a="dir"===t.type||"app"===t.type||"node-app"===t.type;return r!==a?r?-1:1:e.name.localeCompare(t.name)}),_.NextResponse.json({entries:t})}catch{return _.NextResponse.json({error:"Failed to list directory"},{status:500})}}async function I(e){let t=(0,k.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,s=(await e.json()).path;if(!s||"string"!=typeof s)return _.NextResponse.json({error:"Invalid path"},{status:400});let n=(0,A.safeWorkspacePath)(a,s);if(!n||n===a)return _.NextResponse.json({error:"Invalid path"},{status:400});try{return(await (0,g.stat)(n)).isDirectory()?await (0,g.rmdir)(n):await (0,g.unlink)(n),_.NextResponse.json({ok:!0})}catch(t){let e=t.code;if("ENOENT"===e)return _.NextResponse.json({error:"Not found"},{status:404});if("ENOTEMPTY"===e)return _.NextResponse.json({error:"Folder is not empty"},{status:409});return _.NextResponse.json({error:"Delete failed"},{status:500})}}e.s(["DELETE",0,I,"GET",0,O],209429);var D=e.i(209429);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/route",pathname:"/api/wiki",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/route.ts",nextConfigOutput:"standalone",userland:D,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:S,serverHooks:x}=C;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/wiki/route";g=g.replace(/\/index$/,"")||"/";let v=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:y,parsedUrl:A,isDraftMode:E,prerenderManifest:O,routerServerContext:I,isOnDemandRevalidate:D,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:x,serverActionsManifest:P}=v,U=(0,o.normalizeAppPath)(g),T=!!(O.dynamicRoutes[U]||O.routes[S]),j=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,A,!1):t.end("This page could not be found"),null);if(T&&!E){let e=!!O.routes[S],t=O.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await j();throw new m.NoFallbackError}}let b=null;!T||C.isDev||E||(b="/index"===(b=S)?"/":b);let W=!0===C.isDev||!T,q=T&&!W;P&&x&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:x,serverActionsManifest:P});let F=e.method||"GET",M=(0,n.getTracer)(),H=M.getActiveScopeSpan(),B=!!(null==I?void 0:I.isWrappedByNextServer),$=!!(0,s.getRequestMeta)(e,"minimalMode"),K=(0,s.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,y,O,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:W,incrementalCache:K,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>C.onRequestError(e,t,a,s,I)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(Q,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${F} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&D&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,I),t}},u=await C.handleResponse({req:e,nextConfig:y,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&T||d.delete(w.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};B&&H?await o(H):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof m.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,I),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:S})},"routeModule",0,C,"serverHooks",0,x,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,S],424218)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0cqu-wm._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let f=!1;async function h(){if(f)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){f=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let a=await (0,n.listWorkspaces)();if(0===a.length){let e;return(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){if("1"===process.env.WIKI_NO_AUTH){let t=await i(e);return t?{ok:!0,ws:t,rootDir:t.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let s=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,s)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:s}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},275859,e=>{"use strict";var t=e.i(912714),r=e.i(750227);async function a(e,a){try{let s=r.default.join(e,a,"package.json");return(await (0,t.stat)(s)).isFile()}catch{return!1}}async function s(e,a){try{let s=r.default.join(e,a,"index.html");return(await (0,t.stat)(s)).isFile()}catch{return!1}}e.s(["isAppFolder",0,s,"isNodeApp",0,a])},424218,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),f=e.i(682278),h=e.i(157569),w=e.i(844146),m=e.i(193695);e.i(105888);var R=e.i(530564),g=e.i(912714),v=e.i(750227),_=e.i(702414),k=e.i(402662),y=e.i(660038),A=e.i(359211),E=e.i(275859);async function I(e){let t=await (0,y.resolveWorkspaceForUser)(e);if(!t.ok)return _.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:a}=new URL(e.url),s=a.get("dir")??"",n=(0,A.safeWorkspacePath)(r,s);if(!n)return _.NextResponse.json({error:"Invalid path"},{status:400});try{let e;try{e=await (0,g.readdir)(n)}catch{return _.NextResponse.json({entries:[]})}let t=await Promise.all(e.map(async e=>{let t=v.default.join(n,e),a=await (0,g.stat)(t);if(a.isDirectory()){let t=s?`${s}/${e}`:e;if(await (0,E.isNodeApp)(r,t))return{name:e,type:"node-app",modifiedAt:a.mtime.toISOString()};let n=await (0,E.isAppFolder)(r,t);return{name:e,type:n?"app":"dir",modifiedAt:a.mtime.toISOString()}}return{name:e,type:"file",size:a.size,modifiedAt:a.mtime.toISOString()}}));return t.sort((e,t)=>{let r="dir"===e.type||"app"===e.type||"node-app"===e.type,a="dir"===t.type||"app"===t.type||"node-app"===t.type;return r!==a?r?-1:1:e.name.localeCompare(t.name)}),_.NextResponse.json({entries:t})}catch{return _.NextResponse.json({error:"Failed to list directory"},{status:500})}}async function O(e){let t=(0,k.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,s=(await e.json()).path;if(!s||"string"!=typeof s)return _.NextResponse.json({error:"Invalid path"},{status:400});let n=(0,A.safeWorkspacePath)(a,s);if(!n||n===a)return _.NextResponse.json({error:"Invalid path"},{status:400});try{return(await (0,g.stat)(n)).isDirectory()?await (0,g.rmdir)(n):await (0,g.unlink)(n),_.NextResponse.json({ok:!0})}catch(t){let e=t.code;if("ENOENT"===e)return _.NextResponse.json({error:"Not found"},{status:404});if("ENOTEMPTY"===e)return _.NextResponse.json({error:"Folder is not empty"},{status:409});return _.NextResponse.json({error:"Delete failed"},{status:500})}}e.s(["DELETE",0,O,"GET",0,I],209429);var D=e.i(209429);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/route",pathname:"/api/wiki",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/route.ts",nextConfigOutput:"standalone",userland:D,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:S,serverHooks:P}=C;async function x(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/wiki/route";g=g.replace(/\/index$/,"")||"/";let v=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:y,parsedUrl:A,isDraftMode:E,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:D,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:x}=v,U=(0,o.normalizeAppPath)(g),T=!!(I.dynamicRoutes[U]||I.routes[S]),j=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,A,!1):t.end("This page could not be found"),null);if(T&&!E){let e=!!I.routes[S],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await j();throw new m.NoFallbackError}}let b=null;!T||C.isDev||E||(b="/index"===(b=S)?"/":b);let W=!0===C.isDev||!T,q=T&&!W;x&&P&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:P,serverActionsManifest:x});let F=e.method||"GET",H=(0,n.getTracer)(),M=H.getActiveScopeSpan(),B=!!(null==O?void 0:O.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),$=(0,s.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,y,I,K);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let L={params:k,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:W,incrementalCache:$,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>C.onRequestError(e,t,a,s,O)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>C.handle(Q,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${F} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&D&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,O),t}},u=await C.handleResponse({req:e,nextConfig:y,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&T||d.delete(w.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};B&&M?await o(M):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof m.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,O),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:S})},"routeModule",0,C,"serverHooks",0,P,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,S],424218)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0cqu-wm._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0d7x3e1._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function s(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,s,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function n(){return(await (0,a.readConfig)()).workspaces??[]}async function s(e){return(await n()).find(t=>t.id===e)??null}async function i(e){let n=t.default.resolve(e.rootDir),s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(n),rootDir:n,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function w(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),n=await (0,a.readConfig)();if((n.workspaces??[]).length>0||!e(n)){h=!0;return}let s=null;await (0,a.updateConfig)(a=>{let n=a.workspaces??[],i=e(a);if(n.length>0||!i)return a;let o=t.default.resolve(i);return s={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,w,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),n=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,s.getWorkspace)(r)??null;let a=await (0,s.listWorkspaces)();if(0===a.length){let e;return(e=(0,n.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,s.userCanAccess)(l,t.user.id,n)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:n}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},682643,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),n=e.i(475331),s=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),w=e.i(157569),f=e.i(844146),m=e.i(193695);e.i(105888);var g=e.i(530564),v=e.i(912714),_=e.i(750227),R=e.i(702414),k=e.i(660038);async function A(e){try{return(await (0,v.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&e.name.toLowerCase().endsWith(".md")).map(e=>e.name.slice(0,-3)).sort((e,t)=>e.localeCompare(t))}catch(e){if("ENOENT"===e.code)return[];throw e}}async function y(e){let t=await (0,k.resolveWorkspaceForUser)(e);if(!t.ok)return R.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t;try{let[e,t,a,n]=await Promise.all([A(_.default.join(r,"entities")),A(_.default.join(r,"concepts")),A(_.default.join(r,"comparisons")),A(r)]);return R.NextResponse.json({entities:e,concepts:t,comparisons:a,root:n},{headers:{"Cache-Control":"private, max-age=10"}})}catch{return R.NextResponse.json({error:"Failed to list slugs"},{status:500})}}e.s(["GET",0,y],302066);var C=e.i(302066);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/slugs/route",pathname:"/api/wiki/slugs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/slugs/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:I,serverHooks:D}=E;async function P(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/slugs/route";v=v.replace(/\/index$/,"")||"/";let _=await E.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:A,parsedUrl:y,isDraftMode:C,prerenderManifest:O,routerServerContext:I,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:U,serverActionsManifest:T}=_,x=(0,o.normalizeAppPath)(v),N=!!(O.dynamicRoutes[x]||O.routes[S]),b=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,y,!1):t.end("This page could not be found"),null);if(N&&!C){let e=!!O.routes[S],t=O.dynamicRoutes[x];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let q=null;!N||E.isDev||C||(q="/index"===(q=S)?"/":q);let j=!0===E.isDev||!N,W=N&&!j;T&&U&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:U,serverActionsManifest:T});let M=e.method||"GET",H=(0,s.getTracer)(),F=H.getActiveScopeSpan(),K=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,O,B);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let $={params:k,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:j,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,I)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>E.handle(Q,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${v}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&D&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=$.renderOpts.fetchMetrics;let o=$.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=$.renderOpts.collectedTags;if(!N)return await (0,p.sendResponse)(z,G,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:g.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 E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:D})},!1,I),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!N)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&N||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,w.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&F?await o(F):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:D})},!1,I),N)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:I})},"routeModule",0,E,"serverHooks",0,D,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,I],682643)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function w(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){h=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,w,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let a=await (0,n.listWorkspaces)();if(0===a.length){let e;return(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){if("1"===process.env.WIKI_NO_AUTH){let t=await i(e);return t?{ok:!0,ws:t,rootDir:t.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let s=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,s)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:s}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},682643,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),w=e.i(157569),f=e.i(844146),m=e.i(193695);e.i(105888);var _=e.i(530564),v=e.i(912714),g=e.i(750227),R=e.i(702414),k=e.i(660038);async function A(e){try{return(await (0,v.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&e.name.toLowerCase().endsWith(".md")).map(e=>e.name.slice(0,-3)).sort((e,t)=>e.localeCompare(t))}catch(e){if("ENOENT"===e.code)return[];throw e}}async function y(e){let t=await (0,k.resolveWorkspaceForUser)(e);if(!t.ok)return R.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t;try{let[e,t,a,s]=await Promise.all([A(g.default.join(r,"entities")),A(g.default.join(r,"concepts")),A(g.default.join(r,"comparisons")),A(r)]);return R.NextResponse.json({entities:e,concepts:t,comparisons:a,root:s},{headers:{"Cache-Control":"private, max-age=10"}})}catch{return R.NextResponse.json({error:"Failed to list slugs"},{status:500})}}e.s(["GET",0,y],302066);var C=e.i(302066);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/slugs/route",pathname:"/api/wiki/slugs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/slugs/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:O,serverHooks:D}=E;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/slugs/route";v=v.replace(/\/index$/,"")||"/";let g=await E.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:R,params:k,nextConfig:A,parsedUrl:y,isDraftMode:C,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:U,clientReferenceManifest:S,serverActionsManifest:T}=g,N=(0,o.normalizeAppPath)(v),x=!!(I.dynamicRoutes[N]||I.routes[U]),b=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,y,!1):t.end("This page could not be found"),null);if(x&&!C){let e=!!I.routes[U],t=I.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let W=null;!x||E.isDev||C||(W="/index"===(W=U)?"/":W);let q=!0===E.isDev||!x,j=x&&!q;T&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:T});let M=e.method||"GET",H=(0,n.getTracer)(),K=H.getActiveScopeSpan(),F=!!(null==O?void 0:O.isWrappedByNextServer),B=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,I,B);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let $={params:k,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>E.onRequestError(e,t,a,s,O)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>E.handle(Q,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${M} ${v}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&D&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=$.renderOpts.fetchMetrics;let o=$.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=$.renderOpts.collectedTags;if(!x)return await (0,p.sendResponse)(z,G,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:D})},!1,O),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:W,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!x)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&x||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,w.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&K?await o(K):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:D})},!1,O),x)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:O})},"routeModule",0,E,"serverHooks",0,D,"workAsyncStorage",0,I,"workUnitAsyncStorage",0,O],682643)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0e7vs98._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){h=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let a=await (0,n.listWorkspaces)();if(0===a.length){let e;return(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let s=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,s)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:s}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},764246,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),w=e.i(844146),m=e.i(193695);e.i(105888);var v=e.i(530564),g=e.i(874533),R=e.i(750227),_=e.i(702414),k=e.i(402662),A=e.i(660038),y=e.i(359211);async function O(e){let t=(0,k.checkOrigin)(e);if(t)return t;let r=await (0,A.resolveWorkspaceForUser)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,s=(await e.json()).path;if(!s||"string"!=typeof s)return _.NextResponse.json({error:"Invalid path"},{status:400});let n=(0,y.safeWorkspacePath)(a,s);if(!n)return _.NextResponse.json({error:"Invalid path"},{status:400});process.platform;let i=`xdg-open "${R.default.dirname(n)}"`;return(0,g.exec)(i,()=>{}),_.NextResponse.json({ok:!0})}e.s(["POST",0,O],138865);var I=e.i(138865);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/reveal/route",pathname:"/api/system/reveal",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/reveal/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:S}=E;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/reveal/route";g=g.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:A,parsedUrl:y,isDraftMode:O,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:S,resolvedPathname:P,clientReferenceManifest:x,serverActionsManifest:N}=R,U=(0,o.normalizeAppPath)(g),T=!!(I.dynamicRoutes[U]||I.routes[P]),b=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,y,!1):t.end("This page could not be found"),null);if(T&&!O){let e=!!I.routes[P],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let q=null;!T||E.isDev||O||(q="/index"===(q=P)?"/":q);let W=!0===E.isDev||!T,j=T&&!W;N&&x&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:x,serverActionsManifest:N});let M=e.method||"GET",H=(0,n.getTracer)(),B=H.getActiveScopeSpan(),$=!!(null==C?void 0:C.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,I,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:k,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:W,incrementalCache:F,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>E.onRequestError(e,t,a,s,C)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>E.handle(Q,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&D&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:D})},!1,C),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&T||d.delete(w.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:D})},!1,C),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:D})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,D],764246)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),a=e.i(798003);async function s(){return(await (0,a.readConfig)()).workspaces??[]}async function n(e){return(await s()).find(t=>t.id===e)??null}async function i(e){let s=t.default.resolve(e.rootDir),n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(s),rootDir:s,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),createdBy:e.createdBy};return await (0,a.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],n]})),n}function o(e,t){return(0,a.updateConfig)(r=>{let a=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:a}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,a.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:r}=await e.A(754121);await r(t)}catch(e){console.error("[search] purge failed on workspace remove",e)}}async function d(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function c(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function p(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let h=!1;async function f(){if(h)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),s=await (0,a.readConfig)();if((s.workspaces??[]).length>0||!e(s)){h=!0;return}let n=null;await (0,a.updateConfig)(a=>{let s=a.workspaces??[],i=e(a);if(s.length>0||!i)return a;let o=t.default.resolve(i);return n={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:a.pinnedPaths},{...a,workspaces:[n]}}),n&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${n.name}" (${n.id})`),h=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,n,"listWorkspaces",0,s,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let a=t.default.resolve(e,r);return a===e||a.startsWith(e+t.default.sep)?a:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,r){return!!r||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,n.getWorkspace)(r)??null;let a=await (0,n.listWorkspaces)();if(0===a.length){let e;return(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}return a.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){if("1"===process.env.WIKI_NO_AUTH){let t=await i(e);return t?{ok:!0,ws:t,rootDir:t.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let t=await (0,r.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let s=await (0,a.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,l=await i(e);return l?(0,n.userCanAccess)(l,t.user.id,s)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:s}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:o?404:400,code:o?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e){let t=await i(e);if(!t){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return{ok:!0,ws:t,rootDir:t.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),s=e.headers.get("referer");if(!a&&!s)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let s of r)a.add(`${t}://${e}${s}`);return a}(e.headers.get("host")??"");if(a)return n.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(s){try{let{protocol:e,host:t}=new URL(s);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},764246,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),_=e.i(874533),g=e.i(750227),R=e.i(702414),k=e.i(402662),A=e.i(660038),I=e.i(359211);async function y(e){let t=(0,k.checkOrigin)(e);if(t)return t;let r=await (0,A.resolveWorkspaceForUser)(e);if(!r.ok)return R.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,s=(await e.json()).path;if(!s||"string"!=typeof s)return R.NextResponse.json({error:"Invalid path"},{status:400});let n=(0,I.safeWorkspacePath)(a,s);if(!n)return R.NextResponse.json({error:"Invalid path"},{status:400});process.platform;let i=`xdg-open "${g.default.dirname(n)}"`;return(0,_.exec)(i,()=>{}),R.NextResponse.json({ok:!0})}e.s(["POST",0,y],138865);var O=e.i(138865);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/reveal/route",pathname:"/api/system/reveal",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/reveal/route.ts",nextConfigOutput:"standalone",userland:O,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:C,serverHooks:S}=E;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/reveal/route";_=_.replace(/\/index$/,"")||"/";let g=await E.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:A,parsedUrl:I,isDraftMode:y,prerenderManifest:O,routerServerContext:D,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,resolvedPathname:P,clientReferenceManifest:U,serverActionsManifest:N}=g,x=(0,o.normalizeAppPath)(_),T=!!(O.dynamicRoutes[x]||O.routes[P]),b=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,I,!1):t.end("This page could not be found"),null);if(T&&!y){let e=!!O.routes[P],t=O.dynamicRoutes[x];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new w.NoFallbackError}}let W=null;!T||E.isDev||y||(W="/index"===(W=P)?"/":W);let q=!0===E.isDev||!T,j=T&&!q;N&&U&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:U,serverActionsManifest:N});let H=e.method||"GET",M=(0,n.getTracer)(),B=M.getActiveScopeSpan(),K=!!(null==D?void 0:D.isWrappedByNextServer),$=!!(0,s.getRequestMeta)(e,"minimalMode"),F=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,O,$);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:k,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>E.onRequestError(e,t,a,s,D)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Q=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>E.handle(Q,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.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=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${H} ${_}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&C&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!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:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:C})},!1,D),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:W,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&T||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:C})},!1,D),T)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,C],764246)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0fxzg4v._.js.map