@universal-middleware/sirv
Version:
Universal static file serving middleware
85 lines (81 loc) • 2.36 kB
JavaScript
import { bindUniversal, universalSymbol, contextSymbol, getAdapterRuntime, serveStatic } from './chunk-APV2JR36.js';
// ../adapter-hono/dist/index.js
function getExecutionCtx(honoContext) {
try {
return honoContext.executionCtx;
} catch {
return;
}
}
function createMiddleware(middlewareFactory) {
return (...args) => {
const middleware = middlewareFactory(...args);
return bindUniversal(middleware, async function universalMiddlewareHono(honoContext, next) {
const context = initContext(honoContext);
const response = await this[universalSymbol](honoContext.req.raw, context, getRuntime(honoContext));
if (typeof response === "function") {
await next();
const res = await response(honoContext.res);
if (res) {
honoContext.res = res;
}
} else if (response !== null && typeof response === "object") {
if (response instanceof Response) {
return response.clone();
}
setContext(honoContext, response);
return next();
} else {
return next();
}
});
};
}
function initContext(honoContext) {
let ctx = getContext(honoContext);
if (ctx === void 0) {
ctx = {};
setContext(honoContext, ctx);
}
return ctx;
}
function setContext(honoContext, value) {
honoContext.set(contextSymbol, value);
if (honoContext.env) {
honoContext.env[contextSymbol] = value;
}
if (honoContext.env?.eventContext?.env) {
honoContext.env.eventContext.env[contextSymbol] = value;
}
}
function getContext(honoContext) {
return honoContext.get(contextSymbol) ?? honoContext.env?.[contextSymbol] ?? honoContext.env?.eventContext?.env[contextSymbol];
}
function getRuntime(honoContext) {
let params;
const ctx = getExecutionCtx(honoContext);
try {
params = honoContext.req.param();
} catch {
if (ctx) {
params = ctx.params ?? void 0;
}
}
return getAdapterRuntime(
"hono",
{
params,
hono: honoContext
},
{
env: honoContext.env,
ctx,
req: honoContext.env?.incoming,
res: honoContext.env?.outgoing
},
honoContext.req.raw
);
}
// virtual:universal-middleware:virtual:universal-middleware:hono:middleware:src/middleware.ts
var middleware_default = createMiddleware(serveStatic);
export { middleware_default as default };