ShokupanContext
Defined in: src/context.ts:108
Shokupan Request Context
The context object passed to all middleware and route handlers. Provides access to request data, response helpers, and typed state management.
Examples
Section titled “Examples”app.get('/hello', (ctx) => { return ctx.json({ message: 'Hello' });});interface AppState { userId: string; requestId: string;}
const app = new Shokupan<AppState>();
app.use((ctx, next) => { ctx.state.requestId = crypto.randomUUID(); // ✓ Type-safe return next();});app.get('/users/:userId/posts/:postId', (ctx) => { // ctx.params is automatically typed as { userId: string; postId: string } const { userId, postId } = ctx.params; return ctx.json({ userId, postId });});interface RequestState { userId: string; permissions: string[];}
const app = new Shokupan<RequestState>();
app.get('/admin/users/:userId', (ctx) => { // Both typed! const { userId } = ctx.params; // ✓ From path const { permissions } = ctx.state; // ✓ From state
if (!permissions.includes('admin')) { return ctx.json({ error: 'Forbidden' }, 403); } return ctx.json({ userId });});Type Parameters
Section titled “Type Parameters”State extends Record<string, any> = Record<string, any>
The shape of ctx.state for type-safe state access across middleware.
Params
Section titled “Params”Params extends Record<string, string> = Record<string, string>
The shape of ctx.params based on the route path pattern.
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new ShokupanContext<
State,Params>(request,server?,state?,app?,signal?,enableMiddlewareTracking?):ShokupanContext<State,Params>
Defined in: src/context.ts:146
Parameters
Section titled “Parameters”request
Section titled “request”any
server?
Section titled “server?”Server
state?
Section titled “state?”State
signal?
Section titled “signal?”AbortSignal
enableMiddlewareTracking?
Section titled “enableMiddlewareTracking?”boolean = false
Returns
Section titled “Returns”ShokupanContext<State, Params>
Properties
Section titled “Properties”_bodyParseError?
Section titled “_bodyParseError?”
optional_bodyParseError:Error
Defined in: src/context.ts:126
_debug?
Section titled “_debug?”
optional_debug:DebugCollector
Defined in: src/context.ts:117
_finalResponse?
Section titled “_finalResponse?”
optional_finalResponse:Response
Defined in: src/context.ts:118
_rawBody?
Section titled “_rawBody?”
optional_rawBody:string|ArrayBuffer|Uint8Array<ArrayBufferLike>
Defined in: src/context.ts:119
_routeMatched
Section titled “_routeMatched”_routeMatched:
boolean=false
Defined in: src/context.ts:128
readonlyoptionalapp:Shokupan
Defined in: src/context.ts:150
handlerStack
Section titled “handlerStack”handlerStack:
HandlerStackItem[] =[]
Defined in: src/context.ts:114
params
Section titled “params”params:
Params
Defined in: src/context.ts:112
request
Section titled “request”
readonlyrequest:any
Defined in: src/context.ts:147
response
Section titled “response”
readonlyresponse:ShokupanResponse
Defined in: src/context.ts:116
server?
Section titled “server?”
readonlyoptionalserver:Server
Defined in: src/context.ts:148
session
Section titled “session”session:
SessionData&object
Defined in: src/plugins/middleware/session.ts:294
Type Declaration
Section titled “Type Declaration”id:
string
destroy()
Section titled “destroy()”destroy(
callback):void
Parameters
Section titled “Parameters”callback
Section titled “callback”(err) => void
Returns
Section titled “Returns”void
regenerate()
Section titled “regenerate()”regenerate(
callback):void
Parameters
Section titled “Parameters”callback
Section titled “callback”(err) => void
Returns
Section titled “Returns”void
reload()
Section titled “reload()”reload(
callback):void
Parameters
Section titled “Parameters”callback
Section titled “callback”(err) => void
Returns
Section titled “Returns”void
save()
Section titled “save()”save(
callback):void
Parameters
Section titled “Parameters”callback
Section titled “callback”(err) => void
Returns
Section titled “Returns”void
touch()
Section titled “touch()”touch():
void
Returns
Section titled “Returns”void
sessionID
Section titled “sessionID”sessionID:
string
Defined in: src/plugins/middleware/session.ts:295
sessionStore
Section titled “sessionStore”sessionStore:
Store
Defined in: src/plugins/middleware/session.ts:296
signal?
Section titled “signal?”
readonlyoptionalsignal:AbortSignal
Defined in: src/context.ts:151
state:
State
Defined in: src/context.ts:113
Accessors
Section titled “Accessors”headers
Section titled “headers”Get Signature
Section titled “Get Signature”get headers():
any
Defined in: src/context.ts:299
Request headers
Returns
Section titled “Returns”any
Get Signature
Section titled “Get Signature”get host():
string
Defined in: src/context.ts:273
Request host (e.g. “localhost:3000”)
Returns
Section titled “Returns”string
hostname
Section titled “hostname”Get Signature
Section titled “Get Signature”get hostname():
string
Defined in: src/context.ts:266
Request hostname (e.g. “localhost”)
Returns
Section titled “Returns”string
Get Signature
Section titled “Get Signature”get ip():
SocketAddress
Defined in: src/context.ts:261
Client IP address
Returns
Section titled “Returns”SocketAddress
method
Section titled “method”Get Signature
Section titled “Get Signature”get method():
any
Defined in: src/context.ts:188
HTTP method
Returns
Section titled “Returns”any
origin
Section titled “origin”Get Signature
Section titled “Get Signature”get origin():
string
Defined in: src/context.ts:292
Request origin (e.g. “http://localhost:3000”)
Returns
Section titled “Returns”string
Get Signature
Section titled “Get Signature”get path():
any
Defined in: src/context.ts:192
Request path
Returns
Section titled “Returns”any
protocol
Section titled “protocol”Get Signature
Section titled “Get Signature”get protocol():
string
Defined in: src/context.ts:280
Request protocol (e.g. “http:”, “https:“)
Returns
Section titled “Returns”string
Get Signature
Section titled “Get Signature”get query():
Record<string,any>
Defined in: src/context.ts:227
Request query params
Returns
Section titled “Returns”Record<string, any>
Get Signature
Section titled “Get Signature”get req():
any
Defined in: src/context.ts:184
Base request
Returns
Section titled “Returns”any
Get Signature
Section titled “Get Signature”get res():
ShokupanResponse
Defined in: src/context.ts:310
Base response object
Returns
Section titled “Returns”secure
Section titled “secure”Get Signature
Section titled “Get Signature”get secure():
boolean
Defined in: src/context.ts:287
Whether request is secure (https)
Returns
Section titled “Returns”boolean
Get Signature
Section titled “Get Signature”get url():
URL
Defined in: src/context.ts:172
Returns
Section titled “Returns”URL
Methods
Section titled “Methods”body()
Section titled “body()”body<
T>():Promise<T>
Defined in: src/context.ts:406
Read request body with caching to avoid double parsing. The body is only parsed once and cached for subsequent reads.
Type Parameters
Section titled “Type Parameters”T = any
Returns
Section titled “Returns”Promise<T>
file()
Section titled “file()”file(
path,fileOptions?,responseOptions?):Promise<Response>
Defined in: src/context.ts:663
Respond with a file
Parameters
Section titled “Parameters”string
fileOptions?
Section titled “fileOptions?”BlobPropertyBag
responseOptions?
Section titled “responseOptions?”ResponseInit
Returns
Section titled “Returns”Promise<Response>
get(
name):any
Defined in: src/context.ts:305
Get a request header
Parameters
Section titled “Parameters”string
Header name
Returns
Section titled “Returns”any
html()
Section titled “html()”html(
html,status?,headers?):Response
Defined in: src/context.ts:612
Respond with HTML content
Parameters
Section titled “Parameters”string
status?
Section titled “status?”number
headers?
Section titled “headers?”Returns
Section titled “Returns”Response
json()
Section titled “json()”json(
data,status?,headers?):Response
Defined in: src/context.ts:551
Respond with a JSON object
Parameters
Section titled “Parameters”any
status?
Section titled “status?”number
headers?
Section titled “headers?”Returns
Section titled “Returns”Response
jsx(
element,args?,status?,headers?):Promise<Response>
Defined in: src/context.ts:695
Render a JSX element
Parameters
Section titled “Parameters”element
Section titled “element”any
JSX Element
unknown
status?
Section titled “status?”number
HTTP Status
headers?
Section titled “headers?”HTTP Headers
Returns
Section titled “Returns”Promise<Response>
parseBody()
Section titled “parseBody()”parseBody():
Promise<void>
Defined in: src/context.ts:463
Pre-parse the request body before handler execution. This improves performance and enables Node.js compatibility for large payloads. Errors are deferred until the body is actually accessed in the handler.
Returns
Section titled “Returns”Promise<void>
redirect()
Section titled “redirect()”redirect(
url,status):Response
Defined in: src/context.ts:633
Respond with a redirect
Parameters
Section titled “Parameters”string
status
Section titled “status”number = 302
Returns
Section titled “Returns”Response
send()
Section titled “send()”send(
body?,options?):Response
Defined in: src/context.ts:530
Send a response
Parameters
Section titled “Parameters”BodyInit
Response body
options?
Section titled “options?”ResponseInit
Response options
Returns
Section titled “Returns”Response
Response
set(
key,value):ShokupanContext<State,Params>
Defined in: src/context.ts:317
Helper to set a header on the response
Parameters
Section titled “Parameters”string
Header key
string
Header value
Returns
Section titled “Returns”ShokupanContext<State, Params>
setCookie()
Section titled “setCookie()”setCookie(
name,value,options):ShokupanContext<State,Params>
Defined in: src/context.ts:328
Set a cookie
Parameters
Section titled “Parameters”string
Cookie name
string
Cookie value
options
Section titled “options”CookieOptions = {}
Cookie options
Returns
Section titled “Returns”ShokupanContext<State, Params>
setRenderer()
Section titled “setRenderer()”setRenderer(
renderer):void
Defined in: src/context.ts:142
Parameters
Section titled “Parameters”renderer
Section titled “renderer”Returns
Section titled “Returns”void
status()
Section titled “status()”status(
status):Response
Defined in: src/context.ts:649
Respond with a status code DOES NOT CHAIN!
Parameters
Section titled “Parameters”status
Section titled “status”number
Returns
Section titled “Returns”Response
text()
Section titled “text()”text(
data,status?,headers?):Response
Defined in: src/context.ts:582
Respond with a text string
Parameters
Section titled “Parameters”string
status?
Section titled “status?”number
headers?
Section titled “headers?”Returns
Section titled “Returns”Response