wiki-viewer 1.8.4 → 1.9.0
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00lep-u._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00qu86p._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__036mhjp._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05t~v6l._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09cqzem._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0_601._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ae3dk6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d7x3e1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e7vs98._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fxzg4v._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gda_iu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0hu~q20._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-8clq._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0otb8ra._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p0-p__._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0piofm3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rrf-jr._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s6_lzw._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sh13v5._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ta~flu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0v4im4p._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vatqe-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vdb2nr._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__123._fe._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1377.79._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1378-ox._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13hp4tw._.js +2 -2
- package/.next/standalone/.next/server/edge/chunks/0p91_next_dist_0nh.6nc._.js +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/README.md +4 -3
- package/.next/standalone/bin/wiki-viewer.js +6 -3
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@12.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -0
- package/.next/standalone/src/lib/auth/admin.ts +8 -0
- package/.next/standalone/src/lib/workspace-context.ts +13 -0
- package/.next/standalone/src/middleware.ts +5 -0
- package/README.md +4 -3
- package/bin/wiki-viewer.js +6 -3
- package/package.json +16 -10
- /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → YQHDns_jLqFd_bbnLafs0}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → YQHDns_jLqFd_bbnLafs0}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{o1H_4UveBVPqClSUldzEv → YQHDns_jLqFd_bbnLafs0}/_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 n(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=n();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function s(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=n().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let n=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==n.length||r?{...t,adminUserIds:n}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function u(e){if(n().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 c(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,s,"ensureBootstrapAdmin",0,u,"isAdmin",0,a,"listAdmins",0,i,"removeAdmin",0,o,"requireAdmin",0,c])},359211,e=>{"use strict";var t=e.i(750227),r=e.i(666680),n=e.i(798003);async function a(){return(await (0,n.readConfig)()).workspaces??[]}async function i(e){return(await a()).find(t=>t.id===e)??null}async function s(e){let a=t.default.resolve(e.rootDir),i={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,n.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],i]})),i}function o(e,t){return(0,n.updateConfig)(r=>{let n=(r.workspaces??[]).map(r=>r.id===e?t(r):r);return{...r,workspaces:n}}).then(()=>void 0)}async function u(e,t){await o(e,e=>({...e,name:t}))}async function c(t){await (0,n.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 l(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function f(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let w=!1;async function g(){if(w)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),a=await (0,n.readConfig)();if((a.workspaces??[]).length>0||!e(a)){w=!0;return}let i=null;await (0,n.updateConfig)(n=>{let a=n.workspaces??[],s=e(n);if(a.length>0||!s)return n;let o=t.default.resolve(s);return i={id:"ws_"+(0,r.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:n.pinnedPaths},{...n,workspaces:[i]}}),i&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${i.name}" (${i.id})`),w=!0}e.s(["createWorkspace",0,s,"getWorkspace",0,i,"listWorkspaces",0,a,"migrateConfigToWorkspaces",0,g,"removeWorkspace",0,c,"renameWorkspace",0,u,"safeWorkspacePath",0,function(e,r){if(!e)return null;if(!r||"."===r)return e;let n=t.default.resolve(e,r);return n===e||n.startsWith(e+t.default.sep)?n:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,l,"touchWorkspace",0,f,"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),n=e.i(583627),a=e.i(504445),i=e.i(359211);async function s(e){await (0,i.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,i.getWorkspace)(r)??null;let n=await (0,i.listWorkspaces)();if(0===n.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 n.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,n=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return n!==r?n-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,n.isAdmin)(t.user.id,t.user.email),o=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,u=await s(e);return u?(0,i.userCanAccess)(u,t.user.id,a)?{ok:!0,ws:u,rootDir:u.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 u(e){let t=await s(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,u,"resolveWorkspaceForUser",0,o])},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"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),n=e.i(660526),a=e.i(750227),i=e.i(832852);let s="__registry__",o=new Map;function u(){let e=process.env.HOME??n.default.homedir();return a.default.join(e,".wiki-viewer")}function c(){return a.default.join(u(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function l(){try{let e=await (0,r.readFile)(c(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function f(e){await (0,r.mkdir)(u(),{recursive:!0});let t=c()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,c())}async function w(){let e=await l();if(e)return e;let t={version:1,agents:[]};return await f(t),t}async function g(e){let r=await l();if(!r)return null;let n=d(e);for(let e of r.agents)if(function(e,r){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),a=Buffer.from(r.padEnd(64,"0"),"utf8");return n.length===a.length&&(0,t.timingSafeEqual)(n,a)&&e.length===r.length}(e.tokenHash,n))return e;return null}async function p(e){await (0,i.withFileMutex)(s,async()=>{let t=await w(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await f(t)})}async function m(e){return(0,i.withFileMutex)(s,async()=>{let t=await l();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await f(t),!0)})}async function h(e){Date.now()-(o.get(e)??0)<3e4||await (0,i.withFileMutex)(s,async()=>{let t=await l();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await f(t))})}e.s(["addAgent",0,p,"hashToken",0,d,"lookupAgentByToken",0,g,"readRegistry",0,l,"removeAgent",0,m,"updateLastSeen",0,h])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var n=e.i(254226);async function a(e){let r=await (0,n.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let a=e.headers.get("authorization")??"",i=a.startsWith("Bearer ")?a.slice(7).trim():"";if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let s=await (0,t.lookupAgentByToken)(i);if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==s.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(s.id),{ok:!0,agent:s}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,a,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function n(e,t){return r.default.join(e,".proof",t+".json")}async function a(e,r){let a=n(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 i(e,a,i){let s=n(e,a);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let o=s+".tmp";await (0,t.writeFile)(o,JSON.stringify(i,null,2),"utf-8"),await (0,t.rename)(o,s)}async function s(e,a,i){let s=n(e,a),o=n(e,i);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(s,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let a=n(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,s,"readSidecar",0,a,"writeSidecar",0,i])}];
|
|
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 i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function s(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 u(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 c(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,s,"ensureBootstrapAdmin",0,u,"isAdmin",0,n,"listAdmins",0,i,"removeAdmin",0,o,"requireAdmin",0,c])},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 i(e){return(await n()).find(t=>t.id===e)??null}async function s(e){let n=t.default.resolve(e.rootDir),i={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??[],i]})),i}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 u(e,t){await o(e,e=>({...e,name:t}))}async function c(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 l(e,t){await o(e,e=>({...e,allowedUserIds:t}))}async function d(e,t){await o(e,e=>({...e,pinnedPaths:t}))}async function f(e){await o(e,e=>({...e,lastOpenedAt:new Date().toISOString()}))}let w=!1;async function g(){if(w)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)){w=!0;return}let i=null;await (0,a.updateConfig)(a=>{let n=a.workspaces??[],s=e(a);if(n.length>0||!s)return a;let o=t.default.resolve(s);return i={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:[i]}}),i&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${i.name}" (${i.id})`),w=!0}e.s(["createWorkspace",0,s,"getWorkspace",0,i,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,g,"removeWorkspace",0,c,"renameWorkspace",0,u,"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,l,"setWorkspacePins",0,d,"touchWorkspace",0,f,"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),i=e.i(359211);async function s(e){await (0,i.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)return await (0,i.getWorkspace)(r)??null;let a=await (0,i.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){if("1"===process.env.WIKI_NO_AUTH){let t=await s(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 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,u=await s(e);return u?(0,i.userCanAccess)(u,t.user.id,n)?{ok:!0,ws:u,rootDir:u.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 u(e){let t=await s(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,u,"resolveWorkspaceForUser",0,o])},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"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(660526),n=e.i(750227),i=e.i(832852);let s="__registry__",o=new Map;function u(){let e=process.env.HOME??a.default.homedir();return n.default.join(e,".wiki-viewer")}function c(){return n.default.join(u(),"agents.json")}function l(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function d(){try{let e=await (0,r.readFile)(c(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function f(e){await (0,r.mkdir)(u(),{recursive:!0});let t=c()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,c())}async function w(){let e=await d();if(e)return e;let t={version:1,agents:[]};return await f(t),t}async function g(e){let r=await d();if(!r)return null;let a=l(e);for(let e of r.agents)if(function(e,r){let a=Buffer.from(e.padEnd(64,"0"),"utf8"),n=Buffer.from(r.padEnd(64,"0"),"utf8");return a.length===n.length&&(0,t.timingSafeEqual)(a,n)&&e.length===r.length}(e.tokenHash,a))return e;return null}async function p(e){await (0,i.withFileMutex)(s,async()=>{let t=await w(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await f(t)})}async function m(e){return(0,i.withFileMutex)(s,async()=>{let t=await d();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await f(t),!0)})}async function k(e){Date.now()-(o.get(e)??0)<3e4||await (0,i.withFileMutex)(s,async()=>{let t=await d();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await f(t))})}e.s(["addAgent",0,p,"hashToken",0,l,"lookupAgentByToken",0,g,"readRegistry",0,d,"removeAgent",0,m,"updateLastSeen",0,k])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var a=e.i(254226);async function n(e){let r=await (0,a.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let n=e.headers.get("authorization")??"",i=n.startsWith("Bearer ")?n.slice(7).trim():"";if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let s=await (0,t.lookupAgentByToken)(i);if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==s.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(s.id),{ok:!0,agent:s}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,n,"enforceScope",0,function(e,t){let{scope:a}=e;return void 0!==a.workspaceId&&void 0!==t.workspaceId&&a.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${a.workspaceId}")`}:a.ops.includes(t.op)?t.filePath&&!a.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function a(e,t){return r.default.join(e,".proof",t+".json")}async function n(e,r){let n=a(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 i(e,n,i){let s=a(e,n);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let o=s+".tmp";await (0,t.writeFile)(o,JSON.stringify(i,null,2),"utf-8"),await (0,t.rename)(o,s)}async function s(e,n,i){let s=a(e,n),o=a(e,i);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(s,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let n=a(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,s,"readSidecar",0,n,"writeSidecar",0,i])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0gda_iu._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[583627,e=>{"use strict";var t=e.i(798003),n=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function r(e,n){if(n){let e=a();if(e.length>0&&e.includes(n.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 n=t.adminUserIds??[];return n.includes(e)?t:{...t,adminUserIds:[...n,e]}})}async function o(e){let n=a().length>0,r=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||n?{...t,adminUserIds:a}:(r=!0,t)}),r)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 n=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(n=!0,{...t,adminUserIds:[e]})),n&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,n.requireUser)(e);return t.ok?await r(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,r,"listAdmins",0,s,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),n=e.i(666680),a=e.i(798003);async function r(){return(await (0,a.readConfig)()).workspaces??[]}async function s(e){return(await r()).find(t=>t.id===e)??null}async function i(e){let r=t.default.resolve(e.rootDir),s={id:"ws_"+(0,n.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(r),rootDir:r,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)(n=>{let a=(n.workspaces??[]).map(n=>n.id===e?t(n):n);return{...n,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:n}=await e.A(754121);await n(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 g=!1;async function f(){if(g)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),r=await (0,a.readConfig)();if((r.workspaces??[]).length>0||!e(r)){g=!0;return}let s=null;await (0,a.updateConfig)(a=>{let r=a.workspaces??[],i=e(a);if(r.length>0||!i)return a;let o=t.default.resolve(i);return s={id:"ws_"+(0,n.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})`),g=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,r,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,n){if(!e)return null;if(!n||"."===n)return e;let a=t.default.resolve(e,n);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,n){return!!n||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let n=globalThis;!n.__wikiRootDir&&process.env.ROOT_DIR&&(n.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){n.__wikiRootDir=void 0},"getRootDir",0,function(){return n.__wikiRootDir??""},"isRootDirSet",0,function(){return!!n.__wikiRootDir},"setRootDir",0,function(e){n.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),n=e.i(254226),a=e.i(583627),r=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let n=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(n)return await (0,s.getWorkspace)(n)??null;let a=await (0,s.listWorkspaces)();if(0===a.length){let e;return(e=(0,r.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 n=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==n?a-n:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,n.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let r=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,r)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:r}:{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])},814747,(e,t,n)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,n)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,n)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,n)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),n=e.i(912714),a=e.i(660526),r=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??a.default.homedir();return r.default.join(e,".wiki-viewer")}function u(){return r.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,n.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,n.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,n.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,n.chmod)(t,384)}catch{}await (0,n.rename)(t,u())}async function g(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let n=await c();if(!n)return null;let a=d(e);for(let e of n.agents)if(function(e,n){let a=Buffer.from(e.padEnd(64,"0"),"utf8"),r=Buffer.from(n.padEnd(64,"0"),"utf8");return a.length===r.length&&(0,t.timingSafeEqual)(a,r)&&e.length===n.length}(e.tokenHash,a))return e;return null}async function h(e){await (0,s.withFileMutex)(i,async()=>{let t=await g(),n=t.agents.findIndex(t=>t.id===e.id);n>=0?t.agents[n]=e:t.agents.push(e),await p(t)})}async function w(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let n=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==n&&(await p(t),!0)})}async function m(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let n=t.agents.find(t=>t.id===e);n&&(n.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,h,"hashToken",0,d,"lookupAgentByToken",0,f,"readRegistry",0,c,"removeAgent",0,w,"updateLastSeen",0,m])},215043,552350,e=>{"use strict";var t=e.i(228064);function n(e,t){return(function(e){let t="^",n=0;for(;n<e.length;)"*"===e[n]&&"*"===e[n+1]?(t+=".*","/"===e[n+=2]&&(t+="(?:.+/)?",n++)):("*"===e[n]?t+="[^/]*":"?"===e[n]?t+="[^/]":t+=e[n].replace(/[.+^${}()|[\]\\]/g,"\\$&"),n++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,n],552350);var a=e.i(254226);async function r(e){let n=await (0,a.getSessionFromRequest)(e);if(n?.user){let e=n.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let r=e.headers.get("authorization")??"",s=r.startsWith("Bearer ")?r.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,r,"enforceScope",0,function(e,t){let{scope:a}=e;return void 0!==a.workspaceId&&void 0!==t.workspaceId&&a.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${a.workspaceId}")`}:a.ops.includes(t.op)?t.filePath&&!a.paths.some(e=>n(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},413895,e=>{"use strict";var t=e.i(666680);let n=globalThis;n.__wvPendingRegs||(n.__wvPendingRegs=new Map);let a=n.__wvPendingRegs;e.s(["approveRegistration",0,function(e,t){let n=a.get(e);return!!n&&"pending"===n.status&&(n.status="approved",n.tokenPlaintext=t,n.resolvedAt=new Date().toISOString(),!0)},"consumeRegistration",0,function(e){let t=a.get(e);if(!t||"approved"!==t.status||!t.tokenPlaintext)return null;let n=t.tokenPlaintext;return t.status="consumed",t.tokenPlaintext=void 0,n},"createRegistration",0,function(e){let n=`reg_${(0,t.randomBytes)(16).toString("hex")}`,r={registrationId:n,agentId:e.agentId,displayName:e.displayName,requestedScope:e.requestedScope??{paths:["**/*"],ops:["read","mutate"]},requestedAt:new Date().toISOString(),status:"pending"};return a.set(n,r),r},"denyRegistration",0,function(e){let t=a.get(e);return!!t&&"pending"===t.status&&(t.status="denied",t.resolvedAt=new Date().toISOString(),!0)},"getRegistration",0,function(e){return a.get(e)},"listPendingRegistrations",0,function(){return[...a.values()].filter(e=>"pending"===e.status)}])},280137,e=>{"use strict";var t=e.i(364564),n=e.i(102095),a=e.i(691091),r=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),g=e.i(682278),f=e.i(157569),h=e.i(844146),w=e.i(193695);e.i(105888);var m=e.i(530564),v=e.i(702414),R=e.i(215043),k=e.i(660038),_=e.i(228064),A=e.i(413895);async function y(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let n=await (0,k.resolveWorkspaceForAgent)(e);if(!n.ok)return v.NextResponse.json({error:n.code},{status:n.status});let{ws:a,rootDir:r}=n,s=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:a.id});if(!s.ok)return v.NextResponse.json({error:s.code,message:s.message},{status:403});let i=await (0,_.readRegistry)(),o=i?.agents.length??0,l=(0,A.listPendingRegistrations)().length;return v.NextResponse.json({rateLimit:Number(process.env.AGENT_RATE_LIMIT)||60,root:r,registeredAgents:o,pendingRegistrations:l})}e.s(["GET",0,y,"runtime",0,"nodejs"],232229);var I=e.i(232229);let E=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agent/settings/route",pathname:"/api/agent/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/settings/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:O,serverHooks:S}=E;async function N(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/settings/route";v=v.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,params:_,nextConfig:A,parsedUrl:y,isDraftMode:I,prerenderManifest:D,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:x,clientReferenceManifest:C,serverActionsManifest:P}=R,T=(0,o.normalizeAppPath)(v),U=!!(D.dynamicRoutes[T]||D.routes[x]),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(U&&!I){let e=!!D.routes[x],t=D.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new w.NoFallbackError}}let q=null;!U||E.isDev||I||(q="/index"===(q=x)?"/":q);let j=!0===E.isDev||!U,W=U&&!j;P&&C&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:C,serverActionsManifest:P});let B=e.method||"GET",M=(0,s.getTracer)(),H=M.getActiveScopeSpan(),F=!!(null==O?void 0:O.isWrappedByNextServer),$=!!(0,r.getRequestMeta)(e,"minimalMode"),K=(0,r.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,D,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:_,previewProps:D.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:j,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,a,r)=>E.onRequestError(e,t,a,r,O)},sharedContext:{buildId:k}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>E.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=M.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=n.get("next.route");if(a){let t=`${B} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",a),r.updateName(t))}else e.updateName(`${B} ${v}`)}),o=async r=>{var s,o;let l=async({previousCacheEntry:n})=>{try{if(!$&&S&&N&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);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(!U)return await (0,p.sendResponse)(z,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:a}}}}catch(t){throw(null==n?void 0:n.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:S})},!1,O),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:D,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==m.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",S?"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,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&U||d.delete(h.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};F&&H?await o(H):(r=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:S})},!1,O),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:O})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,O],280137)},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),n=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function r(e,n){if(n){let e=a();if(e.length>0&&e.includes(n.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 n=t.adminUserIds??[];return n.includes(e)?t:{...t,adminUserIds:[...n,e]}})}async function o(e){let n=a().length>0,r=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||n?{...t,adminUserIds:a}:(r=!0,t)}),r)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 n=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(n=!0,{...t,adminUserIds:[e]})),n&&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,n.requireUser)(e);return t.ok?await r(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,r,"listAdmins",0,s,"removeAdmin",0,o,"requireAdmin",0,u])},359211,e=>{"use strict";var t=e.i(750227),n=e.i(666680),a=e.i(798003);async function r(){return(await (0,a.readConfig)()).workspaces??[]}async function s(e){return(await r()).find(t=>t.id===e)??null}async function i(e){let r=t.default.resolve(e.rootDir),s={id:"ws_"+(0,n.randomBytes)(6).toString("base64url"),name:e.name??t.default.basename(r),rootDir:r,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)(n=>{let a=(n.workspaces??[]).map(n=>n.id===e?t(n):n);return{...n,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:n}=await e.A(754121);await n(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 g=!1;async function f(){if(g)return;let e=e=>e.lastOpenedPath??(process.env.ROOT_DIR?t.default.resolve(process.env.ROOT_DIR):null),r=await (0,a.readConfig)();if((r.workspaces??[]).length>0||!e(r)){g=!0;return}let s=null;await (0,a.updateConfig)(a=>{let r=a.workspaces??[],i=e(a);if(r.length>0||!i)return a;let o=t.default.resolve(i);return s={id:"ws_"+(0,n.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})`),g=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,r,"migrateConfigToWorkspaces",0,f,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,n){if(!e)return null;if(!n||"."===n)return e;let a=t.default.resolve(e,n);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,n){return!!n||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let n=globalThis;!n.__wikiRootDir&&process.env.ROOT_DIR&&(n.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){n.__wikiRootDir=void 0},"getRootDir",0,function(){return n.__wikiRootDir??""},"isRootDirSet",0,function(){return!!n.__wikiRootDir},"setRootDir",0,function(e){n.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),n=e.i(254226),a=e.i(583627),r=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let n=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(n)return await (0,s.getWorkspace)(n)??null;let a=await (0,s.listWorkspaces)();if(0===a.length){let e;return(e=(0,r.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 n=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==n?a-n: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,n.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let r=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,r)?{ok:!0,ws:l,rootDir:l.rootDir,userId:t.user.id,isAdmin:r}:{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])},814747,(e,t,n)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,n)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,n)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,n)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),n=e.i(912714),a=e.i(660526),r=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??a.default.homedir();return r.default.join(e,".wiki-viewer")}function u(){return r.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,n.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,n.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,n.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,n.chmod)(t,384)}catch{}await (0,n.rename)(t,u())}async function g(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let n=await c();if(!n)return null;let a=d(e);for(let e of n.agents)if(function(e,n){let a=Buffer.from(e.padEnd(64,"0"),"utf8"),r=Buffer.from(n.padEnd(64,"0"),"utf8");return a.length===r.length&&(0,t.timingSafeEqual)(a,r)&&e.length===n.length}(e.tokenHash,a))return e;return null}async function h(e){await (0,s.withFileMutex)(i,async()=>{let t=await g(),n=t.agents.findIndex(t=>t.id===e.id);n>=0?t.agents[n]=e:t.agents.push(e),await p(t)})}async function w(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let n=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==n&&(await p(t),!0)})}async function m(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let n=t.agents.find(t=>t.id===e);n&&(n.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,h,"hashToken",0,d,"lookupAgentByToken",0,f,"readRegistry",0,c,"removeAgent",0,w,"updateLastSeen",0,m])},215043,552350,e=>{"use strict";var t=e.i(228064);function n(e,t){return(function(e){let t="^",n=0;for(;n<e.length;)"*"===e[n]&&"*"===e[n+1]?(t+=".*","/"===e[n+=2]&&(t+="(?:.+/)?",n++)):("*"===e[n]?t+="[^/]*":"?"===e[n]?t+="[^/]":t+=e[n].replace(/[.+^${}()|[\]\\]/g,"\\$&"),n++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,n],552350);var a=e.i(254226);async function r(e){let n=await (0,a.getSessionFromRequest)(e);if(n?.user){let e=n.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let r=e.headers.get("authorization")??"",s=r.startsWith("Bearer ")?r.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,r,"enforceScope",0,function(e,t){let{scope:a}=e;return void 0!==a.workspaceId&&void 0!==t.workspaceId&&a.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${a.workspaceId}")`}:a.ops.includes(t.op)?t.filePath&&!a.paths.some(e=>n(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},413895,e=>{"use strict";var t=e.i(666680);let n=globalThis;n.__wvPendingRegs||(n.__wvPendingRegs=new Map);let a=n.__wvPendingRegs;e.s(["approveRegistration",0,function(e,t){let n=a.get(e);return!!n&&"pending"===n.status&&(n.status="approved",n.tokenPlaintext=t,n.resolvedAt=new Date().toISOString(),!0)},"consumeRegistration",0,function(e){let t=a.get(e);if(!t||"approved"!==t.status||!t.tokenPlaintext)return null;let n=t.tokenPlaintext;return t.status="consumed",t.tokenPlaintext=void 0,n},"createRegistration",0,function(e){let n=`reg_${(0,t.randomBytes)(16).toString("hex")}`,r={registrationId:n,agentId:e.agentId,displayName:e.displayName,requestedScope:e.requestedScope??{paths:["**/*"],ops:["read","mutate"]},requestedAt:new Date().toISOString(),status:"pending"};return a.set(n,r),r},"denyRegistration",0,function(e){let t=a.get(e);return!!t&&"pending"===t.status&&(t.status="denied",t.resolvedAt=new Date().toISOString(),!0)},"getRegistration",0,function(e){return a.get(e)},"listPendingRegistrations",0,function(){return[...a.values()].filter(e=>"pending"===e.status)}])},280137,e=>{"use strict";var t=e.i(364564),n=e.i(102095),a=e.i(691091),r=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),g=e.i(682278),f=e.i(157569),h=e.i(844146),w=e.i(193695);e.i(105888);var m=e.i(530564),v=e.i(702414),R=e.i(215043),_=e.i(660038),k=e.i(228064),A=e.i(413895);async function y(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let n=await (0,_.resolveWorkspaceForAgent)(e);if(!n.ok)return v.NextResponse.json({error:n.code},{status:n.status});let{ws:a,rootDir:r}=n,s=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:a.id});if(!s.ok)return v.NextResponse.json({error:s.code,message:s.message},{status:403});let i=await (0,k.readRegistry)(),o=i?.agents.length??0,l=(0,A.listPendingRegistrations)().length;return v.NextResponse.json({rateLimit:Number(process.env.AGENT_RATE_LIMIT)||60,root:r,registeredAgents:o,pendingRegistrations:l})}e.s(["GET",0,y,"runtime",0,"nodejs"],232229);var I=e.i(232229);let E=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agent/settings/route",pathname:"/api/agent/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/settings/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:O,serverHooks:S}=E;async function N(e,t,a){a.requestMeta&&(0,r.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/settings/route";v=v.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:v,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:I,prerenderManifest:D,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:x,clientReferenceManifest:C,serverActionsManifest:P}=R,T=(0,o.normalizeAppPath)(v),U=!!(D.dynamicRoutes[T]||D.routes[x]),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(U&&!I){let e=!!D.routes[x],t=D.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new w.NoFallbackError}}let q=null;!U||E.isDev||I||(q="/index"===(q=x)?"/":q);let W=!0===E.isDev||!U,j=U&&!W;P&&C&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:C,serverActionsManifest:P});let H=e.method||"GET",B=(0,s.getTracer)(),M=B.getActiveScopeSpan(),F=!!(null==O?void 0:O.isWrappedByNextServer),$=!!(0,r.getRequestMeta)(e,"minimalMode"),K=(0,r.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,D,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:D.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:W,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,a,r)=>E.onRequestError(e,t,a,r,O)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>E.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=B.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=n.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",a),r.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async r=>{var s,o;let l=async({previousCacheEntry:n})=>{try{if(!$&&S&&N&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);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(!U)return await (0,p.sendResponse)(z,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:a}}}}catch(t){throw(null==n?void 0:n.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,O),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:D,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==m.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",S?"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,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&U||d.delete(h.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};F&&M?await o(M):(r=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,O),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:O})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,O],280137)},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__0hu~q20._.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)}])},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}])},365293,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(912714),_=e.i(702414),R=e.i(402662),y=e.i(254226),k=e.i(583627),A=e.i(359211);async function C(e){let t=await (0,y.requireUser)(e);if(!t.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,k.ensureBootstrapAdmin)(t.user.id),await (0,A.migrateConfigToWorkspaces)();let r=await (0,k.isAdmin)(t.user.id,t.user.email),a=(await (0,A.listWorkspaces)()).filter(e=>(0,A.userCanAccess)(e,t.user.id,r));return _.NextResponse.json({workspaces:a,isAdmin:r})}async function I(e){let t=(0,R.checkOrigin)(e);if(t)return t;let r=await (0,k.requireAdmin)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let a=await e.json(),s=a.rootDir?.trim();if(!s)return _.NextResponse.json({error:"Missing rootDir"},{status:400});try{if(!(await (0,g.stat)(s)).isDirectory())return _.NextResponse.json({error:"Not a directory"},{status:400})}catch{return _.NextResponse.json({error:"Directory not found"},{status:404})}let n=await (0,A.createWorkspace)({rootDir:s,name:a.name?.trim()||void 0,createdBy:r.user.id});return _.NextResponse.json({ok:!0,workspace:n})}e.s(["GET",0,C,"POST",0,I,"runtime",0,"nodejs"],401923);var E=e.i(401923);let O=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/route",pathname:"/api/system/workspaces",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:x,serverHooks:S}=O;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),O.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/route";g=g.replace(/\/index$/,"")||"/";let _=await O.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:E,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:D}=_,T=(0,o.normalizeAppPath)(g),U=!!(I.dynamicRoutes[T]||I.routes[S]),b=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!C){let e=!!I.routes[S],t=I.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||O.isDev||C||(j="/index"===(j=S)?"/":j);let q=!0===O.isDev||!U,M=U&&!q;D&&P&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:P,serverActionsManifest:D});let B=e.method||"GET",H=(0,n.getTracer)(),W=H.getActiveScopeSpan(),$=!!(null==E?void 0:E.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,k,I,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let F={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>O.onRequestError(e,t,a,s,E)},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=>O.handle(V,F).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=`${B} ${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(`${B} ${g}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&x&&!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=F.renderOpts.fetchMetrics;let o=F.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=F.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,n,F.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!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,a=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:F.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 O.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,E),t}},u=await O.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});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});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&&U||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};$&&W?await o(W):(s=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,E),U)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:x})},"routeModule",0,O,"serverHooks",0,S,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,x],365293)},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}])},365293,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(912714),_=e.i(702414),R=e.i(402662),y=e.i(254226),k=e.i(583627),A=e.i(359211);async function C(e){let t=await (0,y.requireUser)(e);if(!t.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,k.ensureBootstrapAdmin)(t.user.id),await (0,A.migrateConfigToWorkspaces)();let r=await (0,k.isAdmin)(t.user.id,t.user.email),a=(await (0,A.listWorkspaces)()).filter(e=>(0,A.userCanAccess)(e,t.user.id,r));return _.NextResponse.json({workspaces:a,isAdmin:r})}async function I(e){let t=(0,R.checkOrigin)(e);if(t)return t;let r=await (0,k.requireAdmin)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let a=await e.json(),s=a.rootDir?.trim();if(!s)return _.NextResponse.json({error:"Missing rootDir"},{status:400});try{if(!(await (0,g.stat)(s)).isDirectory())return _.NextResponse.json({error:"Not a directory"},{status:400})}catch{return _.NextResponse.json({error:"Directory not found"},{status:404})}let n=await (0,A.createWorkspace)({rootDir:s,name:a.name?.trim()||void 0,createdBy:r.user.id});return _.NextResponse.json({ok:!0,workspace:n})}e.s(["GET",0,C,"POST",0,I,"runtime",0,"nodejs"],401923);var E=e.i(401923);let O=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/route",pathname:"/api/system/workspaces",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:x,serverHooks:S}=O;async function P(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),O.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/route";g=g.replace(/\/index$/,"")||"/";let _=await O.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:E,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:T}=_,U=(0,o.normalizeAppPath)(g),D=!!(I.dynamicRoutes[U]||I.routes[S]),b=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!C){let e=!!I.routes[S],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!D||O.isDev||C||(j="/index"===(j=S)?"/":j);let q=!0===O.isDev||!D,M=D&&!q;T&&P&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:P,serverActionsManifest:T});let H=e.method||"GET",W=(0,n.getTracer)(),B=W.getActiveScopeSpan(),$=!!(null==E?void 0:E.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,k,I,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let F={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>O.onRequestError(e,t,a,s,E)},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=>O.handle(V,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.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&&x&&!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=F.renderOpts.fetchMetrics;let o=F.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=F.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(z,G,n,F.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!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,a=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:F.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 O.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,E),t}},u=await O.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!D)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"),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):(s=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.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 O.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:N})},!1,E),D)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:x})},"routeModule",0,O,"serverHooks",0,S,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,x],365293)},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__0l-8clq._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[583627,e=>{"use strict";var t=e.i(798003),a=e.i(254226);function r(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,a){if(a){let e=r();if(e.length>0&&e.includes(a.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 a=t.adminUserIds??[];return a.includes(e)?t:{...t,adminUserIds:[...a,e]}})}async function o(e){let a=r().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let r=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==r.length||a?{...t,adminUserIds:r}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(r().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let a=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(a=!0,{...t,adminUserIds:[e]})),a&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,a.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),a=e.i(666680),r=e.i(798003);async function n(){return(await (0,r.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,a.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,r.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,r.updateConfig)(a=>{let r=(a.workspaces??[]).map(a=>a.id===e?t(a):a);return{...a,workspaces:r}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,r.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:a}=await e.A(754121);await a(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),n=await (0,r.readConfig)();if((n.workspaces??[]).length>0||!e(n)){m=!0;return}let s=null;await (0,r.updateConfig)(r=>{let n=r.workspaces??[],i=e(r);if(n.length>0||!i)return r;let o=t.default.resolve(i);return s={id:"ws_"+(0,a.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:r.pinnedPaths},{...r,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),m=!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,a){if(!e)return null;if(!a||"."===a)return e;let r=t.default.resolve(e,a);return r===e||r.startsWith(e+t.default.sep)?r:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,a){return!!a||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let a=globalThis;!a.__wikiRootDir&&process.env.ROOT_DIR&&(a.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){a.__wikiRootDir=void 0},"getRootDir",0,function(){return a.__wikiRootDir??""},"isRootDirSet",0,function(){return!!a.__wikiRootDir},"setRootDir",0,function(e){a.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),a=e.i(254226),r=e.i(583627),n=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)return await (0,s.getWorkspace)(a)??null;let r=await (0,s.listWorkspaces)();if(0===r.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 r.slice().sort((e,t)=>{let a=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,r=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return r!==a?r-a:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,a.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,r.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])},947727,e=>{"use strict";var t=e.i(364564),a=e.i(102095),r=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),m=e.i(682278),w=e.i(157569),f=e.i(844146),h=e.i(193695);e.i(105888);var g=e.i(530564),v=e.i(912714),R=e.i(750227),_=e.i(702414),k=e.i(660038),A=e.i(359211);let y={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",avif:"image/avif",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",txt:"text/plain; charset=utf-8",md:"text/markdown; charset=utf-8",mp4:"video/mp4",webm:"video/webm",mov:"video/quicktime",m4v:"video/mp4",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac"};async function C(e){let t=await (0,k.resolveWorkspaceForAgent)(e);if(!t.ok)return _.NextResponse.json({error:t.code},{status:t.status});let{rootDir:a}=t,{searchParams:r}=new URL(e.url),n=r.get("path")??"",s=(0,A.safeWorkspacePath)(a,n);if(!s)return _.NextResponse.json({error:"Invalid path"},{status:400});try{if((await (0,v.stat)(s)).isDirectory())return _.NextResponse.json({error:"Not a file"},{status:400});let e=y[R.default.extname(s).slice(1).toLowerCase()]??"application/octet-stream",t=await (0,v.readFile)(s);return new Response(t,{headers:{"Content-Type":e,"Cache-Control":"private, max-age=60"}})}catch{return _.NextResponse.json({error:"File not found"},{status:404})}}e.s(["GET",0,C],176052);var E=e.i(176052);let I=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/wiki/file/route",pathname:"/api/wiki/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/file/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:O,serverHooks:x}=I;async function P(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/file/route";v=v.replace(/\/index$/,"")||"/";let R=await I.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:A,parsedUrl:y,isDraftMode:C,prerenderManifest:E,routerServerContext:D,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:U}=R,b=(0,o.normalizeAppPath)(v),N=!!(E.dynamicRoutes[b]||E.routes[P]),T=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,y,!1):t.end("This page could not be found"),null);if(N&&!C){let e=!!E.routes[P],t=E.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await T();throw new h.NoFallbackError}}let j=null;!N||I.isDev||C||(j="/index"===(j=P)?"/":j);let q=!0===I.isDev||!N,W=N&&!q;U&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:U});let M=e.method||"GET",H=(0,s.getTracer)(),F=H.getActiveScopeSpan(),K=!!(null==D?void 0:D.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,E,B);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let $={params:k,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>I.onRequestError(e,t,r,n,D)},sharedContext:{buildId:_}},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=>I.handle(Q,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${v}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!B&&O&&x&&!a)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&&r.waitUntil&&(r.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,m.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,r=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:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,D),t}},u=await I.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.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",O?"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,m.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 h.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,D),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,r.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:O})},"routeModule",0,I,"serverHooks",0,x,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,O],947727)},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),a=e.i(254226);function r(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,a){if(a){let e=r();if(e.length>0&&e.includes(a.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 a=t.adminUserIds??[];return a.includes(e)?t:{...t,adminUserIds:[...a,e]}})}async function o(e){let a=r().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let r=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==r.length||a?{...t,adminUserIds:r}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(r().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let a=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(a=!0,{...t,adminUserIds:[e]})),a&&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,a.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),a=e.i(666680),r=e.i(798003);async function n(){return(await (0,r.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,a.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,r.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,r.updateConfig)(a=>{let r=(a.workspaces??[]).map(a=>a.id===e?t(a):a);return{...a,workspaces:r}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,r.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:a}=await e.A(754121);await a(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),n=await (0,r.readConfig)();if((n.workspaces??[]).length>0||!e(n)){m=!0;return}let s=null;await (0,r.updateConfig)(r=>{let n=r.workspaces??[],i=e(r);if(n.length>0||!i)return r;let o=t.default.resolve(i);return s={id:"ws_"+(0,a.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:r.pinnedPaths},{...r,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),m=!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,a){if(!e)return null;if(!a||"."===a)return e;let r=t.default.resolve(e,a);return r===e||r.startsWith(e+t.default.sep)?r:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,a){return!!a||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let a=globalThis;!a.__wikiRootDir&&process.env.ROOT_DIR&&(a.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){a.__wikiRootDir=void 0},"getRootDir",0,function(){return a.__wikiRootDir??""},"isRootDirSet",0,function(){return!!a.__wikiRootDir},"setRootDir",0,function(e){a.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),a=e.i(254226),r=e.i(583627),n=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)return await (0,s.getWorkspace)(a)??null;let r=await (0,s.listWorkspaces)();if(0===r.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 r.slice().sort((e,t)=>{let a=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,r=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return r!==a?r-a: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,a.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,r.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])},947727,e=>{"use strict";var t=e.i(364564),a=e.i(102095),r=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),m=e.i(682278),w=e.i(157569),f=e.i(844146),h=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),A=e.i(359211);let C={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",avif:"image/avif",ico:"image/x-icon",bmp:"image/bmp",pdf:"application/pdf",txt:"text/plain; charset=utf-8",md:"text/markdown; charset=utf-8",mp4:"video/mp4",webm:"video/webm",mov:"video/quicktime",m4v:"video/mp4",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac"};async function y(e){let t=await (0,k.resolveWorkspaceForAgent)(e);if(!t.ok)return R.NextResponse.json({error:t.code},{status:t.status});let{rootDir:a}=t,{searchParams:r}=new URL(e.url),n=r.get("path")??"",s=(0,A.safeWorkspacePath)(a,n);if(!s)return R.NextResponse.json({error:"Invalid path"},{status:400});try{if((await (0,v.stat)(s)).isDirectory())return R.NextResponse.json({error:"Not a file"},{status:400});let e=C[_.default.extname(s).slice(1).toLowerCase()]??"application/octet-stream",t=await (0,v.readFile)(s);return new Response(t,{headers:{"Content-Type":e,"Cache-Control":"private, max-age=60"}})}catch{return R.NextResponse.json({error:"File not found"},{status:404})}}e.s(["GET",0,y],176052);var I=e.i(176052);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/wiki/file/route",pathname:"/api/wiki/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/file/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:O,serverHooks:x}=E;async function P(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/file/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==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:A,parsedUrl:C,isDraftMode:y,prerenderManifest:I,routerServerContext:D,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:U,serverActionsManifest:S}=_,N=(0,o.normalizeAppPath)(v),T=!!(I.dynamicRoutes[N]||I.routes[P]),b=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,C,!1):t.end("This page could not be found"),null);if(T&&!y){let e=!!I.routes[P],t=I.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new h.NoFallbackError}}let W=null;!T||E.isDev||y||(W="/index"===(W=P)?"/":W);let j=!0===E.isDev||!T,q=T&&!j;S&&U&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:U,serverActionsManifest:S});let M=e.method||"GET",H=(0,s.getTracer)(),K=H.getActiveScopeSpan(),F=!!(null==D?void 0:D.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.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:j,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,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 n,i=async e=>E.handle(Q,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${v}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!B&&O&&x&&!a)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&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=$.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,G,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,r=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:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!1,D),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:W,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:B});if(!T)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",O?"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,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&T||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):(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,!F))}catch(t){if(t instanceof h.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!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,r.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:O})},"routeModule",0,E,"serverHooks",0,x,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,O],947727)},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__0otb8ra._.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}])},365026,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),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||/[<>:"|?*]/.test(s)||s.endsWith("/"))return _.NextResponse.json({error:"Invalid file path"},{status:400});let n=(0,y.safeWorkspacePath)(a,s);if(!n)return _.NextResponse.json({error:"Invalid path"},{status:400});try{return await (0,g.stat)(n),_.NextResponse.json({error:"File already exists",path:s},{status:409})}catch(e){if("ENOENT"!==e.code)return _.NextResponse.json({error:"Failed to create file"},{status:500})}try{return await (0,g.mkdir)(v.default.dirname(n),{recursive:!0}),await (0,g.writeFile)(n,"","utf-8"),_.NextResponse.json({ok:!0,path:s})}catch{return _.NextResponse.json({error:"Failed to create file"},{status:500})}}e.s(["POST",0,O],316516);var E=e.i(316516);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/new-file/route",pathname:"/api/wiki/new-file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/new-file/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:N}=I;async function S(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),I.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/wiki/new-file/route";g=g.replace(/\/index$/,"")||"/";let v=await I.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:A,parsedUrl:y,isDraftMode:O,prerenderManifest:E,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:x}=v,U=(0,o.normalizeAppPath)(g),T=!!(E.dynamicRoutes[U]||E.routes[S]),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=!!E.routes[S],t=E.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let j=null;!T||I.isDev||O||(j="/index"===(j=S)?"/":j);let W=!0===I.isDev||!T,q=T&&!W;x&&P&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:P,serverActionsManifest:x});let M=e.method||"GET",H=(0,n.getTracer)(),B=H.getActiveScopeSpan(),F=!!(null==C?void 0:C.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),$=(0,s.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,E,K);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let L={params:k,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:W,incrementalCache:$,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>I.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=>I.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&&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 I.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,C),t}},u=await I.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,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"),O&&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};F&&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,!F))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,C),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:C,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,N,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,D],365026)},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 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}])},365026,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),v=e.i(912714),_=e.i(750227),g=e.i(702414),k=e.i(402662),A=e.i(660038),I=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 g.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,s=(await e.json()).path;if(!s||"string"!=typeof s||/[<>:"|?*]/.test(s)||s.endsWith("/"))return g.NextResponse.json({error:"Invalid file path"},{status:400});let n=(0,I.safeWorkspacePath)(a,s);if(!n)return g.NextResponse.json({error:"Invalid path"},{status:400});try{return await (0,v.stat)(n),g.NextResponse.json({error:"File already exists",path:s},{status:409})}catch(e){if("ENOENT"!==e.code)return g.NextResponse.json({error:"Failed to create file"},{status:500})}try{return await (0,v.mkdir)(_.default.dirname(n),{recursive:!0}),await (0,v.writeFile)(n,"","utf-8"),g.NextResponse.json({ok:!0,path:s})}catch{return g.NextResponse.json({error:"Failed to create file"},{status:500})}}e.s(["POST",0,O],316516);var y=e.i(316516);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/new-file/route",pathname:"/api/wiki/new-file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/new-file/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:C,serverHooks:N}=E;async function S(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/new-file/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:g,params:k,nextConfig:A,parsedUrl:I,isDraftMode:O,prerenderManifest:y,routerServerContext:D,isOnDemandRevalidate:C,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:P,serverActionsManifest:U}=_,x=(0,o.normalizeAppPath)(v),T=!!(y.dynamicRoutes[x]||y.routes[S]),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&&!O){let e=!!y.routes[S],t=y.dynamicRoutes[x];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let W=null;!T||E.isDev||O||(W="/index"===(W=S)?"/":W);let j=!0===E.isDev||!T,q=T&&!j;U&&P&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:U});let H=e.method||"GET",M=(0,n.getTracer)(),B=M.getActiveScopeSpan(),F=!!(null==D?void 0:D.isWrappedByNextServer),K=!!(0,s.getRequestMeta)(e,"minimalMode"),$=(0,s.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,y,K);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let L={params:k,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:j,incrementalCache:$,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:g}},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} ${v}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&C&&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 E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,D),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:W,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:C,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",C?"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,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};F&&B?await o(B):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof m.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,D),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:D,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,N,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,C],365026)},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__0p0-p__._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[583627,e=>{"use strict";var t=e.i(798003),a=e.i(254226);function r(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,a){if(a){let e=r();if(e.length>0&&e.includes(a.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 a=t.adminUserIds??[];return a.includes(e)?t:{...t,adminUserIds:[...a,e]}})}async function o(e){let a=r().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let r=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==r.length||a?{...t,adminUserIds:r}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(r().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let a=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(a=!0,{...t,adminUserIds:[e]})),a&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){let t=await (0,a.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),a=e.i(666680),r=e.i(798003);async function n(){return(await (0,r.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,a.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,r.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,r.updateConfig)(a=>{let r=(a.workspaces??[]).map(a=>a.id===e?t(a):a);return{...a,workspaces:r}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,r.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:a}=await e.A(754121);await a(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,r.readConfig)();if((n.workspaces??[]).length>0||!e(n)){f=!0;return}let s=null;await (0,r.updateConfig)(r=>{let n=r.workspaces??[],i=e(r);if(n.length>0||!i)return r;let o=t.default.resolve(i);return s={id:"ws_"+(0,a.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:r.pinnedPaths},{...r,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,a){if(!e)return null;if(!a||"."===a)return e;let r=t.default.resolve(e,a);return r===e||r.startsWith(e+t.default.sep)?r:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,a){return!!a||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let a=globalThis;!a.__wikiRootDir&&process.env.ROOT_DIR&&(a.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){a.__wikiRootDir=void 0},"getRootDir",0,function(){return a.__wikiRootDir??""},"isRootDirSet",0,function(){return!!a.__wikiRootDir},"setRootDir",0,function(e){a.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),a=e.i(254226),r=e.i(583627),n=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)return await (0,s.getWorkspace)(a)??null;let r=await (0,s.listWorkspaces)();if(0===r.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 r.slice().sort((e,t)=>{let a=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,r=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return r!==a?r-a:e.id<t.id?-1:+(e.id>t.id)})[0]}async function o(e){let t=await (0,a.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,r.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])},165076,e=>{"use strict";var t=e.i(364564),a=e.i(102095),r=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),f=e.i(682278),h=e.i(157569),w=e.i(844146),m=e.i(193695);e.i(105888);var g=e.i(530564),_=e.i(912714),v=e.i(750227),R=e.i(702414),k=e.i(660038),y=e.i(359211);async function A(e,t){let a=v.default.extname(t),r=t.slice(0,t.length-a.length),n=t,s=2;for(;;)try{await (0,_.stat)(v.default.join(e,n)),n=`${r}-${s}${a}`,s+=1}catch{return n}}async function C(e,{params:t}){let a,r=await (0,k.resolveWorkspaceForAgent)(e);if(!r.ok)return R.NextResponse.json({error:r.code},{status:r.status});let{rootDir:n}=r,{path:s}=await t,i=(s??[]).join("/"),o=v.default.join(n,"_uploads",i);if(!(0,y.safeWorkspacePath)(n,v.default.join("_uploads",i)))return R.NextResponse.json({error:"Invalid path"},{status:400});try{a=await e.formData()}catch{return R.NextResponse.json({error:"Expected multipart/form-data"},{status:400})}let l=a.get("file");if(!(l instanceof File))return R.NextResponse.json({error:"Missing file field"},{status:400});if(l.size>0x3200000)return R.NextResponse.json({error:"File exceeds 50MB limit"},{status:413});let u=(l.name||"file").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-.]+/,"").replace(/-+$/,"")||"file";try{await (0,_.mkdir)(o,{recursive:!0});let e=await A(o,u),t=v.default.join(o,e),a=Buffer.from(await l.arrayBuffer());await (0,_.writeFile)(t,a);let r=["_uploads",i,e].filter(Boolean),n=r.map(encodeURIComponent).join("/"),s=r.join("/");return R.NextResponse.json({url:`/api/assets/${n}`,path:s,absolutePath:t,size:a.length,mimeType:l.type||"application/octet-stream"})}catch(t){let e=t instanceof Error?t.message:"Write failed";return R.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,C],24230);var E=e.i(24230);let I=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/upload/[...path]/route",pathname:"/api/upload/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/upload/[...path]/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:D,serverHooks:P}=I;async function x(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/upload/[...path]/route";_=_.replace(/\/index$/,"")||"/";let v=await I.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:y,parsedUrl:A,isDraftMode:C,prerenderManifest:E,routerServerContext:O,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:S,serverActionsManifest:U}=v,N=(0,o.normalizeAppPath)(_),T=!!(E.dynamicRoutes[N]||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&&!C){let e=!!E.routes[x],t=E.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new m.NoFallbackError}}let j=null;!T||I.isDev||C||(j="/index"===(j=x)?"/":j);let q=!0===I.isDev||!T,W=T&&!q;U&&S&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:S,serverActionsManifest:U});let M=e.method||"GET",B=(0,s.getTracer)(),H=B.getActiveScopeSpan(),F=!!(null==O?void 0:O.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,y,E,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:y.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>I.onRequestError(e,t,r,n,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 n,i=async e=>I.handle(Q,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${_}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!$&&D&&P&&!a)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&&r.waitUntil&&(r.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,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,r=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:D})},!1,O),t}},u=await I.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:$});if(!T)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});$||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,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};F&&H?await o(H):(n=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${_}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,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,r.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,P,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,D],165076)},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),a=e.i(254226);function r(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,a){if(a){let e=r();if(e.length>0&&e.includes(a.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 a=t.adminUserIds??[];return a.includes(e)?t:{...t,adminUserIds:[...a,e]}})}async function o(e){let a=r().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let r=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==r.length||a?{...t,adminUserIds:r}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(r().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let a=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(a=!0,{...t,adminUserIds:[e]})),a&&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,a.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),a=e.i(666680),r=e.i(798003);async function n(){return(await (0,r.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,a.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,r.updateConfig)(e=>({...e,workspaces:[...e.workspaces??[],s]})),s}function o(e,t){return(0,r.updateConfig)(a=>{let r=(a.workspaces??[]).map(a=>a.id===e?t(a):a);return{...a,workspaces:r}}).then(()=>void 0)}async function l(e,t){await o(e,e=>({...e,name:t}))}async function u(t){await (0,r.updateConfig)(e=>({...e,workspaces:(e.workspaces??[]).filter(e=>e.id!==t)}));try{let{purgeWorkspace:a}=await e.A(754121);await a(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,r.readConfig)();if((n.workspaces??[]).length>0||!e(n)){f=!0;return}let s=null;await (0,r.updateConfig)(r=>{let n=r.workspaces??[],i=e(r);if(n.length>0||!i)return r;let o=t.default.resolve(i);return s={id:"ws_"+(0,a.randomBytes)(6).toString("base64url"),name:t.default.basename(o),rootDir:o,createdAt:new Date().toISOString(),lastOpenedAt:new Date().toISOString(),pinnedPaths:r.pinnedPaths},{...r,workspaces:[s]}}),s&&console.log(`[wiki-viewer] Migrated lastOpenedPath → workspace "${s.name}" (${s.id})`),f=!0}e.s(["createWorkspace",0,i,"getWorkspace",0,s,"listWorkspaces",0,n,"migrateConfigToWorkspaces",0,h,"removeWorkspace",0,u,"renameWorkspace",0,l,"safeWorkspacePath",0,function(e,a){if(!e)return null;if(!a||"."===a)return e;let r=t.default.resolve(e,a);return r===e||r.startsWith(e+t.default.sep)?r:null},"setWorkspaceAccess",0,d,"setWorkspacePins",0,c,"touchWorkspace",0,p,"userCanAccess",0,function(e,t,a){return!!a||!e.allowedUserIds||0===e.allowedUserIds.length||e.allowedUserIds.includes(t)}])},504445,e=>{"use strict";var t=e.i(750227);let a=globalThis;!a.__wikiRootDir&&process.env.ROOT_DIR&&(a.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){a.__wikiRootDir=void 0},"getRootDir",0,function(){return a.__wikiRootDir??""},"isRootDirSet",0,function(){return!!a.__wikiRootDir},"setRootDir",0,function(e){a.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),a=e.i(254226),r=e.i(583627),n=e.i(504445),s=e.i(359211);async function i(e){await (0,s.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)return await (0,s.getWorkspace)(a)??null;let r=await (0,s.listWorkspaces)();if(0===r.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 r.slice().sort((e,t)=>{let a=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,r=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return r!==a?r-a: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,a.requireUser)(e);if(!t.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let n=await (0,r.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])},165076,e=>{"use strict";var t=e.i(364564),a=e.i(102095),r=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),f=e.i(682278),h=e.i(157569),w=e.i(844146),m=e.i(193695);e.i(105888);var _=e.i(530564),g=e.i(912714),R=e.i(750227),v=e.i(702414),k=e.i(660038),A=e.i(359211);async function y(e,t){let a=R.default.extname(t),r=t.slice(0,t.length-a.length),n=t,s=2;for(;;)try{await (0,g.stat)(R.default.join(e,n)),n=`${r}-${s}${a}`,s+=1}catch{return n}}async function I(e,{params:t}){let a,r=await (0,k.resolveWorkspaceForAgent)(e);if(!r.ok)return v.NextResponse.json({error:r.code},{status:r.status});let{rootDir:n}=r,{path:s}=await t,i=(s??[]).join("/"),o=R.default.join(n,"_uploads",i);if(!(0,A.safeWorkspacePath)(n,R.default.join("_uploads",i)))return v.NextResponse.json({error:"Invalid path"},{status:400});try{a=await e.formData()}catch{return v.NextResponse.json({error:"Expected multipart/form-data"},{status:400})}let l=a.get("file");if(!(l instanceof File))return v.NextResponse.json({error:"Missing file field"},{status:400});if(l.size>0x3200000)return v.NextResponse.json({error:"File exceeds 50MB limit"},{status:413});let u=(l.name||"file").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-.]+/,"").replace(/-+$/,"")||"file";try{await (0,g.mkdir)(o,{recursive:!0});let e=await y(o,u),t=R.default.join(o,e),a=Buffer.from(await l.arrayBuffer());await (0,g.writeFile)(t,a);let r=["_uploads",i,e].filter(Boolean),n=r.map(encodeURIComponent).join("/"),s=r.join("/");return v.NextResponse.json({url:`/api/assets/${n}`,path:s,absolutePath:t,size:a.length,mimeType:l.type||"application/octet-stream"})}catch(t){let e=t instanceof Error?t.message:"Write failed";return v.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,I],24230);var C=e.i(24230);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/upload/[...path]/route",pathname:"/api/upload/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/upload/[...path]/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:D,serverHooks:P}=E;async function x(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/upload/[...path]/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==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:k,nextConfig:A,parsedUrl:y,isDraftMode:I,prerenderManifest:C,routerServerContext:O,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:U,serverActionsManifest:S}=R,N=(0,o.normalizeAppPath)(g),T=!!(C.dynamicRoutes[N]||C.routes[x]),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(T&&!I){let e=!!C.routes[x],t=C.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let j=null;!T||E.isDev||I||(j="/index"===(j=x)?"/":j);let W=!0===E.isDev||!T,q=T&&!W;S&&U&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:U,serverActionsManifest:S});let M=e.method||"GET",H=(0,s.getTracer)(),B=H.getActiveScopeSpan(),K=!!(null==O?void 0:O.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),$=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,C,F);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let L={params:k,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:W,incrementalCache:$,cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,O)},sharedContext:{buildId:v}},z=new l.NodeNextRequest(e),Q=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>E.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!F&&D&&P&&!a)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&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,Q,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,r=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,O),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:F});if(!T)return null;if((null==u||null==(s=u.value)?void 0:s.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});F||t.setHeader("x-nextjs-cache",D?"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 F&&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,Q,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,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:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,O),T)throw t;return await (0,p.sendResponse)(z,Q,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:D})},"routeModule",0,E,"serverHooks",0,P,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,D],165076)},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__0piofm3._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function n(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=n();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=n().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let n=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==n.length||r?{...t,adminUserIds:n}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(n().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,s,"removeAdmin",0,o,"requireAdmin",0,u])},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 n=e.headers.get("origin"),a=e.headers.get("referer");if(!n&&!a)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 n=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)n.add(`${t}://${e}${a}`);return n}(e.headers.get("host")??"");if(n)return s.has(n)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},285421,e=>{"use strict";var t=e.i(364564),r=e.i(102095),n=e.i(691091),a=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),m=e.i(682278),h=e.i(157569),f=e.i(844146),v=e.i(193695);e.i(105888);var R=e.i(530564),g=e.i(702414),w=e.i(286607),_=e.i(750227),A=e.i(660526),E=e.i(902157),y=e.i(402662),I=e.i(254226),N=e.i(583627);async function C(e){let t=await (0,I.requireUser)(e);if(!t.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,N.ensureBootstrapAdmin)(t.user.id);let r=await (0,N.isAdmin)(t.user.id,t.user.email),n=await (0,N.listAdmins)(),a=r?function(){try{let e=_.default.join(process.env.HOME??A.default.homedir(),".wiki-viewer");(0,E.mkdirSync)(e,{recursive:!0});let t=new w.default(_.default.join(e,"auth.db"));return t.pragma("journal_mode = WAL"),t.prepare("SELECT id, email, name FROM user").all()}catch{return[]}}():[];return g.NextResponse.json({admins:n,isAdmin:r,users:a})}async function x(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,N.requireAdmin)(e);if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let n=await e.json();if(!n.userId?.trim())return g.NextResponse.json({error:"Missing userId"},{status:400});await (0,N.addAdmin)(n.userId.trim());let a=await (0,N.listAdmins)();return g.NextResponse.json({ok:!0,admins:a})}async function k(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,N.requireAdmin)(e);if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let n=await e.json();if(!n.userId?.trim())return g.NextResponse.json({error:"Missing userId"},{status:400});try{await (0,N.removeAdmin)(n.userId.trim())}catch(t){let e=t instanceof Error?t.message:String(t);if(e.startsWith("LAST_ADMIN"))return g.NextResponse.json({error:"LAST_ADMIN",message:e},{status:409});throw t}let a=await (0,N.listAdmins)();return g.NextResponse.json({ok:!0,admins:a})}e.s(["DELETE",0,k,"GET",0,C,"POST",0,x,"runtime",0,"nodejs"],37517);var T=e.i(37517);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/admins/route",pathname:"/api/system/admins",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/admins/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:S,serverHooks:P}=j;async function U(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),j.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/admins/route";g=g.replace(/\/index$/,"")||"/";let w=await j.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:_,params:A,nextConfig:E,parsedUrl:y,isDraftMode:I,prerenderManifest:N,routerServerContext:C,isOnDemandRevalidate:x,revalidateOnlyGenerated:k,resolvedPathname:T,clientReferenceManifest:O,serverActionsManifest:S}=w,P=(0,o.normalizeAppPath)(g),U=!!(N.dynamicRoutes[P]||N.routes[T]),q=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,y,!1):t.end("This page could not be found"),null);if(U&&!I){let e=!!N.routes[T],t=N.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new v.NoFallbackError}}let b=null;!U||j.isDev||I||(b="/index"===(b=T)?"/":b);let D=!0===j.isDev||!U,M=U&&!D;S&&O&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:S});let H=e.method||"GET",B=(0,s.getTracer)(),L=B.getActiveScopeSpan(),$=!!(null==C?void 0:C.isWrappedByNextServer),K=!!(0,a.getRequestMeta)(e,"minimalMode"),F=(0,a.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,N,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let W={params:A,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:F,cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>j.onRequestError(e,t,n,a,C)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>j.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.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 n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${H} ${g}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&x&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,s,W.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:x})},!1,C),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:k,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!U)return null;if((null==u||null==(s=u.value)?void 0:s.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",x?"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,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&U||d.delete(f.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};$&&L?await o(L):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.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 v.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:x})},!1,C),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:S})},"routeModule",0,j,"serverHooks",0,P,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,S],285421)},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)))}];
|
|
1
|
+
module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function n(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=n();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=n().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let n=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==n.length||r?{...t,adminUserIds:n}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(n().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,s,"removeAdmin",0,o,"requireAdmin",0,u])},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 n=e.headers.get("origin"),a=e.headers.get("referer");if(!n&&!a)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 n=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)n.add(`${t}://${e}${a}`);return n}(e.headers.get("host")??"");if(n)return s.has(n)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},285421,e=>{"use strict";var t=e.i(364564),r=e.i(102095),n=e.i(691091),a=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),m=e.i(682278),h=e.i(157569),f=e.i(844146),v=e.i(193695);e.i(105888);var R=e.i(530564),g=e.i(702414),w=e.i(286607),_=e.i(750227),A=e.i(660526),E=e.i(902157),y=e.i(402662),I=e.i(254226),N=e.i(583627);async function C(e){let t=await (0,I.requireUser)(e);if(!t.ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,N.ensureBootstrapAdmin)(t.user.id);let r=await (0,N.isAdmin)(t.user.id,t.user.email),n=await (0,N.listAdmins)(),a=r?function(){try{let e=_.default.join(process.env.HOME??A.default.homedir(),".wiki-viewer");(0,E.mkdirSync)(e,{recursive:!0});let t=new w.default(_.default.join(e,"auth.db"));return t.pragma("journal_mode = WAL"),t.prepare("SELECT id, email, name FROM user").all()}catch{return[]}}():[];return g.NextResponse.json({admins:n,isAdmin:r,users:a})}async function x(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,N.requireAdmin)(e);if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let n=await e.json();if(!n.userId?.trim())return g.NextResponse.json({error:"Missing userId"},{status:400});await (0,N.addAdmin)(n.userId.trim());let a=await (0,N.listAdmins)();return g.NextResponse.json({ok:!0,admins:a})}async function k(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,N.requireAdmin)(e);if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let n=await e.json();if(!n.userId?.trim())return g.NextResponse.json({error:"Missing userId"},{status:400});try{await (0,N.removeAdmin)(n.userId.trim())}catch(t){let e=t instanceof Error?t.message:String(t);if(e.startsWith("LAST_ADMIN"))return g.NextResponse.json({error:"LAST_ADMIN",message:e},{status:409});throw t}let a=await (0,N.listAdmins)();return g.NextResponse.json({ok:!0,admins:a})}e.s(["DELETE",0,k,"GET",0,C,"POST",0,x,"runtime",0,"nodejs"],37517);var T=e.i(37517);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/admins/route",pathname:"/api/system/admins",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/admins/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:S,serverHooks:U}=j;async function P(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),j.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/admins/route";g=g.replace(/\/index$/,"")||"/";let w=await j.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:_,params:A,nextConfig:E,parsedUrl:y,isDraftMode:I,prerenderManifest:N,routerServerContext:C,isOnDemandRevalidate:x,revalidateOnlyGenerated:k,resolvedPathname:T,clientReferenceManifest:O,serverActionsManifest:S}=w,U=(0,o.normalizeAppPath)(g),P=!!(N.dynamicRoutes[U]||N.routes[T]),q=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,y,!1):t.end("This page could not be found"),null);if(P&&!I){let e=!!N.routes[T],t=N.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new v.NoFallbackError}}let b=null;!P||j.isDev||I||(b="/index"===(b=T)?"/":b);let D=!0===j.isDev||!P,M=P&&!D;S&&O&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:S});let H=e.method||"GET",B=(0,s.getTracer)(),L=B.getActiveScopeSpan(),$=!!(null==C?void 0:C.isWrappedByNextServer),K=!!(0,a.getRequestMeta)(e,"minimalMode"),F=(0,a.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,N,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let W={params:A,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:F,cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>j.onRequestError(e,t,n,a,C)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>j.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.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 n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${H} ${g}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&x&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(z,G,s,W.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:x})},!1,C),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:k,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!P)return null;if((null==u||null==(s=u.value)?void 0:s.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",x?"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,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&P||d.delete(f.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};$&&L?await o(L):(a=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.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 v.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:x})},!1,C),P)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,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:S})},"routeModule",0,j,"serverHooks",0,U,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,S],285421)},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)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0rrf-jr._.js.map
|