This page lists the public API in one place for quick lookup
import Oxarion, {
Oxarion,
OxarionResponse,
Middleware,
OpenAPI,
RoutesWrapper,
ParsedFormData,
WebSocket,
} from "oxarionjs"Starts Bun server and returns server instance
Stops current server and cleans router state
Runs an in-process HTTP request against an app created with Oxarion.create()
Renders a full page template to an HTML string
Renders a fragment template to an HTML string
router.addHandler(method, path, handler)router.addHandlerOpenApi(method, path, handler, openapiDefinition)router.injectWrapper(base_path, wrapper)Deprecated. Use router.mount(base_path, wrapper) instead. injectWrapper() will be removed in 1.5.x.
router.middleware(base_path, middleware_fn, all_routes?)router.multiMiddleware(base_path, middleware_array, all_routes?)router.serveStatic(prefix, dir, options?)const ox_script_path = router.serveOx()Serves the Ox dynamic HTML runtime, keeps /__oxarion/ox.js as a stable alias, and returns the hashed runtime path
router.serveOpenApi(spec_path, options)router.group(base_path, callback, middlewares?)router.switchToWs(path)req type is OxarionRequest
req.getParam(key)req.url()req.method()req.getHeaders()req.getQuery(name)req.getQueries()await req.json()await req.text()await req.form()req.getBody()req.getCookies()req.getCookie(name)req.getSessionId()req.getSessionValue(key)req.getCsrfToken()req.rawnative Request
res.setStatus(code)res.setHeader(key, value)res.setHeaders(obj)res.send(body, init?)res.json(obj, init?)res.text(body, init?)res.html(body, init?)await res.render(page, data?, options?)await res.renderFragment(fragment, data?, options?)res.redirect(url, status?)await res.sendPage(file_path, compression?)await res.sendFile(file_path, content_type?, options?)res.setCookie(name, value, options?)res.clearCookie(name, options?)
-
return res.send(body, init?) -
return res.json(data, init?) -
return res.text(data, init?) -
return res.html(data, init?) -
return res.render(page, data?, options?) -
return res.renderFragment(fragment, data?, options?) -
OxarionResponse.json(data, init?) -
OxarionResponse.text(data, init?) -
OxarionResponse.html(data, init?) -
OxarionResponse.redirect(url, status?)
getField(key)getAllFields()getFile(key)getFiles(key)getAllFiles()getMimeType(key)getMimeTypes()
Middleware.cors(options?)Middleware.json(options?)Middleware.urlencoded(options?)Middleware.logger(options?)Middleware.rateLimit(options)Middleware.securityHeaders(options?)Middleware.session(options?)Middleware.createMemorySessionStore(ttlMs?)Middleware.createRedisSessionStore(options?)Middleware.csrf(options?)Middleware.validateJson(schema, options?)Middleware.validateUrlencoded(schema, options?)
Dynamic HTML runtime attributes:
ox-anchorox-placeox-modeox-getox-postox-putox-deleteox-targetlow-level compatibilityox-swaplow-level compatibilityox-includeox-triggerox-confirm
Global browser helpers:
window.Ox.swap(target, html, mode?)window.Ox.apply({ place?, target?, html, mode?, swap? })window.Ox.request(target)window.Ox.getCsrfToken()
type DynamicRoutingOptions = {
enabled?: boolean
dir: string
handlerFile?: string
extensions?: string[]
onConflict?: "error" | "override" | "keepManual"
}type TemplateOptions = {
enabled?: boolean
pagesDir?: string
fragmentsDir?: string
layoutsDir?: string
cache?: boolean
autoEscape?: boolean
extension?: string
}type SessionOptions = {
cookieName?: string
ttlMs?: number
path?: string
sameSite?: "lax" | "strict" | "none"
secure?: boolean
httpOnly?: boolean
rolling?: boolean
store?: SessionStore
createId?: () => string
}type SessionStore = {
get(session_id: string): SessionEntry | null | undefined | Promise<SessionEntry | null | undefined>
set(session_id: string, entry: SessionEntry): void | Promise<void>
delete?(session_id: string): void | Promise<void>
cleanup?(now_ms: number): void | Promise<void>
}type CsrfOptions = {
sessionKey?: string
cookieName?: string
fieldName?: string
path?: string
sameSite?: "lax" | "strict" | "none"
secure?: boolean
}type RedisSessionStoreOptions = {
url?: string
prefix?: string
client?: RedisSessionClient
}type RedisSessionClient = {
get(key: string): string | null | Promise<string | null>
set(key: string, value: string): void | Promise<void>
del(key: string): void | Promise<void>
expire(key: string, ttl_seconds: number): void | Promise<void>
close?: () => void
}type DynamicRouteParams = Record<string, string | string[] | undefined>
type DynamicRouteHandler<TParams extends DynamicRouteParams = DynamicRouteParams> = (
req: OxarionRequest<TParams>,
res: OxarionResponse
) => void | Response | OxarionResponse | Promise<void | Response | OxarionResponse>
type DynamicRouteExportMap = Partial<Record<Method, DynamicRouteHandler<any>>>
type DynamicRouteClass = {
new (...args: any[]): unknown
} & DynamicRouteExportMap
type DynamicRouteModule = DynamicRouteExportMap & {
default?: DynamicRouteClass
[key: string]: unknown
}Handler can
- mutate
resand return nothing - return
res.send(...),res.json(...),res.text(...), orres.html(...) - return native
Response - return
OxarionResponse.*(...)
This works for
- route handler in
addHandler - dynamic route method exports or static class methods
notFoundHandlererrorHandler