diff --git a/apps/mail-bridge/package.json b/apps/mail-bridge/package.json index 5978128d..c66926a8 100644 --- a/apps/mail-bridge/package.json +++ b/apps/mail-bridge/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@hono/node-server": "^1.11.1", - "@hono/trpc-server": "^0.2.0", + "@hono/trpc-server": "^0.3.1", "@hono/zod-validator": "^0.2.1", "@t3-oss/env-core": "^0.10.1", "@trpc/client": "^10.45.2", @@ -27,7 +27,7 @@ "@u22n/tsconfig": "^0.0.2", "@u22n/utils": "workspace:*", "drizzle-orm": "^0.30.3", - "hono": "^4.3.6", + "hono": "^4.3.7", "mailauth": "^4.6.5", "mailparser": "^3.6.9", "mysql2": "^3.9.7", diff --git a/apps/platform/app.ts b/apps/platform/app.ts index 247c1e8a..f62b7a2a 100644 --- a/apps/platform/app.ts +++ b/apps/platform/app.ts @@ -7,7 +7,7 @@ import { authApi } from './routes/auth'; import { realtimeApi } from './routes/realtime'; import { trpcPlatformRouter } from './trpc'; import { db } from '@u22n/database'; -import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; +import { trpcServer } from '@hono/trpc-server'; import { authMiddleware } from './middlewares'; import { logger } from 'hono/logger'; @@ -38,18 +38,17 @@ app.route('/auth', authApi); app.route('/realtime', realtimeApi); // TRPC handler -app.use('/trpc/*', async (c) => - fetchRequestHandler({ +app.use( + '/trpc/*', + trpcServer({ router: trpcPlatformRouter, - createContext: () => ({ + createContext: (_, c) => ({ db, account: c.get('account'), org: null, event: c - }), - endpoint: '/trpc', - req: c.req.raw - }).then((res) => c.body(res.body, res)) + }) + }) ); // 404 handler diff --git a/apps/platform/package.json b/apps/platform/package.json index 19e76c08..34a48392 100644 --- a/apps/platform/package.json +++ b/apps/platform/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@hono/node-server": "^1.11.1", + "@hono/trpc-server": "^0.3.1", "@hono/zod-validator": "^0.2.1", "@simplewebauthn/server": "^9.0.3", "@t3-oss/env-core": "^0.10.1", @@ -21,7 +22,7 @@ "@u22n/tsconfig": "^0.0.2", "@u22n/utils": "workspace:^", "@unkey/ratelimit": "^0.1.3", - "hono": "^4.3.6", + "hono": "^4.3.7", "itty-time": "^1.0.6", "lucia": "^3.1.1", "oslo": "^1.1.3", diff --git a/apps/platform/routes/auth.ts b/apps/platform/routes/auth.ts index c0243a49..a5f1e63e 100644 --- a/apps/platform/routes/auth.ts +++ b/apps/platform/routes/auth.ts @@ -2,7 +2,6 @@ import { Hono } from 'hono'; import type { Ctx } from '../ctx'; import { lucia } from '../utils/auth'; import { setCookie } from 'hono/cookie'; -import { convertLuciaAttributesToHono } from '../utils/misc'; export const authApi = new Hono(); @@ -22,11 +21,6 @@ authApi.post('/logout', async (c) => { const sessionId = account.session.id; await lucia.invalidateSession(sessionId); const cookie = lucia.createBlankSessionCookie(); - setCookie( - c, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(c, cookie.name, cookie.value, cookie.attributes); return c.json({ ok: true }); }); diff --git a/apps/platform/trpc/routers/authRouter/passkeyRouter.ts b/apps/platform/trpc/routers/authRouter/passkeyRouter.ts index 5af3954e..52b0b134 100644 --- a/apps/platform/trpc/routers/authRouter/passkeyRouter.ts +++ b/apps/platform/trpc/routers/authRouter/passkeyRouter.ts @@ -22,7 +22,6 @@ import { createLuciaSessionCookie } from '../../../utils/session'; import { env } from '../../../env'; import { ms } from 'itty-time'; import { getCookie, setCookie } from 'hono/cookie'; -import { convertLuciaAttributesToHono } from '../../../utils/misc'; export const passkeyRouter = router({ signUpWithPasskeyStart: publicRateLimitedProcedure.signUpPasskeyStart @@ -143,12 +142,7 @@ export const passkeyRouter = router({ username: input.username, publicId: input.publicId }); - setCookie( - ctx.event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(ctx.event, cookie.name, cookie.value, cookie.attributes); return { success: true }; }), @@ -251,12 +245,7 @@ export const passkeyRouter = router({ os: os.name || 'Unknown' }); const cookie = lucia.createSessionCookie(accountSession.id); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); await db .update(accounts) diff --git a/apps/platform/trpc/routers/authRouter/passwordRouter.ts b/apps/platform/trpc/routers/authRouter/passwordRouter.ts index 31761afe..2c4b22a1 100644 --- a/apps/platform/trpc/routers/authRouter/passwordRouter.ts +++ b/apps/platform/trpc/routers/authRouter/passwordRouter.ts @@ -20,7 +20,6 @@ import { createLuciaSessionCookie } from '../../../utils/session'; import { decodeHex } from 'oslo/encoding'; import { TOTPController } from 'oslo/otp'; import { setCookie, getCookie, deleteCookie } from 'hono/cookie'; -import { convertLuciaAttributesToHono } from '../../../utils/misc'; import { env } from '../../../env'; import { storage } from '../../../storage'; @@ -73,12 +72,7 @@ export const passwordRouter = router({ publicId }); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); await db .update(accounts) .set({ lastLoginAt: new Date() }) @@ -176,12 +170,7 @@ export const passwordRouter = router({ publicId }); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); deleteCookie(event, 'un-2fa-challenge'); await db @@ -312,12 +301,7 @@ export const passwordRouter = router({ username, publicId }); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); await db .update(accounts) @@ -422,12 +406,7 @@ export const passwordRouter = router({ publicId: accountData.publicId }); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); return { success: true }; }) }); diff --git a/apps/platform/trpc/routers/authRouter/recoveryRouter.ts b/apps/platform/trpc/routers/authRouter/recoveryRouter.ts index 8349b53a..00c61806 100644 --- a/apps/platform/trpc/routers/authRouter/recoveryRouter.ts +++ b/apps/platform/trpc/routers/authRouter/recoveryRouter.ts @@ -9,7 +9,6 @@ import { createLuciaSessionCookie } from '../../../utils/session'; import { decodeHex } from 'oslo/encoding'; import { TOTPController } from 'oslo/otp'; import { setCookie } from 'hono/cookie'; -import { convertLuciaAttributesToHono } from '../../../utils/misc'; import { env } from '../../../env'; import { storage } from '../../../storage'; @@ -136,12 +135,7 @@ export const recoveryRouter = router({ publicId }); - setCookie( - event, - cookie.name, - cookie.value, - convertLuciaAttributesToHono(cookie.attributes) - ); + setCookie(event, cookie.name, cookie.value, cookie.attributes); const authStorage = storage.auth; const token = nanoIdToken(); diff --git a/apps/platform/utils/misc.ts b/apps/platform/utils/misc.ts deleted file mode 100644 index 4e1c9fc1..00000000 --- a/apps/platform/utils/misc.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Cookie as LuciaCookie } from 'lucia'; - -export const capitalize = (str: T) => - (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize; - -export const convertLuciaAttributesToHono = ( - attributes: LuciaCookie['attributes'] -) => ({ - ...attributes, - sameSite: attributes.sameSite ? capitalize(attributes.sameSite) : undefined -}); diff --git a/apps/storage/package.json b/apps/storage/package.json index d57614fd..a362a433 100644 --- a/apps/storage/package.json +++ b/apps/storage/package.json @@ -20,7 +20,7 @@ "@u22n/database": "workspace:*", "@u22n/tsconfig": "^0.0.2", "@u22n/utils": "workspace:*", - "hono": "^4.3.6", + "hono": "^4.3.7", "sharp": "^0.33.2", "unstorage": "^1.10.2", "zod": "^3.23.8" diff --git a/ee/apps/billing/package.json b/ee/apps/billing/package.json index b4671390..5a6c942e 100644 --- a/ee/apps/billing/package.json +++ b/ee/apps/billing/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@hono/node-server": "^1.11.1", - "@hono/trpc-server": "^0.2.0", + "@hono/trpc-server": "^0.3.1", "@hono/zod-validator": "^0.2.1", "@t3-oss/env-core": "^0.10.1", "@trpc/client": "^10.45.2", @@ -22,7 +22,7 @@ "@u22n/database": "workspace:*", "@u22n/tsconfig": "^0.0.2", "@u22n/utils": "workspace:*", - "hono": "^4.3.6", + "hono": "^4.3.7", "nitropack": "^2.8.1", "stripe": "^14.17.0", "superjson": "^2.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5498533a..74d4054f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,11 +51,11 @@ importers: specifier: ^1.11.1 version: 1.11.1 '@hono/trpc-server': - specifier: ^0.2.0 - version: 0.2.0(@trpc/server@10.45.2)(hono@4.3.6) + specifier: ^0.3.1 + version: 0.3.1(@trpc/server@10.45.2)(hono@4.3.7) '@hono/zod-validator': specifier: ^0.2.1 - version: 0.2.1(hono@4.3.6)(zod@3.23.8) + version: 0.2.1(hono@4.3.7)(zod@3.23.8) '@t3-oss/env-core': specifier: ^0.10.1 version: 0.10.1(typescript@5.4.5)(zod@3.23.8) @@ -90,8 +90,8 @@ importers: specifier: ^0.30.3 version: 0.30.3(@planetscale/database@1.16.0)(@types/react@18.3.1)(mysql2@3.9.7)(react@18.3.1) hono: - specifier: ^4.3.6 - version: 4.3.6 + specifier: ^4.3.7 + version: 4.3.7 mailauth: specifier: ^4.6.5 version: 4.6.5 @@ -129,9 +129,12 @@ importers: '@hono/node-server': specifier: ^1.11.1 version: 1.11.1 + '@hono/trpc-server': + specifier: ^0.3.1 + version: 0.3.1(@trpc/server@10.45.2)(hono@4.3.7) '@hono/zod-validator': specifier: ^0.2.1 - version: 0.2.1(hono@4.3.6)(zod@3.23.8) + version: 0.2.1(hono@4.3.7)(zod@3.23.8) '@simplewebauthn/server': specifier: ^9.0.3 version: 9.0.3(encoding@0.1.13) @@ -166,8 +169,8 @@ importers: specifier: ^0.1.3 version: 0.1.3 hono: - specifier: ^4.3.6 - version: 4.3.6 + specifier: ^4.3.7 + version: 4.3.7 itty-time: specifier: ^1.0.6 version: 1.0.6 @@ -219,7 +222,7 @@ importers: version: 1.11.1 '@hono/zod-validator': specifier: ^0.2.1 - version: 0.2.1(hono@4.3.6)(zod@3.23.8) + version: 0.2.1(hono@4.3.7)(zod@3.23.8) '@t3-oss/env-core': specifier: ^0.10.1 version: 0.10.1(typescript@5.4.5)(zod@3.23.8) @@ -233,8 +236,8 @@ importers: specifier: workspace:* version: link:../../packages/utils hono: - specifier: ^4.3.6 - version: 4.3.6 + specifier: ^4.3.7 + version: 4.3.7 sharp: specifier: ^0.33.2 version: 0.33.2 @@ -545,11 +548,11 @@ importers: specifier: ^1.11.1 version: 1.11.1 '@hono/trpc-server': - specifier: ^0.2.0 - version: 0.2.0(@trpc/server@10.45.2)(hono@4.3.6) + specifier: ^0.3.1 + version: 0.3.1(@trpc/server@10.45.2)(hono@4.3.7) '@hono/zod-validator': specifier: ^0.2.1 - version: 0.2.1(hono@4.3.6)(zod@3.23.8) + version: 0.2.1(hono@4.3.7)(zod@3.23.8) '@t3-oss/env-core': specifier: ^0.10.1 version: 0.10.1(typescript@5.4.5)(zod@3.23.8) @@ -569,8 +572,8 @@ importers: specifier: workspace:* version: link:../../../packages/utils hono: - specifier: ^4.3.6 - version: 4.3.6 + specifier: ^4.3.7 + version: 4.3.7 nitropack: specifier: ^2.8.1 version: 2.9.4(@planetscale/database@1.16.0)(@upstash/redis@1.28.4)(encoding@0.1.13) @@ -1730,12 +1733,12 @@ packages: resolution: {integrity: sha512-GW1Iomhmm1o4Z+X57xGby8A35Cu9UZLL7pSMdqDBkD99U5cywff8F+8hLk5aBTzNubnsFAvWQ/fZjNwPsEn9lA==} engines: {node: '>=18.14.1'} - '@hono/trpc-server@0.2.0': - resolution: {integrity: sha512-e6hQ4w0jO5bvKu2Wmy3EDJUjVs7pEZ8g5Y6oDbdKXCmy5hJGasSeoMWD9kkLfsmjbANBXq5L/OHh+6MC6LuXgg==} + '@hono/trpc-server@0.3.1': + resolution: {integrity: sha512-2FgDUv6ngrDA8pu/hb8hTqUyEgsT7PbYriTVKJoYxlqW8nnCqubruZ/14IQ/MCkBPXKVefnqUCJNAytW1Su++A==} engines: {node: '>=16.0.0'} peerDependencies: '@trpc/server': ^10.10.0 - hono: '>=3.*' + hono: '>=4.*' '@hono/zod-validator@0.2.1': resolution: {integrity: sha512-HFoxln7Q6JsE64qz2WBS28SD33UB2alp3aRKmcWnNLDzEL1BLsWfbdX6e1HIiUprHYTIXf5y7ax8eYidKUwyaA==} @@ -3645,11 +3648,6 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - '@tailwindcss/typography@0.5.13': - resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - '@tanstack/query-core@4.36.1': resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==} @@ -5782,8 +5780,8 @@ packages: heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - hono@4.3.6: - resolution: {integrity: sha512-2IqXwrxWF4tG2AR7b5tMYn+KEnWK8UvdC/NUSbOKWj/Kj11OJqel58FxyiXLK5CcKLiL8aGtTe4lkBKXyaHMBQ==} + hono@4.3.7: + resolution: {integrity: sha512-GXlsGnCAwGosu+COwYyYC8MwOY2L6Ihg9V1znYdMD8DHCJl+13Nk4o8dsBYJpae4oujjw24jBaITuYWVq2+V8Q==} engines: {node: '>=16.0.0'} hookable@5.5.3: @@ -9980,14 +9978,14 @@ snapshots: '@hono/node-server@1.11.1': {} - '@hono/trpc-server@0.2.0(@trpc/server@10.45.2)(hono@4.3.6)': + '@hono/trpc-server@0.3.1(@trpc/server@10.45.2)(hono@4.3.7)': dependencies: '@trpc/server': 10.45.2 - hono: 4.3.6 + hono: 4.3.7 - '@hono/zod-validator@0.2.1(hono@4.3.6)(zod@3.23.8)': + '@hono/zod-validator@0.2.1(hono@4.3.7)(zod@3.23.8)': dependencies: - hono: 4.3.6 + hono: 4.3.7 zod: 3.23.8 '@humanwhocodes/config-array@0.11.14': @@ -12250,14 +12248,6 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.3 - '@tailwindcss/typography@0.5.13(tailwindcss@3.4.3)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.3 - '@tanstack/query-core@4.36.1': {} '@tanstack/react-query@4.36.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -14766,7 +14756,7 @@ snapshots: heap@0.2.7: {} - hono@4.3.6: {} + hono@4.3.7: {} hookable@5.5.3: {}