Skip to main content

Import

import {
  cors,
  rateLimit,
  logger,
  timeout,
  MiddlewarePipeline,
  devLogger,
} from "veryfront/middleware";

Examples

Single middleware

import { cors } from "veryfront/middleware";

const corsMiddleware = cors({ origin: "https://example.com" });

Pipeline composition

import { MiddlewarePipeline, cors, rateLimit, logger, timeout } from "veryfront/middleware";

const pipeline = new MiddlewarePipeline()
  .use(cors({ origin: "https://example.com" }))
  .use(rateLimit({ maxRequests: 100, windowMs: 60_000 }))
  .use(logger({ format: "combined" }))
  .use(timeout({ timeoutMs: 30_000 }));

API

middlewarePipeline.use(middleware)

Add a middleware handler to the pipeline. Returns: this

middlewarePipeline.useFor(pattern, )

Add a middleware handler that only runs for matching URL patterns. Returns: this

middlewarePipeline.onTeardown(cb)

Register a cleanup callback that runs after the response is sent. Returns: this

middlewarePipeline.compose()

Compose all registered middleware into a single handler function. Returns: MiddlewareHandler

middlewarePipeline.execute(req, env, executionCtx, adapter)

Execute the pipeline for an incoming request. Returns: Promise<Response>

middlewarePipeline.handle(req, handler)

Run the middleware pipeline with a final request handler. Returns: Promise<Response>

middlewarePipeline.teardown()

Run all registered teardown callbacks. Returns: Promise<void>

middlewarePipeline.getMiddleware()

List registered middleware with metadata. Returns: Array<{ name?: string; order?: number }>

Type Reference

CorsOptions

CORS config
PropertyTypeDescription
origin?`string \string[] \OriginValidator`Allowed origins (string, regex, array, or function)
methods?string[]Allowed HTTP methods
allowedHeaders?string[]Allowed request headers
exposedHeaders?string[]Headers exposed to client
credentials?booleanAllow credentials
maxAge?numberPreflight cache duration (seconds)

RateLimitOptions

Rate limit config
PropertyTypeDescription
maxRequests?numberMax requests per window
windowMs?numberTime window (ms)
store?RateLimitStoreStorage backend
keyGenerator?(req: Request) => stringFunction to derive rate limit key from request

LoggerOptions

Logger config
PropertyTypeDescription
format?LogFormatLog format (combined, common, dev, short)
skip?(req: Request) => booleanSkip logging for matching requests
log?(message: string) => voidCustom log output function

TimeoutOptions

Timeout config
PropertyTypeDescription
timeoutMs?numberTimeout in milliseconds (default: 60000)
message?stringCustom message for timeout response
exclude?string[]Paths to exclude from timeout (e.g., health checks)

Exports

Functions

NameDescription
corsCORS middleware
devLoggerDev logger (colorized)
getTimeoutFromEnvGets timeout from environment variable REQUEST_TIMEOUT_MS
loggerRequest/response logger
prodLoggerProduction logger (structured JSON)
rateLimitRate limiting (memory or Redis)
timeoutCreates a middleware that enforces request timeouts.
timeoutFromEnvCreates a timeout middleware with configuration from environment

Classes

NameDescription
MemoryRateLimitStoreIn-memory rate limit store
MiddlewareContextMiddleware pipeline context
MiddlewarePipelineComposable middleware chain
RedisRateLimitStoreRedis rate limit store

Types

NameDescription
ContextBase request context
CorsOptionsCORS config
ExecutionContextContext with execution metadata
LogFormatLog format (combined, common, dev, short)
LoggerOptionsLogger config
MiddlewareFactoryMiddleware factory function
MiddlewareHandlerMiddleware handler function
MiddlewarePipelineOptionsPipeline config
NextNext middleware callback
RateLimitOptionsRate limit config
RateLimitStoreRate limit storage interface
RedisRateLimitOptionsRedis rate limit config
TimeoutOptionsTimeout config