wiki-viewer 2.17.0 → 2.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/wiki/app/route.js +6 -6
  37. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/[slug]/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/wiki/route.js +5 -5
  56. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/wiki/scratch/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/app/[slug]/[[...rest]]/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ovz0q._.js +4 -0
  68. package/.next/standalone/.next/server/chunks/[root-of-the-server]__04smpj8._.js +3 -0
  69. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09vw_yd._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0khd8u0._.js +5 -7
  71. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pftyle._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qwikxp._.js +2 -2
  73. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~q~4xc._.js +2 -2
  74. package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_0xy09r4._.js → 0~w0_katex_dist_katex_mjs_0t6hfzy._.js} +1 -1
  75. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hs37r-._.js → [root-of-the-server]__0gg-.v~._.js} +2 -2
  76. package/.next/standalone/.next/server/chunks/ssr/_0k6g8yo._.js +18 -18
  77. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_07z6xgj._.js → node_modules__pnpm_0-71x-j._.js} +1 -1
  78. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hn06p6._.js → node_modules__pnpm_0.-rpgq._.js} +1 -1
  79. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0sz5dcp._.js → node_modules__pnpm_0.cctde._.js} +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0.0y8dg._.js → node_modules__pnpm_02zw~h_._.js} +1 -1
  81. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_13hc3_.._.js → node_modules__pnpm_03qtb48._.js} +1 -1
  82. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0x-5nk_._.js → node_modules__pnpm_04.xj_.._.js} +2 -2
  83. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09g45.a._.js → node_modules__pnpm_0c414b2._.js} +1 -1
  84. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0e09a-z._.js → node_modules__pnpm_0c8gg~8._.js} +1 -1
  85. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0r.hmrh._.js → node_modules__pnpm_0fxz20v._.js} +1 -1
  86. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_10f188s._.js → node_modules__pnpm_0gqqzid._.js} +1 -1
  87. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08qpul6._.js → node_modules__pnpm_0izzet6._.js} +1 -1
  88. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04nkgqx._.js → node_modules__pnpm_0lrwvt7._.js} +2 -2
  89. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0sq.-3j._.js → node_modules__pnpm_0mgx7ud._.js} +2 -2
  90. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0o~aj4l._.js → node_modules__pnpm_0pdmyaz._.js} +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_12sg_v9._.js → node_modules__pnpm_0pqf~nv._.js} +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0k3~.84._.js → node_modules__pnpm_0rvh.bg._.js} +1 -1
  93. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0cgmua_._.js → node_modules__pnpm_0u97yk9._.js} +1 -1
  94. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0883dhq._.js → node_modules__pnpm_0wpvrc-._.js} +2 -2
  95. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09nd60w._.js → node_modules__pnpm_0ywf~mm._.js} +2 -2
  96. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0_dnupf._.js → node_modules__pnpm_0~82dm0._.js} +1 -1
  97. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_042hoyi._.js → node_modules__pnpm_0~_s5ha._.js} +1 -1
  98. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_03rdaxh._.js → node_modules__pnpm_10f4qpz._.js} +1 -1
  99. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0fby.xx._.js → node_modules__pnpm_114x37.._.js} +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0izpuu-._.js → node_modules__pnpm_12h2abk._.js} +1 -1
  101. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_133r6o8._.js → node_modules__pnpm_12tjs4x._.js} +1 -1
  102. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0asm~29._.js → node_modules__pnpm_12~1zv2._.js} +1 -1
  103. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0sa2k.e._.js → node_modules__pnpm_13er52c._.js} +2 -2
  104. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  105. package/.next/standalone/.next/server/pages/500.html +1 -1
  106. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  108. package/.next/standalone/.next/static/chunks/{0v32snen~_e9n.css → 0-cls2jl5dv52.css} +1 -1
  109. package/.next/standalone/.next/static/chunks/{17bpqqaflajl~.js → 144gewald~_d3.js} +18 -18
  110. package/.next/standalone/.test-floor +1 -1
  111. package/.next/standalone/isometric-codebase-map.html +1 -1
  112. package/.next/standalone/isometric-codebase-map.json +1 -1
  113. package/.next/standalone/package.json +1 -1
  114. package/.next/standalone/server.js +1 -1
  115. package/package.json +1 -1
  116. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wh2~l1._.js +0 -3
  117. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yqf3ec._.js +0 -4
  118. /package/.next/standalone/.next/static/{KRKPuzz8vrMWZ0HNKmF4W → mgmXU8yiKNFpuBzAAefbK}/_buildManifest.js +0 -0
  119. /package/.next/standalone/.next/static/{KRKPuzz8vrMWZ0HNKmF4W → mgmXU8yiKNFpuBzAAefbK}/_clientMiddlewareManifest.js +0 -0
  120. /package/.next/standalone/.next/static/{KRKPuzz8vrMWZ0HNKmF4W → mgmXU8yiKNFpuBzAAefbK}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||r.SYNTHETIC_USER_IDS.has(e)||((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,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},256294,296555,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),a=e.i(912714),n=e.i(750227),i=e.i(660526);e.i(902157);let o=RegExp("[;|&$`<>(){}\\n\\r\\0]");function l(e){let{target:t,mountpoint:r,port:s}=e,a=t.user?`${t.user}@`:"",n=[`${a}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&n.push("-p",String(s));let i=e.authMethod??"agent";!e.authMethod&&(null!=e.password?i="password":e.keyPath&&(i="keyfile"));let o=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&o.push("ro"),"keyfile"===i&&e.keyPath&&(o.push(`IdentityFile=${e.keyPath}`),o.push("IdentitiesOnly=yes")),"password"===i){let e=o.indexOf("BatchMode=yes");e>=0&&o.splice(e,1),o.push("password_stdin"),o.push("PreferredAuthentications=password,keyboard-interactive"),o.push("PubkeyAuthentication=no"),o.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&o.push(...e.extraOptions),n.push("-o",o.join(",")),n}e.s(["buildSshfsArgs",0,l,"isValidKeyPath",0,function(e){return!(!e||o.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||o.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let a=r.slice(0,s),n=r.slice(s+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=a,l=a.indexOf("@");return l>=0&&(t=a.slice(0,l),i=a.slice(l+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null}],296555);let u=(0,s.promisify)(r.execFile);function c(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function p(){if(!0!==t)try{await u("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let s=n.default.resolve(t),i=!1;try{i=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,a=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(a),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(a),t(!1))})}))}async function h(e){await p(),await (0,a.mkdir)(e.mountpoint,{recursive:!0});let t=l(e);if(await new Promise((s,a)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await u(e,r);break}catch{}try{await (0,a.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,p,"isMounted",0,d,"mountSshfs",0,h,"mountpointFor",0,function(e){return n.default.join(c(),e)},"mountsDir",0,c,"unmountSshfs",0,f],256294)},536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function a(e,n,i={}){let o;if(!e)return null;let l=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(n);if(null===l)return null;if(i.deniedSegments?.length){for(let e of l.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{o=await (0,t.realpath)(e)}catch{return null}let u=l?r.default.join(o,l):o;try{let e=await (0,t.realpath)(u),a=r.default.relative(o,e);if(s(a))return null;return{relPath:l,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let a=r.default.dirname(e);if(a===e)break;try{let e=await (0,t.realpath)(a),n=r.default.relative(o,e);if(s(n))return null;return{relPath:l,absolutePath:u}}catch{e=a}}return null}}e.s(["resolveWorkspacePath",0,a])},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"))},848475,e=>{"use strict";var t=e.i(750227);let r={".md":"text/markdown; charset=utf-8",".markdown":"text/markdown; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8",".jsonc":"application/json; charset=utf-8",".ts":"text/typescript; charset=utf-8",".tsx":"text/typescript; charset=utf-8",".mts":"text/typescript; charset=utf-8",".js":"text/javascript; charset=utf-8",".jsx":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".html":"text/html; charset=utf-8",".htm":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".yaml":"text/yaml; charset=utf-8",".yml":"text/yaml; charset=utf-8",".toml":"text/toml; charset=utf-8",".xml":"application/xml; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".ico":"image/x-icon",".bmp":"image/bmp",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".py":"text/x-python; charset=utf-8",".rs":"text/x-rustsrc; charset=utf-8",".go":"text/x-go; charset=utf-8",".sh":"text/x-shellscript; charset=utf-8",".csv":"text/csv; charset=utf-8",".tsv":"text/tab-separated-values; charset=utf-8",".env":"text/plain; charset=utf-8",".log":"text/plain; charset=utf-8",".ini":"text/plain; charset=utf-8",".conf":"text/plain; charset=utf-8",".mmd":"text/plain; charset=utf-8",".ipynb":"application/json; charset=utf-8",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".doc":"application/msword",".xls":"application/vnd.ms-excel",".ppt":"application/vnd.ms-powerpoint",".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"};e.s(["contentTypeForPath",0,function(e){return r[t.default.extname(e).toLowerCase()]??"application/octet-stream"}])},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),a=e.i(761095),n=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let c="__hosted_apps__",p=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return n.default.join(e,".wiki-viewer")}function f(){return n.default.join(h(),"hosted-apps.json")}async function m(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function v(){let e=await m();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function w(){let e=await m();return e?.apps??[]}async function y(e){let t=await m();return t?t.apps.find(t=>t.slug===e)??null:null}async function x(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:p.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(c,async()=>{let t=await v(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function _(e,t){return(0,u.withFileMutex)(c,async()=>{let r=await m();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function b(e){return(0,u.withFileMutex)(c,async()=>{let t=await m();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,x,"deleteHostedApp",0,b,"getBySlug",0,y,"listHostedApps",0,w,"setHostedAppPersist",0,_],762512);var P=e.i(359211);let E=new Map,k=new Set,R=new Map;function S(e){return`${e.workspaceId}\0${e.relPath}`}function I(e){let t=e.watcher;e.watcher=null,t&&t.close()}function A(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function T(e,t){return new Promise(r=>{let s=(0,a.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function N(e){let[t,r]=await Promise.all([T(e,"127.0.0.1"),T(e,"::1")]);return t||r}async function C(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await N(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function j(e){let t=n.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return O(t,"start")?"start":O(t,"preview")&&(0,r.existsSync)(n.default.join(e,"dist"))?"preview":O(t,"dev")?"dev":null}function D(){let e=n.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(n.default.delimiter).includes(e)?t:`${e}${n.default.delimiter}${t}`}function M(e,t){e.restartTimer||e.abort.signal.aborted||(R.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,E.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||q(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function $(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>n.default.relative(e.absPath,t).split(n.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(E.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(A(e),e.status="restarting",M(e,t))}))}async function q(e,s,o,l,u){var c;let p=S({workspaceId:e,relPath:s}),d=u?.persist===!0,h=E.get(p);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),I(h),A(h),E.delete(p)),k.delete(p);let f=await new Promise((e,t)=>{let r=(0,a.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),m=(0,r.existsSync)(n.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(n.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(n.default.join(o,"bun.lockb"))||(0,r.existsSync)(n.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let a=j(e);if(!a)return null;let n=a.scripts??{},i=Object.keys({...a.dependencies,...a.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return O(n,s)?l(s):null;let u=U(e,n);return u?l(u):a.main?{bin:"node",args:[a.main,...o],isVite:!1}:null}(o,m,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let v=R.get(p);R.delete(p);let w={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:v??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};E.set(p,w);let y=e=>{w.logs.push(e),w.logs.length>200&&w.logs.shift()};try{(0,r.existsSync)(n.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${m} install…`),await (c=w.abort.signal,new Promise((e,r)=>{if(c.aborted)return void r(Error("Install aborted"));let s=[],a=e=>{y(e),s.push(e)},n=(0,t.spawn)(m,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:D()}}),i=()=>{try{n.kill("SIGTERM")}catch{}};c.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&a(e)}};n.stdout?.on("data",l),n.stderr?.on("data",l),n.on("error",e=>{c.removeEventListener("abort",i),r(e)}),n.on("exit",t=>{if(c.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${m} install failed (exit ${t}):
2
- ${e}`))}})}))),w.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:D(),PORT:String(f),VITE_PORT:String(f)}});w.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(E.get(p)===w&&"stopped"!==w.status&&!w.abort.signal.aborted){if(w.process=null,w.persist&&0!==e&&null!==e){let t=i(w.supervision,{type:"crash",detail:`exit ${e}`});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,p)):(w.status="error",w.error=w.supervision.lastError);return}w.status=0===e||null===e?"stopped":"error",w.error=e?`Process exited with code ${e}`:void 0}}),C(w).then(t=>{if(E.get(p)===w&&!w.abort.signal.aborted)if(t)w.status="running",w.supervision={...w.supervision,status:"running"},$(w,p);else if(w.persist){let t=i(w.supervision,{type:"crash",detail:"readiness timeout"});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,p)):(w.status="error",w.error=w.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{w.status="error",w.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw E.get(p)===w&&(w.status="error",w.error=e instanceof Error?e.message:String(e)),e}}async function W(e,t,r,s,a=!0){let n=S({workspaceId:e,relPath:t}),o=E.get(n);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=a,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,A(o),o.status="restarting",M(o,n),{port:o.port}):q(e,t,r,s,{persist:a})}async function H(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await w()).filter(e=>"node"===e.type&&!0===e.persist)){let t=S({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,P.getWorkspace)(e.workspaceId),a=s?(0,P.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!a||!(0,r.existsSync)(a)){k.add(t);continue}try{await q(e.workspaceId,e.relPath,a,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&H(),e.s(["getScripts",0,function(e){let t=j(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:U(e,r)}},"getStatus",0,function(e,t){let r=E.get(S({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:k.has(S({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),a=E.get(S({workspaceId:e,relPath:s}));if(a&&"running"===a.status&&a.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:a.port,rest:e}}}return null},"restartApp",0,W,"setAppPersistence",0,function(e,t,r,s){let a=S({workspaceId:e,relPath:t}),n=E.get(a);n&&(n.persist=s,n.absPath=r,s?$(n,a):I(n))},"startApp",0,q,"stopApp",0,function(e,t){let r=S({workspaceId:e,relPath:t}),s=E.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,I(s),s.status="stopped",E.delete(r),A(s))}],345212)},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},526798,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),a=e.i(457789),n=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),c=e.i(62749),p=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),g=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(912714),y=e.i(351216),x=e.i(723012),_=e.i(345212),b=e.i(762512);async function P(e){let t=await (0,b.getBySlug)(e);if(!t)return null;if("html"===t.type)return{kind:"html",entry:t,workspaceId:t.workspaceId,relPath:t.relPath};let r=(0,_.getStatus)(t.workspaceId,t.relPath);return{kind:"node",entry:t,workspaceId:t.workspaceId,relPath:t.relPath,port:r.port,status:r.status}}var E=e.i(536654),k=e.i(716234),R=e.i(848475),S=e.i(583627),I=e.i(254226),A=e.i(359211);async function T(e,t){let r=await (0,A.getWorkspace)(t);if(!r)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"===process.env.WIKI_NO_AUTH)return null;let s=await (0,I.requireUser)(e);if(!s.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let a=await (0,S.isAdmin)(s.user.id,s.user.email);return(0,A.userCanAccess)(r,s.user.id,a)?null:y.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}async function N(e,t,r){let s=r.filter(Boolean).join("/"),a=await (0,E.resolveWorkspacePath)(e,t,{deniedSegments:k.DENIED_SEGMENTS});if(!a)return y.NextResponse.json({error:"Invalid path"},{status:400});let n=!1;try{n=(await (0,w.stat)(a.absolutePath)).isFile()}catch{return y.NextResponse.json({error:"File not found"},{status:404})}let i=n?t.split("/").slice(0,-1).join("/"):t,o=n?t:`${t}/index.html`.replace(/\/+/g,"/").replace(/^\//,""),l=""===s?o:[i,s].filter(Boolean).join("/"),u=await (0,E.resolveWorkspacePath)(e,l,{deniedSegments:k.DENIED_SEGMENTS});if(!u)return y.NextResponse.json({error:"Invalid path"},{status:400});try{if((await (0,w.stat)(u.absolutePath)).isDirectory()){let t=await (0,E.resolveWorkspacePath)(e,`${l}/index.html`,{deniedSegments:k.DENIED_SEGMENTS});if(!t)return y.NextResponse.json({error:"Not found"},{status:404});let r=await (0,w.readFile)(t.absolutePath);return new Response(new Uint8Array(r),{headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}})}let t=await (0,w.readFile)(u.absolutePath);return new Response(new Uint8Array(t),{headers:{"Content-Type":(0,R.contentTypeForPath)(u.absolutePath),"Cache-Control":"private, max-age=60"}})}catch{return y.NextResponse.json({error:"File not found"},{status:404})}}async function C(e,{params:t}){let{slug:r,rest:s}=await t,a=await P(r);if(!a)return y.NextResponse.json({error:"SLUG_NOT_FOUND"},{status:404});let n=await T(e,a.workspaceId);if(n)return n;let i=await (0,A.getWorkspace)(a.workspaceId);if(!i)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("html"===a.kind)return N(i.rootDir,a.relPath,s??[]);if(!a.port||"running"!==a.status)return new Response(`<!doctype html><meta charset="utf-8"><title>App stopped</title><body style="font:14px system-ui;padding:2rem;color:#444"><h1 style="font-size:1.1rem">This app is not running</h1><p>The hosted app <code>${r}</code> is stopped. Start it from the Hosted Apps section in the sidebar, then reload.</p></body>`,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}});let o="/"+(s??[]).filter(Boolean).join("/");return(0,x.forwardToChild)(e,{port:a.port,rest:o,proxyBase:`/app/${r}`})}e.s(["DELETE",0,C,"GET",0,C,"HEAD",0,C,"OPTIONS",0,C,"PATCH",0,C,"POST",0,C,"PUT",0,C,"dynamic",0,"force-dynamic"],512415);var j=e.i(512415);let O=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/app/[slug]/[[...rest]]/route",pathname:"/app/[slug]/[[...rest]]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/app/[slug]/[[...rest]]/route.ts",nextConfigOutput:"standalone",userland:j,...{}}),{workAsyncStorage:U,workUnitAsyncStorage:D,serverHooks:M}=O;async function $(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),O.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/app/[slug]/[[...rest]]/route";w=w.replace(/\/index$/,"")||"/";let y=await O.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:x,params:_,nextConfig:b,parsedUrl:P,isDraftMode:E,prerenderManifest:k,routerServerContext:R,isOnDemandRevalidate:S,revalidateOnlyGenerated:I,resolvedPathname:A,clientReferenceManifest:T,serverActionsManifest:N}=y,C=(0,o.normalizeAppPath)(w),j=!!(k.dynamicRoutes[C]||k.routes[A]),U=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,P,!1):t.end("This page could not be found"),null);if(j&&!E){let e=!!k.routes[A],t=k.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!j||O.isDev||E||(D="/index"===(D=A)?"/":D);let M=!0===O.isDev||!j,$=j&&!M;N&&T&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:N});let q=e.method||"GET",W=(0,n.getTracer)(),H=W.getActiveScopeSpan(),F=!!(null==R?void 0:R.isWrappedByNextServer),L=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,b,k,L);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let B={params:_,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:b.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>O.onRequestError(e,t,s,a,R)},sharedContext:{buildId:x}},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=>O.handle(V,B).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")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${q} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${q} ${w}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&S&&I&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!j)return await (0,d.sendResponse)(z,G,n,B.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!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await O.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,R),t}},u=await O.handleResponse({req:e,nextConfig:b,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:I,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:L});if(!j)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});L||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&j||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(z,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};F&&H?await o(H):(a=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${w}`,kind:n.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof g.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,R),j)throw t;return await (0,d.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,$,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:D})},"routeModule",0,O,"serverHooks",0,M,"workAsyncStorage",0,U,"workUnitAsyncStorage",0,D],526798)},282139,e=>{e.v(e=>Promise.resolve().then(()=>e(351216)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_auth_api-key_ts_0t_ma-t._.js"].map(t=>e.l(t))).then(()=>t(499465)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||r.SYNTHETIC_USER_IDS.has(e)||((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,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},256294,296555,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),a=e.i(912714),n=e.i(750227),i=e.i(660526);e.i(902157);let o=RegExp("[;|&$`<>(){}\\n\\r\\0]");function l(e){let{target:t,mountpoint:r,port:s}=e,a=t.user?`${t.user}@`:"",n=[`${a}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&n.push("-p",String(s));let i=e.authMethod??"agent";!e.authMethod&&(null!=e.password?i="password":e.keyPath&&(i="keyfile"));let o=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&o.push("ro"),"keyfile"===i&&e.keyPath&&(o.push(`IdentityFile=${e.keyPath}`),o.push("IdentitiesOnly=yes")),"password"===i){let e=o.indexOf("BatchMode=yes");e>=0&&o.splice(e,1),o.push("password_stdin"),o.push("PreferredAuthentications=password,keyboard-interactive"),o.push("PubkeyAuthentication=no"),o.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&o.push(...e.extraOptions),n.push("-o",o.join(",")),n}e.s(["buildSshfsArgs",0,l,"isValidKeyPath",0,function(e){return!(!e||o.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||o.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let a=r.slice(0,s),n=r.slice(s+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=a,l=a.indexOf("@");return l>=0&&(t=a.slice(0,l),i=a.slice(l+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null}],296555);let u=(0,s.promisify)(r.execFile);function c(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function p(){if(!0!==t)try{await u("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let s=n.default.resolve(t),i=!1;try{i=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,a=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(a),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(a),t(!1))})}))}async function h(e){await p(),await (0,a.mkdir)(e.mountpoint,{recursive:!0});let t=l(e);if(await new Promise((s,a)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await u(e,r);break}catch{}try{await (0,a.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,p,"isMounted",0,d,"mountSshfs",0,h,"mountpointFor",0,function(e){return n.default.join(c(),e)},"mountsDir",0,c,"unmountSshfs",0,f],256294)},536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function a(e,n,i={}){let o;if(!e)return null;let l=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(n);if(null===l)return null;if(i.deniedSegments?.length){for(let e of l.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{o=await (0,t.realpath)(e)}catch{return null}let u=l?r.default.join(o,l):o;try{let e=await (0,t.realpath)(u),a=r.default.relative(o,e);if(s(a))return null;return{relPath:l,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let a=r.default.dirname(e);if(a===e)break;try{let e=await (0,t.realpath)(a),n=r.default.relative(o,e);if(s(n))return null;return{relPath:l,absolutePath:u}}catch{e=a}}return null}}e.s(["resolveWorkspacePath",0,a])},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"))},848475,e=>{"use strict";var t=e.i(750227);let r={".md":"text/markdown; charset=utf-8",".markdown":"text/markdown; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8",".jsonc":"application/json; charset=utf-8",".ts":"text/typescript; charset=utf-8",".tsx":"text/typescript; charset=utf-8",".mts":"text/typescript; charset=utf-8",".js":"text/javascript; charset=utf-8",".jsx":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".html":"text/html; charset=utf-8",".htm":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".yaml":"text/yaml; charset=utf-8",".yml":"text/yaml; charset=utf-8",".toml":"text/toml; charset=utf-8",".xml":"application/xml; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".ico":"image/x-icon",".bmp":"image/bmp",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".py":"text/x-python; charset=utf-8",".rs":"text/x-rustsrc; charset=utf-8",".go":"text/x-go; charset=utf-8",".sh":"text/x-shellscript; charset=utf-8",".csv":"text/csv; charset=utf-8",".tsv":"text/tab-separated-values; charset=utf-8",".env":"text/plain; charset=utf-8",".log":"text/plain; charset=utf-8",".ini":"text/plain; charset=utf-8",".conf":"text/plain; charset=utf-8",".mmd":"text/plain; charset=utf-8",".ipynb":"application/json; charset=utf-8",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".doc":"application/msword",".xls":"application/vnd.ms-excel",".ppt":"application/vnd.ms-powerpoint",".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"};e.s(["contentTypeForPath",0,function(e){return r[t.default.extname(e).toLowerCase()]??"application/octet-stream"}])},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),a=e.i(761095),n=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let c="__hosted_apps__",p=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return n.default.join(e,".wiki-viewer")}function f(){return n.default.join(h(),"hosted-apps.json")}async function m(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function v(){let e=await m();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function w(){let e=await m();return e?.apps??[]}async function y(e){let t=await m();return t?t.apps.find(t=>t.slug===e)??null:null}async function x(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:p.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(c,async()=>{let t=await v(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function _(e,t){return(0,u.withFileMutex)(c,async()=>{let r=await m();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function P(e){return(0,u.withFileMutex)(c,async()=>{let t=await m();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,x,"deleteHostedApp",0,P,"getBySlug",0,y,"listHostedApps",0,w,"setHostedAppPersist",0,_],762512);var b=e.i(359211);let E=new Map,R=new Set,k=new Map;function S(e){return`${e.workspaceId}\0${e.relPath}`}function A(e){let t=e.watcher;e.watcher=null,t&&t.close()}function I(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function T(e,t){return new Promise(r=>{let s=(0,a.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function N(e){let[t,r]=await Promise.all([T(e,"127.0.0.1"),T(e,"::1")]);return t||r}async function C(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await N(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function j(e){let t=n.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return O(t,"start")?"start":O(t,"preview")&&(0,r.existsSync)(n.default.join(e,"dist"))?"preview":O(t,"dev")?"dev":null}function D(){let e=n.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(n.default.delimiter).includes(e)?t:`${e}${n.default.delimiter}${t}`}function M(e,t){e.restartTimer||e.abort.signal.aborted||(k.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,E.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||q(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function $(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>n.default.relative(e.absPath,t).split(n.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(E.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(I(e),e.status="restarting",M(e,t))}))}async function q(e,s,o,l,u){var c;let p=S({workspaceId:e,relPath:s}),d=u?.persist===!0,h=E.get(p);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),A(h),I(h),E.delete(p)),R.delete(p);let f=await new Promise((e,t)=>{let r=(0,a.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),m=(0,r.existsSync)(n.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(n.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(n.default.join(o,"bun.lockb"))||(0,r.existsSync)(n.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let a=j(e);if(!a)return null;let n=a.scripts??{},i=Object.keys({...a.dependencies,...a.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return O(n,s)?l(s):null;let u=U(e,n);return u?l(u):a.main?{bin:"node",args:[a.main,...o],isVite:!1}:null}(o,m,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let v=k.get(p);k.delete(p);let w={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:v??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};E.set(p,w);let y=e=>{w.logs.push(e),w.logs.length>200&&w.logs.shift()};try{(0,r.existsSync)(n.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${m} install…`),await (c=w.abort.signal,new Promise((e,r)=>{if(c.aborted)return void r(Error("Install aborted"));let s=[],a=e=>{y(e),s.push(e)},n=(0,t.spawn)(m,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:D()}}),i=()=>{try{n.kill("SIGTERM")}catch{}};c.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&a(e)}};n.stdout?.on("data",l),n.stderr?.on("data",l),n.on("error",e=>{c.removeEventListener("abort",i),r(e)}),n.on("exit",t=>{if(c.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${m} install failed (exit ${t}):
2
+ ${e}`))}})}))),w.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:D(),PORT:String(f),VITE_PORT:String(f)}});w.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(E.get(p)===w&&"stopped"!==w.status&&!w.abort.signal.aborted){if(w.process=null,w.persist&&0!==e&&null!==e){let t=i(w.supervision,{type:"crash",detail:`exit ${e}`});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,p)):(w.status="error",w.error=w.supervision.lastError);return}w.status=0===e||null===e?"stopped":"error",w.error=e?`Process exited with code ${e}`:void 0}}),C(w).then(t=>{if(E.get(p)===w&&!w.abort.signal.aborted)if(t)w.status="running",w.supervision={...w.supervision,status:"running"},$(w,p);else if(w.persist){let t=i(w.supervision,{type:"crash",detail:"readiness timeout"});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,p)):(w.status="error",w.error=w.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{w.status="error",w.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw E.get(p)===w&&(w.status="error",w.error=e instanceof Error?e.message:String(e)),e}}async function W(e,t,r,s,a=!0){let n=S({workspaceId:e,relPath:t}),o=E.get(n);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=a,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,I(o),o.status="restarting",M(o,n),{port:o.port}):q(e,t,r,s,{persist:a})}async function H(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await w()).filter(e=>"node"===e.type&&!0===e.persist)){let t=S({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,b.getWorkspace)(e.workspaceId),a=s?(0,b.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!a||!(0,r.existsSync)(a)){R.add(t);continue}try{await q(e.workspaceId,e.relPath,a,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&H(),e.s(["ROOT_APP_PROXY_SEGMENT",0,"~root","getScripts",0,function(e){let t=j(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:U(e,r)}},"getStatus",0,function(e,t){let r=E.get(S({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:R.has(S({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),a=E.get(S({workspaceId:e,relPath:s}));if(a&&"running"===a.status&&a.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:a.port,rest:e}}}return null},"resolveRootApp",0,function(e,t){let r=E.get(S({workspaceId:e,relPath:""}));return r&&"running"===r.status&&r.port?{relPath:"",port:r.port,rest:"/"+t.filter(Boolean).join("/")}:null},"restartApp",0,W,"setAppPersistence",0,function(e,t,r,s){let a=S({workspaceId:e,relPath:t}),n=E.get(a);n&&(n.persist=s,n.absPath=r,s?$(n,a):A(n))},"startApp",0,q,"stopApp",0,function(e,t){let r=S({workspaceId:e,relPath:t}),s=E.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,A(s),s.status="stopped",E.delete(r),I(s))}],345212)},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},526798,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),a=e.i(457789),n=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),c=e.i(62749),p=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),g=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(912714),y=e.i(351216),x=e.i(723012),_=e.i(345212),P=e.i(762512);async function b(e){let t=await (0,P.getBySlug)(e);if(!t)return null;if("html"===t.type)return{kind:"html",entry:t,workspaceId:t.workspaceId,relPath:t.relPath};let r=(0,_.getStatus)(t.workspaceId,t.relPath);return{kind:"node",entry:t,workspaceId:t.workspaceId,relPath:t.relPath,port:r.port,status:r.status}}var E=e.i(536654),R=e.i(716234),k=e.i(848475),S=e.i(583627),A=e.i(254226),I=e.i(359211);async function T(e,t){let r=await (0,I.getWorkspace)(t);if(!r)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"===process.env.WIKI_NO_AUTH)return null;let s=await (0,A.requireUser)(e);if(!s.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let a=await (0,S.isAdmin)(s.user.id,s.user.email);return(0,I.userCanAccess)(r,s.user.id,a)?null:y.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}async function N(e,t,r){let s=r.filter(Boolean).join("/"),a=await (0,E.resolveWorkspacePath)(e,t,{deniedSegments:R.DENIED_SEGMENTS});if(!a)return y.NextResponse.json({error:"Invalid path"},{status:400});let n=!1;try{n=(await (0,w.stat)(a.absolutePath)).isFile()}catch{return y.NextResponse.json({error:"File not found"},{status:404})}let i=n?t.split("/").slice(0,-1).join("/"):t,o=n?t:`${t}/index.html`.replace(/\/+/g,"/").replace(/^\//,""),l=""===s?o:[i,s].filter(Boolean).join("/"),u=await (0,E.resolveWorkspacePath)(e,l,{deniedSegments:R.DENIED_SEGMENTS});if(!u)return y.NextResponse.json({error:"Invalid path"},{status:400});try{if((await (0,w.stat)(u.absolutePath)).isDirectory()){let t=await (0,E.resolveWorkspacePath)(e,`${l}/index.html`,{deniedSegments:R.DENIED_SEGMENTS});if(!t)return y.NextResponse.json({error:"Not found"},{status:404});let r=await (0,w.readFile)(t.absolutePath);return new Response(new Uint8Array(r),{headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}})}let t=await (0,w.readFile)(u.absolutePath);return new Response(new Uint8Array(t),{headers:{"Content-Type":(0,k.contentTypeForPath)(u.absolutePath),"Cache-Control":"private, max-age=60"}})}catch{return y.NextResponse.json({error:"File not found"},{status:404})}}async function C(e,{params:t}){let{slug:r,rest:s}=await t,a=await b(r);if(!a)return y.NextResponse.json({error:"SLUG_NOT_FOUND"},{status:404});let n=await T(e,a.workspaceId);if(n)return n;let i=await (0,I.getWorkspace)(a.workspaceId);if(!i)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("html"===a.kind)return N(i.rootDir,a.relPath,s??[]);if(!a.port||"running"!==a.status)return new Response(`<!doctype html><meta charset="utf-8"><title>App stopped</title><body style="font:14px system-ui;padding:2rem;color:#444"><h1 style="font-size:1.1rem">This app is not running</h1><p>The hosted app <code>${r}</code> is stopped. Start it from the Hosted Apps section in the sidebar, then reload.</p></body>`,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}});let o="/"+(s??[]).filter(Boolean).join("/");return(0,x.forwardToChild)(e,{port:a.port,rest:o,proxyBase:`/app/${r}`})}e.s(["DELETE",0,C,"GET",0,C,"HEAD",0,C,"OPTIONS",0,C,"PATCH",0,C,"POST",0,C,"PUT",0,C,"dynamic",0,"force-dynamic"],512415);var j=e.i(512415);let O=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/app/[slug]/[[...rest]]/route",pathname:"/app/[slug]/[[...rest]]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/app/[slug]/[[...rest]]/route.ts",nextConfigOutput:"standalone",userland:j,...{}}),{workAsyncStorage:U,workUnitAsyncStorage:D,serverHooks:M}=O;async function $(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),O.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/app/[slug]/[[...rest]]/route";w=w.replace(/\/index$/,"")||"/";let y=await O.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:x,params:_,nextConfig:P,parsedUrl:b,isDraftMode:E,prerenderManifest:R,routerServerContext:k,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,resolvedPathname:I,clientReferenceManifest:T,serverActionsManifest:N}=y,C=(0,o.normalizeAppPath)(w),j=!!(R.dynamicRoutes[C]||R.routes[I]),U=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,b,!1):t.end("This page could not be found"),null);if(j&&!E){let e=!!R.routes[I],t=R.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(P.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!j||O.isDev||E||(D="/index"===(D=I)?"/":D);let M=!0===O.isDev||!j,$=j&&!M;N&&T&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:N});let q=e.method||"GET",W=(0,n.getTracer)(),H=W.getActiveScopeSpan(),F=!!(null==k?void 0:k.isWrappedByNextServer),L=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,P,R,L);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let B={params:_,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!P.experimental.authInterrupts},cacheComponents:!!P.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:P.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>O.onRequestError(e,t,s,a,k)},sharedContext:{buildId:x}},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=>O.handle(V,B).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")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${q} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${q} ${w}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&S&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!j)return await (0,d.sendResponse)(z,G,n,B.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!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await O.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,k),t}},u=await O.handleResponse({req:e,nextConfig:P,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:L});if(!j)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});L||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&j||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(z,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};F&&H?await o(H):(a=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(c.BaseServerSpan.handleRequest,{spanName:`${q} ${w}`,kind:n.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof g.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,k),j)throw t;return await (0,d.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,$,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:D})},"routeModule",0,O,"serverHooks",0,M,"workAsyncStorage",0,U,"workUnitAsyncStorage",0,D],526798)},282139,e=>{e.v(e=>Promise.resolve().then(()=>e(351216)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_auth_api-key_ts_0t_ma-t._.js"].map(t=>e.l(t))).then(()=>t(499465)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__09vw_yd._.js.map
@@ -136,11 +136,9 @@ ${n}`:o.stack}(A,L):A&&"object"==typeof A&&Error.captureStackTrace(A,e.exports.f
136
136
  <base href="${e}/">`);let r=`<script>
137
137
  (function(){
138
138
  var BASE = ${JSON.stringify(e)};
139
- // 1. Normalize initial URL: BrowserRouter will see "/" not the proxy path
140
- var _loc = location.pathname;
141
- if (_loc.startsWith(BASE)) {
142
- history.replaceState(history.state, '', _loc.slice(BASE.length) || '/');
143
- }
139
+ // 1. Expose the base path; the proxy prefix stays in the URL bar so /app/<slug>
140
+ // remains the real, reloadable app URL.
141
+ window.__WIKI_APP_BASE__ = BASE;
144
142
  // 2. Rewrite fetch() absolute paths through proxy (works on non-localhost HTTP)
145
143
  var _fetch = window.fetch;
146
144
  window.fetch = function(input, init) {
@@ -169,7 +167,7 @@ ${n}`:o.stack}(A,L):A&&"object"==typeof A&&Error.captureStackTrace(A,e.exports.f
169
167
  }
170
168
  })();
171
169
  </script>`;return t.replace(/<\/head>/i,`${r}
172
- </head>`)}function a(A,e,t,o=!1){let n={};for(let[e,t]of A.entries()){let A=e.toLowerCase();!r.has(A)&&(s.has(A)||(n[e]=t))}return n.host=`localhost:${e}`,n["x-forwarded-host"]=t.host,n["x-forwarded-proto"]=t.protocol.replace(":",""),o&&(n["accept-encoding"]="identity"),n}function g(A){let e=new Headers;for(let[t,s]of Object.entries(A))if(!(!s||r.has(t.toLowerCase())))for(let A of Array.isArray(s)?s:[s])e.append(t,A);return e}async function l(r,s){let{port:o,rest:l,proxyBase:Q}=s,E=new URL(r.url);if("/sw-proxy.js"===l)return new Response(`
170
+ </head>`)}function a(A,e,t,o=!1){let n={};for(let[e,t]of A.entries()){let A=e.toLowerCase();!r.has(A)&&(s.has(A)||(n[e]=t))}return n.host=`localhost:${e}`,n["x-forwarded-host"]=t.host,n["x-forwarded-proto"]=t.protocol.replace(":",""),o&&(n["accept-encoding"]="identity"),n}function g(A,e,t){let s=new Headers;for(let[o,n]of Object.entries(A)){if(!n||r.has(o.toLowerCase()))continue;let A=o.toLowerCase();for(let r of Array.isArray(n)?n:[n])s.append(o,"location"===A?function(A,e,t){try{let r=new URL(A);if("localhost"===r.hostname&&String(r.port)===String(t))return`${e}${r.pathname}${r.search}${r.hash}`;return A}catch{}return!A.startsWith("/")||A.startsWith("//")||A===e||A.startsWith(`${e}/`)?A:`${e}${A}`}(r,e,t):r)}return s}async function l(r,s){let{port:o,rest:l,proxyBase:Q}=s,E=new URL(r.url);if("/sw-proxy.js"===l)return new Response(`
173
171
  /* wiki-viewer injected service worker */
174
172
  const BASE = ${JSON.stringify(Q)};
175
173
  self.addEventListener("install", () => self.skipWaiting());
@@ -185,6 +183,6 @@ self.addEventListener("fetch", (event) => {
185
183
  body: ["GET","HEAD"].includes(event.request.method) ? undefined : event.request.body,
186
184
  credentials: event.request.credentials,
187
185
  }));
188
- });`.trim(),{status:200,headers:{"content-type":"application/javascript; charset=utf-8","service-worker-allowed":Q+"/","cache-control":"no-store"}});let h=`http://localhost:${o}${l}${E.search}`,B=r.method,I=["GET","HEAD"].includes(r.method);try{let A=await (0,t.request)(h,{method:B,headers:a(r.headers,o,E),body:I?null:r.body}),s=String(A.headers["content-type"]??"");if(s.includes("text/html")||s.includes("text/css")){A.body.resume();let e=await (0,t.request)(h,{method:I?B:"GET",headers:a(r.headers,o,E,!0),body:null}),l=await e.body.text(),C=g(e.headers);if(C.delete("content-encoding"),C.delete("content-length"),s.includes("text/html"))return C.set("content-type","text/html; charset=utf-8"),n(l,r,Q)??new Response(i(l,Q),{status:e.statusCode,headers:C});return C.set("content-type",s),new Response(l.replace(/url\((['"]?)\/(?!\/)/g,`url($1${Q}/`),{status:e.statusCode,headers:C})}let C=/\.[a-z0-9]{1,8}$/i.test(l.split("?")[0]);if(404===A.statusCode&&!C){A.body.resume();let e=await (0,t.request)(`http://localhost:${o}/`,{method:"GET",headers:a(r.headers,o,E,!0),body:null}),s=await e.body.text(),l=g(e.headers);return l.delete("content-encoding"),l.delete("content-length"),l.set("content-type","text/html; charset=utf-8"),n(s,r,Q)??new Response(i(s,Q),{status:200,headers:l})}if(new Set([101,204,205,304]).has(A.statusCode))return A.body.resume(),new Response(null,{status:A.statusCode,headers:g(A.headers)});return new Response(e.Readable.toWeb(A.body),{status:A.statusCode,headers:g(A.headers)})}catch(t){let{NextResponse:e}=await A.A(282139);return e.json({error:`Upstream unreachable: ${t}`},{status:502})}}A.s(["forwardToChild",0,l])}];
186
+ });`.trim(),{status:200,headers:{"content-type":"application/javascript; charset=utf-8","service-worker-allowed":Q+"/","cache-control":"no-store"}});let h=`http://localhost:${o}${l}${E.search}`,B=r.method,I=["GET","HEAD"].includes(r.method);try{let A=await (0,t.request)(h,{method:B,headers:a(r.headers,o,E),body:I?null:r.body}),s=String(A.headers["content-type"]??"");if(s.includes("text/html")||s.includes("text/css")){A.body.resume();let e=await (0,t.request)(h,{method:I?B:"GET",headers:a(r.headers,o,E,!0),body:null}),l=await e.body.text(),C=g(e.headers,Q,o);if(C.delete("content-encoding"),C.delete("content-length"),s.includes("text/html"))return C.set("content-type","text/html; charset=utf-8"),n(l,r,Q)??new Response(i(l,Q),{status:e.statusCode,headers:C});return C.set("content-type",s),new Response(l.replace(/url\((['"]?)\/(?!\/)/g,`url($1${Q}/`),{status:e.statusCode,headers:C})}let C=/\.[a-z0-9]{1,8}$/i.test(l.split("?")[0]);if(404===A.statusCode&&!C){A.body.resume();let e=await (0,t.request)(`http://localhost:${o}/`,{method:"GET",headers:a(r.headers,o,E,!0),body:null}),s=await e.body.text(),l=g(e.headers,Q,o);return l.delete("content-encoding"),l.delete("content-length"),l.set("content-type","text/html; charset=utf-8"),n(s,r,Q)??new Response(i(s,Q),{status:200,headers:l})}if(new Set([101,204,205,304]).has(A.statusCode))return A.body.resume(),new Response(null,{status:A.statusCode,headers:g(A.headers,Q,o)});return new Response(e.Readable.toWeb(A.body),{status:A.statusCode,headers:g(A.headers,Q,o)})}catch(t){let{NextResponse:e}=await A.A(282139);return e.json({error:`Upstream unreachable: ${t}`},{status:502})}}A.s(["forwardToChild",0,l])}];
189
187
 
190
188
  //# sourceMappingURL=%5Broot-of-the-server%5D__0khd8u0._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||r.SYNTHETIC_USER_IDS.has(e)||((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,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},256294,296555,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),n=e.i(912714),a=e.i(750227),i=e.i(660526);e.i(902157);let o=RegExp("[;|&$`<>(){}\\n\\r\\0]");function l(e){let{target:t,mountpoint:r,port:s}=e,n=t.user?`${t.user}@`:"",a=[`${n}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&a.push("-p",String(s));let i=e.authMethod??"agent";!e.authMethod&&(null!=e.password?i="password":e.keyPath&&(i="keyfile"));let o=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&o.push("ro"),"keyfile"===i&&e.keyPath&&(o.push(`IdentityFile=${e.keyPath}`),o.push("IdentitiesOnly=yes")),"password"===i){let e=o.indexOf("BatchMode=yes");e>=0&&o.splice(e,1),o.push("password_stdin"),o.push("PreferredAuthentications=password,keyboard-interactive"),o.push("PubkeyAuthentication=no"),o.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&o.push(...e.extraOptions),a.push("-o",o.join(",")),a}e.s(["buildSshfsArgs",0,l,"isValidKeyPath",0,function(e){return!(!e||o.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||o.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),a=r.slice(s+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=n,l=n.indexOf("@");return l>=0&&(t=n.slice(0,l),i=n.slice(l+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null}],296555);let u=(0,s.promisify)(r.execFile);function p(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function c(){if(!0!==t)try{await u("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let s=a.default.resolve(t),i=!1;try{i=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,n=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(n),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(n),t(!1))})}))}async function h(e){await c(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=l(e);if(await new Promise((s,n)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?s():n(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await u(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,c,"isMounted",0,d,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(p(),e)},"mountsDir",0,p,"unmountSshfs",0,f],256294)},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),n=e.headers.get("referer");if(!s&&!n)return null;let a=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)s.add(`${t}://${e}${n}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),n=e.i(761095),a=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let p="__hosted_apps__",c=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return a.default.join(e,".wiki-viewer")}function f(){return a.default.join(h(),"hosted-apps.json")}async function m(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function w(){let e=await m();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function v(){let e=await m();return e?.apps??[]}async function y(e){let t=await m();return t?t.apps.find(t=>t.slug===e)??null:null}async function _(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:c.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(p,async()=>{let t=await w(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function R(e,t){return(0,u.withFileMutex)(p,async()=>{let r=await m();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function I(e){return(0,u.withFileMutex)(p,async()=>{let t=await m();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,_,"deleteHostedApp",0,I,"getBySlug",0,y,"listHostedApps",0,v,"setHostedAppPersist",0,R],762512);var A=e.i(359211);let P=new Map,k=new Set,x=new Map;function E(e){return`${e.workspaceId}\0${e.relPath}`}function N(e){let t=e.watcher;e.watcher=null,t&&t.close()}function S(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function b(e,t){return new Promise(r=>{let s=(0,n.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function T(e){let[t,r]=await Promise.all([b(e,"127.0.0.1"),b(e,"::1")]);return t||r}async function O(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await T(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function C(e){let t=a.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function j(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return j(t,"start")?"start":j(t,"preview")&&(0,r.existsSync)(a.default.join(e,"dist"))?"preview":j(t,"dev")?"dev":null}function D(){let e=a.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(a.default.delimiter).includes(e)?t:`${e}${a.default.delimiter}${t}`}function $(e,t){e.restartTimer||e.abort.signal.aborted||(x.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,P.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||M(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function H(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>a.default.relative(e.absPath,t).split(a.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(P.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(S(e),e.status="restarting",$(e,t))}))}async function M(e,s,o,l,u){var p;let c=E({workspaceId:e,relPath:s}),d=u?.persist===!0,h=P.get(c);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),N(h),S(h),P.delete(c)),k.delete(c);let f=await new Promise((e,t)=>{let r=(0,n.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),m=(0,r.existsSync)(a.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(a.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(a.default.join(o,"bun.lockb"))||(0,r.existsSync)(a.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let n=C(e);if(!n)return null;let a=n.scripts??{},i=Object.keys({...n.dependencies,...n.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return j(a,s)?l(s):null;let u=U(e,a);return u?l(u):n.main?{bin:"node",args:[n.main,...o],isVite:!1}:null}(o,m,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let w=x.get(c);x.delete(c);let v={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:w??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};P.set(c,v);let y=e=>{v.logs.push(e),v.logs.length>200&&v.logs.shift()};try{(0,r.existsSync)(a.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${m} install…`),await (p=v.abort.signal,new Promise((e,r)=>{if(p.aborted)return void r(Error("Install aborted"));let s=[],n=e=>{y(e),s.push(e)},a=(0,t.spawn)(m,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:D()}}),i=()=>{try{a.kill("SIGTERM")}catch{}};p.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&n(e)}};a.stdout?.on("data",l),a.stderr?.on("data",l),a.on("error",e=>{p.removeEventListener("abort",i),r(e)}),a.on("exit",t=>{if(p.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${m} install failed (exit ${t}):
2
- ${e}`))}})}))),v.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:D(),PORT:String(f),VITE_PORT:String(f)}});v.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(P.get(c)===v&&"stopped"!==v.status&&!v.abort.signal.aborted){if(v.process=null,v.persist&&0!==e&&null!==e){let t=i(v.supervision,{type:"crash",detail:`exit ${e}`});v.supervision=t.state,"restart"===t.action?(v.status="restarting",$(v,c)):(v.status="error",v.error=v.supervision.lastError);return}v.status=0===e||null===e?"stopped":"error",v.error=e?`Process exited with code ${e}`:void 0}}),O(v).then(t=>{if(P.get(c)===v&&!v.abort.signal.aborted)if(t)v.status="running",v.supervision={...v.supervision,status:"running"},H(v,c);else if(v.persist){let t=i(v.supervision,{type:"crash",detail:"readiness timeout"});v.supervision=t.state,"restart"===t.action?(v.status="restarting",$(v,c)):(v.status="error",v.error=v.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{v.status="error",v.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw P.get(c)===v&&(v.status="error",v.error=e instanceof Error?e.message:String(e)),e}}async function W(e,t,r,s,n=!0){let a=E({workspaceId:e,relPath:t}),o=P.get(a);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=n,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,S(o),o.status="restarting",$(o,a),{port:o.port}):M(e,t,r,s,{persist:n})}async function q(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await v()).filter(e=>"node"===e.type&&!0===e.persist)){let t=E({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,A.getWorkspace)(e.workspaceId),n=s?(0,A.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!n||!(0,r.existsSync)(n)){k.add(t);continue}try{await M(e.workspaceId,e.relPath,n,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&q(),e.s(["getScripts",0,function(e){let t=C(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:U(e,r)}},"getStatus",0,function(e,t){let r=P.get(E({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:k.has(E({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),n=P.get(E({workspaceId:e,relPath:s}));if(n&&"running"===n.status&&n.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:n.port,rest:e}}}return null},"restartApp",0,W,"setAppPersistence",0,function(e,t,r,s){let n=E({workspaceId:e,relPath:t}),a=P.get(n);a&&(a.persist=s,a.absPath=r,s?H(a,n):N(a))},"startApp",0,M,"stopApp",0,function(e,t){let r=E({workspaceId:e,relPath:t}),s=P.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,N(s),s.status="stopped",P.delete(r),S(s))}],345212)},249567,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),n=e.i(457789),a=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),p=e.i(62749),c=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),g=e.i(193695);e.i(484264);var w=e.i(315709),v=e.i(902157),y=e.i(351216),_=e.i(402662),R=e.i(345212),I=e.i(762512),A=e.i(583627),P=e.i(254226),k=e.i(359211);async function x(e,{params:t}){var r;let s=(0,_.checkOrigin)(e);if(s)return s;let n="local",a=!0;if("1"!==process.env.WIKI_NO_AUTH){let t=await (0,P.requireUser)(e);if(!t.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});n=t.user.id,a=await (0,A.isAdmin)(t.user.id,t.user.email)}if(r=a,"1"!==process.env.WIKI_NO_AUTH&&"1"!==process.env.WIKI_ALLOW_APP_RUNNER&&!r)return y.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});let{slug:i}=await t,o=await (0,I.getBySlug)(i);if(!o)return y.NextResponse.json({error:"NOT_FOUND"},{status:404});if("node"!==o.type)return y.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let l=await (0,k.getWorkspace)(o.workspaceId);if(!l)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"!==process.env.WIKI_NO_AUTH&&!(0,k.userCanAccess)(l,n,a))return y.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let u=(await e.json().catch(()=>({}))).action;if("stop"===u)return(0,R.stopApp)(o.workspaceId,o.relPath),y.NextResponse.json({ok:!0,status:"stopped"});if("pin"===u||"unpin"===u){if("node"!==o.type)return y.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let e="pin"===u;if(!await (0,I.setHostedAppPersist)(o.slug,e))return y.NextResponse.json({error:"NOT_FOUND"},{status:404});let t=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);return t&&(0,R.setAppPersistence)(o.workspaceId,o.relPath,t,e),y.NextResponse.json({ok:!0,persist:e})}if("restart"===u){let e=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,v.existsSync)(e))return y.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,R.restartApp)(o.workspaceId,o.relPath,e,o.script,!0===o.persist);return y.NextResponse.json({ok:!0,status:"restarting",port:t.port})}catch(e){return y.NextResponse.json({error:String(e)},{status:500})}}if("start"===u){let e=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,v.existsSync)(e))return y.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,R.startApp)(o.workspaceId,o.relPath,e,o.script,{persist:!0===o.persist});return y.NextResponse.json({ok:!0,status:"starting",port:t.port})}catch(e){return y.NextResponse.json({error:String(e)},{status:500})}}return y.NextResponse.json({error:"INVALID_ACTION"},{status:400})}e.s(["POST",0,x],4065);var E=e.i(4065);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/hosted-apps/[slug]/route",pathname:"/api/wiki/hosted-apps/[slug]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/hosted-apps/[slug]/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:b,serverHooks:T}=N;async function O(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/hosted-apps/[slug]/route";v=v.replace(/\/index$/,"")||"/";let y=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:I,parsedUrl:A,isDraftMode:P,prerenderManifest:k,routerServerContext:x,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,resolvedPathname:b,clientReferenceManifest:T,serverActionsManifest:O}=y,C=(0,o.normalizeAppPath)(v),j=!!(k.dynamicRoutes[C]||k.routes[b]),U=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,A,!1):t.end("This page could not be found"),null);if(j&&!P){let e=!!k.routes[b],t=k.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!j||N.isDev||P||(D="/index"===(D=b)?"/":D);let $=!0===N.isDev||!j,H=j&&!$;O&&T&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:O});let M=e.method||"GET",W=(0,a.getTracer)(),q=W.getActiveScopeSpan(),L=!!(null==x?void 0:x.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,I,k,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let B={params:R,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:$,incrementalCache:F,cacheLifeProfiles:I.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>N.onRequestError(e,t,s,n,x)},sharedContext:{buildId:_}},G=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>N.handle(V,B).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")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${M} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${M} ${v}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&E&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!j)return await (0,d.sendResponse)(G,z,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,x),t}},u=await N.handleResponse({req:e,nextConfig:I,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!j)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.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",E?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),P&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&j||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(G,z,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};L&&q?await o(q):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(p.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:E})},!1,x),j)throw t;return await (0,d.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:b})},"routeModule",0,N,"serverHooks",0,T,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,b],249567)},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_auth_api-key_ts_0t_ma-t._.js"].map(t=>e.l(t))).then(()=>t(499465)))}];
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||r.SYNTHETIC_USER_IDS.has(e)||((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,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},256294,296555,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),n=e.i(912714),a=e.i(750227),i=e.i(660526);e.i(902157);let o=RegExp("[;|&$`<>(){}\\n\\r\\0]");function l(e){let{target:t,mountpoint:r,port:s}=e,n=t.user?`${t.user}@`:"",a=[`${n}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&a.push("-p",String(s));let i=e.authMethod??"agent";!e.authMethod&&(null!=e.password?i="password":e.keyPath&&(i="keyfile"));let o=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&o.push("ro"),"keyfile"===i&&e.keyPath&&(o.push(`IdentityFile=${e.keyPath}`),o.push("IdentitiesOnly=yes")),"password"===i){let e=o.indexOf("BatchMode=yes");e>=0&&o.splice(e,1),o.push("password_stdin"),o.push("PreferredAuthentications=password,keyboard-interactive"),o.push("PubkeyAuthentication=no"),o.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&o.push(...e.extraOptions),a.push("-o",o.join(",")),a}e.s(["buildSshfsArgs",0,l,"isValidKeyPath",0,function(e){return!(!e||o.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||o.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),a=r.slice(s+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=n,l=n.indexOf("@");return l>=0&&(t=n.slice(0,l),i=n.slice(l+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null}],296555);let u=(0,s.promisify)(r.execFile);function p(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function c(){if(!0!==t)try{await u("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let s=a.default.resolve(t),i=!1;try{i=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,n=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(n),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(n),t(!1))})}))}async function h(e){await c(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=l(e);if(await new Promise((s,n)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?s():n(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await u(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,c,"isMounted",0,d,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(p(),e)},"mountsDir",0,p,"unmountSshfs",0,f],256294)},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),n=e.headers.get("referer");if(!s&&!n)return null;let a=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)s.add(`${t}://${e}${n}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),n=e.i(761095),a=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let p="__hosted_apps__",c=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return a.default.join(e,".wiki-viewer")}function f(){return a.default.join(h(),"hosted-apps.json")}async function m(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function w(){let e=await m();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function v(){let e=await m();return e?.apps??[]}async function y(e){let t=await m();return t?t.apps.find(t=>t.slug===e)??null:null}async function _(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:c.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(p,async()=>{let t=await w(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function R(e,t){return(0,u.withFileMutex)(p,async()=>{let r=await m();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function I(e){return(0,u.withFileMutex)(p,async()=>{let t=await m();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,_,"deleteHostedApp",0,I,"getBySlug",0,y,"listHostedApps",0,v,"setHostedAppPersist",0,R],762512);var P=e.i(359211);let A=new Map,k=new Set,x=new Map;function E(e){return`${e.workspaceId}\0${e.relPath}`}function N(e){let t=e.watcher;e.watcher=null,t&&t.close()}function S(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function T(e,t){return new Promise(r=>{let s=(0,n.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function b(e){let[t,r]=await Promise.all([T(e,"127.0.0.1"),T(e,"::1")]);return t||r}async function O(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await b(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function C(e){let t=a.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function j(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return j(t,"start")?"start":j(t,"preview")&&(0,r.existsSync)(a.default.join(e,"dist"))?"preview":j(t,"dev")?"dev":null}function D(){let e=a.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(a.default.delimiter).includes(e)?t:`${e}${a.default.delimiter}${t}`}function M(e,t){e.restartTimer||e.abort.signal.aborted||(x.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,A.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||H(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function $(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>a.default.relative(e.absPath,t).split(a.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(A.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(S(e),e.status="restarting",M(e,t))}))}async function H(e,s,o,l,u){var p;let c=E({workspaceId:e,relPath:s}),d=u?.persist===!0,h=A.get(c);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),N(h),S(h),A.delete(c)),k.delete(c);let f=await new Promise((e,t)=>{let r=(0,n.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),m=(0,r.existsSync)(a.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(a.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(a.default.join(o,"bun.lockb"))||(0,r.existsSync)(a.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let n=C(e);if(!n)return null;let a=n.scripts??{},i=Object.keys({...n.dependencies,...n.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return j(a,s)?l(s):null;let u=U(e,a);return u?l(u):n.main?{bin:"node",args:[n.main,...o],isVite:!1}:null}(o,m,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let w=x.get(c);x.delete(c);let v={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:w??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};A.set(c,v);let y=e=>{v.logs.push(e),v.logs.length>200&&v.logs.shift()};try{(0,r.existsSync)(a.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${m} install…`),await (p=v.abort.signal,new Promise((e,r)=>{if(p.aborted)return void r(Error("Install aborted"));let s=[],n=e=>{y(e),s.push(e)},a=(0,t.spawn)(m,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:D()}}),i=()=>{try{a.kill("SIGTERM")}catch{}};p.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&n(e)}};a.stdout?.on("data",l),a.stderr?.on("data",l),a.on("error",e=>{p.removeEventListener("abort",i),r(e)}),a.on("exit",t=>{if(p.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${m} install failed (exit ${t}):
2
+ ${e}`))}})}))),v.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:D(),PORT:String(f),VITE_PORT:String(f)}});v.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(A.get(c)===v&&"stopped"!==v.status&&!v.abort.signal.aborted){if(v.process=null,v.persist&&0!==e&&null!==e){let t=i(v.supervision,{type:"crash",detail:`exit ${e}`});v.supervision=t.state,"restart"===t.action?(v.status="restarting",M(v,c)):(v.status="error",v.error=v.supervision.lastError);return}v.status=0===e||null===e?"stopped":"error",v.error=e?`Process exited with code ${e}`:void 0}}),O(v).then(t=>{if(A.get(c)===v&&!v.abort.signal.aborted)if(t)v.status="running",v.supervision={...v.supervision,status:"running"},$(v,c);else if(v.persist){let t=i(v.supervision,{type:"crash",detail:"readiness timeout"});v.supervision=t.state,"restart"===t.action?(v.status="restarting",M(v,c)):(v.status="error",v.error=v.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{v.status="error",v.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw A.get(c)===v&&(v.status="error",v.error=e instanceof Error?e.message:String(e)),e}}async function W(e,t,r,s,n=!0){let a=E({workspaceId:e,relPath:t}),o=A.get(a);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=n,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,S(o),o.status="restarting",M(o,a),{port:o.port}):H(e,t,r,s,{persist:n})}async function q(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await v()).filter(e=>"node"===e.type&&!0===e.persist)){let t=E({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,P.getWorkspace)(e.workspaceId),n=s?(0,P.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!n||!(0,r.existsSync)(n)){k.add(t);continue}try{await H(e.workspaceId,e.relPath,n,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&q(),e.s(["ROOT_APP_PROXY_SEGMENT",0,"~root","getScripts",0,function(e){let t=C(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:U(e,r)}},"getStatus",0,function(e,t){let r=A.get(E({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:k.has(E({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),n=A.get(E({workspaceId:e,relPath:s}));if(n&&"running"===n.status&&n.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:n.port,rest:e}}}return null},"resolveRootApp",0,function(e,t){let r=A.get(E({workspaceId:e,relPath:""}));return r&&"running"===r.status&&r.port?{relPath:"",port:r.port,rest:"/"+t.filter(Boolean).join("/")}:null},"restartApp",0,W,"setAppPersistence",0,function(e,t,r,s){let n=E({workspaceId:e,relPath:t}),a=A.get(n);a&&(a.persist=s,a.absPath=r,s?$(a,n):N(a))},"startApp",0,H,"stopApp",0,function(e,t){let r=E({workspaceId:e,relPath:t}),s=A.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,N(s),s.status="stopped",A.delete(r),S(s))}],345212)},249567,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),n=e.i(457789),a=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),p=e.i(62749),c=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),g=e.i(193695);e.i(484264);var w=e.i(315709),v=e.i(902157),y=e.i(351216),_=e.i(402662),R=e.i(345212),I=e.i(762512),P=e.i(583627),A=e.i(254226),k=e.i(359211);async function x(e,{params:t}){var r;let s=(0,_.checkOrigin)(e);if(s)return s;let n="local",a=!0;if("1"!==process.env.WIKI_NO_AUTH){let t=await (0,A.requireUser)(e);if(!t.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});n=t.user.id,a=await (0,P.isAdmin)(t.user.id,t.user.email)}if(r=a,"1"!==process.env.WIKI_NO_AUTH&&"1"!==process.env.WIKI_ALLOW_APP_RUNNER&&!r)return y.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});let{slug:i}=await t,o=await (0,I.getBySlug)(i);if(!o)return y.NextResponse.json({error:"NOT_FOUND"},{status:404});if("node"!==o.type)return y.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let l=await (0,k.getWorkspace)(o.workspaceId);if(!l)return y.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"!==process.env.WIKI_NO_AUTH&&!(0,k.userCanAccess)(l,n,a))return y.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let u=(await e.json().catch(()=>({}))).action;if("stop"===u)return(0,R.stopApp)(o.workspaceId,o.relPath),y.NextResponse.json({ok:!0,status:"stopped"});if("pin"===u||"unpin"===u){if("node"!==o.type)return y.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let e="pin"===u;if(!await (0,I.setHostedAppPersist)(o.slug,e))return y.NextResponse.json({error:"NOT_FOUND"},{status:404});let t=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);return t&&(0,R.setAppPersistence)(o.workspaceId,o.relPath,t,e),y.NextResponse.json({ok:!0,persist:e})}if("restart"===u){let e=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,v.existsSync)(e))return y.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,R.restartApp)(o.workspaceId,o.relPath,e,o.script,!0===o.persist);return y.NextResponse.json({ok:!0,status:"restarting",port:t.port})}catch(e){return y.NextResponse.json({error:String(e)},{status:500})}}if("start"===u){let e=(0,k.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,v.existsSync)(e))return y.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,R.startApp)(o.workspaceId,o.relPath,e,o.script,{persist:!0===o.persist});return y.NextResponse.json({ok:!0,status:"starting",port:t.port})}catch(e){return y.NextResponse.json({error:String(e)},{status:500})}}return y.NextResponse.json({error:"INVALID_ACTION"},{status:400})}e.s(["POST",0,x],4065);var E=e.i(4065);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/hosted-apps/[slug]/route",pathname:"/api/wiki/hosted-apps/[slug]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/hosted-apps/[slug]/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:T,serverHooks:b}=N;async function O(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/hosted-apps/[slug]/route";v=v.replace(/\/index$/,"")||"/";let y=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:I,parsedUrl:P,isDraftMode:A,prerenderManifest:k,routerServerContext:x,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,resolvedPathname:T,clientReferenceManifest:b,serverActionsManifest:O}=y,C=(0,o.normalizeAppPath)(v),j=!!(k.dynamicRoutes[C]||k.routes[T]),U=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,P,!1):t.end("This page could not be found"),null);if(j&&!A){let e=!!k.routes[T],t=k.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!j||N.isDev||A||(D="/index"===(D=T)?"/":D);let M=!0===N.isDev||!j,$=j&&!M;O&&b&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:b,serverActionsManifest:O});let H=e.method||"GET",W=(0,a.getTracer)(),q=W.getActiveScopeSpan(),L=!!(null==x?void 0:x.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,I,k,K);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let B={params:R,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:M,incrementalCache:F,cacheLifeProfiles:I.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>N.onRequestError(e,t,s,n,x)},sharedContext:{buildId:_}},G=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>N.handle(V,B).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")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${H} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&E&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!j)return await (0,d.sendResponse)(G,z,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:E})},!1,x),t}},u=await N.handleResponse({req:e,nextConfig:I,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!j)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.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",E?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&j||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(G,z,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};L&&q?await o(q):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:E})},!1,x),j)throw t;return await (0,d.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:T})},"routeModule",0,N,"serverHooks",0,b,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,T],249567)},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_auth_api-key_ts_0t_ma-t._.js"].map(t=>e.l(t))).then(()=>t(499465)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__0pftyle._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[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"))},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),a=e.i(761095),n=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let p="__hosted_apps__",c=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return n.default.join(e,".wiki-viewer")}function f(){return n.default.join(h(),"hosted-apps.json")}async function v(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function m(){let e=await v();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function w(){let e=await v();return e?.apps??[]}async function y(e){let t=await v();return t?t.apps.find(t=>t.slug===e)??null:null}async function _(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:c.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(p,async()=>{let t=await m(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function R(e,t){return(0,u.withFileMutex)(p,async()=>{let r=await v();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function x(e){return(0,u.withFileMutex)(p,async()=>{let t=await v();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,_,"deleteHostedApp",0,x,"getBySlug",0,y,"listHostedApps",0,w,"setHostedAppPersist",0,R],762512);var b=e.i(359211);let P=new Map,E=new Set,T=new Map;function k(e){return`${e.workspaceId}\0${e.relPath}`}function S(e){let t=e.watcher;e.watcher=null,t&&t.close()}function A(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function C(e,t){return new Promise(r=>{let s=(0,a.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function I(e){let[t,r]=await Promise.all([C(e,"127.0.0.1"),C(e,"::1")]);return t||r}async function N(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await I(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function j(e){let t=n.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function q(e,t){return O(t,"start")?"start":O(t,"preview")&&(0,r.existsSync)(n.default.join(e,"dist"))?"preview":O(t,"dev")?"dev":null}function H(){let e=n.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(n.default.delimiter).includes(e)?t:`${e}${n.default.delimiter}${t}`}function U(e,t){e.restartTimer||e.abort.signal.aborted||(T.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,P.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||D(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function $(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>n.default.relative(e.absPath,t).split(n.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(P.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(A(e),e.status="restarting",U(e,t))}))}async function D(e,s,o,l,u){var p;let c=k({workspaceId:e,relPath:s}),d=u?.persist===!0,h=P.get(c);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),S(h),A(h),P.delete(c)),E.delete(c);let f=await new Promise((e,t)=>{let r=(0,a.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),v=(0,r.existsSync)(n.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(n.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(n.default.join(o,"bun.lockb"))||(0,r.existsSync)(n.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let a=j(e);if(!a)return null;let n=a.scripts??{},i=Object.keys({...a.dependencies,...a.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return O(n,s)?l(s):null;let u=q(e,n);return u?l(u):a.main?{bin:"node",args:[a.main,...o],isVite:!1}:null}(o,v,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let m=T.get(c);T.delete(c);let w={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:m??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};P.set(c,w);let y=e=>{w.logs.push(e),w.logs.length>200&&w.logs.shift()};try{(0,r.existsSync)(n.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${v} install…`),await (p=w.abort.signal,new Promise((e,r)=>{if(p.aborted)return void r(Error("Install aborted"));let s=[],a=e=>{y(e),s.push(e)},n=(0,t.spawn)(v,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:H()}}),i=()=>{try{n.kill("SIGTERM")}catch{}};p.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&a(e)}};n.stdout?.on("data",l),n.stderr?.on("data",l),n.on("error",e=>{p.removeEventListener("abort",i),r(e)}),n.on("exit",t=>{if(p.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${v} install failed (exit ${t}):
2
- ${e}`))}})}))),w.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:H(),PORT:String(f),VITE_PORT:String(f)}});w.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(P.get(c)===w&&"stopped"!==w.status&&!w.abort.signal.aborted){if(w.process=null,w.persist&&0!==e&&null!==e){let t=i(w.supervision,{type:"crash",detail:`exit ${e}`});w.supervision=t.state,"restart"===t.action?(w.status="restarting",U(w,c)):(w.status="error",w.error=w.supervision.lastError);return}w.status=0===e||null===e?"stopped":"error",w.error=e?`Process exited with code ${e}`:void 0}}),N(w).then(t=>{if(P.get(c)===w&&!w.abort.signal.aborted)if(t)w.status="running",w.supervision={...w.supervision,status:"running"},$(w,c);else if(w.persist){let t=i(w.supervision,{type:"crash",detail:"readiness timeout"});w.supervision=t.state,"restart"===t.action?(w.status="restarting",U(w,c)):(w.status="error",w.error=w.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{w.status="error",w.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw P.get(c)===w&&(w.status="error",w.error=e instanceof Error?e.message:String(e)),e}}async function M(e,t,r,s,a=!0){let n=k({workspaceId:e,relPath:t}),o=P.get(n);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=a,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,A(o),o.status="restarting",U(o,n),{port:o.port}):D(e,t,r,s,{persist:a})}async function W(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await w()).filter(e=>"node"===e.type&&!0===e.persist)){let t=k({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,b.getWorkspace)(e.workspaceId),a=s?(0,b.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!a||!(0,r.existsSync)(a)){E.add(t);continue}try{await D(e.workspaceId,e.relPath,a,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&W(),e.s(["getScripts",0,function(e){let t=j(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:q(e,r)}},"getStatus",0,function(e,t){let r=P.get(k({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:E.has(k({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),a=P.get(k({workspaceId:e,relPath:s}));if(a&&"running"===a.status&&a.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:a.port,rest:e}}}return null},"restartApp",0,M,"setAppPersistence",0,function(e,t,r,s){let a=k({workspaceId:e,relPath:t}),n=P.get(a);n&&(n.persist=s,n.absPath=r,s?$(n,a):S(n))},"startApp",0,D,"stopApp",0,function(e,t){let r=k({workspaceId:e,relPath:t}),s=P.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,S(s),s.status="stopped",P.delete(r),A(s))}],345212)},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},62496,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),a=e.i(457789),n=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),p=e.i(62749),c=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),v=e.i(487476),g=e.i(193695);e.i(484264);var m=e.i(315709),w=e.i(351216),y=e.i(345212),_=e.i(723012),R=e.i(660038);async function x(e,{params:t}){let r=await (0,R.resolveWorkspaceForUser)(e,"read");if(!r.ok)return w.NextResponse.json({error:r.code},{status:r.status});let s=(await t).path??[],a=(0,y.resolveByPrefix)(r.ws.id,s);if(!a)return w.NextResponse.json({error:"APP_NOT_FOUND"},{status:404});let{port:n,relPath:i,rest:o}=a;return(0,_.forwardToChild)(e,{port:n,rest:o,proxyBase:`/api/app-proxy/${i}`})}e.s(["DELETE",0,x,"GET",0,x,"HEAD",0,x,"OPTIONS",0,x,"PATCH",0,x,"POST",0,x,"PUT",0,x,"dynamic",0,"force-dynamic"],485042);var b=e.i(485042);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/app-proxy/[...path]/route",pathname:"/api/app-proxy/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/app-proxy/[...path]/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:T,serverHooks:k}=P;async function S(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),P.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/app-proxy/[...path]/route";w=w.replace(/\/index$/,"")||"/";let y=await P.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:x,parsedUrl:b,isDraftMode:E,prerenderManifest:T,routerServerContext:k,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,resolvedPathname:C,clientReferenceManifest:I,serverActionsManifest:N}=y,j=(0,o.normalizeAppPath)(w),O=!!(T.dynamicRoutes[j]||T.routes[C]),q=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,b,!1):t.end("This page could not be found"),null);if(O&&!E){let e=!!T.routes[C],t=T.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await q();throw new g.NoFallbackError}}let H=null;!O||P.isDev||E||(H="/index"===(H=C)?"/":H);let U=!0===P.isDev||!O,$=O&&!U;N&&I&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:I,serverActionsManifest:N});let D=e.method||"GET",M=(0,n.getTracer)(),W=M.getActiveScopeSpan(),L=!!(null==k?void 0:k.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,x,T,F);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:U,incrementalCache:K,cacheLifeProfiles:x.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>P.onRequestError(e,t,s,a,k)},sharedContext:{buildId:_}},B=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>P.handle(V,G).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")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${D} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${D} ${w}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&S&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!O)return await (0,d.sendResponse)(B,z,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[v.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,s=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=v.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,k),t}},u=await P.handleResponse({req:e,nextConfig:x,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!O)return null;if((null==u||null==(n=u.value)?void 0:n.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});F||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&O||p.delete(v.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(B,z,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};L&&W?await o(W):(a=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${D} ${w}`,kind:n.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,k),O)throw t;return await (0,d.sendResponse)(B,z,new Response(null,{status:500})),null}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:T})},"routeModule",0,P,"serverHooks",0,k,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,T],62496)},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},282139,e=>{e.v(e=>Promise.resolve().then(()=>e(351216)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))}];
1
+ module.exports=[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"))},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},345212,762512,e=>{"use strict";var t=e.i(874533),r=e.i(902157),s=e.i(427597),a=e.i(761095),n=e.i(750227);function i(e,t,r=5){switch(t.type){case"started":return{state:{...e,status:"running",crashCount:0,lastError:void 0},action:"none"};case"manual-restart":return{state:{...e,status:"restarting",crashCount:0,lastError:void 0},action:"restart"};case"file-change":if("error"===e.status)return{state:{...e,fileWatchRestartCount:e.fileWatchRestartCount+1},action:"none"};return{state:{...e,status:"restarting",fileWatchRestartCount:e.fileWatchRestartCount+1},action:"restart"};case"crash":{if("error"===e.status)return{state:e,action:"none"};let t=e.crashCount+1;if(t>r)return{state:{...e,crashCount:t,status:"error",lastError:`Auto-restart gave up after ${t} crash restarts (cap ${r}). Fix the app and restart manually.`},action:"none"};return{state:{...e,crashCount:t,status:"restarting"},action:"restart"}}case"stop":return{state:{...e,status:"stopped"},action:"none"}}}var o=e.i(912714),l=e.i(660526),u=e.i(832852);let p="__hosted_apps__",c=/^[a-z0-9][a-z0-9-]*$/,d=new Set(["api","app","apps","s","signin","signout","_next","assets","upload","owner","share","static","public","favicon.ico"]);function h(){let e=process.env.HOME??l.default.homedir();return n.default.join(e,".wiki-viewer")}function f(){return n.default.join(h(),"hosted-apps.json")}async function v(){try{let e=await (0,o.readFile)(f(),"utf8"),t=JSON.parse(e);return{version:1,apps:Array.isArray(t.apps)?t.apps:[]}}catch{return null}}async function g(e){await (0,o.mkdir)(h(),{recursive:!0});let t=f()+".tmp";await (0,o.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,o.chmod)(t,384)}catch{}await (0,o.rename)(t,f())}async function m(){let e=await v();if(e)return e;let t={version:1,apps:[]};return await g(t),t}async function w(){let e=await v();return e?.apps??[]}async function y(e){let t=await v();return t?t.apps.find(t=>t.slug===e)??null:null}async function _(e){var t;let r="string"!=typeof(t=e.slug)||0===t.length?{ok:!1,code:"SLUG_REQUIRED"}:c.test(t)?d.has(t)?{ok:!1,code:"SLUG_RESERVED"}:{ok:!0}:{ok:!1,code:"SLUG_INVALID"};return r.ok?(0,u.withFileMutex)(p,async()=>{let t=await m(),r=t.apps.find(t=>t.slug===e.slug);if(r)return{ok:!1,code:"SLUG_TAKEN",ownerWorkspaceId:r.workspaceId};let s={slug:e.slug,type:e.type,workspaceId:e.workspaceId,relPath:e.relPath,..."node"===e.type&&e.script?{script:e.script}:{},..."node"===e.type&&e.persist?{persist:!0}:{},createdAt:new Date().toISOString()};return t.apps.push(s),await g(t),{ok:!0,app:s}}):{ok:!1,code:r.code}}async function R(e,t){return(0,u.withFileMutex)(p,async()=>{let r=await v();if(!r)return null;let s=r.apps.find(t=>t.slug===e);return s&&"node"===s.type?(t?s.persist=!0:delete s.persist,await g(r),s):null})}async function P(e){return(0,u.withFileMutex)(p,async()=>{let t=await v();if(!t)return!1;let r=t.apps.length;return t.apps=t.apps.filter(t=>t.slug!==e),t.apps.length!==r&&(await g(t),!0)})}e.s(["createHostedApp",0,_,"deleteHostedApp",0,P,"getBySlug",0,y,"listHostedApps",0,w,"setHostedAppPersist",0,R],762512);var x=e.i(359211);let E=new Map,b=new Set,T=new Map;function S(e){return`${e.workspaceId}\0${e.relPath}`}function k(e){let t=e.watcher;e.watcher=null,t&&t.close()}function A(e){let t=e.process;if(e.process=null,!t)return;try{!t.killed&&t.pid&&t.kill("SIGTERM")}catch{}let r=setTimeout(()=>{try{!t.killed&&t.pid&&t.kill("SIGKILL")}catch{}},2e3);t.once("exit",()=>clearTimeout(r))}function C(e,t){return new Promise(r=>{let s=(0,a.createConnection)(e,t);s.setTimeout(800),s.on("connect",()=>{s.destroy(),r(!0)}),s.on("error",()=>{s.destroy(),r(!1)}),s.on("timeout",()=>{s.destroy(),r(!1)})})}async function O(e){let[t,r]=await Promise.all([C(e,"127.0.0.1"),C(e,"::1")]);return t||r}async function I(e,t=3e4){let r=Date.now()+t;for(;Date.now()<r&&!e.abort.signal.aborted;){if(await O(e.port))return e.port;await new Promise(e=>setTimeout(e,400))}return null}function N(e){let t=n.default.join(e,"package.json");if(!(0,r.existsSync)(t))return null;try{return JSON.parse((0,r.readFileSync)(t,"utf-8"))}catch{return null}}function j(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function q(e,t){return j(t,"start")?"start":j(t,"preview")&&(0,r.existsSync)(n.default.join(e,"dist"))?"preview":j(t,"dev")?"dev":null}function H(){let e=n.default.dirname(process.execPath),t=process.env.PATH??"";return t.split(n.default.delimiter).includes(e)?t:`${e}${n.default.delimiter}${t}`}function M(e,t){e.restartTimer||e.abort.signal.aborted||(T.set(t,e.supervision),e.restartTimer=setTimeout(()=>{e.restartTimer=null,E.get(t)!==e||e.abort.signal.aborted||"error"===e.supervision.status||$(e.workspaceId,e.relPath,e.absPath,e.script,{persist:!0}).catch(()=>{})},250))}function U(e,t){e.persist&&!e.watcher&&(e.watcher=(0,s.watch)(e.absPath,{ignoreInitial:!0,ignored:t=>n.default.relative(e.absPath,t).split(n.default.sep).some(e=>["node_modules",".git",".next"].includes(e)),awaitWriteFinish:{stabilityThreshold:250,pollInterval:100}}),e.watcher.on("all",()=>{if(E.get(t)!==e||e.abort.signal.aborted)return;let r=i(e.supervision,{type:"file-change"});e.supervision=r.state,"restart"===r.action&&(A(e),e.status="restarting",M(e,t))}))}async function $(e,s,o,l,u){var p;let c=S({workspaceId:e,relPath:s}),d=u?.persist===!0,h=E.get(c);if(h&&"stopped"!==h.status&&"error"!==h.status&&"missing"!==h.status&&h.process)return d&&(h.persist=!0),{port:h.port};h&&(h.abort.abort(),h.restartTimer&&clearTimeout(h.restartTimer),k(h),A(h),E.delete(c)),b.delete(c);let f=await new Promise((e,t)=>{let r=(0,a.createServer)();r.listen(0,"127.0.0.1",()=>{let t=r.address(),s="object"==typeof t&&t?t.port:0;r.close(()=>e(s))}),r.on("error",t)}),v=(0,r.existsSync)(n.default.join(o,"pnpm-lock.yaml"))?"pnpm":(0,r.existsSync)(n.default.join(o,"yarn.lock"))?"yarn":(0,r.existsSync)(n.default.join(o,"bun.lockb"))||(0,r.existsSync)(n.default.join(o,"bun.lock"))?"bun":"npm",g=function(e,t,r,s){let a=N(e);if(!a)return null;let n=a.scripts??{},i=Object.keys({...a.dependencies,...a.devDependencies}).some(e=>"vite"===e||e.includes("vite")),o=["--port",String(r)],l=e=>({bin:t,args:"npm"===t?["run",e,"--",...o]:["run",e,...o],isVite:i});if(s)return j(n,s)?l(s):null;let u=q(e,n);return u?l(u):a.main?{bin:"node",args:[a.main,...o],isVite:!1}:null}(o,v,f,l);if(!g)throw Error("No runnable script found in package.json (need start, preview, or dev)");let m=T.get(c);T.delete(c);let w={workspaceId:e,relPath:s,absPath:o,script:l,port:f,process:null,status:"installing",logs:[],generation:1,abort:new AbortController,persist:!1,supervision:m??{crashCount:0,fileWatchRestartCount:0,status:"stopped"},watcher:null,restartTimer:null};E.set(c,w);let y=e=>{w.logs.push(e),w.logs.length>200&&w.logs.shift()};try{(0,r.existsSync)(n.default.join(o,"node_modules"))||(y(`[wiki-viewer] Running ${v} install…`),await (p=w.abort.signal,new Promise((e,r)=>{if(p.aborted)return void r(Error("Install aborted"));let s=[],a=e=>{y(e),s.push(e)},n=(0,t.spawn)(v,["install"],{cwd:o,stdio:"pipe",env:{...process.env,PATH:H()}}),i=()=>{try{n.kill("SIGTERM")}catch{}};p.addEventListener("abort",i,{once:!0});let l=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&a(e)}};n.stdout?.on("data",l),n.stderr?.on("data",l),n.on("error",e=>{p.removeEventListener("abort",i),r(e)}),n.on("exit",t=>{if(p.removeEventListener("abort",i),0===t)e();else{let e=s.slice(-20).join("\n");r(Error(`${v} install failed (exit ${t}):
2
+ ${e}`))}})}))),w.status="starting",y(`[wiki-viewer] Starting on port ${f}: ${g.bin} ${g.args.join(" ")}`);let e=(0,t.spawn)(g.bin,g.args,{cwd:o,stdio:"pipe",env:{...process.env,PATH:H(),PORT:String(f),VITE_PORT:String(f)}});w.process=e;let s=e=>{for(let t of e.toString().split("\n")){let e=t.trim();e&&y(e)}};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.on("exit",e=>{if(E.get(c)===w&&"stopped"!==w.status&&!w.abort.signal.aborted){if(w.process=null,w.persist&&0!==e&&null!==e){let t=i(w.supervision,{type:"crash",detail:`exit ${e}`});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,c)):(w.status="error",w.error=w.supervision.lastError);return}w.status=0===e||null===e?"stopped":"error",w.error=e?`Process exited with code ${e}`:void 0}}),I(w).then(t=>{if(E.get(c)===w&&!w.abort.signal.aborted)if(t)w.status="running",w.supervision={...w.supervision,status:"running"},U(w,c);else if(w.persist){let t=i(w.supervision,{type:"crash",detail:"readiness timeout"});w.supervision=t.state,"restart"===t.action?(w.status="restarting",M(w,c)):(w.status="error",w.error=w.supervision.lastError);try{e.kill("SIGTERM")}catch{}}else{w.status="error",w.error="Port never became reachable (30 s timeout)";try{e.kill("SIGTERM")}catch{}}}),{port:f}}catch(e){throw E.get(c)===w&&(w.status="error",w.error=e instanceof Error?e.message:String(e)),e}}async function D(e,t,r,s,a=!0){let n=S({workspaceId:e,relPath:t}),o=E.get(n);return o?(o.supervision=i(o.supervision,{type:"manual-restart"}).state,o.persist=a,o.absPath=r,o.script=s,o.restartTimer&&clearTimeout(o.restartTimer),o.restartTimer=null,A(o),o.status="restarting",M(o,n),{port:o.port}):$(e,t,r,s,{persist:a})}async function W(){if("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)for(let e of(await w()).filter(e=>"node"===e.type&&!0===e.persist)){let t=S({workspaceId:e.workspaceId,relPath:e.relPath}),s=await (0,x.getWorkspace)(e.workspaceId),a=s?(0,x.safeWorkspacePath)(s.rootDir,e.relPath):null;if(!a||!(0,r.existsSync)(a)){b.add(t);continue}try{await $(e.workspaceId,e.relPath,a,e.script,{persist:!0})}catch{}}}("1"===process.env.WIKI_NO_AUTH||"1"===process.env.WIKI_ALLOW_APP_RUNNER)&&W(),e.s(["ROOT_APP_PROXY_SEGMENT",0,"~root","getScripts",0,function(e){let t=N(e);if(!t)return{scripts:[],defaultScript:null};let r=t.scripts??{};return{scripts:Object.keys(r),defaultScript:q(e,r)}},"getStatus",0,function(e,t){let r=E.get(S({workspaceId:e,relPath:t}));return r?{status:r.status,port:r.port||void 0,error:r.error,lastError:r.supervision.lastError??r.error,restartCount:r.supervision.crashCount,fileWatchRestartCount:r.supervision.fileWatchRestartCount,logs:r.logs}:b.has(S({workspaceId:e,relPath:t}))?{status:"missing",error:"Hosted app source directory is missing",logs:[]}:{status:"stopped",logs:[]}},"resolveByPrefix",0,function(e,t){for(let r=t.length;r>0;r--){let s=t.slice(0,r).join("/"),a=E.get(S({workspaceId:e,relPath:s}));if(a&&"running"===a.status&&a.port){let e="/"+t.slice(r).join("/");return{relPath:s,port:a.port,rest:e}}}return null},"resolveRootApp",0,function(e,t){let r=E.get(S({workspaceId:e,relPath:""}));return r&&"running"===r.status&&r.port?{relPath:"",port:r.port,rest:"/"+t.filter(Boolean).join("/")}:null},"restartApp",0,D,"setAppPersistence",0,function(e,t,r,s){let a=S({workspaceId:e,relPath:t}),n=E.get(a);n&&(n.persist=s,n.absPath=r,s?U(n,a):k(n))},"startApp",0,$,"stopApp",0,function(e,t){let r=S({workspaceId:e,relPath:t}),s=E.get(r);s&&(s.abort.abort(),s.restartTimer&&clearTimeout(s.restartTimer),s.restartTimer=null,k(s),s.status="stopped",E.delete(r),A(s))}],345212)},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},62496,e=>{"use strict";var t=e.i(985426),r=e.i(257574),s=e.i(507835),a=e.i(457789),n=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),p=e.i(62749),c=e.i(624891),d=e.i(725836),h=e.i(532736),f=e.i(257858),v=e.i(487476),g=e.i(193695);e.i(484264);var m=e.i(315709),w=e.i(351216),y=e.i(345212),_=e.i(723012),R=e.i(660038);async function P(e,{params:t}){let r=await (0,R.resolveWorkspaceForUser)(e,"read");if(!r.ok)return w.NextResponse.json({error:r.code},{status:r.status});let s=(await t).path??[],a=s[0]===y.ROOT_APP_PROXY_SEGMENT,n=a?(0,y.resolveRootApp)(r.ws.id,s.slice(1)):(0,y.resolveByPrefix)(r.ws.id,s);if(!n)return w.NextResponse.json({error:"APP_NOT_FOUND"},{status:404});let{port:i,relPath:o,rest:l}=n;return(0,_.forwardToChild)(e,{port:i,rest:l,proxyBase:a?`/api/app-proxy/${y.ROOT_APP_PROXY_SEGMENT}`:`/api/app-proxy/${o}`})}e.s(["DELETE",0,P,"GET",0,P,"HEAD",0,P,"OPTIONS",0,P,"PATCH",0,P,"POST",0,P,"PUT",0,P,"dynamic",0,"force-dynamic"],485042);var x=e.i(485042);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/app-proxy/[...path]/route",pathname:"/api/app-proxy/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/app-proxy/[...path]/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:T,serverHooks:S}=E;async function k(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/app-proxy/[...path]/route";w=w.replace(/\/index$/,"")||"/";let y=await E.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:P,parsedUrl:x,isDraftMode:b,prerenderManifest:T,routerServerContext:S,isOnDemandRevalidate:k,revalidateOnlyGenerated:A,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:I}=y,N=(0,o.normalizeAppPath)(w),j=!!(T.dynamicRoutes[N]||T.routes[C]),q=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,x,!1):t.end("This page could not be found"),null);if(j&&!b){let e=!!T.routes[C],t=T.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(P.adapterPath)return await q();throw new g.NoFallbackError}}let H=null;!j||E.isDev||b||(H="/index"===(H=C)?"/":H);let M=!0===E.isDev||!j,U=j&&!M;I&&O&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:O,serverActionsManifest:I});let $=e.method||"GET",D=(0,n.getTracer)(),W=D.getActiveScopeSpan(),L=!!(null==S?void 0:S.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),G=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,P,T,F);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let K={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!P.experimental.authInterrupts},cacheComponents:!!P.cacheComponents,supportsDynamicResponse:M,incrementalCache:G,cacheLifeProfiles:P.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>E.onRequestError(e,t,s,a,S)},sharedContext:{buildId:_}},B=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>E.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${$} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${$} ${w}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&k&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!j)return await (0,d.sendResponse)(B,z,n,K.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[v.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,s=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=v.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,S),t}},u=await E.handleResponse({req:e,nextConfig:P,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:A,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!j)return null;if((null==u||null==(n=u.value)?void 0:n.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});F||t.setHeader("x-nextjs-cache",k?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&j||p.delete(v.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,d.sendResponse)(B,z,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};L&&W?await o(W):(a=D.getActiveScopeSpan(),await D.withPropagatedContext(e.headers,()=>D.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${w}`,kind:n.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof g.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,S),j)throw t;return await (0,d.sendResponse)(B,z,new Response(null,{status:500})),null}}e.s(["handler",0,k,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:T})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,T],62496)},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},282139,e=>{e.v(e=>Promise.resolve().then(()=>e(351216)))},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)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},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)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__0qwikxp._.js.map