UNPKG

@stacksjs/router

Version:
82 lines (81 loc) 4.28 kB
import './request-augmentation'; // Re-export the augmentation types so userland can refer to the marker // surface explicitly when needed. export type { StacksRequestExtensions, StacksRequestMacros, StacksRequestMarkers } from './request-augmentation'; export type { MiddlewareConfig, Request } from './middleware'; // Export route registry types — owned here rather than in app/Routes.ts // so the path doesn't depend on a 5-level relative reach across the // framework defaults tree (stacksjs/stacks#1863, T-10). export type { RouteDefinition, RouteRegistry } from './route-types'; export type { PathParamRejection, SanitizePathParamOptions } from './path-sanitize'; export type { StreamOptions } from './stacks-router'; export type { SignedUrlOptions, SignedUrlVerifyResult } from './signed-url'; export type { EncryptedSessionStoreOptions } from './encrypted-session-store'; export type { RedisClient, SessionConfig, SessionData, SessionStore, StacksSessionConfig, } from './session-factory'; // Re-export everything from bun-router (includes response factory) export * from '@stacksjs/bun-router'; // Export Stacks-specific action resolver and URL helper export { assertRouteMiddlewareResolvable, clearMiddlewareCache, createStacksRouter, findUnresolvableRouteMiddleware, installMiddlewareHotReload, route, serve, serverResponse, url, warnOnMultipleRouterInstances } from './stacks-router'; // Export request context helpers export { cacheRequestQuery, getCurrentRequest, getTraceId, request, runWithRequest, setCurrentRequest, withTraceId } from './request-context'; // Export Middleware class for defining route middleware export { Middleware } from './middleware'; // Export route loader export { loadRoutes } from './route-loader'; // Export error handler utilities export { clearTrackedQueries, createErrorResponse, createMiddlewareErrorResponse, createNotFoundResponse, createValidationErrorResponse, getQueryShapeCounts, trackQuery, } from './error-handler'; // Export route introspection helpers export { listRegisteredRoutes, routeParams } from './stacks-router'; // Export JSON-vs-HTML negotiation predicate so userland can short-circuit // the same decision the framework makes in formatResult / error-handler. export { isApiRequest, JSON_CONTENT_TYPE } from './api-shape'; // Export action-level rate limiting helpers export { rateLimit, rateLimitStatus, clearRateLimit } from './rate-limit'; // Export path-param sanitization helper (stacksjs/stacks#1870 R-12). // Defense-in-depth for actions that interpolate route params into // filesystem paths; the helper enforces no-traversal / no-absolute / // no-null-byte / length ceiling at a single chokepoint. export { PathParamError, safePathParam, sanitizePathParam } from './path-sanitize'; // Export the streaming-response helper for SSE / NDJSON / chunked // binary returns (stacksjs/stacks#1870 R-4). Actions can return // `stream(asyncGen, { type: 'sse' })` and the router pipes it back // with the right Content-Type + no-cache headers. export { stream } from './stacks-router'; // Signed-URL helpers — HMAC over the URL + optional expiry so single- // use links (email verify, password reset, unsubscribe) can be handed // out without long-lived bearer tokens. Pair `signedUrl(...)` with the // `signed` middleware (or call `verifySignedUrl(req.url)` directly). // See stacksjs/stacks#1870 R-7. export { signedUrl, signUrl, verifySignedUrl, verifySignedUrlMiddleware } from './signed-url'; // Encryption-at-rest wrapper for any bun-router SessionStore // (stacksjs/stacks#1878 Se-4). Opt-in: wrap your existing store // instance so session payloads are AES-GCM encrypted via APP_KEY // before being persisted. export { EncryptedSessionStore } from './encrypted-session-store'; // Session driver factory (stacksjs/stacks#1889, F-2 from #1874). // Builds a SessionStore from the Stacks config — picks the right // driver from `config.session.driver`, optionally wraps with // EncryptedSessionStore. Re-exports all four bun-router store // classes so callers can assemble custom stacks manually too. export { createSessionStore, createStacksSessionStore, DatabaseSessionStore, FileSessionStore, MemorySessionStore, RedisSessionStore, } from './session-factory';