Using RuntimeAdapter
in userland
Any package generated through universal-middleware
exposes a RuntimeAdapter
type.
It can be used to type runtime
when exposed to userland.
Adapter specific properties
ts
import type { RuntimeAdapter } from "somelib/express";
const runtime: RuntimeAdapter;
// original express `req` object. See https://expressjs.com/en/guide/using-middleware.html
runtime.express.req;
// original express `res` object. See https://expressjs.com/en/guide/using-middleware.html
runtime.express.res;
ts
import type { RuntimeAdapter } from "somelib/hono";
const runtime: RuntimeAdapter;
// original Hono Context. See https://hono.dev/docs/api/context
runtime.hono;
ts
import type { RuntimeAdapter } from "somelib/fastify";
const runtime: RuntimeAdapter;
// original fastify `request` object. See https://fastify.dev/docs/latest/Reference/Request/
runtime.fastify.request;
// original fastify `reply` object. See https://fastify.dev/docs/latest/Reference/Reply/
runtime.fastify.reply;
ts
import type { RuntimeAdapter } from "somelib/cloudflare-worker";
const runtime: RuntimeAdapter;
const originalParameters = runtime["cloudflare-worker"];
// original Cloudflare Worker env. See https://developers.cloudflare.com/workers/runtime-apis/bindings/
originalParameters.env;
// original Cloudflare Worker ctx. See https://developers.cloudflare.com/workers/runtime-apis/context/
originalParameters.ctx;
ts
import type { RuntimeAdapter } from "somelib/cloudflare-pages";
const runtime: RuntimeAdapter;
// original Cloudflare Worker context. See https://developers.cloudflare.com/pages/functions/api-reference/#eventcontext
const originalContext = runtime["cloudflare-pages"];
ts
import type { RuntimeAdapter } from "somelib/vercel-node";
const runtime: RuntimeAdapter;
const originalParameters = runtime["vercel-node"];
// original Vercel Request object. See https://vercel.com/docs/functions/runtimes/node-js
originalParameters.req;
// original Vercel Response object. See https://vercel.com/docs/functions/runtimes/node-js
originalParameters.res;
ts
import type { RuntimeAdapter } from "somelib/h3";
const runtime: RuntimeAdapter;
// original H3 Event. See https://h3.unjs.io/guide/event
runtime.h3;
ts
import type { RuntimeAdapter } from "somelib/elysia";
const runtime: RuntimeAdapter;
// original elysia context. See https://elysiajs.com/essential/handler#context
runtime.elysia;
ts
import type { RuntimeAdapter } from "somelib/hattip";
const runtime: RuntimeAdapter;
// original Hattip context
runtime.hattip;
Common properties
All runtime
objects can also contain the following properties:
ts
const runtime: RuntimeAdapter;
// identify which adapter is currently used. For example 'hono' when using @universal-middleware/hono
runtime.adapter;
// the runtime name ('hono', 'express', ...). Follows https://runtime-keys.proposal.wintercg.org/
runtime.runtime;
// extracted route parameters. See https://universal-middleware.dev/recipes/params-handler
runtime.params;
// the original Node.js HTTP request object (if available), see https://nodejs.org/api/http.html#class-httpincomingmessage
runtime.req;
// the original Node.js HTTP response object (if available), see https://nodejs.org/api/http.html#class-httpserverresponse
runtime.res;
NOTE
All runtime types are defined in types.ts