From 3bb3bf51318d4284c0521aaeb96cbb5552c2437a Mon Sep 17 00:00:00 2001 From: isucon server <61941819+ogadra@users.noreply.github.com> Date: Wed, 20 Nov 2024 13:14:26 +0900 Subject: [PATCH 1/3] feat: add example for cloudflare-workers --- examples/cloudflare-workers/app/routes/_index.tsx | 6 ++++-- examples/cloudflare-workers/load-context.ts | 6 +++++- examples/cloudflare-workers/server/index.ts | 6 +++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/examples/cloudflare-workers/app/routes/_index.tsx b/examples/cloudflare-workers/app/routes/_index.tsx index 840dafe..9c7841b 100644 --- a/examples/cloudflare-workers/app/routes/_index.tsx +++ b/examples/cloudflare-workers/app/routes/_index.tsx @@ -4,11 +4,12 @@ import { useLoaderData } from '@remix-run/react' export const loader = (args: LoaderFunctionArgs) => { const extra = args.context.extra const cloudflare = args.context.cloudflare - return { cloudflare, extra } + const hono_context = args.context.hono.context.get('hono-context') + return { cloudflare, extra, hono_context } } export default function Index() { - const { cloudflare, extra } = useLoaderData() + const { cloudflare, extra, hono_context } = useLoaderData() return (

Remix and Hono

@@ -19,6 +20,7 @@ export default function Index() { {cloudflare.caches ? 'caches are available' : ''}

Extra is {extra}

+

hono-context is {hono_context}

) } diff --git a/examples/cloudflare-workers/load-context.ts b/examples/cloudflare-workers/load-context.ts index c02d371..7711190 100644 --- a/examples/cloudflare-workers/load-context.ts +++ b/examples/cloudflare-workers/load-context.ts @@ -1,3 +1,4 @@ +import type { Context } from 'hono' import type { PlatformProxy } from 'wrangler' interface Env { @@ -10,7 +11,10 @@ type GetLoadContextArgs = { cloudflare: Omit, 'dispose' | 'caches' | 'cf'> & { caches: PlatformProxy['caches'] | CacheStorage cf: Request['cf'] - } + }, + hono: { + context: Context + }, } } diff --git a/examples/cloudflare-workers/server/index.ts b/examples/cloudflare-workers/server/index.ts index 740577e..0c1f12d 100644 --- a/examples/cloudflare-workers/server/index.ts +++ b/examples/cloudflare-workers/server/index.ts @@ -4,10 +4,14 @@ import { Hono } from 'hono' const app = new Hono<{ Bindings: { MY_VAR: string - } + }, + Variables: { + 'hono-context': string + }, }>() app.use(async(c, next) => { + c.set('hono-context', 'hono-context') await next() c.header('X-Powered-By', 'Remix and Hono') }) From 45fc9e493475a2e12d67de0c54ec197282c45d86 Mon Sep 17 00:00:00 2001 From: isucon server <61941819+ogadra@users.noreply.github.com> Date: Thu, 21 Nov 2024 01:24:05 +0900 Subject: [PATCH 2/3] Align variable name and value with cloudflare-pages --- .../cloudflare-workers/app/routes/_index.tsx | 8 ++++---- examples/cloudflare-workers/load-context.ts | 16 ++++++++++++---- examples/cloudflare-workers/server/index.ts | 7 +++---- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/examples/cloudflare-workers/app/routes/_index.tsx b/examples/cloudflare-workers/app/routes/_index.tsx index 9c7841b..287c6de 100644 --- a/examples/cloudflare-workers/app/routes/_index.tsx +++ b/examples/cloudflare-workers/app/routes/_index.tsx @@ -4,12 +4,12 @@ import { useLoaderData } from '@remix-run/react' export const loader = (args: LoaderFunctionArgs) => { const extra = args.context.extra const cloudflare = args.context.cloudflare - const hono_context = args.context.hono.context.get('hono-context') - return { cloudflare, extra, hono_context } + const myVarInVariables = args.context.hono.context.get('MY_VAR_IN_VARIABLES') + return { cloudflare, extra, myVarInVariables } } export default function Index() { - const { cloudflare, extra, hono_context } = useLoaderData() + const { cloudflare, extra, myVarInVariables } = useLoaderData() return (

Remix and Hono

@@ -20,7 +20,7 @@ export default function Index() { {cloudflare.caches ? 'caches are available' : ''}

Extra is {extra}

-

hono-context is {hono_context}

+
Var in Variables is {myVarInVariables}
) } diff --git a/examples/cloudflare-workers/load-context.ts b/examples/cloudflare-workers/load-context.ts index 7711190..5feff53 100644 --- a/examples/cloudflare-workers/load-context.ts +++ b/examples/cloudflare-workers/load-context.ts @@ -1,19 +1,24 @@ import type { Context } from 'hono' import type { PlatformProxy } from 'wrangler' -interface Env { - MY_VAR: string +type Env = { + Bindings: { + MY_VAR: string + } + Variables: { + MY_VAR_IN_VARIABLES: string + } } type GetLoadContextArgs = { request: Request context: { - cloudflare: Omit, 'dispose' | 'caches' | 'cf'> & { + cloudflare: Omit, 'dispose' | 'caches' | 'cf'> & { caches: PlatformProxy['caches'] | CacheStorage cf: Request['cf'] }, hono: { - context: Context + context: Context }, } } @@ -23,6 +28,9 @@ declare module '@remix-run/cloudflare' { interface AppLoadContext extends ReturnType { // This will merge the result of `getLoadContext` into the `AppLoadContext` extra: string + hono: { + context: Context + } } } diff --git a/examples/cloudflare-workers/server/index.ts b/examples/cloudflare-workers/server/index.ts index 0c1f12d..78b1905 100644 --- a/examples/cloudflare-workers/server/index.ts +++ b/examples/cloudflare-workers/server/index.ts @@ -6,12 +6,12 @@ const app = new Hono<{ MY_VAR: string }, Variables: { - 'hono-context': string + 'MY_VAR_IN_VARIABLES': string }, }>() app.use(async(c, next) => { - c.set('hono-context', 'hono-context') + c.set('MY_VAR_IN_VARIABLES', 'My variable set in c.set') await next() c.header('X-Powered-By', 'Remix and Hono') }) @@ -19,9 +19,8 @@ app.use(async(c, next) => { app.get('/api', (c) => { return c.json({ message: 'Hello', - var: c.env.MY_VAR + var: c.env.MY_VAR, }) }) - export default app From 751fe627b1ce1429c1a39ff8ffc4bbcb2102fe61 Mon Sep 17 00:00:00 2001 From: Yusuke Wada Date: Thu, 21 Nov 2024 04:15:48 +0900 Subject: [PATCH 3/3] format --- examples/cloudflare-workers/load-context.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cloudflare-workers/load-context.ts b/examples/cloudflare-workers/load-context.ts index 5feff53..c56280c 100644 --- a/examples/cloudflare-workers/load-context.ts +++ b/examples/cloudflare-workers/load-context.ts @@ -16,10 +16,10 @@ type GetLoadContextArgs = { cloudflare: Omit, 'dispose' | 'caches' | 'cf'> & { caches: PlatformProxy['caches'] | CacheStorage cf: Request['cf'] - }, + } hono: { context: Context - }, + } } }