code wiki / wiki / nx_wiki_doc_handler.nx

nx_wiki_doc_handler.nx

buildroot/runtime/wiki/nx_wiki_doc_handler.nx

29524 B611 linesdepth 10pulls 28 transitivereach 11 importersview sourcekind librarytopic wiki
docsdependenciesstructsconstsfunctions

about

nx_wiki_doc_handler.nx -- /wiki/<doc-name> HTTP route handler. Renders one doc as V1 page format conformant HTML via the page-format-trinity primitives. COMPOSES: wiki/nx_wiki_index_builder (NxWikiDocStore + find_by_url + lookup) wiki/nx_wiki_doc_render (NxWikiDocCtx + set_meta + write_header_v1) hub/nx_nishi_page_emit (transitive via write_header_v1) nx_http_server (for response wrap) markdown_block (transitive via nx_wiki_doc_render) COMPOSED BY: wiki/nx_wiki_routes (dispatch /wiki/<name>) V1 SCOPE: - URL -> rowid via NxWikiDocStore.find_by_url (linear scan) - Render: ctx_init + set_meta (default tags/license/author) + write_header_v1 + markdown body emit + write_footer - HTTP/1.1 200 + HTML on hit; 404 on miss V2 SCOPE (TODO): - Per-doc metadata from doc-store (currently uses sensible defaults) - ETag + If-None-Match (304 Not Modified) - Conditional GET via nishi-content-hash - Per-doc tag/license/author from indexed nishi-* meta tags Status: V1. 2026-05-27.

dependencies 9 imports · 8 importers

nx_syscalls.nx nx_http_server.nx nx_wiki_index_builder.nx nx_wiki_doc_render.nx nx_artifact_store.nx nx_pipeline_banner.nx nx_html_extract.nx nx_wiki_toc.nx nx_wiki_backlinks.nx nx_wiki_doc_handler.nx _wiki_cite_gate.nx _wiki_cite_live_gate.nx _wiki_edit_gate.nx _wiki_engine_gate.nx _wiki_frontend_gate.nx _wiki_integrate_gate.nx _wiki_wikilink_gate.nx nx_wiki_routes.nx

imports: nx_syscalls.nxnx_http_server.nxnx_wiki_index_builder.nxnx_wiki_doc_render.nxnx_artifact_store.nxnx_pipeline_banner.nxnx_html_extract.nxnx_wiki_toc.nxnx_wiki_backlinks.nx

imported by: _wiki_cite_gate.nx_wiki_cite_live_gate.nx_wiki_edit_gate.nx_wiki_engine_gate.nx_wiki_frontend_gate.nx_wiki_integrate_gate.nx_wiki_wikilink_gate.nxnx_wiki_routes.nx

structs

none

consts

45const NX_WDH_OK: i64 = 0
46const NX_WDH_BAD_INPUT: i64 = 2700
47const NX_WDH_NOT_FOUND: i64 = 2701
48const NX_WDH_RENDER_FAILED: i64 = 2702
49const NX_WDH_RESP_OVERFLOW: i64 = 2703
52const NX_WDH_RESP_HDR_CAP: i64 = 512
53const NX_WDH_RENDER_CAP: i64 = 1048576 // 1 MB rendered HTML
54const NX_WDH_SCRATCH_CAP: i64 = 65536 // 64 KB scratch
55const NX_WDH_DOC_NAMES_FALLBACK: i64 = 64
59const NX_WDH_DOC_NAMES_CAP: i64 = 64000 // 1000 slots * 64 bytes
65const NX_WDH_MD_CAP: i64 = 1048576 // 1 MB markdown-HTML temp
66const NX_WDH_INJECT_CAP: i64 = 1310720 // 1.25 MB id-injected copy (headroom for id= attrs)
67const NX_WDH_TOC_CAP: i64 = 131072 // 128 KB TOC nav
68const NX_WDH_BACKLINKS_CAP: i64 = 262144 // 256 KB backlinks aside
72const NX_WDH_DEFAULT_TAGS: *u8 = "wiki,nishi,charter" as *u8
73const NX_WDH_DEFAULT_TAGS_N: i64 = 19
74const NX_WDH_DEFAULT_LICENSE: *u8 = "nishi-substrate-public" as *u8
75const NX_WDH_DEFAULT_LICENSE_N: i64 = 22
76const NX_WDH_DEFAULT_AUTHOR: *u8 = "elderwesto" as *u8
77const NX_WDH_DEFAULT_AUTHOR_N: i64 = 10
78const NX_WDH_DEFAULT_LAST_MOD: *u8 = "2026-05-27T00:00:00Z" as *u8
79const NX_WDH_DEFAULT_LAST_MOD_N: i64 = 20
80const NX_WDH_CANONICAL_PREFIX: *u8 = "https://nishifamily.com" as *u8
81const NX_WDH_CANONICAL_PREFIX_N: i64 = 23

functions

91func nx_wdh_cat(dst: *u8, off: i64, s: *u8) -> i64
103func nx_wdh_emit_run(ctx: *NxWikiDocCtx, src: *u8, n: i64) -> i64
131func nx_wdh_populate_doc_names(store: *NxWikiDocStore,
187func nx_wdh_build_canonical(out: *u8, cap: i64,
204func nx_wdh_build_summary(body: *u8, body_n: i64,
251func nx_wdh_url_to_artifact_path(url: *u8, url_n: i64,
348func nx_wiki_doc_handle_cp(store: *NxWikiDocStore,
604func nx_wiki_doc_handle(store: *NxWikiDocStore,