Skip to content

Commit

Permalink
feat(server, openapi)!: rewrite handlers (#113)
Browse files Browse the repository at this point in the history
* interceptors

* standard adapter

* utils

* rpc matcher

* utils

* standard adapter

* rpc codec

* type standard body

* fetch request/response <-> standard request/response

* rpc handler

* rpc handler

* rpc handler

* rpc-handler

* rpc handler - node

* orpc link

* openapi handlers

* sync remove server and serverless openapi handlers

* improve

* improve

* fix

* improve

* wip

* fix

* improve

* replace onError with interceptors

* type fix

* fix tests
  • Loading branch information
unnoq authored Feb 5, 2025
1 parent ce4a08c commit ccd4e42
Show file tree
Hide file tree
Showing 105 changed files with 4,424 additions and 2,787 deletions.
4 changes: 2 additions & 2 deletions apps/content/content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,12 @@ In oRPC middleware is very useful and fully typed you can find more info [here](
```ts twoslash
import { RPCHandler } from '@orpc/server/node'
import { OpenAPIServerlessHandler } from '@orpc/openapi/node'
import { OpenAPIHandler } from '@orpc/openapi/node'
import { createServer } from 'node:http'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down
2 changes: 1 addition & 1 deletion apps/content/content/docs/server/context.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ rather than relying on global mechanisms like `headers` or `cookies` in Next.js.
```ts twoslash
import { os, ORPCError, createProcedureClient } from '@orpc/server'
import { RPCHandler } from '@orpc/server/fetch'
import { OpenAPIServerlessHandler, OpenAPIServerHandler } from '@orpc/openapi/fetch'
import { OpenAPIHandler } from '@orpc/openapi/fetch'

type ORPCContext = { user?: { id: string }, db: 'fake-db' }

Expand Down
24 changes: 12 additions & 12 deletions apps/content/content/docs/server/integrations.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ Whether you're targeting serverless, edge environments, or traditional backends,

```ts twoslash
import { RPCHandler } from '@orpc/server/fetch'
import { OpenAPIServerlessHandler } from '@orpc/openapi/fetch'
import { OpenAPIHandler } from '@orpc/openapi/fetch'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down Expand Up @@ -58,11 +58,11 @@ export async function fetch(request: Request) {
```ts twoslash
import { createServer } from 'node:http'
import { RPCHandler } from '@orpc/server/node'
import { OpenAPIServerlessHandler } from '@orpc/openapi/node'
import { OpenAPIHandler } from '@orpc/openapi/node'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down Expand Up @@ -106,13 +106,13 @@ server.listen(3000, () => {
```ts twoslash
import express from 'express'
import { RPCHandler } from '@orpc/server/node'
import { OpenAPIServerlessHandler } from '@orpc/openapi/node'
import { OpenAPIHandler } from '@orpc/openapi/node'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const app = express()

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down Expand Up @@ -156,14 +156,14 @@ app.listen(3000, () => {
```ts twoslash
import { Hono } from 'hono'
import { RPCHandler, createMiddleware } from '@orpc/server/hono'
import { OpenAPIServerlessHandler } from '@orpc/openapi/hono'
import { OpenAPIHandler } from '@orpc/openapi/hono'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'


const app = new Hono()

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down Expand Up @@ -191,12 +191,12 @@ export default app
## Next.js

```ts title="app/api/[...orpc]/route.ts" twoslash
import { OpenAPIServerlessHandler } from '@orpc/openapi/next'
import { OpenAPIHandler } from '@orpc/openapi/next'
import { serve } from '@orpc/server/next'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down Expand Up @@ -228,11 +228,11 @@ export const { GET, POST, PUT, PATCH, DELETE } = serve(rpcHandler, {

```ts twoslash
import { RPCHandler } from '@orpc/server/fetch'
import { OpenAPIServerlessHandler } from '@orpc/openapi/fetch'
import { OpenAPIHandler } from '@orpc/openapi/fetch'
import { router } from 'examples/server'
import { ZodCoercer } from '@orpc/zod'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down
4 changes: 2 additions & 2 deletions apps/content/examples/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ export const router = pub.router({

// Modern runtime that support fetch api like deno, bun, cloudflare workers, even node can used
import { createServer } from 'node:http'
import { OpenAPIServerlessHandler } from '@orpc/openapi/node'
import { OpenAPIHandler } from '@orpc/openapi/node'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down
4 changes: 2 additions & 2 deletions apps/content/examples/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ export type Outputs = InferRouterOutputs<typeof router>

// Modern runtime that support fetch api like deno, bun, cloudflare workers, even node can used
import { createServer } from 'node:http'
import { OpenAPIServerlessHandler } from '@orpc/openapi/node'
import { OpenAPIHandler } from '@orpc/openapi/node'

const openAPIHandler = new OpenAPIServerlessHandler(router, {
const openAPIHandler = new OpenAPIHandler(router, {
schemaCoercers: [
new ZodCoercer(),
],
Expand Down
3 changes: 2 additions & 1 deletion packages/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
"dependencies": {
"@orpc/contract": "workspace:*",
"@orpc/server": "workspace:*",
"@orpc/shared": "workspace:*"
"@orpc/shared": "workspace:*",
"content-disposition": "^0.5.4"
},
"devDependencies": {
"@orpc/openapi": "workspace:*",
Expand Down
Loading

0 comments on commit ccd4e42

Please sign in to comment.