The ctx Object

PocketPages creates one ctx object per request and passes it to middleware, handlers, templates and plugins.

// +middleware.js
module.exports = (ctx, next) => next()

// +page.js / +api.js
module.exports = { load(ctx) {} }
<!-- any template -->
<p><%= ctx.req.url.pathname %></p>

In templates, data, params, asset and meta are shortcuts for ctx.data, ctx.params, ctx.asset and ctx.meta.

Members

Member
ctx.req The request: method, URL, query, headers, cookies, body, files
ctx.res The response: status, headers, cookies, redirects, JSON, HTML, text, files, SSE
ctx.data Plain object shared by middleware, handlers and templates
ctx.params Route parameters
ctx.route The matched route: { path, name, file }
ctx.flash() The one-time message from the previous redirect
ctx.auth The authenticated record, or null
ctx.app The app ($app)
ctx.pb() A JS SDK client acting as the visitor (API rules apply)
ctx.env(name) Environment variable
ctx.log debug, info, warn, error
ctx.meta(key, value?) Per-request page metadata
ctx.asset(path) Fingerprinted URL for a static file
ctx.resolve(name, { mode }?) Load a module from _private/
ctx.store(name, value?) The app's in-memory store
ctx.dev true in dev mode
ctx.httpError(status, message) An error to throw for a specific status
ctx.error { status, message }, in +error.ejs

Added by plugins

Member Plugin
ctx.session auth
ctx.realtime realtime
ctx.datastar datastar

JS plugins can add their own members with extendContext.