いま使っているフレームワークのまま、連合を足せます。honoでもExpressでもNextでもSvelteKitでも、橋を一本importすれば、同じURLがブラウザにはHTMLを、fediクライアントにはJSON-LDを返すようになる。乗り換えは要りません。
橋の妙味は譲り合いです。fedifyの用でなければ框組のnext()にそっと譲る——この一手で、あなたの既存のルーティングと連合が、同じ住所に同居できます。
見どころ
- holloが渡るのはhonoの橋(約200行)。橋がこんなに短いのは、fedifyがWeb標準のRequest/Responseで話すおかげ
- nestjsの橋はDIモジュール一式(module+middleware+constants)、nuxtの橋はruntime/つきのNuxtモジュール——生態系ごとの礼儀に合わせて、橋の形が変わる
経文の一節
export function federation<TContextData, THonoContext extends HonoContext>(
federation: Federation<TContextData>,
contextDataFactory: ContextDataFactory<TContextData, THonoContext>,
): HonoMiddleware<THonoContext> {
return async (ctx, next) => {
let contextData = contextDataFactory(ctx);
if (contextData instanceof Promise) contextData = await contextData;
return await federation.fetch(ctx.req.raw, {
contextData,
...integrateFetchOptions(ctx, next),
});
};
}