---@meta ---@type Iter _G.Iter = _G.Iter or ... ---@class This ---@field base_url string ---@field rev string ---@field dev boolean ---@field data table _G.this = _G.this or ... ---@class Ctx.request ---@field headers table ---@field head Ctx.request.head ---@class Ctx.request.head ---@field method string ---@field target string ---@class Ctx ---@field path string ---@field request Ctx.request ---@field props table _G.ctx = _G.ctx or ... ---@type H _G.h = _G.h or ... ---@class maivi.router ---@field add fun(self, path: string, f: Component, props: table) _G.maivi = ... ---@type maivi.router _G.maivi.router = ... _G.maivi.display = ... ---@param str string ---@return integer function _G.maivi.str.len(str) end ---@param str string ---@param sep? string ---@return string[] function _G.maivi.str.split(str, sep) end ---@param str string ---@return string function _G.maivi.str.escape(str) end ---@param v any ---@return string function _G.maivi.display.elem(v) end ---@param v any ---@return string function _G.maivi.display.attr(v) end ---@param modname string ---@return any ---@nodiscard function _G.maivi.mod(modname) end