Skip to content

Commit

Permalink
feat/fix: get everything up to date + redis adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
OrJDev committed Apr 16, 2024
1 parent cbf6d75 commit 9d70e44
Show file tree
Hide file tree
Showing 102 changed files with 4,247 additions and 4,596 deletions.
2 changes: 1 addition & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["example-solid", "example-nextjs"]
"ignore": ["dev-nextjs-upstash", "dev-nextjs-redis"]
}
7 changes: 7 additions & 0 deletions .changeset/thick-buses-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@trpc-limiter/core': major
'@trpc-limiter/memory': major
'@trpc-limiter/upstash': major
---

feat/fix: get everything up to date + redis adapter
66 changes: 65 additions & 1 deletion README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,72 @@ An open source, tRPC rate limiter middleware.

## Adapters

- [Upstash / Redis](https://github.com/OrJDev/trpc-limiter/tree/main/packages/upstash)
- [Redis](https://github.com/OrJDev/trpc-limiter/tree/main/packages/redis)
- [Upstash](https://github.com/OrJDev/trpc-limiter/tree/main/packages/upstash)
- [Memory Store](https://github.com/OrJDev/trpc-limiter/tree/main/packages/memory)
- [Custom](https://github.com/OrJDev/trpc-limiter/tree/main/packages/core)

This project was created because of this tRPC [issue](https://github.com/trpc/trpc/issues/3227) opened by the creator of tRPC.

## Note

Make sure to use the `next` version of tRPC. Meaning when installing a tRPC related package, make sure to install the `@next` version.

```bash
pnpm install @trpc/server@next @trpc/client@next ...
```

```ts
import {
createTRPCStoreLimiter,
defaultFingerPrint,
} from '@trpc-limiter/memory'

// or

import {
createTRPCUpstashLimiter,
defaultFingerPrint,
} from '@trpc-limiter/upstash'

// or

import { createTrpcRedisLimiter, defaultFingerPrint } from '@trpc-limiter/redis'
```

## Example (Redis)

```ts
import { initTRPC } from '@trpc/server'
import { type NextApiRequest } from 'next'
import { createTrpcRedisLimiter, defaultFingerPrint } from '@trpc-limiter/redis'
import { createClient } from 'redis'

export const redis = createClient({
password: '...',
socket: {
host: '...',
port: 18382,
},
disableOfflineQueue: true,
})

type Context = {
req: NextApiRequest
}

const t = initTRPC.context<Context>().create()

const rateLimiter = createTrpcRedisLimiter<typeof t>({
fingerprint: (ctx) => defaultFingerPrint(ctx.req),
message: (hitInfo) =>
`Too many requests, please try again later. ${Math.ceil(
(hitInfo.reset - Date.now()) / 1000
)}`,
max: 15,
windowMs: 10000,
redisClient: redis,
})

export const rateLimitedProcedure = t.procedure.use(rateLimiter)
```
11 changes: 0 additions & 11 deletions examples/next/.eslintrc.json

This file was deleted.

15 changes: 0 additions & 15 deletions examples/next/CHANGELOG.md

This file was deleted.

17 changes: 0 additions & 17 deletions examples/next/next.config.mjs

This file was deleted.

43 changes: 0 additions & 43 deletions examples/next/package.json

This file was deleted.

6 changes: 0 additions & 6 deletions examples/next/postcss.config.cjs

This file was deleted.

4 changes: 0 additions & 4 deletions examples/next/prettier.config.cjs

This file was deleted.

Binary file removed examples/next/public/favicon.ico
Binary file not shown.
35 changes: 0 additions & 35 deletions examples/next/src/env/client.mjs

This file was deleted.

29 changes: 0 additions & 29 deletions examples/next/src/env/schema.mjs

This file was deleted.

27 changes: 0 additions & 27 deletions examples/next/src/env/server.mjs

This file was deleted.

11 changes: 0 additions & 11 deletions examples/next/src/pages/_app.tsx

This file was deleted.

17 changes: 0 additions & 17 deletions examples/next/src/pages/api/trpc/[trpc].ts

This file was deleted.

27 changes: 0 additions & 27 deletions examples/next/src/server/trpc/context.ts

This file was deleted.

9 changes: 0 additions & 9 deletions examples/next/src/server/trpc/router/_app.ts

This file was deleted.

13 changes: 0 additions & 13 deletions examples/next/src/server/trpc/router/example.ts

This file was deleted.

Loading

0 comments on commit 9d70e44

Please sign in to comment.