wiki-viewer 2.9.2 → 2.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +0 -4
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +4 -4
- package/.next/standalone/.next/routes-manifest.json +0 -24
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent/activity/route.js +7 -7
- package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/admin/agents/[agentId]/revoke/route.js +5 -5
- package/.next/standalone/.next/server/app/api/agent/admin/agents/[agentId]/revoke/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/admin/agents/route.js +5 -5
- package/.next/standalone/.next/server/app/api/agent/admin/agents/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/approve/route.js +5 -5
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/approve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/deny/route.js +5 -5
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/deny/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/route.js +5 -5
- package/.next/standalone/.next/server/app/api/agent/admin/registrations/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js +7 -7
- package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +9 -9
- package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js +7 -7
- package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/move/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/search/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/internal/span/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/settings/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js +10 -2
- package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/assets/[...path]/route.js +5 -5
- package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/[...all]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/pdf/save/route.js +8 -8
- package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js +3 -2
- package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/route.js +8 -7
- package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/route.js +8 -8
- package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/admins/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/admins/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/api-key/route.js +2 -2
- package/.next/standalone/.next/server/app/api/system/api-key/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/auth-config/route.js +3 -3
- package/.next/standalone/.next/server/app/api/system/auth-config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/auth-settings/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/auth-settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/browse/route.js +4 -4
- package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/config/route.js +3 -3
- package/.next/standalone/.next/server/app/api/system/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/pins/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/pins/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/reveal/route.js +4 -4
- package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/users/route.js +4 -4
- package/.next/standalone/.next/server/app/api/system/users/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js +5 -5
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/route.js +4 -4
- package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/[...path]/route.js +7 -7
- package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/app/route.js +9 -9
- package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/content/route.js +10 -10
- package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/download/route.js +9 -9
- package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/folder/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js +6 -6
- package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-history/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/move/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/new-file/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/page/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/presence/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/search/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/slugs/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/watch/route.js +4 -4
- package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/s/[token]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/s/[token]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/signin/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/signin/page.js +4 -4
- package/.next/standalone/.next/server/app/signin/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +0 -4
- package/.next/standalone/.next/server/chunks/0p91_next_dist_esm_build_templates_app-route_0ytral2.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.xk8gi._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00awqt2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00sn-o5._.js +16 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0mw1brk._.js → [root-of-the-server]__01y-312._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12jdw86._.js → [root-of-the-server]__02373p-._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03_q-~2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03c09g7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03prziv._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04vo55d._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04~wbjj._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05tbv~.._.js +16 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__068r9h7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06jm~o8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07ox9i8._.js +12 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__088zh92._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_5~w8k._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_g-.kr._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bdxjy5._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__10c4_fo._.js → [root-of-the-server]__0e1kbl7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12v.eva._.js → [root-of-the-server]__0er9oof._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e~2gkf._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f2frhc._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0hgccef._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0egcl8n._.js → [root-of-the-server]__0j40f60._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04mie79._.js → [root-of-the-server]__0k0t_.e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k46u9j._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kau~ca._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kuwuwk._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kvxxt~._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l5io1-._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0md2vr3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mjux2y._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0muj-bp._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nnxcs7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0omny3u._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ou7hai._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r--676._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r55bc0._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rdt~cr._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tizmgc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vr.qhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0915i_~._.js → [root-of-the-server]__0x.030x._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__11mhei8._.js → [root-of-the-server]__0xlo2r_._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yfb5md._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0a7c~hj._.js → [root-of-the-server]__0z5xk6f._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~gd460._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~i3blt._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10p-nga._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10zrueo._.js +12 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11ltgmp._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11zy4x1._.js +6 -6
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12bl1v6._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12g8s_j._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h_w~h._.js +4 -0
- package/.next/standalone/.next/server/chunks/_079xuln._.js +1 -1
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_system_workspaces_[id]_open_route_actions_1087xu7.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules__pnpm_0aj5g-w._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_0ks~u~e._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_auth_server_ts_00f4e0h._.js +7 -7
- package/.next/standalone/.next/server/chunks/src_lib_fs_mounts_ts_0ksy80l._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_workspaces_ts_0qon40u._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0bt7d39._.js → 0e.4_sonner_dist_index_mjs_0u2em8w._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_0p7ph25._.js → 0~w0_katex_dist_katex_mjs_018q_uc._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/12y~_mermaid_dist_chunks_mermaid_core_chunk-5ZQYHXKU_mjs_0z1.978._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/12y~_mermaid_dist_chunks_mermaid_core_chunk-KSCS5N6A_mjs_0v4oeem._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ybtj28._.js → [root-of-the-server]__02ov~kn._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__13k6~ax._.js → [root-of-the-server]__0n5kphk._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vglc36._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_00pku9f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0_.s7b8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0oq8kwv._.js +174 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04qqrjr._.js → node_modules__pnpm_0.wgpvp._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09k0q18._.js → node_modules__pnpm_02j0p3a._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0wg48.8._.js → node_modules__pnpm_02yqus6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_11g2aee._.js → node_modules__pnpm_07bf4mp._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0a4su30._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0a-f4gi._.js → node_modules__pnpm_0a~3f2a._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0819uyi._.js → node_modules__pnpm_0bnc0lk._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0b3l3b4._.js → node_modules__pnpm_0dm.meu._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0rc4s48._.js → node_modules__pnpm_0ebvpwi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0jp7ggg._.js → node_modules__pnpm_0f.5boy._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ha2xsd._.js → node_modules__pnpm_0f9vj0~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ypcps.._.js → node_modules__pnpm_0f9vuiw._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_06usij4._.js → node_modules__pnpm_0fa23-q._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0cuckmp._.js → node_modules__pnpm_0g21lw4._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09ybwhl._.js → node_modules__pnpm_0kdk2ot._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0wjizot._.js → node_modules__pnpm_0kkbph0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xp3s_y._.js → node_modules__pnpm_0mv0.4i._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0z~bh__._.js → node_modules__pnpm_0nt22aq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0o~d81.._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0m2hb6k._.js → node_modules__pnpm_0p4w0~q._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_03ciu.l._.js → node_modules__pnpm_0pv3k.9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09c3lg3._.js → node_modules__pnpm_0qmqt0m._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0iuzd3o._.js → node_modules__pnpm_0q~maar._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ldft78._.js → node_modules__pnpm_0s1th-1._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0qhs4r2._.js → node_modules__pnpm_0tdnho_._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0dsnv76._.js → node_modules__pnpm_0w6oo9l._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0eiz-8_._.js → node_modules__pnpm_0x9-_1d._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gnc95r._.js → node_modules__pnpm_0xq~zku._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~88b7s._.js → node_modules__pnpm_12nfd13._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_s_[token]_page_tsx_0_fzrmd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_signin_00yk0vm._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/00_12ekhbvhhp.js +1 -0
- package/.next/standalone/.next/static/chunks/01u~45r8icusu.js +1 -0
- package/.next/standalone/.next/static/chunks/0aeii_m.9~9_t.js +1 -0
- package/.next/standalone/.next/static/chunks/0fm2eul-wqh2f.js +1 -0
- package/.next/standalone/.next/static/chunks/0g6xc2sqjuw.h.js +172 -0
- package/.next/standalone/.next/static/chunks/{08usk_~k6d0yf.js → 0k31ncl7m_j9q.js} +2 -2
- package/.next/standalone/.next/static/chunks/0n7px0u5.eizf.css +9 -0
- package/.next/standalone/.next/static/chunks/0qs6cl.~q-0tv.js +1 -0
- package/.next/standalone/.next/static/chunks/0wu_n6m9jg8rn.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0~8fsjmdvb_1i.js → turbopack-1105gjd__15ti.js} +1 -1
- package/.next/standalone/.test-floor +1 -1
- package/.next/standalone/biome.json +70 -0
- package/.next/standalone/node_modules/@vscode/ripgrep-linux-x64/bin/rg +0 -0
- package/.next/standalone/package.json +8 -9
- package/.next/standalone/scripts/format-check.mjs +25 -0
- package/.next/standalone/scripts/test-floor.mjs +86 -37
- package/.next/standalone/server.js +1 -1
- package/README.md +12 -5
- package/bin/cli/config.js +105 -0
- package/bin/cli/prompt.js +36 -0
- package/bin/cli/serve.js +413 -0
- package/bin/cli/service.js +304 -0
- package/bin/cli/update.js +58 -0
- package/bin/cli/wizard.js +134 -0
- package/bin/shared/ssh-target.js +154 -0
- package/bin/wiki-viewer.js +118 -1224
- package/package.json +19 -13
- package/.next/standalone/.next/server/app/api/system/clear-root/route/app-paths-manifest.json +0 -3
- package/.next/standalone/.next/server/app/api/system/clear-root/route/build-manifest.json +0 -9
- package/.next/standalone/.next/server/app/api/system/clear-root/route/server-reference-manifest.json +0 -4
- package/.next/standalone/.next/server/app/api/system/clear-root/route.js +0 -14
- package/.next/standalone/.next/server/app/api/system/clear-root/route.js.map +0 -5
- package/.next/standalone/.next/server/app/api/system/clear-root/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/system/clear-root/route_client-reference-manifest.js +0 -3
- package/.next/standalone/.next/server/app/api/system/root-status/route/app-paths-manifest.json +0 -3
- package/.next/standalone/.next/server/app/api/system/root-status/route/build-manifest.json +0 -9
- package/.next/standalone/.next/server/app/api/system/root-status/route/server-reference-manifest.json +0 -4
- package/.next/standalone/.next/server/app/api/system/root-status/route.js +0 -14
- package/.next/standalone/.next/server/app/api/system/root-status/route.js.map +0 -5
- package/.next/standalone/.next/server/app/api/system/root-status/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/system/root-status/route_client-reference-manifest.js +0 -3
- package/.next/standalone/.next/server/app/api/system/set-root/route/app-paths-manifest.json +0 -3
- package/.next/standalone/.next/server/app/api/system/set-root/route/build-manifest.json +0 -9
- package/.next/standalone/.next/server/app/api/system/set-root/route/server-reference-manifest.json +0 -4
- package/.next/standalone/.next/server/app/api/system/set-root/route.js +0 -15
- package/.next/standalone/.next/server/app/api/system/set-root/route.js.map +0 -5
- package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/system/set-root/route_client-reference-manifest.js +0 -3
- package/.next/standalone/.next/server/app/api/wiki/file/route/app-paths-manifest.json +0 -3
- package/.next/standalone/.next/server/app/api/wiki/file/route/build-manifest.json +0 -9
- package/.next/standalone/.next/server/app/api/wiki/file/route/server-reference-manifest.json +0 -4
- package/.next/standalone/.next/server/app/api/wiki/file/route.js +0 -16
- package/.next/standalone/.next/server/app/api/wiki/file/route.js.map +0 -5
- package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/wiki/file/route_client-reference-manifest.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-3eby~._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-bd36s._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0._o62m._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.f~mr1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.xsx4e._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01w5s-4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02hiw0n._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__037g~yp._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04yzrn9._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05dk_5q._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05nk8xg._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05wicn_._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07i72.r._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__086~~78._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08h0txl._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09ezcba._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0au~ncj._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-49tx._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0di13ue._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dkxp4y._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jhwupj._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ker6~l._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mkrdf0._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nzjsw9._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o0lsmx._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0omc1-s._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0os3ej1._.js +0 -16
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0px8._m._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qe7kxb._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qe8lje._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qox302._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s5ns33._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s6kt0y._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t_s2dg._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tchvup._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tw6h_5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmp13_._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z8qb~s._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zy2f8y._.js +0 -12
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~s~szv._.js +0 -16
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1024gkd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12abg.4._.js +0 -3
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_system_clear-root_route_actions_065znew.js +0 -3
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_system_root-status_route_actions_0stp57y.js +0 -3
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_system_set-root_route_actions_0vxn8ey.js +0 -3
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_wiki_file_route_actions_0ytnc0i.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/0~w0_katex_dist_katex_mjs_12lt4cp._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a3bjyp._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_03xt0rl._.js +0 -158
- package/.next/standalone/.next/server/chunks/ssr/_06rf50_._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0i3r51-._.js +0 -158
- package/.next/standalone/.next/server/chunks/ssr/_0jdop6l._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0v4uz-4._.js +0 -19
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0.6uh54._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_00o9din._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_02jnz2o._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_03jchtd._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_04xh4re._.js +0 -26
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_07p8tmd._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_08jqh.4._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0_up15t._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0c.b4rt._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0dr38_k._.js +0 -31
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0e-nvo5._.js +0 -45
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0e9l2~p._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0k_8g5d._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0kli5~f._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0n-ec__._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0odzirk._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0ov9ih8._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0qb~hug._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0t24-57._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0umkew~._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0w_fkrb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0yfe2s1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0~ovwm1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_10-i1v8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_12dmj0l._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_133w.gx._.js +0 -11
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_13y5ncy._.js +0 -3
- package/.next/standalone/.next/static/chunks/0-lsw0io13aha.js +0 -1
- package/.next/standalone/.next/static/chunks/01-v2wyaj~5gn.js +0 -1
- package/.next/standalone/.next/static/chunks/03zmegz1kvvod.js +0 -17
- package/.next/standalone/.next/static/chunks/04_l8s7dy454_.js +0 -1
- package/.next/standalone/.next/static/chunks/0a~z4.g.dtxjm.js +0 -156
- package/.next/standalone/.next/static/chunks/0ky8fha87kp0_.js +0 -1
- package/.next/standalone/.next/static/chunks/0nzvnpn.j1~sx.js +0 -1
- package/.next/standalone/.next/static/chunks/0t5bc7buy7sx9.js +0 -156
- package/.next/standalone/.next/static/chunks/0umlolnxs~j3r.js +0 -1
- package/.next/standalone/.next/static/chunks/1012fl5fxholx.js +0 -1
- package/.next/standalone/.next/static/chunks/17isnstdq92js.css +0 -5
- /package/.next/standalone/.next/static/{R2lG97g-a6HpbZZtS4qep → 2qQdcBZEXk0wXjBdvnPD5}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{R2lG97g-a6HpbZZtS4qep → 2qQdcBZEXk0wXjBdvnPD5}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{R2lG97g-a6HpbZZtS4qep → 2qQdcBZEXk0wXjBdvnPD5}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/057l2ju6dh43x.js","static/chunks/08usk_~k6d0yf.js","static/chunks/0vp-ahhagxptc.js"],runtimeModuleIds:[569959]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function k(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let j=Symbol("turbopack queues"),U=Symbol("turbopack exports"),v=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=k(),u=Object.assign(s,{[U]:r.exports,[j]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(j in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[j]:e=>e(t)};return e.then(e=>{r[U]=e,C(t)},e=>{r[v]=e,C(t)}),r}}return{[U]:e,[j]:()=>{}}}),r=()=>t.map(e=>{if(e[v])throw e[v];return e[U]}),{promise:l,resolve:i}=k(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[j](u)),s.queueCount?l:r()},function(e){e?i(u[v]=e):l(u[U]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||_.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),i))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(N(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/057l2ju6dh43x.js","static/chunks/0k31ncl7m_j9q.js","static/chunks/0vp-ahhagxptc.js"],runtimeModuleIds:[569959]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),U=Symbol("turbopack exports"),v=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=j(),u=Object.assign(s,{[U]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[k]:e=>e(t)};return e.then(e=>{r[U]=e,C(t)},e=>{r[v]=e,C(t)}),r}}return{[U]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[v])throw e[v];return e[U]}),{promise:l,resolve:i}=j(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?l:r()},function(e){e?i(u[v]=e):l(u[U]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||_.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),i))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(N(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
624
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.5.6/schema.json",
|
|
3
|
+
"vcs": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"clientKind": "git",
|
|
6
|
+
"useIgnoreFile": true
|
|
7
|
+
},
|
|
8
|
+
"files": {
|
|
9
|
+
"ignoreUnknown": true,
|
|
10
|
+
"includes": [
|
|
11
|
+
"*.ts",
|
|
12
|
+
"*.tsx",
|
|
13
|
+
"*.mjs",
|
|
14
|
+
"*.js",
|
|
15
|
+
"*.json",
|
|
16
|
+
"src/**/*.ts",
|
|
17
|
+
"src/**/*.tsx",
|
|
18
|
+
"packages/**/*.ts",
|
|
19
|
+
"packages/**/*.tsx",
|
|
20
|
+
"packages/**/*.mjs",
|
|
21
|
+
"packages/**/*.js",
|
|
22
|
+
"packages/**/*.json",
|
|
23
|
+
"scripts/**/*.mjs",
|
|
24
|
+
"bin/**/*.js",
|
|
25
|
+
"!dist/",
|
|
26
|
+
"!p/",
|
|
27
|
+
"!.pi/",
|
|
28
|
+
"!.handoffs/",
|
|
29
|
+
"!.next/",
|
|
30
|
+
"!node_modules/"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"formatter": {
|
|
34
|
+
"enabled": false
|
|
35
|
+
},
|
|
36
|
+
"linter": {
|
|
37
|
+
"enabled": true,
|
|
38
|
+
"rules": {
|
|
39
|
+
"preset": "recommended",
|
|
40
|
+
"a11y": {
|
|
41
|
+
"recommended": false
|
|
42
|
+
},
|
|
43
|
+
"complexity": {
|
|
44
|
+
"recommended": false
|
|
45
|
+
},
|
|
46
|
+
"correctness": {
|
|
47
|
+
"noUnusedFunctionParameters": "off",
|
|
48
|
+
"noUnusedImports": "off",
|
|
49
|
+
"noUnusedVariables": "off",
|
|
50
|
+
"useExhaustiveDependencies": "off"
|
|
51
|
+
},
|
|
52
|
+
"performance": {
|
|
53
|
+
"noImgElement": "off"
|
|
54
|
+
},
|
|
55
|
+
"security": {
|
|
56
|
+
"noDangerouslySetInnerHtml": "off"
|
|
57
|
+
},
|
|
58
|
+
"style": {
|
|
59
|
+
"recommended": false
|
|
60
|
+
},
|
|
61
|
+
"suspicious": {
|
|
62
|
+
"noArrayIndexKey": "off",
|
|
63
|
+
"recommended": false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"assist": {
|
|
68
|
+
"enabled": false
|
|
69
|
+
}
|
|
70
|
+
}
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wiki-viewer",
|
|
3
|
-
"version": "2.9.
|
|
4
|
-
"description": "Local file viewer and wiki
|
|
3
|
+
"version": "2.9.5",
|
|
4
|
+
"description": "Local file viewer and wiki — view markdown, HTML, PDFs, notebooks, office docs, and more from any directory",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -21,11 +21,14 @@
|
|
|
21
21
|
"postbuild": "node bin/postbuild.js",
|
|
22
22
|
"prepublishOnly": "npm run build",
|
|
23
23
|
"prepack": "node -e \"require('fs').existsSync('.next/standalone/server.js')||(console.error('ERROR: .next/standalone/server.js missing, run pnpm build before publishing'),process.exit(1))\"",
|
|
24
|
+
"lint": "biome check .",
|
|
25
|
+
"format:check": "node scripts/format-check.mjs",
|
|
24
26
|
"test": "node scripts/test-floor.mjs",
|
|
25
|
-
"test:raw": "tsx --import ./src/tests/proof/preload.ts --test src/tests/proof/*.test.ts"
|
|
27
|
+
"test:raw": "tsx --import ./src/tests/proof/preload.ts --test src/tests/proof/*.test.ts",
|
|
28
|
+
"typecheck": "tsc --noEmit"
|
|
26
29
|
},
|
|
27
30
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
31
|
+
"node": ">=20.9.0"
|
|
29
32
|
},
|
|
30
33
|
"keywords": [
|
|
31
34
|
"wiki",
|
|
@@ -58,6 +61,7 @@
|
|
|
58
61
|
"undici": "^8.3.0"
|
|
59
62
|
},
|
|
60
63
|
"devDependencies": {
|
|
64
|
+
"@biomejs/biome": "^2.5.6",
|
|
61
65
|
"@radix-ui/react-context-menu": "^2.2.16",
|
|
62
66
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
63
67
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
@@ -122,10 +126,5 @@
|
|
|
122
126
|
"unified": "^11.0.5",
|
|
123
127
|
"xlsx": "^0.18.5",
|
|
124
128
|
"zustand": "^5.0.12"
|
|
125
|
-
},
|
|
126
|
-
"pnpm": {
|
|
127
|
-
"overrides": {
|
|
128
|
-
"kysely": "0.28.5"
|
|
129
|
-
}
|
|
130
129
|
}
|
|
131
130
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `pnpm format:check` wrapper.
|
|
4
|
+
*
|
|
5
|
+
* The formatter is currently disabled in biome.json to avoid churn while the
|
|
6
|
+
* lint contract beds in. This script is honest about that: when the formatter
|
|
7
|
+
* is disabled, it prints a notice and exits 0. Once the formatter is enabled,
|
|
8
|
+
* the same script delegates to `biome format .`.
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync } from "node:fs";
|
|
11
|
+
import { spawnSync } from "node:child_process";
|
|
12
|
+
|
|
13
|
+
const biomeConfig = new URL("../biome.json", import.meta.url);
|
|
14
|
+
const cfg = JSON.parse(readFileSync(biomeConfig, "utf8"));
|
|
15
|
+
|
|
16
|
+
if (cfg.formatter?.enabled === false) {
|
|
17
|
+
console.log("format:check: formatter is disabled in biome.json — skipping.");
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const result = spawnSync("pnpm", ["exec", "biome", "format", "."], {
|
|
22
|
+
stdio: "inherit",
|
|
23
|
+
shell: false,
|
|
24
|
+
});
|
|
25
|
+
process.exit(result.status ?? 1);
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* Test runner with a MINIMUM TEST COUNT FLOOR.
|
|
4
4
|
*
|
|
5
5
|
* Why this exists: a full run reported `fail 0` and exited 0 while two whole
|
|
6
|
-
* test files
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* to remember the previous number.
|
|
6
|
+
* test files produced no output at all. The run looked green. The only evidence
|
|
7
|
+
* anything was wrong was the total dropping, which is invisible unless you
|
|
8
|
+
* happen to remember the previous number.
|
|
10
9
|
*
|
|
11
10
|
* `node --test` exiting 0 does not mean the suite ran. This turns "silently ran
|
|
12
11
|
* less" into a hard failure.
|
|
@@ -15,31 +14,68 @@
|
|
|
15
14
|
* exact expectation, so it never breaks on additions.
|
|
16
15
|
*/
|
|
17
16
|
import { spawn } from "node:child_process";
|
|
18
|
-
import { readFileSync, existsSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { readFileSync, existsSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
19
18
|
import path from "node:path";
|
|
20
19
|
|
|
21
|
-
const
|
|
20
|
+
const TEST_DIR = path.resolve(import.meta.dirname, "..", "src", "tests", "proof");
|
|
21
|
+
const FLOOR_FILE = path.resolve(import.meta.dirname, "..", ".test-floor");
|
|
22
22
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
const rawArgs = process.argv.slice(2);
|
|
24
|
+
|
|
25
|
+
if (rawArgs.includes("--help")) {
|
|
26
|
+
console.log(`Usage: node scripts/test-floor.mjs [options] [files...]
|
|
27
|
+
|
|
28
|
+
Options:
|
|
29
|
+
--update-floor Write the current test count to .test-floor and exit 0.
|
|
30
|
+
--help Show this message and exit 0.
|
|
31
|
+
|
|
32
|
+
Without files, every *.test.ts under src/tests/proof is run.
|
|
33
|
+
With files, those paths are passed through to node --test unchanged.
|
|
34
|
+
|
|
35
|
+
Environment:
|
|
36
|
+
TEST_FLOOR_ENFORCE=1 Enforce the floor even when running a targeted file list.
|
|
37
|
+
`);
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const updateFloor = rawArgs.includes("--update-floor");
|
|
42
|
+
let userFiles = rawArgs.filter((a) => a !== "--update-floor");
|
|
43
|
+
// pnpm test -- <args> forwards a literal `--` before the user args; strip it
|
|
44
|
+
// so that flags and file paths reach node --test cleanly.
|
|
45
|
+
if (userFiles[0] === "--") {
|
|
46
|
+
userFiles.shift();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let testFiles;
|
|
50
|
+
if (userFiles.length > 0) {
|
|
51
|
+
testFiles = userFiles;
|
|
52
|
+
} else {
|
|
53
|
+
// Enumerate tests explicitly so we can spawn the runner without a shell.
|
|
54
|
+
testFiles = readdirSync(TEST_DIR)
|
|
55
|
+
.filter((f) => f.endsWith(".test.ts") && statSync(path.join(TEST_DIR, f)).isFile())
|
|
56
|
+
.sort()
|
|
57
|
+
.map((f) => path.join("src", "tests", "proof", f));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const args = ["--import", "./src/tests/proof/preload.ts", "--test", ...testFiles];
|
|
31
61
|
|
|
32
62
|
// Resolve tsx explicitly rather than relying on PATH: this script is also run
|
|
33
63
|
// directly (not just via pnpm, which injects node_modules/.bin).
|
|
34
|
-
const TSX = path.
|
|
35
|
-
|
|
36
|
-
// Shell needed for the glob; keep it explicit so the expansion is obvious.
|
|
37
|
-
const child = spawn(
|
|
38
|
-
`${TSX} ${args.map((a) => (a.includes("*") ? `'${a}'` : a)).join(" ")}`,
|
|
39
|
-
{ shell: true, stdio: ["inherit", "pipe", "pipe"] },
|
|
40
|
-
);
|
|
64
|
+
const TSX = path.resolve(import.meta.dirname, "..", "node_modules", ".bin", "tsx");
|
|
41
65
|
|
|
42
66
|
let out = "";
|
|
67
|
+
|
|
68
|
+
function flushSummary() {
|
|
69
|
+
// node:test's reporter prints "\u2139 tests N" on a TTY (spec reporter) and
|
|
70
|
+
// "# tests N" otherwise (plain TAP, e.g. in CI without a TTY). Accept both.
|
|
71
|
+
const m = out.match(/^(?:\u2139|#) tests (\d+)$/m);
|
|
72
|
+
const pass = out.match(/^(?:\u2139|#) pass (\d+)$/m);
|
|
73
|
+
return { total: m ? Number(m[1]) : null, passCount: pass ? Number(pass[1]) : null };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const repoRoot = path.resolve(import.meta.dirname, "..");
|
|
77
|
+
const child = spawn(TSX, args, { cwd: repoRoot, stdio: ["inherit", "pipe", "pipe"] });
|
|
78
|
+
|
|
43
79
|
for (const stream of [child.stdout, child.stderr]) {
|
|
44
80
|
stream.on("data", (b) => {
|
|
45
81
|
const s = String(b);
|
|
@@ -48,34 +84,49 @@ for (const stream of [child.stdout, child.stderr]) {
|
|
|
48
84
|
});
|
|
49
85
|
}
|
|
50
86
|
|
|
51
|
-
child.on("
|
|
87
|
+
child.on("error", (err) => {
|
|
88
|
+
console.error(`\n[test-floor] FAIL: failed to spawn test runner: ${err.message}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
child.on("exit", (code, signal) => {
|
|
93
|
+
if (signal) {
|
|
94
|
+
console.error(`\n[test-floor] FAIL: test runner killed by ${signal}`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
if (code !== 0) process.exit(code ?? 1);
|
|
98
|
+
|
|
52
99
|
// Only enforce the floor on a full-suite run; a targeted file run is fine.
|
|
53
100
|
// TEST_FLOOR_ENFORCE=1 forces enforcement on a targeted run, which is how the
|
|
54
101
|
// guard itself gets tested without paying for a full suite.
|
|
55
|
-
const targeted =
|
|
56
|
-
process.argv.slice(2).length > 0 && process.env.TEST_FLOOR_ENFORCE !== "1";
|
|
102
|
+
const targeted = userFiles.length > 0 && process.env.TEST_FLOOR_ENFORCE !== "1";
|
|
57
103
|
|
|
58
|
-
const
|
|
59
|
-
const pass = out.match(/^\u2139 pass (\d+)$/m);
|
|
60
|
-
const total = m ? Number(m[1]) : null;
|
|
104
|
+
const { total, passCount } = flushSummary();
|
|
61
105
|
|
|
62
106
|
if (!targeted && total === null) {
|
|
63
107
|
console.error(
|
|
64
108
|
"\n[test-floor] FAIL: no test summary found. The runner produced no " +
|
|
65
|
-
"
|
|
109
|
+
"`ℹ tests N` line, so the suite did not complete — regardless of exit code.",
|
|
66
110
|
);
|
|
67
111
|
process.exit(1);
|
|
68
112
|
}
|
|
69
113
|
|
|
70
|
-
if (code !== 0) process.exit(code ?? 1);
|
|
71
114
|
if (targeted) process.exit(0);
|
|
72
115
|
|
|
73
|
-
if (
|
|
116
|
+
if (updateFloor) {
|
|
74
117
|
writeFileSync(FLOOR_FILE, `${total}\n`);
|
|
75
|
-
console.log(`[test-floor]
|
|
118
|
+
console.log(`[test-floor] floor updated to ${total}`);
|
|
76
119
|
process.exit(0);
|
|
77
120
|
}
|
|
78
121
|
|
|
122
|
+
if (!existsSync(FLOOR_FILE)) {
|
|
123
|
+
console.error(
|
|
124
|
+
`\n[test-floor] FAIL: ${path.basename(FLOOR_FILE)} does not exist. ` +
|
|
125
|
+
"Re-run with --update-floor to initialise it.",
|
|
126
|
+
);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
|
|
79
130
|
const floor = Number(readFileSync(FLOOR_FILE, "utf8").trim());
|
|
80
131
|
if (Number.isFinite(floor) && total < floor) {
|
|
81
132
|
console.error(
|
|
@@ -83,15 +134,13 @@ child.on("exit", (code) => {
|
|
|
83
134
|
`${floor - total} test(s) did not run.\n` +
|
|
84
135
|
"This is the silent-skip failure: `fail 0` and exit 0 while whole files " +
|
|
85
136
|
"produced no output. Re-run on an idle machine; if the drop is intentional, " +
|
|
86
|
-
`
|
|
137
|
+
"run `pnpm test -- --update-floor`.",
|
|
87
138
|
);
|
|
88
139
|
process.exit(1);
|
|
89
140
|
}
|
|
90
141
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
console.log(`[test-floor] OK: ${pass ? pass[1] : total} passed, floor ${total}`);
|
|
142
|
+
console.log(
|
|
143
|
+
`[test-floor] OK: ${passCount ?? total} passed, ran ${total}${Number.isFinite(floor) ? `, floor ${floor}` : ""}`,
|
|
144
|
+
);
|
|
96
145
|
process.exit(0);
|
|
97
146
|
});
|
|
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
|
|
|
15
15
|
const hostname = process.env.HOSTNAME || '0.0.0.0'
|
|
16
16
|
|
|
17
17
|
let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
|
|
18
|
-
const nextConfig = {"env":{"NEXT_PUBLIC_APP_VERSION":"2.9.
|
|
18
|
+
const nextConfig = {"env":{"NEXT_PUBLIC_APP_VERSION":"2.9.5"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/wiki-viewer/wiki-viewer","allowedDevOrigins":["devvm"],"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/wiki-viewer/wiki-viewer"},"distDirRoot":".next"}
|
|
19
19
|
|
|
20
20
|
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
|
|
21
21
|
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<p>
|
|
10
10
|
<a href="https://www.npmjs.com/package/wiki-viewer"><img src="https://img.shields.io/npm/v/wiki-viewer" alt="npm version" /></a>
|
|
11
|
-
<img src="https://img.shields.io/badge/node-%3E%
|
|
11
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20.9.0-brightgreen" alt="Node.js ≥20.9.0" />
|
|
12
12
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license" />
|
|
13
13
|
</p>
|
|
14
14
|
</div>
|
|
@@ -364,7 +364,9 @@ read it.
|
|
|
364
364
|
- Open a file and use **Share** to mint a link. It serves a rendered, read-only
|
|
365
365
|
view at `/share/<token>`.
|
|
366
366
|
- **Password (optional).** Protect a link with a password; only the hash is
|
|
367
|
-
stored. Visitors unlock before reading.
|
|
367
|
+
stored. Visitors unlock before reading. A successful password POST sets a
|
|
368
|
+
short-lived, scoped, `HttpOnly` cookie derived from the stored hash; the
|
|
369
|
+
password is never accepted in the URL, query string, or logs.
|
|
368
370
|
- **Expiry (optional).** Set a number of days; the link returns `410` once
|
|
369
371
|
expired.
|
|
370
372
|
- **View counts.** Each open increments a counter visible in the share dialog.
|
|
@@ -390,6 +392,10 @@ the file browser it shows a **Launch** button.
|
|
|
390
392
|
|
|
391
393
|
> Launching runs arbitrary project code on the host. Only launch apps you
|
|
392
394
|
> trust. Git-backed (read-only) workspaces still run apps but reject writes.
|
|
395
|
+
>
|
|
396
|
+
> In authenticated multi-user mode, starting or stopping an app requires admin
|
|
397
|
+
> privilege. Set `WIKI_ALLOW_APP_RUNNER=1` to explicitly allow non-admins to
|
|
398
|
+
> launch apps in their workspaces.
|
|
393
399
|
|
|
394
400
|
## Auth and multi-user mode
|
|
395
401
|
|
|
@@ -705,7 +711,7 @@ Note: `AGENT_BEARER_TOKEN` (legacy single-secret mode) does nothing now. The ser
|
|
|
705
711
|
|
|
706
712
|
### Prerequisites
|
|
707
713
|
|
|
708
|
-
- **Node.js** ≥
|
|
714
|
+
- **Node.js** ≥ 20.9.0
|
|
709
715
|
- **pnpm** — `npm install -g pnpm`
|
|
710
716
|
|
|
711
717
|
### Run from source
|
|
@@ -728,7 +734,7 @@ The dev server supports hot reload.
|
|
|
728
734
|
| `pnpm build` | Production build |
|
|
729
735
|
| `pnpm start` | Production server (after `build`) |
|
|
730
736
|
| `pnpm wiki` | CLI entry point (after `build`) |
|
|
731
|
-
| `pnpm test` | Run the proof + auth test suite (
|
|
737
|
+
| `pnpm test` | Run the proof + auth test suite (636 tests, floor 624) |
|
|
732
738
|
|
|
733
739
|
### All environment variables
|
|
734
740
|
|
|
@@ -746,6 +752,7 @@ The dev server supports hot reload.
|
|
|
746
752
|
| `WIKI_OWNER_HOSTS` | csv: extra hostnames trusted for CSRF Origin check | `localhost,127.0.0.1` |
|
|
747
753
|
| `WIKI_ALLOW_INSECURE` | Set to `1` to bypass the prod-https guard (dev / CI only) | unset |
|
|
748
754
|
| `WIKI_ADMIN_EMAILS` | csv: emails treated as admins (seed/override; otherwise first signup is admin) | unset |
|
|
755
|
+
| `WIKI_ALLOW_APP_RUNNER`| Set to `1` to let non-admins launch node apps (host code execution; multi-user risk) | unset |
|
|
749
756
|
| `AGENT_RATE_LIMIT` | Max mutation ops per minute per agent identity | `60` |
|
|
750
757
|
| `WIKI_SSH_PASSWORD` | Password for a `--ssh-password` CLI mount (avoids the interactive prompt) | unset |
|
|
751
758
|
|
|
@@ -878,7 +885,7 @@ wiki-viewer/
|
|
|
878
885
|
│ │ ├── app-runner.ts Launches and supervises node-app child processes
|
|
879
886
|
│ │ └── proof/ Agent protocol core (ops-applier, registry, file-lock)
|
|
880
887
|
│ ├── stores/ Zustand state
|
|
881
|
-
│ ├── tests/proof/ Node test runner suite (
|
|
888
|
+
│ ├── tests/proof/ Node test runner suite (636 tests, floor 624)
|
|
882
889
|
│ └── middleware.ts Cookie-presence gate for UI routes
|
|
883
890
|
├── public/
|
|
884
891
|
├── next.config.ts
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
4
|
+
|
|
5
|
+
export const configDir = path.join(os.homedir(), ".wiki-viewer");
|
|
6
|
+
export const configPath = path.join(configDir, "config.json");
|
|
7
|
+
export const logDir = path.join(configDir, "logs");
|
|
8
|
+
|
|
9
|
+
export function loadConfig() {
|
|
10
|
+
if (!existsSync(configPath)) return {};
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(readFileSync(configPath, "utf8"));
|
|
13
|
+
} catch {
|
|
14
|
+
console.error(`Warning: could not parse ${configPath}, ignoring it`);
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function saveConfig(cfg) {
|
|
20
|
+
mkdirSync(configDir, { recursive: true });
|
|
21
|
+
writeFileSync(configPath, JSON.stringify(cfg, null, 2) + "\n");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Pull repeatable `--env KEY=VALUE` (or `-e KEY=VALUE`) pairs out of an argv
|
|
25
|
+
// list. Returns the collected map; the caller has already parsed the rest.
|
|
26
|
+
export function parseEnvFlags(args) {
|
|
27
|
+
const env = {};
|
|
28
|
+
for (let i = 0; i < args.length; i++) {
|
|
29
|
+
if (args[i] === "--env" || args[i] === "-e") {
|
|
30
|
+
const pair = args[++i];
|
|
31
|
+
if (!pair || !pair.includes("=")) {
|
|
32
|
+
console.error(`Error: --env expects KEY=VALUE (got: ${pair ?? "(nothing)"})`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
const idx = pair.indexOf("=");
|
|
36
|
+
env[pair.slice(0, idx)] = pair.slice(idx + 1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return env;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function configCommand(args) {
|
|
43
|
+
const cfg = loadConfig();
|
|
44
|
+
|
|
45
|
+
if (args.length === 0 || args[0] === "show" || args[0] === "list") {
|
|
46
|
+
if (!existsSync(configPath)) {
|
|
47
|
+
console.log(`No config yet at ${configPath}`);
|
|
48
|
+
console.log(`Create one with: wiki-viewer service install [dir] [options] [--env KEY=VALUE]`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(configPath);
|
|
52
|
+
console.log(JSON.stringify(cfg, null, 2));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (args[0] === "set") {
|
|
57
|
+
const pairs = args.slice(1);
|
|
58
|
+
if (pairs.length === 0) {
|
|
59
|
+
console.error("Usage: wiki-viewer config set KEY=VALUE [KEY=VALUE ...]");
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
cfg.env = cfg.env ?? {};
|
|
63
|
+
for (const pair of pairs) {
|
|
64
|
+
const idx = pair.indexOf("=");
|
|
65
|
+
if (idx < 0) { console.error(`Error: expected KEY=VALUE (got: ${pair})`); process.exit(1); }
|
|
66
|
+
cfg.env[pair.slice(0, idx)] = pair.slice(idx + 1);
|
|
67
|
+
}
|
|
68
|
+
saveConfig(cfg);
|
|
69
|
+
console.log(`Updated env in ${configPath}: ${pairs.map((p) => p.split("=")[0]).join(", ")}`);
|
|
70
|
+
if (serviceIsInstalled()) console.log("Run `wiki-viewer service restart` to apply.");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (args[0] === "unset") {
|
|
75
|
+
const keys = args.slice(1);
|
|
76
|
+
if (keys.length === 0) { console.error("Usage: wiki-viewer config unset KEY [KEY ...]"); process.exit(1); }
|
|
77
|
+
cfg.env = cfg.env ?? {};
|
|
78
|
+
for (const k of keys) delete cfg.env[k];
|
|
79
|
+
saveConfig(cfg);
|
|
80
|
+
console.log(`Removed from env: ${keys.join(", ")}`);
|
|
81
|
+
if (serviceIsInstalled()) console.log("Run `wiki-viewer service restart` to apply.");
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (args[0] === "path") { console.log(configPath); return; }
|
|
86
|
+
|
|
87
|
+
console.error(`Unknown config command: ${args[0]}`);
|
|
88
|
+
console.error("Try: show | set KEY=VALUE | unset KEY | path");
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// configCommand needs to know whether a service is installed to prompt the user
|
|
93
|
+
// to restart it after an env change. Importing the full service module from
|
|
94
|
+
// config.js would create a circular dependency, so we keep a tiny local check.
|
|
95
|
+
function serviceIsInstalled() {
|
|
96
|
+
const SERVICE_NAME = "wiki-viewer";
|
|
97
|
+
const LAUNCHD_LABEL = "com.wiki-viewer";
|
|
98
|
+
if (process.platform === "linux") {
|
|
99
|
+
return existsSync(path.join(os.homedir(), ".config", "systemd", "user", `${SERVICE_NAME}.service`));
|
|
100
|
+
}
|
|
101
|
+
if (process.platform === "darwin") {
|
|
102
|
+
return existsSync(path.join(os.homedir(), "Library", "LaunchAgents", `${LAUNCHD_LABEL}.plist`));
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
import { stdin, stdout } from "node:process";
|
|
3
|
+
|
|
4
|
+
// A prompt helper that survives piped (non-TTY) stdin. node:readline/promises
|
|
5
|
+
// closes the stream between awaited questions when input is piped, so we buffer
|
|
6
|
+
// every line via the 'line' event and hand them out one at a time instead.
|
|
7
|
+
export function makePrompter() {
|
|
8
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
9
|
+
const queue = [];
|
|
10
|
+
const waiters = [];
|
|
11
|
+
let closed = false;
|
|
12
|
+
|
|
13
|
+
rl.on("line", (line) => {
|
|
14
|
+
if (waiters.length) waiters.shift()(line);
|
|
15
|
+
else queue.push(line);
|
|
16
|
+
});
|
|
17
|
+
rl.on("close", () => {
|
|
18
|
+
closed = true;
|
|
19
|
+
while (waiters.length) waiters.shift()(null);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const nextLine = () =>
|
|
23
|
+
new Promise((resolve) => {
|
|
24
|
+
if (queue.length) resolve(queue.shift());
|
|
25
|
+
else if (closed) resolve(null);
|
|
26
|
+
else waiters.push(resolve);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const prompt = async (text) => {
|
|
30
|
+
stdout.write(text);
|
|
31
|
+
const line = await nextLine();
|
|
32
|
+
return line == null ? "" : line;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return { prompt, close: () => rl.close() };
|
|
36
|
+
}
|