feat(cli): add openapi suppport in orpc (#563)

This commit is contained in:
Aman Varshney
2025-09-04 15:08:44 +05:30
committed by GitHub
parent 50a1b9441f
commit a276addef8
15 changed files with 193 additions and 24 deletions

View File

@@ -2,18 +2,47 @@
import { createContext } from '@/lib/context'
{{/if}}
import { appRouter } from '@/routers'
import { OpenAPIHandler } from '@orpc/openapi/fetch'
import { OpenAPIReferencePlugin } from '@orpc/openapi/plugins'
import { ZodToJsonSchemaConverter } from '@orpc/zod/zod4'
import { RPCHandler } from '@orpc/server/fetch'
import { onError } from '@orpc/server'
import { NextRequest } from 'next/server'
const handler = new RPCHandler(appRouter)
const rpcHandler = new RPCHandler(appRouter, {
interceptors: [
onError((error) => {
console.error(error)
}),
],
})
const apiHandler = new OpenAPIHandler(appRouter, {
plugins: [
new OpenAPIReferencePlugin({
schemaConverters: [new ZodToJsonSchemaConverter()],
}),
],
interceptors: [
onError((error) => {
console.error(error)
}),
],
})
async function handleRequest(req: NextRequest) {
const { response } = await handler.handle(req, {
const rpcResult = await rpcHandler.handle(req, {
prefix: '/rpc',
context: {{#if (eq auth "better-auth")}}await createContext(req){{else}}{}{{/if}},
})
if (rpcResult.response) return rpcResult.response
return response ?? new Response('Not found', { status: 404 })
const apiResult = await apiHandler.handle(req, {
prefix: '/rpc/api',
context: {{#if (eq auth "better-auth")}}await createContext(req){{else}}{}{{/if}},
})
if (apiResult.response) return apiResult.response
return new Response('Not found', { status: 404 })
}
export const GET = handleRequest