wiki-viewer 2.9.2 → 2.9.3
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]__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_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/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/{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/0yixq3fhhpk~9.js +172 -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 → I6ZpQF8Ua7ytNZMW5ZKWH}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{R2lG97g-a6HpbZZtS4qep → I6ZpQF8Ua7ytNZMW5ZKWH}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{R2lG97g-a6HpbZZtS4qep → I6ZpQF8Ua7ytNZMW5ZKWH}/_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.3",
|
|
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.3"},"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
|
+
}
|