Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: upstash/ratelimit-js
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.1.3
Choose a base ref
...
head repository: upstash/ratelimit-js
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Apr 25, 2024

  1. add deno examples

    CahidArda committed Apr 25, 2024
    Copy the full SHA
    fa5f9a9 View commit details
  2. add vercel-edge example

    CahidArda committed Apr 25, 2024
    Copy the full SHA
    d3a2e73 View commit details

Commits on Apr 29, 2024

  1. Merge pull request #104 from upstash/dx-784-enrich-examples

    Dx 784 enrich examples
    buggyhunter authored Apr 29, 2024
    Copy the full SHA
    2f950cb View commit details

Commits on May 6, 2024

  1. add cf pages example

    CahidArda committed May 6, 2024
    Copy the full SHA
    c875452 View commit details
  2. Copy the full SHA
    e46ff1a View commit details
  3. Copy the full SHA
    b2b1188 View commit details
  4. Copy the full SHA
    9b17ff3 View commit details
  5. Copy the full SHA
    6b7feaa View commit details
  6. fix title

    CahidArda committed May 6, 2024
    Copy the full SHA
    de3f1fb View commit details
  7. Copy the full SHA
    80ea718 View commit details

Commits on May 7, 2024

  1. Merge pull request #105 from upstash/cf-pages-next-examples

    Update Ratelimit Examples
    ogzhanolguncu authored May 7, 2024
    Copy the full SHA
    a25b9cf View commit details

Commits on May 20, 2024

  1. Copy the full SHA
    2b9bcb9 View commit details
  2. define script life cycle in redis

    before this commit, we loaded scripts to redis in every cold start. This is not so desirable because the scripts in the redis cache stay there unless someone calls SCRIPT FLUSH. Hence, a life cycle is needed.
    
    How do we define a life cycle for a serverless environment? Random numbers. In each limit() invocation, we create a random number and flush the scripts if it is smaller than some frequency threshold. If a user makes a lot of requests, their scripts will get flushed eventually.
    
    This implementation however, has a hazard: serverless instance A can flush while instance B is still operating. We need a 'safeEvalsha' and we add exactly that in hash.ts.
    CahidArda committed May 20, 2024
    Copy the full SHA
    460eed5 View commit details

Commits on May 21, 2024

  1. Partially Revert "define script life cycle in redis"

    This reverts commit 460eed5.
    CahidArda committed May 21, 2024
    Copy the full SHA
    b967941 View commit details

Commits on May 22, 2024

  1. update safeEval docstring

    CahidArda committed May 22, 2024
    Copy the full SHA
    339be12 View commit details
  2. fix timeout test

    CahidArda committed May 22, 2024
    Copy the full SHA
    8b8b856 View commit details
  3. fix cache test

    CahidArda committed May 22, 2024
    Copy the full SHA
    62566a1 View commit details
  4. remove only statement

    CahidArda committed May 22, 2024
    Copy the full SHA
    f7a4a2f View commit details

Commits on May 23, 2024

  1. Merge pull request #106 from upstash/dx-873-hash-scripts

    Add lua script caching
    CahidArda authored May 23, 2024
    Copy the full SHA
    4e06c13 View commit details

Commits on May 26, 2024

  1. use waitUntil in nextjs examples

    until recently, there was no way of using waitUntil in vercel edge. vercel/next.js#50522
    
    But now it is possible. Updating the nextjs and vercel-edge examples utilizing the waitUntil.
    CahidArda committed May 26, 2024
    Copy the full SHA
    d213f89 View commit details

Commits on May 27, 2024

  1. Merge pull request #107 from upstash/update-nextjs-examples-with-wait…

    …Until
    
    use waitUntil in nextjs examples
    CahidArda authored May 27, 2024
    Copy the full SHA
    0985f1c View commit details

Commits on May 29, 2024

  1. add reason field to limit response

    can take timeout or cacheBlocked values depending on how the response was returned.
    CahidArda committed May 29, 2024
    Copy the full SHA
    a695d0c View commit details
  2. add deny list feature

    CahidArda committed May 29, 2024
    Copy the full SHA
    08b677f View commit details
  3. cache deny list results

    CahidArda committed May 29, 2024
    Copy the full SHA
    99f91d2 View commit details
  4. Copy the full SHA
    8e5ec44 View commit details
  5. Copy the full SHA
    9aa34e8 View commit details

Commits on May 30, 2024

  1. Copy the full SHA
    d0e3ef0 View commit details
  2. define IsDenied type

    CahidArda committed May 30, 2024
    Copy the full SHA
    2da6b27 View commit details
  3. Copy the full SHA
    27cba5c View commit details
  4. define EventSuccess type

    CahidArda committed May 30, 2024
    Copy the full SHA
    f63ff6d View commit details
  5. use to get denied cache

    CahidArda committed May 30, 2024
    Copy the full SHA
    a582c4a View commit details
  6. write docstrings

    CahidArda committed May 30, 2024
    Copy the full SHA
    f23b536 View commit details
  7. add deny list tests

    CahidArda committed May 30, 2024
    Copy the full SHA
    9af90de View commit details

Commits on May 31, 2024

  1. refactor limit method

    CahidArda committed May 31, 2024
    Copy the full SHA
    5262320 View commit details
  2. fix denyList override test

    CahidArda committed May 31, 2024
    Copy the full SHA
    ac72232 View commit details
  3. Copy the full SHA
    0622c32 View commit details

Commits on Jun 3, 2024

  1. Merge pull request #109 from upstash/DX-960

    Add Deny List Feature & Add Reasons to `limit` Response
    ogzhanolguncu authored Jun 3, 2024
    Copy the full SHA
    7e5e9e1 View commit details
  2. Copy the full SHA
    eaacbe1 View commit details

Commits on Jun 10, 2024

  1. Copy the full SHA
    ae41884 View commit details

Commits on Jun 12, 2024

  1. Merge pull request #110 from upstash/DX-960

    Add enable-protection example
    CahidArda authored Jun 12, 2024
    Copy the full SHA
    180bd70 View commit details

Commits on Jun 13, 2024

  1. feat: add ip deny lists to the sdk

    in ip deny lists, we use an open source IP deny list aggregator as a source for blocking IP addresses automatically.
    
    We keep a status flag at redis to denote the state. When the feature is disabled, flag is set to disabled with no expiry date. Otherwise, it's either set to a value with some expiry or expired.
    
    We use these three states to define what we do:
    - disabled with no ttl: don't do anything. use list of all deny lists it as it is (with values entered by the user)
    - set with some ttl: don't do anything. use list of all deny lists it as it is (which includes user values and the ip list)
    - deleted: this means the ip list must be updated. The result is returned to the user and an async is process is attached to the pending field in our response
    
    Mind that the first two states are the same, but we differentiate them to explain what's going on.
    CahidArda committed Jun 13, 2024
    Copy the full SHA
    7a6ec72 View commit details
  2. Copy the full SHA
    6dbecd2 View commit details
  3. Copy the full SHA
    afb7250 View commit details
  4. Copy the full SHA
    9ce8768 View commit details
  5. feat: define ThresholdError

    CahidArda committed Jun 13, 2024
    Copy the full SHA
    f1615a0 View commit details
  6. Copy the full SHA
    290dd68 View commit details
  7. fix: add docstrings

    CahidArda committed Jun 13, 2024
    Copy the full SHA
    ccb75c5 View commit details
  8. Copy the full SHA
    e53f3c2 View commit details
  9. Copy the full SHA
    ea5fcc4 View commit details
  10. Copy the full SHA
    db3a063 View commit details
Showing with 4,244 additions and 1,304 deletions.
  1. +0 −33 .github/workflows/stale.yaml
  2. +225 −0 .github/workflows/tests.yaml
  3. +3 −0 .prettierignore
  4. +3 −2 README.md
  5. +0 −37 biome.json
  6. BIN bun.lockb
  7. +103 −0 eslint.config.mjs
  8. +9 −0 examples/cloudflare-pages/.eslintrc.json
  9. +40 −0 examples/cloudflare-pages/.gitignore
  10. +69 −0 examples/cloudflare-pages/README.md
  11. +29 −0 examples/cloudflare-pages/app/api/route.ts
  12. BIN examples/{nextjs13 → cloudflare-pages}/app/favicon.ico
  13. +33 −0 examples/cloudflare-pages/app/globals.css
  14. +22 −0 examples/cloudflare-pages/app/layout.tsx
  15. +58 −0 examples/cloudflare-pages/app/not-found.tsx
  16. +47 −0 examples/cloudflare-pages/app/page.tsx
  17. +5 −0 examples/cloudflare-pages/env.d.ts
  18. +13 −0 examples/cloudflare-pages/next.config.mjs
  19. +37 −0 examples/cloudflare-pages/package.json
  20. 0 examples/{nextjs → cloudflare-pages}/postcss.config.js
  21. 0 examples/{nextjs13 → cloudflare-pages}/public/next.svg
  22. 0 examples/{nextjs13 → cloudflare-pages}/public/vercel.svg
  23. +20 −0 examples/cloudflare-pages/tailwind.config.ts
  24. +29 −0 examples/cloudflare-pages/tsconfig.json
  25. +87 −0 examples/cloudflare-pages/wrangler.toml
  26. +176 −0 examples/cloudflare-workers/.gitignore
  27. +7 −1 examples/cloudflare-workers/README.md
  28. BIN examples/cloudflare-workers/bun.lockb
  29. +16 −0 examples/cloudflare-workers/ci.test.ts
  30. +5 −3 examples/cloudflare-workers/package.json
  31. +1 −1 examples/cloudflare-workers/wrangler.toml
  32. +15 −0 examples/deno/README.md
  33. +36 −0 examples/deno/deprecated.ts
  34. +28 −0 examples/deno/main.ts
  35. +3 −0 examples/enable-protection/.eslintrc.json
  36. +1 −1 examples/{nextjs13 → enable-protection}/.gitignore
  37. +45 −0 examples/enable-protection/README.md
  38. +38 −0 examples/enable-protection/app/api/route.ts
  39. BIN examples/enable-protection/app/favicon.ico
  40. +33 −0 examples/enable-protection/app/globals.css
  41. +22 −0 examples/enable-protection/app/layout.tsx
  42. +69 −0 examples/enable-protection/app/page.tsx
  43. +4 −0 examples/enable-protection/next.config.mjs
  44. +28 −0 examples/enable-protection/package.json
  45. +8 −0 examples/enable-protection/postcss.config.mjs
  46. +1 −0 examples/enable-protection/public/next.svg
  47. +1 −0 examples/enable-protection/public/vercel.svg
  48. +20 −0 examples/enable-protection/tailwind.config.ts
  49. +1 −3 examples/{nextjs13 → enable-protection}/tsconfig.json
  50. +3 −0 examples/nextjs-middleware/.eslintrc.json
  51. +36 −0 examples/nextjs-middleware/.gitignore
  52. +61 −0 examples/nextjs-middleware/README.md
  53. +7 −0 examples/nextjs-middleware/app/api/blocked/route.tsx
  54. +8 −0 examples/nextjs-middleware/app/api/route.ts
  55. BIN examples/nextjs-middleware/app/favicon.ico
  56. +33 −0 examples/nextjs-middleware/app/globals.css
  57. +22 −0 examples/nextjs-middleware/app/layout.tsx
  58. +71 −0 examples/nextjs-middleware/app/page.tsx
  59. +11 −9 examples/{nextjs → nextjs-middleware}/middleware.ts
  60. +4 −0 examples/nextjs-middleware/next.config.mjs
  61. +27 −0 examples/nextjs-middleware/package.json
  62. +8 −0 examples/nextjs-middleware/postcss.config.mjs
  63. +1 −0 examples/nextjs-middleware/public/next.svg
  64. +1 −0 examples/nextjs-middleware/public/vercel.svg
  65. +20 −0 examples/nextjs-middleware/tailwind.config.ts
  66. +26 −0 examples/nextjs-middleware/tsconfig.json
  67. +3 −0 examples/nextjs/.eslintrc.json
  68. +36 −0 examples/nextjs/.gitignore
  69. +0 −21 examples/nextjs/LICENSE
  70. +41 −41 examples/nextjs/README.md
  71. +39 −0 examples/nextjs/app/api/route.ts
  72. BIN examples/nextjs/app/favicon.ico
  73. +33 −0 examples/nextjs/app/globals.css
  74. +22 −0 examples/nextjs/app/layout.tsx
  75. +50 −0 examples/nextjs/app/page.tsx
  76. BIN examples/nextjs/bun.lockb
  77. +26 −0 examples/nextjs/ci.test.ts
  78. +0 −67 examples/nextjs/components/Breadcrumb.tsx
  79. +0 −18 examples/nextjs/components/Header.tsx
  80. +0 −9 examples/nextjs/components/ReadBlogPost.tsx
  81. +0 −27 examples/nextjs/components/StarButton.tsx
  82. +4 −0 examples/nextjs/next.config.mjs
  83. +23 −17 examples/nextjs/package.json
  84. +0 −47 examples/nextjs/pages/_app.tsx
  85. +0 −6 examples/nextjs/pages/api/blocked.ts
  86. +0 −5 examples/nextjs/pages/api/hello.ts
  87. +33 −0 examples/nextjs/pages/api/pages-test.ts
  88. +0 −62 examples/nextjs/pages/index.tsx
  89. +8 −0 examples/nextjs/postcss.config.mjs
  90. BIN examples/nextjs/public/favicon.ico
  91. +0 −11 examples/nextjs/public/github.svg
  92. +1 −0 examples/nextjs/public/next.svg
  93. +0 −27 examples/nextjs/public/upstash.svg
  94. +1 −0 examples/nextjs/public/vercel.svg
  95. +0 −76 examples/nextjs/styles/globals.css
  96. +0 −19 examples/nextjs/tailwind.config.js
  97. +20 −0 examples/nextjs/tailwind.config.ts
  98. +10 −5 examples/nextjs/tsconfig.json
  99. +0 −37 examples/nextjs13/README.md
  100. +0 −107 examples/nextjs13/app/globals.css
  101. +0 −18 examples/nextjs13/app/layout.tsx
  102. +0 −271 examples/nextjs13/app/page.module.css
  103. +0 −15 examples/nextjs13/app/route.tsx
  104. +0 −8 examples/nextjs13/next.config.js
  105. +0 −22 examples/nextjs13/package.json
  106. +0 −1 examples/nextjs13/public/thirteen.svg
  107. +3 −0 examples/vercel-edge/.eslintrc.json
  108. +36 −0 examples/vercel-edge/.gitignore
  109. +65 −0 examples/vercel-edge/README.md
  110. +34 −0 examples/vercel-edge/app/api/route.ts
  111. BIN examples/vercel-edge/app/favicon.ico
  112. +33 −0 examples/vercel-edge/app/globals.css
  113. +22 −0 examples/vercel-edge/app/layout.tsx
  114. +50 −0 examples/vercel-edge/app/page.tsx
  115. +4 −0 examples/vercel-edge/next.config.mjs
  116. +28 −0 examples/vercel-edge/package.json
  117. +8 −0 examples/vercel-edge/postcss.config.mjs
  118. +1 −0 examples/vercel-edge/public/next.svg
  119. +1 −0 examples/vercel-edge/public/vercel.svg
  120. +20 −0 examples/vercel-edge/tailwind.config.ts
  121. +26 −0 examples/vercel-edge/tsconfig.json
  122. +1 −5 examples/with-vercel-kv/next.config.js
  123. +4 −3 examples/with-vercel-kv/package.json
  124. +13 −8 package.json
  125. +13 −0 prettier.config.js
  126. +16 −6 src/analytics.ts
  127. +4 −4 src/blockUntilReady.test.ts
  128. +10 −6 src/cache.test.ts
  129. +4 −0 src/cache.ts
  130. +176 −0 src/deny-list/deny-list.test.ts
  131. +124 −0 src/deny-list/deny-list.ts
  132. +1 −0 src/deny-list/index.ts
  133. +203 −0 src/deny-list/integration.test.ts
  134. +212 −0 src/deny-list/ip-deny-list.test.ts
  135. +129 −0 src/deny-list/ip-deny-list.ts
  136. +99 −0 src/deny-list/scripts.test.ts
  137. +26 −0 src/deny-list/scripts.ts
  138. +46 −0 src/deny-list/time.test.ts
  139. +20 −0 src/deny-list/time.ts
  140. +6 −6 src/duration.test.ts
  141. +12 −6 src/duration.ts
  142. +19 −5 src/getRemainingTokens.test.ts
  143. +24 −0 src/hash.test.ts
  144. +39 −0 src/hash.ts
  145. +18 −17 src/index.ts
  146. +32 −0 src/lua-scripts/hash.test.ts
  147. +95 −0 src/lua-scripts/hash.ts
  148. +5 −3 src/lua-scripts/single.ts
  149. +102 −69 src/multi.ts
  150. +8 −7 src/ratelimit.test.ts
  151. +184 −58 src/ratelimit.ts
  152. +5 −4 src/resetUsedTokens.test.ts
  153. +129 −53 src/single.ts
  154. +3 −3 src/tools/seed.ts
  155. +52 −14 src/types.ts
33 changes: 0 additions & 33 deletions .github/workflows/stale.yaml

This file was deleted.

225 changes: 225 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -37,3 +37,228 @@ jobs:

- name: Run tests
run: bun run test

cloudflare-workers-local:
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3

- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Build
run: bun run build

- name: Install example
run: bun add @upstash/ratelimit@../..
working-directory: examples/cloudflare-workers

- name: Add environment
run: |
echo '[vars]' >> wrangler.toml
echo "UPSTASH_REDIS_REST_URL = \"$UPSTASH_REDIS_REST_URL\"" >> ./wrangler.toml
echo "UPSTASH_REDIS_REST_TOKEN = \"$UPSTASH_REDIS_REST_TOKEN\"" >> ./wrangler.toml
working-directory: examples/cloudflare-workers

- name: Start example
run: bun dev &
working-directory: examples/cloudflare-workers

- name: Run tests
run: bun test ci.test.ts
working-directory: examples/cloudflare-workers
env:
DEPLOYMENT_URL: http://127.0.0.1:8787

cloudflare-workers-deployed:
concurrency: cloudflare-workers-deployed
needs:
- release
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3
with:
node-version: 18

- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

- name: Install example
run: |
bun add @upstash/ratelimit@${{needs.release.outputs.version}}
npm i -g wrangler
working-directory: examples/cloudflare-workers

- name: Add account ID
run: echo 'account_id = "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}"' >> wrangler.toml
working-directory: examples/cloudflare-workers

- name: Add environment
run: |
echo '[vars]' >> wrangler.toml
echo "UPSTASH_REDIS_REST_URL = \"$UPSTASH_REDIS_REST_URL\"" >> ./wrangler.toml
echo "UPSTASH_REDIS_REST_TOKEN = \"$UPSTASH_REDIS_REST_TOKEN\"" >> ./wrangler.toml
working-directory: examples/cloudflare-workers

- name: Deploy
run: wrangler publish
working-directory: examples/cloudflare-workers
env:
CLOUDFLARE_API_TOKEN: ${{secrets.CLOUDFLARE_API_TOKEN}}

- name: Test
run: bun test examples/cloudflare-workers/ci.test.ts
env:
DEPLOYMENT_URL: https://upstash-ratelimit.upsdev.workers.dev

nextjs-local:
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v3
- name: Setup nodejs
uses: actions/setup-node@v3

- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

- name: Install Dependencies
run: bun install

- name: Build
run: bun run build

- name: Install example
run: bun add @upstash/ratelimit@../..
working-directory: examples/nextjs

- name: Build example
run: bun run build
working-directory: examples/nextjs

- name: Run example
run: npm run start &
working-directory: examples/nextjs

- name: Test
run: bun test ci.test.ts
working-directory: examples/nextjs
env:
DEPLOYMENT_URL: http://localhost:3000


nextjs-deployed:
concurrency: nextjs-deployed
runs-on: ubuntu-latest
needs:
- release
steps:
- name: Setup repo
uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20

- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

- name: Install Vercel CLI
run: npm install --global vercel@latest

- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: "prj_NSOSq2ZawugKhtZGb3ViHX4b56hx"
working-directory: examples/nextjs

- name: Install @upstash/ratelimit canary version
run: npm install @upstash/ratelimit@${{needs.release.outputs.version}}
working-directory: examples/nextjs

- name: Build Project
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: "prj_NSOSq2ZawugKhtZGb3ViHX4b56hx"
working-directory: examples/nextjs

- name: Deploy to Vercel
run: |
DEPLOYMENT_URL=$(vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} \
--env UPSTASH_REDIS_REST_URL=${{ secrets.UPSTASH_REDIS_REST_URL }} \
--env UPSTASH_REDIS_REST_TOKEN=${{ secrets.UPSTASH_REDIS_REST_TOKEN }})
echo "DEPLOYMENT_URL=${DEPLOYMENT_URL}" >> $GITHUB_ENV
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: "prj_NSOSq2ZawugKhtZGb3ViHX4b56hx"
working-directory: examples/nextjs

- name: Test
run: bun test ci.test.ts
working-directory: examples/nextjs

release:
name: Release
concurrency: release
needs:
- cloudflare-workers-local
- nextjs-local

runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Checkout Repo
uses: actions/checkout@v3

- name: Get version
id: version
run: echo "::set-output name=version::v0.0.0-ci.${GITHUB_SHA}-$(date +%Y%m%d%H%M%S)"

- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 18

- name: Set package version
run: echo $(jq --arg v "${{ steps.version.outputs.version }}" '(.version) = $v' package.json) > package.json

- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Build
run: bun run build

- name: Add npm token
run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc

- name: Publish release candidate
run: npm publish --access public --tag=ci

- name: Sleep
run: sleep 5
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dist
examples
node_modules
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -3,7 +3,8 @@
[![npm (scoped)](https://img.shields.io/npm/v/@upstash/ratelimit)](https://www.npmjs.com/package/@upstash/ratelimit)
[![Tests](https://github.com/upstash/ratelimit/actions/workflows/tests.yaml/badge.svg)](https://github.com/upstash/ratelimit/actions/workflows/tests.yaml)

> [!NOTE] > **This project is in GA Stage.**
> [!NOTE]
> **This project is in GA Stage.**
> The Upstash Professional Support fully covers this project. It receives regular updates, and bug fixes. The Upstash team is committed to maintaining and improving its functionality.
It is the only connectionless (HTTP based) rate limiting library and designed
@@ -75,7 +76,7 @@ For more information on getting started, you can refer to [our documentation](ht

## Documentation

See [the documentation](https://upstash.com/docs/oss/sdks/ts/ratelimit/overview) for more information details about this package.
See [the documentation](https://upstash.com/docs/redis/sdks/ratelimit-ts/overview) for more information details about this package.

## Contributing

37 changes: 0 additions & 37 deletions biome.json

This file was deleted.

Binary file modified bun.lockb
Binary file not shown.
Loading