UNPKG

remix-hono

Version:
62 lines 2.4 kB
import { createWorkersKVSessionStorage } from "@react-router/cloudflare"; import { createMiddleware } from "hono/factory"; import { cacheHeader } from "pretty-cache-header"; import { createCookieSessionStorage, } from "react-router"; import { session } from "./session.js"; export function staticAssets(options = {}) { return createMiddleware(async (c, next) => { let binding = c.env?.ASSETS; if (!binding) throw new ReferenceError("The binding ASSETS is not set."); let response; c.req.raw.headers.delete("if-none-match"); try { response = (await binding.fetch(c.req.url, c.req.raw.clone())); // If the request failed, we just call the next middleware if (response.status >= 400) return await next(); response = new Response(response.body, response); // If cache options are configured, we set the cache-control header if (options.cache) { response.headers.set("cache-control", cacheHeader(options.cache)); } return response; } catch { return await next(); } }); } export function workerKVSession(options) { return session({ autoCommit: options.autoCommit, createSessionStorage(c) { if (!(options.binding in c.env)) { throw new ReferenceError("The binding for the kvSession is not set."); } let secrets = options.cookie.secrets(c); if (secrets.filter(Boolean).length === 0) { throw new ReferenceError("The secrets for the kvSession are not set."); } return createWorkersKVSessionStorage({ kv: c.env[options.binding], cookie: { ...options.cookie, secrets }, }); }, }); } export function cookieSession(options) { return session({ autoCommit: options.autoCommit, createSessionStorage(c) { let secrets = options.cookie.secrets(c); if (secrets.filter(Boolean).length === 0) { throw new ReferenceError("The secrets for the cookieSession are not set."); } return createCookieSessionStorage({ cookie: { ...options.cookie, secrets }, }); }, }); } //# sourceMappingURL=cloudflare.js.map