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.