Skip to content

Instantly share code, notes, and snippets.

View yusukebe's full-sized avatar
😃
Let's go!

Yusuke Wada yusukebe

😃
Let's go!
View GitHub Profile
import { Plugin, normalizePath } from 'vite'
import path from 'node:path'
import picomatch from 'picomatch'
import type { ServerResponse } from 'node:http'
type ShouldInjectFunction = (req: ServerResponse['req'], res: ServerResponse) => boolean
type Options = {
/**
* default ['src\/\*\*\/\*.ts', 'src\/\*\*\/\*.tsx']
import { encodeBase64Url } from '../../utils/encode'
import { utf8Encoder } from '../../utils/jwt/utf8'
import { signing } from './jws'
import { verifyFromJwks } from './jwt'
describe('verifyFromJwks header.alg fallback', () => {
it('Should use header.alg as fallback when matchingKey.alg is missing', async () => {
// Setup: Create a JWT signed with HS384 (different from default HS256)
const payload = { message: 'hello world' }
const headerAlg = 'HS384' // Non-default value
app.use(
'/',
reactRenderer(({ children }) => {
return (
<html lang="en">
<head>
<meta charSet="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React TS</title>
import { ServerResponse } from 'node:http'
function ssrHotReload(): Plugin {
return {
name: 'vite-plugin-ssr-hot-reload',
apply: 'serve',
configureServer(server) {
const injectScript = `<script type="module" src="/@vite/client"></script>`
server.middlewares.use((req, res, next) => {
import { createRoute } from 'honox/factory'
import { Suspense } from 'hono/jsx'
import { getContext } from 'hono/context-storage'
export const getData = async (userId: string | undefined) => {
await new Promise((resolve) => setTimeout(resolve, 1000))
if (!userId) {
return undefined
}
const userData = getContext().var.db.getUser(userId)
import { Hono } from 'hono'
import { streamText } from 'hono/streaming'
type Env = {
Bindings: {
AI: Ai
}
}
const app = new Hono<Env>()
import { Hono } from 'hono'
import { streamText } from 'hono/streaming'
type Env = {
Bindings: {
AI: Ai
}
}
const app = new Hono<Env>()
diff --git a/src/types.ts b/src/types.ts
index 193f73ad..4225be41 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1984,9 +1984,9 @@ export type ExtractSchema<T> = UnionToIntersection<
T extends HonoBase<infer _, infer S, any> ? S : never
>
-type EnvOrEmpty<T> = T extends Env ? (Env extends T ? {} : T) : T
+type ProcessHead<T> = IfAnyThenEmptyObject<T extends Env ? (Env extends T ? {} : T) : T>
import { Hono } from 'hono'
import type { Context } from 'hono'
interface ProxyFetch {
(
c: Context,
input: RequestInfo | URL,
modifyRequest: (req: Request) => void | undefined,
modifyResponse: (res: Response) => void | undefined
): Promise<Response>