wiki-viewer 3.1.1 → 3.1.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 (83) 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/api/agent/activity/route.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/[slug]/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/wiki/preview-token/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/wiki/scratch/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/app/[slug]/[[...rest]]/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.fl467._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cqahds._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f.q.gf._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fc05ki._.js +1 -1
  65. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fkfkc.._.js +1 -1
  66. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0skgiv0._.js +1 -1
  67. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tuu3y1._.js +1 -1
  68. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z5f4h8._.js +1 -1
  69. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11ltgmp._.js +1 -1
  70. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12g8s_j._.js +1 -1
  71. package/.next/standalone/.next/server/chunks/ssr/_0_j0j3f._.js +1 -1
  72. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  73. package/.next/standalone/.next/server/pages/500.html +1 -1
  74. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  76. package/.next/standalone/.next/static/chunks/{0.4z79b01ogty.js → 0cz0xzb~lms_9.js} +1 -1
  77. package/.next/standalone/package.json +1 -1
  78. package/.next/standalone/server.js +1 -1
  79. package/bin/shared/ssh-target.js +3 -1
  80. package/package.json +1 -1
  81. /package/.next/standalone/.next/static/{UIhlbM5yWbVS3aIHrh_He → nfXY6poENgSEOPczB4Z-L}/_buildManifest.js +0 -0
  82. /package/.next/standalone/.next/static/{UIhlbM5yWbVS3aIHrh_He → nfXY6poENgSEOPczB4Z-L}/_clientMiddlewareManifest.js +0 -0
  83. /package/.next/standalone/.next/static/{UIhlbM5yWbVS3aIHrh_He → nfXY6poENgSEOPczB4Z-L}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":818576,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":818576,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":424184,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":424184,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":505666,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":505666,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":266858,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":266858,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":391104,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":391104,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":693054,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":693054,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":35289,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":35289,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/sonner/dist/index.mjs <module evaluation>":{"id":187014,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/sonner/dist/index.mjs":{"id":187014,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/components/theme-provider.tsx <module evaluation>":{"id":427423,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/components/theme-provider.tsx":{"id":427423,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":157545,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error.js":{"id":157545,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/app/page.tsx <module evaluation>":{"id":952683,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js","/_next/static/chunks/04rw10yyyszwm.js","/_next/static/chunks/0ebe2favul_io.js","/_next/static/chunks/1700k0l32z3_f.js","/_next/static/chunks/0wz776506nhn1.js","/_next/static/chunks/0.4z79b01ogty.js","/_next/static/chunks/0lxbev-rginnd.js","/_next/static/chunks/0gcwvlawxhe9m.js","/_next/static/chunks/0ch1.r_lv21oq.js","/_next/static/chunks/0azp.ftsp.56w.js"],"async":false},"[project]/src/app/page.tsx":{"id":952683,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js","/_next/static/chunks/04rw10yyyszwm.js","/_next/static/chunks/0ebe2favul_io.js","/_next/static/chunks/1700k0l32z3_f.js","/_next/static/chunks/0wz776506nhn1.js","/_next/static/chunks/0.4z79b01ogty.js","/_next/static/chunks/0lxbev-rginnd.js","/_next/static/chunks/0gcwvlawxhe9m.js","/_next/static/chunks/0ch1.r_lv21oq.js","/_next/static/chunks/0azp.ftsp.56w.js"],"async":false}},"ssrModuleMapping":{"818576":{"*":{"id":631945,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"424184":{"*":{"id":6315,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"505666":{"*":{"id":208950,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"266858":{"*":{"id":958125,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"391104":{"*":{"id":898578,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"693054":{"*":{"id":530721,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"35289":{"*":{"id":961563,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"187014":{"*":{"id":263265,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"427423":{"*":{"id":301148,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"157545":{"*":{"id":39264,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js","server/chunks/ssr/node_modules__pnpm_04rcz~-._.js"],"async":false}},"952683":{"*":{"id":240777,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js","server/chunks/ssr/[root-of-the-server]__01rzr4_._.js","server/chunks/ssr/0a.g_remark-gfm_lib_index_0jlfajt.js","server/chunks/ssr/node_modules__pnpm_12r.yrc._.js","server/chunks/ssr/_0_j0j3f._.js","server/chunks/ssr/_0x_nhpz._.js","server/chunks/ssr/node_modules__pnpm_0bft7q1._.js","server/chunks/ssr/src_lib_auth_client_ts_0sk~n1k._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"818576":{"*":{"id":427994,"name":"*","chunks":[],"async":false}},"424184":{"*":{"id":260386,"name":"*","chunks":[],"async":false}},"505666":{"*":{"id":367578,"name":"*","chunks":[],"async":false}},"266858":{"*":{"id":369205,"name":"*","chunks":[],"async":false}},"391104":{"*":{"id":467389,"name":"*","chunks":[],"async":false}},"693054":{"*":{"id":126384,"name":"*","chunks":[],"async":false}},"35289":{"*":{"id":669956,"name":"*","chunks":[],"async":false}},"187014":{"*":{"id":508023,"name":"*","chunks":[],"async":false}},"427423":{"*":{"id":425790,"name":"*","chunks":[],"async":false}},"157545":{"*":{"id":800904,"name":"*","chunks":[],"async":false}},"952683":{"*":{"id":256983,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/layout":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}],"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}],"[project]/src/app/page":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/layout":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js"],"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js"],"[project]/src/app/page":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js","static/chunks/04rw10yyyszwm.js","static/chunks/0ebe2favul_io.js","static/chunks/1700k0l32z3_f.js","static/chunks/0wz776506nhn1.js","static/chunks/0.4z79b01ogty.js","static/chunks/0lxbev-rginnd.js","static/chunks/0gcwvlawxhe9m.js","static/chunks/0ch1.r_lv21oq.js","static/chunks/0azp.ftsp.56w.js"]}};
2
+ globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":818576,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":818576,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":424184,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":424184,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":505666,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":505666,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":266858,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":266858,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":391104,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":391104,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":693054,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":693054,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":35289,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":35289,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/sonner/dist/index.mjs <module evaluation>":{"id":187014,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/sonner/dist/index.mjs":{"id":187014,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/components/theme-provider.tsx <module evaluation>":{"id":427423,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/components/theme-provider.tsx":{"id":427423,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":157545,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error.js":{"id":157545,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js"],"async":false},"[project]/src/app/page.tsx <module evaluation>":{"id":952683,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js","/_next/static/chunks/04rw10yyyszwm.js","/_next/static/chunks/0ebe2favul_io.js","/_next/static/chunks/1700k0l32z3_f.js","/_next/static/chunks/0wz776506nhn1.js","/_next/static/chunks/0cz0xzb~lms_9.js","/_next/static/chunks/0lxbev-rginnd.js","/_next/static/chunks/0gcwvlawxhe9m.js","/_next/static/chunks/0ch1.r_lv21oq.js","/_next/static/chunks/0azp.ftsp.56w.js"],"async":false},"[project]/src/app/page.tsx":{"id":952683,"name":"*","chunks":["/_next/static/chunks/04lnpuvyqafae.js","/_next/static/chunks/0fgzeb--wtlac.js","/_next/static/chunks/04rw10yyyszwm.js","/_next/static/chunks/0ebe2favul_io.js","/_next/static/chunks/1700k0l32z3_f.js","/_next/static/chunks/0wz776506nhn1.js","/_next/static/chunks/0cz0xzb~lms_9.js","/_next/static/chunks/0lxbev-rginnd.js","/_next/static/chunks/0gcwvlawxhe9m.js","/_next/static/chunks/0ch1.r_lv21oq.js","/_next/static/chunks/0azp.ftsp.56w.js"],"async":false}},"ssrModuleMapping":{"818576":{"*":{"id":631945,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"424184":{"*":{"id":6315,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"505666":{"*":{"id":208950,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"266858":{"*":{"id":958125,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"391104":{"*":{"id":898578,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"693054":{"*":{"id":530721,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"35289":{"*":{"id":961563,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"187014":{"*":{"id":263265,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"427423":{"*":{"id":301148,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js"],"async":false}},"157545":{"*":{"id":39264,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js","server/chunks/ssr/node_modules__pnpm_04rcz~-._.js"],"async":false}},"952683":{"*":{"id":240777,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d3x2u~._.js","server/chunks/ssr/0.u4_next_dist_0xugq-k._.js","server/chunks/ssr/0e.4_sonner_dist_index_mjs_0u2em8w._.js","server/chunks/ssr/[root-of-the-server]__01rzr4_._.js","server/chunks/ssr/0a.g_remark-gfm_lib_index_0jlfajt.js","server/chunks/ssr/node_modules__pnpm_12r.yrc._.js","server/chunks/ssr/_0_j0j3f._.js","server/chunks/ssr/_0x_nhpz._.js","server/chunks/ssr/node_modules__pnpm_0bft7q1._.js","server/chunks/ssr/src_lib_auth_client_ts_0sk~n1k._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"818576":{"*":{"id":427994,"name":"*","chunks":[],"async":false}},"424184":{"*":{"id":260386,"name":"*","chunks":[],"async":false}},"505666":{"*":{"id":367578,"name":"*","chunks":[],"async":false}},"266858":{"*":{"id":369205,"name":"*","chunks":[],"async":false}},"391104":{"*":{"id":467389,"name":"*","chunks":[],"async":false}},"693054":{"*":{"id":126384,"name":"*","chunks":[],"async":false}},"35289":{"*":{"id":669956,"name":"*","chunks":[],"async":false}},"187014":{"*":{"id":508023,"name":"*","chunks":[],"async":false}},"427423":{"*":{"id":425790,"name":"*","chunks":[],"async":false}},"157545":{"*":{"id":800904,"name":"*","chunks":[],"async":false}},"952683":{"*":{"id":256983,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/layout":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}],"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}],"[project]/src/app/page":[{"path":"static/chunks/0~~v9pq1icp09.css","inlined":false},{"path":"static/chunks/0f8vcij0xcgfj.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/layout":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js"],"[project]/node_modules/.pnpm/next@16.2.4_react-dom@19.2.5_react@19.2.5__react@19.2.5_sass@1.51.0/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js"],"[project]/src/app/page":["static/chunks/04lnpuvyqafae.js","static/chunks/0fgzeb--wtlac.js","static/chunks/04rw10yyyszwm.js","static/chunks/0ebe2favul_io.js","static/chunks/1700k0l32z3_f.js","static/chunks/0wz776506nhn1.js","static/chunks/0cz0xzb~lms_9.js","static/chunks/0lxbev-rginnd.js","static/chunks/0gcwvlawxhe9m.js","static/chunks/0ch1.r_lv21oq.js","static/chunks/0azp.ftsp.56w.js"]}};
3
3
 
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||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 d(){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 p(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 p(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function m(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"unmountSshfs",0,m],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}])},634955,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),_=e.i(351216),g=e.i(402662),y=e.i(254226),R=e.i(583627),E=e.i(359211);async function A(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireUser)(e);if(!s.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,a=await (0,E.getWorkspace)(n);if(!a)return _.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,R.isAdmin)(s.user.id,s.user.email);return(0,E.userCanAccess)(a,s.user.id,i)?(await (0,E.touchWorkspace)(n),_.NextResponse.json({ok:!0})):_.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}e.s(["POST",0,A,"runtime",0,"nodejs"],374200);var I=e.i(374200);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/open/route",pathname:"/api/system/workspaces/[id]/open",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/open/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:N,serverHooks:C}=k;async function P(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/open/route";_=_.replace(/\/index$/,"")||"/";let g=await k.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:I,prerenderManifest:x,routerServerContext:N,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:S,serverActionsManifest:T}=g,b=(0,o.normalizeAppPath)(_),U=!!(x.dynamicRoutes[b]||x.routes[O]),j=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!I){let e=!!x.routes[O],t=x.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new v.NoFallbackError}}let q=null;!U||k.isDev||I||(q="/index"===(q=O)?"/":q);let D=!0===k.isDev||!U,M=U&&!D;T&&S&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==N?void 0:N.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,E,x,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let L={params:R,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>k.onRequestError(e,t,s,n,N)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>k.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&C&&P&&!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=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.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 k.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,N),t}},u=await k.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!U)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});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&U||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,N),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:N})},"routeModule",0,k,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,N],634955)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
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","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 d(){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 p(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 p(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function m(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"unmountSshfs",0,m],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}])},634955,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),_=e.i(351216),g=e.i(402662),y=e.i(254226),R=e.i(583627),E=e.i(359211);async function A(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireUser)(e);if(!s.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,a=await (0,E.getWorkspace)(n);if(!a)return _.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,R.isAdmin)(s.user.id,s.user.email);return(0,E.userCanAccess)(a,s.user.id,i)?(await (0,E.touchWorkspace)(n),_.NextResponse.json({ok:!0})):_.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403})}e.s(["POST",0,A,"runtime",0,"nodejs"],374200);var I=e.i(374200);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/open/route",pathname:"/api/system/workspaces/[id]/open",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/open/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:k,serverHooks:C}=x;async function P(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/open/route";_=_.replace(/\/index$/,"")||"/";let g=await x.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:I,prerenderManifest:N,routerServerContext:k,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:S,serverActionsManifest:T}=g,b=(0,o.normalizeAppPath)(_),U=!!(N.dynamicRoutes[b]||N.routes[O]),j=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!I){let e=!!N.routes[O],t=N.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new v.NoFallbackError}}let q=null;!U||x.isDev||I||(q="/index"===(q=O)?"/":q);let D=!0===x.isDev||!U,M=U&&!D;T&&S&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==k?void 0:k.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,E,N,F);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let L={params:R,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:W,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>x.onRequestError(e,t,s,n,k)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>x.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&C&&P&&!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=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.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 x.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,k),t}},u=await x.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!U)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});F||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&U||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,k),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:k})},"routeModule",0,x,"serverHooks",0,C,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,k],634955)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0.fl467._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||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 d(){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 p(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 p(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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}])},749167,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),_=e.i(351216),g=e.i(402662),y=e.i(583627),R=e.i(359211);async function E(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t;try{let e=await (0,R.refreshGitWorkspace)(n);return _.NextResponse.json({ok:!0,...e})}catch(t){let e=t instanceof Error?t.message:String(t);return _.NextResponse.json({error:e},{status:400})}}e.s(["POST",0,E,"runtime",0,"nodejs"],604442);var A=e.i(604442);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/refresh/route",pathname:"/api/system/workspaces/[id]/refresh",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/refresh/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:x,serverHooks:C}=I;async function N(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/refresh/route";_=_.replace(/\/index$/,"")||"/";let g=await I.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:k,prerenderManifest:x,routerServerContext:C,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:b}=g,O=(0,o.normalizeAppPath)(_),U=!!(x.dynamicRoutes[O]||x.routes[S]),q=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!x.routes[S],t=x.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new v.NoFallbackError}}let j=null;!U||I.isDev||k||(j="/index"===(j=S)?"/":j);let M=!0===I.isDev||!U,D=U&&!M;b&&T&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:T,serverActionsManifest:b});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,E,x,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:R,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>I.onRequestError(e,t,s,n,C)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>I.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&N&&P&&!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=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,W.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,s=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.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 I.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,C),t}},u=await I.handleResponse({req:e,nextConfig:E,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!U)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});F||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,C),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:x})},"routeModule",0,I,"serverHooks",0,C,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,x],749167)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
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","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 d(){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 p(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 p(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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}])},749167,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),_=e.i(351216),g=e.i(402662),y=e.i(583627),R=e.i(359211);async function E(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t;try{let e=await (0,R.refreshGitWorkspace)(n);return _.NextResponse.json({ok:!0,...e})}catch(t){let e=t instanceof Error?t.message:String(t);return _.NextResponse.json({error:e},{status:400})}}e.s(["POST",0,E,"runtime",0,"nodejs"],604442);var A=e.i(604442);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/refresh/route",pathname:"/api/system/workspaces/[id]/refresh",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/refresh/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:k,serverHooks:C}=I;async function N(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/refresh/route";_=_.replace(/\/index$/,"")||"/";let g=await I.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:x,prerenderManifest:k,routerServerContext:C,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:b}=g,O=(0,o.normalizeAppPath)(_),U=!!(k.dynamicRoutes[O]||k.routes[S]),q=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!x){let e=!!k.routes[S],t=k.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new v.NoFallbackError}}let j=null;!U||I.isDev||x||(j="/index"===(j=S)?"/":j);let M=!0===I.isDev||!U,D=U&&!M;b&&T&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:T,serverActionsManifest:b});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,E,k,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:R,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>I.onRequestError(e,t,s,n,C)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>I.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&N&&P&&!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=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,W.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,s=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.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 I.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,C),t}},u=await I.handleResponse({req:e,nextConfig:E,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!U)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});F||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,C),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:k})},"routeModule",0,I,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,k],749167)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0cqahds._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||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 d(){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 p(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 p(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function m(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"unmountSshfs",0,m],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}])},200779,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(487476),w=e.i(193695);e.i(484264);var v=e.i(315709),_=e.i(351216),R=e.i(402662),g=e.i(254226),y=e.i(583627),E=e.i(359211);async function A(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let s=await (0,g.requireUser)(e);if(!s.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,a=await (0,E.getWorkspace)(n);if(!a)return _.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,y.isAdmin)(s.user.id,s.user.email);if(!(0,E.userCanAccess)(a,s.user.id,i))return _.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let o=await e.json();if(void 0!==o.allowedUserIds&&!i)return _.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});void 0!==o.name&&await (0,E.renameWorkspace)(n,o.name.trim()),void 0!==o.pinnedPaths&&await (0,E.setWorkspacePins)(n,o.pinnedPaths),void 0!==o.allowedUserIds&&await (0,E.setWorkspaceAccess)(n,o.allowedUserIds);let l=await (0,E.getWorkspace)(n);return _.NextResponse.json({ok:!0,workspace:l?(0,E.sanitizeWorkspace)(l):l})}async function k(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t;return await (0,E.getWorkspace)(n)?(await (0,E.removeWorkspace)(n),_.NextResponse.json({ok:!0})):_.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404})}e.s(["DELETE",0,k,"PATCH",0,A,"runtime",0,"nodejs"],692671);var I=e.i(692671);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/route",pathname:"/api/system/workspaces/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:C,serverHooks:P}=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 _="/api/system/workspaces/[id]/route";_=_.replace(/\/index$/,"")||"/";let R=await N.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:y,nextConfig:E,parsedUrl:A,isDraftMode:k,prerenderManifest:I,routerServerContext:x,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:S}=R,b=(0,o.normalizeAppPath)(_),U=!!(I.dynamicRoutes[b]||I.routes[O]),j=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!I.routes[O],t=I.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new w.NoFallbackError}}let D=null;!U||N.isDev||k||(D="/index"===(D=O)?"/":D);let q=!0===N.isDev||!U,M=U&&!q;S&&T&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:T,serverActionsManifest:S});let H=e.method||"GET",$=(0,a.getTracer)(),W=$.getActiveScopeSpan(),K=!!(null==x?void 0:x.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,I,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:E.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}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>N.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&C&&P&&!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=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,x),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&W?await o(W):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,x),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:C})},"routeModule",0,N,"serverHooks",0,P,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,C],200779)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
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","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 d(){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 p(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 p(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function m(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"unmountSshfs",0,m],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}])},200779,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(487476),w=e.i(193695);e.i(484264);var v=e.i(315709),_=e.i(351216),R=e.i(402662),g=e.i(254226),y=e.i(583627),E=e.i(359211);async function A(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let s=await (0,g.requireUser)(e);if(!s.ok)return _.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{id:n}=await t,a=await (0,E.getWorkspace)(n);if(!a)return _.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});let i=await (0,y.isAdmin)(s.user.id,s.user.email);if(!(0,E.userCanAccess)(a,s.user.id,i))return _.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let o=await e.json();if(void 0!==o.allowedUserIds&&!i)return _.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});void 0!==o.name&&await (0,E.renameWorkspace)(n,o.name.trim()),void 0!==o.pinnedPaths&&await (0,E.setWorkspacePins)(n,o.pinnedPaths),void 0!==o.allowedUserIds&&await (0,E.setWorkspaceAccess)(n,o.allowedUserIds);let l=await (0,E.getWorkspace)(n);return _.NextResponse.json({ok:!0,workspace:l?(0,E.sanitizeWorkspace)(l):l})}async function k(e,{params:t}){let r=(0,R.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t;return await (0,E.getWorkspace)(n)?(await (0,E.removeWorkspace)(n),_.NextResponse.json({ok:!0})):_.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404})}e.s(["DELETE",0,k,"PATCH",0,A,"runtime",0,"nodejs"],692671);var I=e.i(692671);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/route",pathname:"/api/system/workspaces/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:C,serverHooks:P}=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 _="/api/system/workspaces/[id]/route";_=_.replace(/\/index$/,"")||"/";let R=await N.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:y,nextConfig:E,parsedUrl:A,isDraftMode:k,prerenderManifest:I,routerServerContext:x,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:S}=R,b=(0,o.normalizeAppPath)(_),U=!!(I.dynamicRoutes[b]||I.routes[O]),j=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!I.routes[O],t=I.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new w.NoFallbackError}}let D=null;!U||N.isDev||k||(D="/index"===(D=O)?"/":D);let q=!0===N.isDev||!U,M=U&&!q;S&&T&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:T,serverActionsManifest:S});let H=e.method||"GET",$=(0,a.getTracer)(),W=$.getActiveScopeSpan(),K=!!(null==x?void 0:x.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,I,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:y,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:E.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}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>N.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&C&&P&&!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=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,x),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&W?await o(W):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,x),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:C})},"routeModule",0,N,"serverHooks",0,P,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,C],200779)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0f.q.gf._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},100705,(e,t,r)=>{"use strict";t.exports=e.r(918622)},294382,(e,t,r)=>{"use strict";t.exports=e.r(100705).vendored["react-rsc"].React},362744,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,a={},u={RequestCookies:()=>m,ResponseCookies:()=>y,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>p};for(var l in u)s(a,l,{get:u[l],enumerable:!0});function p(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:i,httponly:o,maxage:a,path:u,samesite:l,secure:p,partitioned:c,priority:m}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,x,g={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...o&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:u,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...p&&{secure:!0},...m&&{priority:f.includes(x=(x=m).toLowerCase())?x:void 0},...c&&{partitioned:!0}};let e={};for(let t in g)g[t]&&(e[t]=g[t]);return e}}t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of i(t))o.call(e,a)||void 0===a||s(e,a,{get:()=>t[a],enumerable:!(r=n(t,a))||r.enumerable});return e})(s({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],f=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>p(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>p(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,o=[],a=0;function u(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,i=!1;u();)if(","===(r=e.charAt(a))){for(s=a,a+=1,u(),n=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(i=!0,a=n,o.push(e.substring(t,s)),t=a):a=s+1}else a+=1;(!i||a>=e.length)&&o.push(e.substring(t,e.length))}return o}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=p(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(p).join("; ")}}},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},798003,e=>{"use strict";var t=e.i(912714),r=e.i(660526),s=e.i(750227);function n(){return s.default.join(r.default.homedir(),".wiki-viewer","config.json")}async function i(){let e=s.default.join(r.default.homedir(),".wiki-viewer");await (0,t.mkdir)(e,{recursive:!0,mode:448});try{await (0,t.chmod)(e,448)}catch{}}async function o(){try{let e=await (0,t.readFile)(n(),"utf8");return JSON.parse(e)}catch{return{}}}let a=Promise.resolve();function u(e){let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t}async function l(e){await i(),await (0,t.writeFile)(n(),JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,t.chmod)(n(),384)}catch{}}async function p(e){return u(async()=>{let t=await o();await l({...t,...e})})}async function d(e){return u(async()=>{let t=e({...await o()});return await l(t),t})}e.s(["readConfig",0,o,"reposDir",0,function(){return s.default.join(r.default.homedir(),".wiki-viewer","repos")},"updateConfig",0,d,"writeConfig",0,p])},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),i=e.i(750227),o=e.i(660526);e.i(902157);let a=RegExp("[;|&$`<>(){}\\n\\r\\0]");function u(e){let{target:t,mountpoint:r,port:s}=e,n=t.user?`${t.user}@`:"",i=[`${n}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&i.push("-p",String(s));let o=e.authMethod??"agent";!e.authMethod&&(null!=e.password?o="password":e.keyPath&&(o="keyfile"));let a=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&a.push("ro"),"keyfile"===o&&e.keyPath&&(a.push(`IdentityFile=${e.keyPath}`),a.push("IdentitiesOnly=yes")),"password"===o){let e=a.indexOf("BatchMode=yes");e>=0&&a.splice(e,1),a.push("password_stdin"),a.push("PreferredAuthentications=password,keyboard-interactive"),a.push("PubkeyAuthentication=no"),a.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&a.push(...e.extraOptions),i.push("-o",a.join(",")),i}e.s(["buildSshfsArgs",0,u,"isValidKeyPath",0,function(e){return!(!e||a.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||a.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let o=n,u=n.indexOf("@");return u>=0&&(t=n.slice(0,u),o=n.slice(u+1),!t)?null:o&&/^[a-zA-Z0-9.\-]+$/.test(o)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:o,remotePath:i}:null}],296555);let l=(0,s.promisify)(r.execFile);function p(){return i.default.join(o.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await l("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 c(t){var r;let s=i.default.resolve(t),o=!1;try{o=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{o=!1}return!!o&&(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 d(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=u(e);if(await new Promise((s,n)=>{let i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),o="",a=setTimeout(()=>{i.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{o+=e.toString()}),i.on("error",e=>{clearTimeout(a),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(a),0===e?s():n(Error(`sshfs exited ${e}: ${o.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=i.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await l(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"mountSshfs",0,h,"mountpointFor",0,function(e){return i.default.join(p(),e)},"mountsDir",0,p,"unmountSshfs",0,f],256294)}];
1
+ module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},100705,(e,t,r)=>{"use strict";t.exports=e.r(918622)},294382,(e,t,r)=>{"use strict";t.exports=e.r(100705).vendored["react-rsc"].React},362744,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,a={},u={RequestCookies:()=>m,ResponseCookies:()=>y,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>p};for(var l in u)s(a,l,{get:u[l],enumerable:!0});function p(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:i,httponly:o,maxage:a,path:u,samesite:l,secure:p,partitioned:c,priority:m}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,x,g={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...o&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:u,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...p&&{secure:!0},...m&&{priority:f.includes(x=(x=m).toLowerCase())?x:void 0},...c&&{partitioned:!0}};let e={};for(let t in g)g[t]&&(e[t]=g[t]);return e}}t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of i(t))o.call(e,a)||void 0===a||s(e,a,{get:()=>t[a],enumerable:!(r=n(t,a))||r.enumerable});return e})(s({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],f=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>p(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>p(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,o=[],a=0;function u(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,i=!1;u();)if(","===(r=e.charAt(a))){for(s=a,a+=1,u(),n=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(i=!0,a=n,o.push(e.substring(t,s)),t=a):a=s+1}else a+=1;(!i||a>=e.length)&&o.push(e.substring(t,e.length))}return o}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=p(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(p).join("; ")}}},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},798003,e=>{"use strict";var t=e.i(912714),r=e.i(660526),s=e.i(750227);function n(){return s.default.join(r.default.homedir(),".wiki-viewer","config.json")}async function i(){let e=s.default.join(r.default.homedir(),".wiki-viewer");await (0,t.mkdir)(e,{recursive:!0,mode:448});try{await (0,t.chmod)(e,448)}catch{}}async function o(){try{let e=await (0,t.readFile)(n(),"utf8");return JSON.parse(e)}catch{return{}}}let a=Promise.resolve();function u(e){let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t}async function l(e){await i(),await (0,t.writeFile)(n(),JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,t.chmod)(n(),384)}catch{}}async function p(e){return u(async()=>{let t=await o();await l({...t,...e})})}async function d(e){return u(async()=>{let t=e({...await o()});return await l(t),t})}e.s(["readConfig",0,o,"reposDir",0,function(){return s.default.join(r.default.homedir(),".wiki-viewer","repos")},"updateConfig",0,d,"writeConfig",0,p])},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),i=e.i(750227),o=e.i(660526);e.i(902157);let a=RegExp("[;|&$`<>(){}\\n\\r\\0]");function u(e){let{target:t,mountpoint:r,port:s}=e,n=t.user?`${t.user}@`:"",i=[`${n}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(Number(s))&&Number(s)>0&&65536>Number(s)&&i.push("-p",String(s));let o=e.authMethod??"agent";!e.authMethod&&(null!=e.password?o="password":e.keyPath&&(o="keyfile"));let a=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(e.readOnly&&a.push("ro"),"keyfile"===o&&e.keyPath&&(a.push(`IdentityFile=${e.keyPath}`),a.push("IdentitiesOnly=yes")),"password"===o){let e=a.indexOf("BatchMode=yes");e>=0&&a.splice(e,1),a.push("password_stdin"),a.push("PreferredAuthentications=password,keyboard-interactive"),a.push("PubkeyAuthentication=no"),a.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&a.push(...e.extraOptions),i.push("-o",a.join(",")),i}e.s(["buildSshfsArgs",0,u,"isValidKeyPath",0,function(e){return!(!e||a.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"parseSshTarget",0,function(e){let t;if(!e||a.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let o=n,u=n.indexOf("@");return u>=0&&(t=n.slice(0,u),o=n.slice(u+1),!t)?null:o&&/^[a-zA-Z0-9.\-]+$/.test(o)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:o,remotePath:i}:null}],296555);let l=(0,s.promisify)(r.execFile);function p(){return i.default.join(o.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await l("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 c(t){var r;let s=i.default.resolve(t),o=!1;try{o=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{o=!1}return!!o&&(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 d(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=u(e);if(await new Promise((s,n)=>{let i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),o="",a=setTimeout(()=>{i.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{o+=e.toString()}),i.on("error",e=>{clearTimeout(a),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(a),0===e?s():n(Error(`sshfs exited ${e}: ${o.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function f(e){let t=i.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await l(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"mountSshfs",0,h,"mountpointFor",0,function(e){return i.default.join(p(),e)},"mountsDir",0,p,"unmountSshfs",0,f],256294)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0fc05ki._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||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 d(){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 p(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 p(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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}])},107962,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),_=e.i(351216),g=e.i(402662),y=e.i(583627),R=e.i(359211);async function E(e,{params:t}){let r=await (0,y.requireAdmin)(e);if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let{id:s}=await t;try{let e=await (0,R.listGitWorkspaceBranches)(s);return _.NextResponse.json({ok:!0,branches:e})}catch(t){let e=t instanceof Error?t.message:String(t);return _.NextResponse.json({error:e},{status:400})}}async function A(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t,a=await e.json().catch(()=>null);if(!a?.branch||"string"!=typeof a.branch)return _.NextResponse.json({error:"Invalid branch"},{status:400});try{let e=await (0,R.switchGitWorkspaceBranch)(n,a.branch);return _.NextResponse.json({ok:!0,...e})}catch(t){if(t instanceof Error&&t.invalidBranch)return _.NextResponse.json({error:"Invalid branch name"},{status:400});let e=t instanceof Error?t.message:String(t);return _.NextResponse.json({error:e},{status:400})}}e.s(["GET",0,E,"POST",0,A,"runtime",0,"nodejs"],11215);var x=e.i(11215);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/branch/route",pathname:"/api/system/workspaces/[id]/branch",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/branch/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:N,serverHooks:b}=k;async function C(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/branch/route";_=_.replace(/\/index$/,"")||"/";let g=await k.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:x,prerenderManifest:I,routerServerContext:N,isOnDemandRevalidate:b,revalidateOnlyGenerated:C,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:T}=g,O=(0,o.normalizeAppPath)(_),j=!!(I.dynamicRoutes[O]||I.routes[P]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(j&&!x){let e=!!I.routes[P],t=I.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new v.NoFallbackError}}let q=null;!j||k.isDev||x||(q="/index"===(q=P)?"/":q);let M=!0===k.isDev||!j,D=j&&!M;T&&S&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==N?void 0:N.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,E,I,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:R,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>k.onRequestError(e,t,s,n,N)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>k.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&b&&C&&!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=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(z,G,a,W.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,s=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.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 k.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,N),t}},u=await k.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});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});F||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&j||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,N),j)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:N})},"routeModule",0,k,"serverHooks",0,b,"workAsyncStorage",0,I,"workUnitAsyncStorage",0,N],107962)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
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","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 d(){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 p(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 p(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,p,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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}])},107962,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),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),v=e.i(193695);e.i(484264);var w=e.i(315709),g=e.i(351216),_=e.i(402662),y=e.i(583627),R=e.i(359211);async function E(e,{params:t}){let r=await (0,y.requireAdmin)(e);if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let{id:s}=await t;try{let e=await (0,R.listGitWorkspaceBranches)(s);return g.NextResponse.json({ok:!0,branches:e})}catch(t){let e=t instanceof Error?t.message:String(t);return g.NextResponse.json({error:e},{status:400})}}async function A(e,{params:t}){let r=(0,_.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return g.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t,a=await e.json().catch(()=>null);if(!a?.branch||"string"!=typeof a.branch)return g.NextResponse.json({error:"Invalid branch"},{status:400});try{let e=await (0,R.switchGitWorkspaceBranch)(n,a.branch);return g.NextResponse.json({ok:!0,...e})}catch(t){if(t instanceof Error&&t.invalidBranch)return g.NextResponse.json({error:"Invalid branch name"},{status:400});let e=t instanceof Error?t.message:String(t);return g.NextResponse.json({error:e},{status:400})}}e.s(["GET",0,E,"POST",0,A,"runtime",0,"nodejs"],11215);var x=e.i(11215);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/branch/route",pathname:"/api/system/workspaces/[id]/branch",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/branch/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:N,serverHooks:b}=I;async function C(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/[id]/branch/route";g=g.replace(/\/index$/,"")||"/";let _=await I.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:x,prerenderManifest:k,routerServerContext:N,isOnDemandRevalidate:b,revalidateOnlyGenerated:C,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:T}=_,O=(0,o.normalizeAppPath)(g),j=!!(k.dynamicRoutes[O]||k.routes[P]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(j&&!x){let e=!!k.routes[P],t=k.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new v.NoFallbackError}}let q=null;!j||I.isDev||x||(q="/index"===(q=P)?"/":q);let M=!0===I.isDev||!j,D=j&&!M;T&&S&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",$=(0,a.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==N?void 0:N.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,E,k,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:R,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>I.onRequestError(e,t,s,n,N)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>I.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${g}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&b&&C&&!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=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(z,G,a,W.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!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,s=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.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 I.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,N),t}},u=await I.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});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});F||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&j||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${g}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:b})},!1,N),j)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:N})},"routeModule",0,I,"serverHooks",0,b,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,N],107962)},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)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0fkfkc.._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||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 d(){return a.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 c(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 p(),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 c(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,p,"isMounted",0,c,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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"))},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),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),_=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(902157),R=e.i(351216),g=e.i(402662),N=e.i(345212),y=e.i(762512),A=e.i(583627),I=e.i(254226),x=e.i(359211);async function E(e,{params:t}){var r;let s=(0,g.checkOrigin)(e);if(s)return s;let n="local",a=!0;if("1"!==process.env.WIKI_NO_AUTH){let t=await (0,I.requireUser)(e);if(!t.ok)return R.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 R.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});let{slug:i}=await t,o=await (0,y.getBySlug)(i);if(!o)return R.NextResponse.json({error:"NOT_FOUND"},{status:404});if("node"!==o.type)return R.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let l=await (0,x.getWorkspace)(o.workspaceId);if(!l)return R.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"!==process.env.WIKI_NO_AUTH&&!(0,x.userCanAccess)(l,n,a))return R.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let u=(await e.json().catch(()=>({}))).action;if("stop"===u)return(0,N.stopApp)(o.workspaceId,o.relPath),R.NextResponse.json({ok:!0,status:"stopped"});if("pin"===u||"unpin"===u){if("node"!==o.type)return R.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let e="pin"===u;if(!await (0,y.setHostedAppPersist)(o.slug,e))return R.NextResponse.json({error:"NOT_FOUND"},{status:404});let t=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);return t&&(0,N.setAppPersistence)(o.workspaceId,o.relPath,t,e),R.NextResponse.json({ok:!0,persist:e})}if("restart"===u){let e=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,w.existsSync)(e))return R.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,N.restartApp)(o.workspaceId,o.relPath,e,o.script,!0===o.persist);return R.NextResponse.json({ok:!0,status:"restarting",port:t.port})}catch(e){return R.NextResponse.json({error:String(e)},{status:500})}}if("start"===u){let e=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,w.existsSync)(e))return R.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,N.startApp)(o.workspaceId,o.relPath,e,o.script,{persist:!0===o.persist});return R.NextResponse.json({ok:!0,status:"starting",port:t.port})}catch(e){return R.NextResponse.json({error:String(e)},{status:500})}}return R.NextResponse.json({error:"INVALID_ACTION"},{status:400})}e.s(["POST",0,E],4065);var P=e.i(4065);let k=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:P,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:S,serverHooks:T}=k;async function C(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/wiki/hosted-apps/[slug]/route";w=w.replace(/\/index$/,"")||"/";let R=await k.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:N,nextConfig:y,parsedUrl:A,isDraftMode:I,prerenderManifest:x,routerServerContext:E,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:C}=R,U=(0,o.normalizeAppPath)(w),b=!!(x.dynamicRoutes[U]||x.routes[S]),j=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(b&&!I){let e=!!x.routes[S],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await j();throw new _.NoFallbackError}}let D=null;!b||k.isDev||I||(D="/index"===(D=S)?"/":D);let q=!0===k.isDev||!b,M=b&&!q;C&&T&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:C});let H=e.method||"GET",$=(0,a.getTracer)(),K=$.getActiveScopeSpan(),W=!!(null==E?void 0:E.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,y,x,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:N,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>k.onRequestError(e,t,s,n,E)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>k.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${w}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&P&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!b)return await (0,c.sendResponse)(z,G,a,L.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!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status: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 k.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,E),t}},u=await k.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:B});if(!b)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&b||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&K?await o(K):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${w}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof _.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,E),b)throw t;return await (0,c.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:S})},"routeModule",0,k,"serverHooks",0,T,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,S],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","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 d(){return a.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 c(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 p(),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 c(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,p,"isMounted",0,c,"mountSshfs",0,h,"mountpointFor",0,function(e){return a.default.join(d(),e)},"mountsDir",0,d,"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"))},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),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),f=e.i(257858),m=e.i(487476),_=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(902157),R=e.i(351216),g=e.i(402662),N=e.i(345212),y=e.i(762512),A=e.i(583627),I=e.i(254226),x=e.i(359211);async function E(e,{params:t}){var r;let s=(0,g.checkOrigin)(e);if(s)return s;let n="local",a=!0;if("1"!==process.env.WIKI_NO_AUTH){let t=await (0,I.requireUser)(e);if(!t.ok)return R.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 R.NextResponse.json({error:"ADMIN_REQUIRED"},{status:403});let{slug:i}=await t,o=await (0,y.getBySlug)(i);if(!o)return R.NextResponse.json({error:"NOT_FOUND"},{status:404});if("node"!==o.type)return R.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let l=await (0,x.getWorkspace)(o.workspaceId);if(!l)return R.NextResponse.json({error:"WORKSPACE_NOT_FOUND"},{status:404});if("1"!==process.env.WIKI_NO_AUTH&&!(0,x.userCanAccess)(l,n,a))return R.NextResponse.json({error:"WORKSPACE_FORBIDDEN"},{status:403});let u=(await e.json().catch(()=>({}))).action;if("stop"===u)return(0,N.stopApp)(o.workspaceId,o.relPath),R.NextResponse.json({ok:!0,status:"stopped"});if("pin"===u||"unpin"===u){if("node"!==o.type)return R.NextResponse.json({error:"NOT_A_NODE_APP"},{status:400});let e="pin"===u;if(!await (0,y.setHostedAppPersist)(o.slug,e))return R.NextResponse.json({error:"NOT_FOUND"},{status:404});let t=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);return t&&(0,N.setAppPersistence)(o.workspaceId,o.relPath,t,e),R.NextResponse.json({ok:!0,persist:e})}if("restart"===u){let e=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,w.existsSync)(e))return R.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,N.restartApp)(o.workspaceId,o.relPath,e,o.script,!0===o.persist);return R.NextResponse.json({ok:!0,status:"restarting",port:t.port})}catch(e){return R.NextResponse.json({error:String(e)},{status:500})}}if("start"===u){let e=(0,x.safeWorkspacePath)(l.rootDir,o.relPath);if(!e||!(0,w.existsSync)(e))return R.NextResponse.json({error:"MISSING_DIR"},{status:409});try{let t=await (0,N.startApp)(o.workspaceId,o.relPath,e,o.script,{persist:!0===o.persist});return R.NextResponse.json({ok:!0,status:"starting",port:t.port})}catch(e){return R.NextResponse.json({error:String(e)},{status:500})}}return R.NextResponse.json({error:"INVALID_ACTION"},{status:400})}e.s(["POST",0,E],4065);var P=e.i(4065);let k=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:P,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:S,serverHooks:T}=k;async function C(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/wiki/hosted-apps/[slug]/route";w=w.replace(/\/index$/,"")||"/";let R=await k.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:N,nextConfig:y,parsedUrl:A,isDraftMode:I,prerenderManifest:x,routerServerContext:E,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:C}=R,U=(0,o.normalizeAppPath)(w),b=!!(x.dynamicRoutes[U]||x.routes[S]),j=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,A,!1):t.end("This page could not be found"),null);if(b&&!I){let e=!!x.routes[S],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await j();throw new _.NoFallbackError}}let D=null;!b||k.isDev||I||(D="/index"===(D=S)?"/":D);let q=!0===k.isDev||!b,M=b&&!q;C&&T&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:C});let H=e.method||"GET",$=(0,a.getTracer)(),K=$.getActiveScopeSpan(),W=!!(null==E?void 0:E.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,y,x,B);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let L={params:N,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:F,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>k.onRequestError(e,t,s,n,E)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>k.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${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} ${w}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&P&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!b)return await (0,c.sendResponse)(z,G,a,L.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!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status: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 k.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,E),t}},u=await k.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:B});if(!b)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&b||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&K?await o(K):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${w}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof _.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,E),b)throw t;return await (0,c.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:S})},"routeModule",0,k,"serverHooks",0,T,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,S],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)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0skgiv0._.js.map