From 09408ff9477053dc1f3519d032bc745545dcb373 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:29:19 +0300
Subject: [PATCH 01/17] ci(tests): add cf local example

---
 .github/workflows/tests.yaml             |  42 ++++++
 examples/cloudflare-workers/.gitignore   | 176 +++++++++++++++++++++++
 examples/cloudflare-workers/bun.lockb    | Bin 0 -> 53637 bytes
 examples/cloudflare-workers/ci.test.ts   |  16 +++
 examples/cloudflare-workers/index.ts     |   1 +
 examples/cloudflare-workers/package.json |   8 +-
 6 files changed, 241 insertions(+), 2 deletions(-)
 create mode 100644 examples/cloudflare-workers/.gitignore
 create mode 100755 examples/cloudflare-workers/bun.lockb
 create mode 100644 examples/cloudflare-workers/ci.test.ts
 create mode 100644 examples/cloudflare-workers/index.ts

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index a68c895..341ea88 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -37,3 +37,45 @@ jobs:
 
       - name: Run tests
         run: bun run test
+
+  cloudflare-workers-local:
+    needs:
+      - test
+    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
diff --git a/examples/cloudflare-workers/.gitignore b/examples/cloudflare-workers/.gitignore
new file mode 100644
index 0000000..ab5afb2
--- /dev/null
+++ b/examples/cloudflare-workers/.gitignore
@@ -0,0 +1,176 @@
+# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
+
+# Logs
+
+logs
+_.log
+npm-debug.log_
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+
+report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
+
+# Runtime data
+
+pids
+_.pid
+_.seed
+\*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+
+lib-cov
+
+# Coverage directory used by tools like istanbul
+
+coverage
+\*.lcov
+
+# nyc test coverage
+
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+
+bower_components
+
+# node-waf configuration
+
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+
+build/Release
+
+# Dependency directories
+
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+
+web_modules/
+
+# TypeScript cache
+
+\*.tsbuildinfo
+
+# Optional npm cache directory
+
+.npm
+
+# Optional eslint cache
+
+.eslintcache
+
+# Optional stylelint cache
+
+.stylelintcache
+
+# Microbundle cache
+
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+
+.node_repl_history
+
+# Output of 'npm pack'
+
+\*.tgz
+
+# Yarn Integrity file
+
+.yarn-integrity
+
+# dotenv environment variable files
+
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+
+.cache
+.parcel-cache
+
+# Next.js build output
+
+.next
+out
+
+# Nuxt.js build / generate output
+
+.nuxt
+dist
+
+# Gatsby files
+
+.cache/
+
+# Comment in the public line in if your project uses Gatsby and not Next.js
+
+# https://nextjs.org/blog/next-9-1#public-directory-support
+
+# public
+
+# vuepress build output
+
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+
+.temp
+.cache
+
+# Docusaurus cache and generated files
+
+.docusaurus
+
+# Serverless directories
+
+.serverless/
+
+# FuseBox cache
+
+.fusebox/
+
+# DynamoDB Local files
+
+.dynamodb/
+
+# TernJS port file
+
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+
+.vscode-test
+
+# yarn v2
+
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.\*
+
+# IntelliJ based IDEs
+.idea
+
+# Finder (MacOS) folder config
+.DS_Store
+
diff --git a/examples/cloudflare-workers/bun.lockb b/examples/cloudflare-workers/bun.lockb
new file mode 100755
index 0000000000000000000000000000000000000000..983c9a85c13d38226563da2d7132b13f2ca3db84
GIT binary patch
literal 53637
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

literal 0
HcmV?d00001

diff --git a/examples/cloudflare-workers/ci.test.ts b/examples/cloudflare-workers/ci.test.ts
new file mode 100644
index 0000000..bf8538b
--- /dev/null
+++ b/examples/cloudflare-workers/ci.test.ts
@@ -0,0 +1,16 @@
+import { test, expect, } from "bun:test";
+
+
+const deploymentURL = process.env.DEPLOYMENT_URL ?? "http://127.0.0.1:8787";
+if (!deploymentURL) {
+	throw new Error("DEPLOYMENT_URL not set");
+}
+
+test("the server is running", async () => {
+	const res = await fetch(`${deploymentURL}/limit`);
+
+	if (res.status !== 200) {
+		console.log(await res.text());
+	}
+	expect(res.status).toEqual(200);
+}, { timeout: 10000 });
\ No newline at end of file
diff --git a/examples/cloudflare-workers/index.ts b/examples/cloudflare-workers/index.ts
new file mode 100644
index 0000000..f67b2c6
--- /dev/null
+++ b/examples/cloudflare-workers/index.ts
@@ -0,0 +1 @@
+console.log("Hello via Bun!");
\ No newline at end of file
diff --git a/examples/cloudflare-workers/package.json b/examples/cloudflare-workers/package.json
index 4a905e9..3948d24 100644
--- a/examples/cloudflare-workers/package.json
+++ b/examples/cloudflare-workers/package.json
@@ -3,6 +3,8 @@
   "version": "0.0.0",
   "devDependencies": {
     "@cloudflare/workers-types": "^4.20230419.0",
+    "@types/bun": "^1.1.10",
+    "bun-types": "^1.1.29",
     "typescript": "^5.0.4",
     "wrangler": "^3.49.0"
   },
@@ -14,5 +16,7 @@
   "dependencies": {
     "@upstash/ratelimit": "^1.0.3",
     "@upstash/redis": "^1.20.6"
-  }
-}
+  },
+  "module": "index.ts",
+  "type": "module"
+}
\ No newline at end of file

From 9023d20a0c745c0567a0a185e7aafcab05360767 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:32:43 +0300
Subject: [PATCH 02/17] ci(tests.yaml): add release step

---
 .github/workflows/tests.yaml | 49 ++++++++++++++++++++++++++++++++++--
 1 file changed, 47 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 341ea88..ace3442 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -35,8 +35,8 @@ jobs:
       - name: Install dependencies
         run: bun install
 
-      - name: Run tests
-        run: bun run test
+      # - name: Run tests
+      #   run: bun run test
 
   cloudflare-workers-local:
     needs:
@@ -79,3 +79,48 @@ jobs:
         working-directory: examples/cloudflare-workers
         env:
           DEPLOYMENT_URL: http://127.0.0.1:8787
+  
+  release:
+    name: Release
+    concurrency: release
+    needs:
+      - cloudflare-workers-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=canary
+
+      - name: Sleep
+        run: sleep 5

From b1a4f531dc6c87485a172d0adcd6829da4e79292 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:36:26 +0300
Subject: [PATCH 03/17] ci(tests.yaml): add deploy cf workers step

---
 .github/workflows/tests.yaml              | 46 +++++++++++++++++++++++
 examples/cloudflare-workers/wrangler.toml |  2 +-
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index ace3442..aa912e2 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -79,6 +79,52 @@ jobs:
         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
   
   release:
     name: Release
diff --git a/examples/cloudflare-workers/wrangler.toml b/examples/cloudflare-workers/wrangler.toml
index 691c793..a93c41c 100644
--- a/examples/cloudflare-workers/wrangler.toml
+++ b/examples/cloudflare-workers/wrangler.toml
@@ -1,3 +1,3 @@
-name = "cloudflare-workers"
+name = "upstash-ratelimit"
 main = "src/index.ts"
 compatibility_date = "2022-08-11"

From 20ad940465e54e85d76519efb749c93b3497e93c Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:42:10 +0300
Subject: [PATCH 04/17] ci(tests.yaml): add local nextjs project test

---
 .github/workflows/tests.yaml |  39 +++++++++++++++++++++++++++++++++++
 examples/nextjs/bun.lockb    | Bin 0 -> 150842 bytes
 examples/nextjs/ci.test.ts   |  15 ++++++++++++++
 examples/nextjs/index.ts     |   1 +
 examples/nextjs/package.json |   8 +++++--
 5 files changed, 61 insertions(+), 2 deletions(-)
 create mode 100755 examples/nextjs/bun.lockb
 create mode 100644 examples/nextjs/ci.test.ts
 create mode 100644 examples/nextjs/index.ts

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index aa912e2..1bd4e04 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -125,6 +125,45 @@ jobs:
         run: bun test examples/cloudflare-workers/ci.test.ts
         env:
           DEPLOYMENT_URL: https://upstash-ratelimit.upsdev.workers.dev
+
+  nextjs-local:
+    needs:
+      - test
+    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
   
   release:
     name: Release
diff --git a/examples/nextjs/bun.lockb b/examples/nextjs/bun.lockb
new file mode 100755
index 0000000000000000000000000000000000000000..1062fa39d6c8da71b4f60856e759efe3c1570899
GIT binary patch
literal 150842
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
absscoO01SF#df71HR3w;`O^On|M@?1SZ_Q4

literal 0
HcmV?d00001

diff --git a/examples/nextjs/ci.test.ts b/examples/nextjs/ci.test.ts
new file mode 100644
index 0000000..dc346c5
--- /dev/null
+++ b/examples/nextjs/ci.test.ts
@@ -0,0 +1,15 @@
+import { test, expect, } from "bun:test";
+
+const deploymentURL = process.env.DEPLOYMENT_URL ?? "http://127.0.0.1:3000";
+if (!deploymentURL) {
+	throw new Error("DEPLOYMENT_URL not set");
+}
+
+test("the server is running", async () => {
+	const res = await fetch(`${deploymentURL}/api`);
+
+	if (res.status !== 200) {
+		console.log(await res.text());
+	}
+	expect(res.status).toEqual(200);
+}, { timeout: 10000 });
\ No newline at end of file
diff --git a/examples/nextjs/index.ts b/examples/nextjs/index.ts
new file mode 100644
index 0000000..f67b2c6
--- /dev/null
+++ b/examples/nextjs/index.ts
@@ -0,0 +1 @@
+console.log("Hello via Bun!");
\ No newline at end of file
diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json
index 1b48e7c..8f31d78 100644
--- a/examples/nextjs/package.json
+++ b/examples/nextjs/package.json
@@ -16,13 +16,17 @@
     "react-dom": "^18"
   },
   "devDependencies": {
+    "@types/bun": "^1.1.10",
     "@types/node": "^20",
     "@types/react": "^18",
     "@types/react-dom": "^18",
+    "bun-types": "latest",
     "eslint": "^8",
     "eslint-config-next": "14.2.3",
     "postcss": "^8",
     "tailwindcss": "^3.4.1",
     "typescript": "^5"
-  }
-}
+  },
+  "module": "index.ts",
+  "type": "module"
+}
\ No newline at end of file

From bfe34c4094167239a70636183bbd2b31d03b6ec2 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:42:48 +0300
Subject: [PATCH 05/17] ci(tests.yaml): update release step needs

---
 .github/workflows/tests.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 1bd4e04..c6b0f3e 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -170,6 +170,7 @@ jobs:
     concurrency: release
     needs:
       - cloudflare-workers-local
+      - nextjs-local
 
     runs-on: ubuntu-latest
     outputs:

From 197f03bced50bdf65e6a302a40d02c790f7046b5 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:46:58 +0300
Subject: [PATCH 06/17] fix: next.js example types deps

---
 examples/nextjs/app/api/route.ts |   4 ++--
 examples/nextjs/bun.lockb        | Bin 150842 -> 150874 bytes
 examples/nextjs/package.json     |   1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/examples/nextjs/app/api/route.ts b/examples/nextjs/app/api/route.ts
index 163ddab..f768f01 100644
--- a/examples/nextjs/app/api/route.ts
+++ b/examples/nextjs/app/api/route.ts
@@ -20,13 +20,13 @@ export async function GET(request: Request) {
   const { success, limit, remaining, pending } = await ratelimit.limit(identifier);
   const response = {
     success: success,
-    limit: limit, 
+    limit: limit,
     remaining: remaining
   }
 
   // pending is a promise for handling the analytics submission
   waitUntil(pending)
-    
+
   if (!success) {
     return new Response(JSON.stringify(response), { status: 429 });
   }
diff --git a/examples/nextjs/bun.lockb b/examples/nextjs/bun.lockb
index 1062fa39d6c8da71b4f60856e759efe3c1570899..ba717e6fbe1643739ce795465256a92d66660a67 100755
GIT binary patch
delta 8836
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

delta 8699
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
NxS3F~@r2o$^B;Rlsb2s9

diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json
index 8f31d78..c9614d2 100644
--- a/examples/nextjs/package.json
+++ b/examples/nextjs/package.json
@@ -10,6 +10,7 @@
   },
   "dependencies": {
     "@upstash/ratelimit": "^1.1.3",
+    "@upstash/redis": "^1.34.2",
     "@vercel/functions": "^1.0.2",
     "next": "14.2.3",
     "react": "^18",

From eefa3f95d37c33c53b7a987fe946343675773563 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:52:56 +0300
Subject: [PATCH 07/17] fix: next.js example types deps

---
 examples/nextjs/app/api/route.ts | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/examples/nextjs/app/api/route.ts b/examples/nextjs/app/api/route.ts
index f768f01..58b108e 100644
--- a/examples/nextjs/app/api/route.ts
+++ b/examples/nextjs/app/api/route.ts
@@ -6,9 +6,14 @@ import { waitUntil } from '@vercel/functions';
 import { Ratelimit } from "@upstash/ratelimit";
 import { Redis } from "@upstash/redis";
 
+const redis = new Redis({
+  url: process.env.UPSTASH_REDIS_REST_URL!,
+  token: process.env.UPSTASH_REDIS_REST_TOKEN!,
+})
+
 // Create a new ratelimiter
 const ratelimit = new Ratelimit({
-  redis: Redis.fromEnv(),
+  redis,
   limiter: Ratelimit.slidingWindow(10, "10 s"),
   prefix: "@upstash/ratelimit",
   analytics: true

From e674c630d9c1458b5369ef9f9e38cbbb7011003a Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 20:55:58 +0300
Subject: [PATCH 08/17] fix

---
 examples/nextjs/app/api/route.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/examples/nextjs/app/api/route.ts b/examples/nextjs/app/api/route.ts
index 58b108e..51d6eb9 100644
--- a/examples/nextjs/app/api/route.ts
+++ b/examples/nextjs/app/api/route.ts
@@ -13,6 +13,7 @@ const redis = new Redis({
 
 // Create a new ratelimiter
 const ratelimit = new Ratelimit({
+  // @ts-ignore
   redis,
   limiter: Ratelimit.slidingWindow(10, "10 s"),
   prefix: "@upstash/ratelimit",

From a9e79f3a30b36075db22b07ca4b001047d0cc391 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 21:01:59 +0300
Subject: [PATCH 09/17] ci:(tests.yaml): add next.js deployed example

---
 .github/workflows/tests.yaml | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index c6b0f3e..453896c 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -164,6 +164,67 @@ jobs:
         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 dependencies
+        run: bun install
+        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"
+          UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
+          UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
+        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
+        env:
+          UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
+          UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
   
   release:
     name: Release

From dbe4ed901d66238b5041c67094ed1b72fd0cabec Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 21:06:30 +0300
Subject: [PATCH 10/17] fix

---
 examples/nextjs/ci.test.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/examples/nextjs/ci.test.ts b/examples/nextjs/ci.test.ts
index dc346c5..5f26bb9 100644
--- a/examples/nextjs/ci.test.ts
+++ b/examples/nextjs/ci.test.ts
@@ -6,7 +6,8 @@ if (!deploymentURL) {
 }
 
 test("the server is running", async () => {
-	const res = await fetch(`${deploymentURL}/api`);
+	console.log(deploymentURL);
+	const res = await fetch(`${deploymentURL}/limit`);
 
 	if (res.status !== 200) {
 		console.log(await res.text());

From ed27ec69c8e2735d18eb2fe059aef3d0efdecb17 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 21:08:34 +0300
Subject: [PATCH 11/17] fix

---
 examples/nextjs/ci.test.ts | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/nextjs/ci.test.ts b/examples/nextjs/ci.test.ts
index 5f26bb9..0563a62 100644
--- a/examples/nextjs/ci.test.ts
+++ b/examples/nextjs/ci.test.ts
@@ -6,8 +6,8 @@ if (!deploymentURL) {
 }
 
 test("the server is running", async () => {
-	console.log(deploymentURL);
-	const res = await fetch(`${deploymentURL}/limit`);
+	console.log(`${deploymentURL}/api`);
+	const res = await fetch(`${deploymentURL}/api`);
 
 	if (res.status !== 200) {
 		console.log(await res.text());

From 388e5fd4377e2ab1b4b036423d322b21bf1b1b5f Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Sun, 6 Oct 2024 21:14:22 +0300
Subject: [PATCH 12/17] enable tests

---
 .github/workflows/tests.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 453896c..1465d73 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -35,8 +35,8 @@ jobs:
       - name: Install dependencies
         run: bun install
 
-      # - name: Run tests
-      #   run: bun run test
+      - name: Run tests
+        run: bun run test
 
   cloudflare-workers-local:
     needs:

From 1ea3755fa9187191bae2ec71b1bb41791390e602 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Thu, 10 Oct 2024 13:14:51 +0300
Subject: [PATCH 13/17] test pipeline

---
 .github/workflows/tests.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 1465d73..453896c 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -35,8 +35,8 @@ jobs:
       - name: Install dependencies
         run: bun install
 
-      - name: Run tests
-        run: bun run test
+      # - name: Run tests
+      #   run: bun run test
 
   cloudflare-workers-local:
     needs:

From ff4ad00125a27ed1fca150885dfd6efd8085cd2c Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Thu, 10 Oct 2024 13:16:28 +0300
Subject: [PATCH 14/17] remove redundancy

---
 .github/workflows/tests.yaml             | 2 +-
 examples/cloudflare-workers/index.ts     | 1 -
 examples/cloudflare-workers/package.json | 4 +---
 3 files changed, 2 insertions(+), 5 deletions(-)
 delete mode 100644 examples/cloudflare-workers/index.ts

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 453896c..938ea02 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -267,7 +267,7 @@ jobs:
         run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc
 
       - name: Publish release candidate
-        run: npm publish --access public --tag=canary
+        run: npm publish --access public --tag=ci
 
       - name: Sleep
         run: sleep 5
diff --git a/examples/cloudflare-workers/index.ts b/examples/cloudflare-workers/index.ts
deleted file mode 100644
index f67b2c6..0000000
--- a/examples/cloudflare-workers/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-console.log("Hello via Bun!");
\ No newline at end of file
diff --git a/examples/cloudflare-workers/package.json b/examples/cloudflare-workers/package.json
index 3948d24..24435e0 100644
--- a/examples/cloudflare-workers/package.json
+++ b/examples/cloudflare-workers/package.json
@@ -16,7 +16,5 @@
   "dependencies": {
     "@upstash/ratelimit": "^1.0.3",
     "@upstash/redis": "^1.20.6"
-  },
-  "module": "index.ts",
-  "type": "module"
+  }
 }
\ No newline at end of file

From 31ab84f153f1260dd13d6d753192dfd376fdbace Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Thu, 10 Oct 2024 13:20:23 +0300
Subject: [PATCH 15/17] cleanup env variables

---
 .github/workflows/tests.yaml | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 938ea02..8ffd4d9 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -204,8 +204,6 @@ jobs:
         env:
           VERCEL_ORG_ID: ${{ secrets.VERCEL_TEAM_ID }}
           VERCEL_PROJECT_ID: "prj_NSOSq2ZawugKhtZGb3ViHX4b56hx"
-          UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
-          UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
         working-directory: examples/nextjs
 
       - name: Deploy to Vercel
@@ -222,9 +220,6 @@ jobs:
       - name: Test
         run: bun test ci.test.ts
         working-directory: examples/nextjs
-        env:
-          UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
-          UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
   
   release:
     name: Release

From 6c84d45eaff73eebd24fe15df61d7205a2bf9c3d Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Thu, 10 Oct 2024 13:23:31 +0300
Subject: [PATCH 16/17] re-enable flaky tests

---
 .github/workflows/tests.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 8ffd4d9..af15231 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -35,8 +35,8 @@ jobs:
       - name: Install dependencies
         run: bun install
 
-      # - name: Run tests
-      #   run: bun run test
+      - name: Run tests
+        run: bun run test
 
   cloudflare-workers-local:
     needs:

From 4a5455d6673d75502ddd810afee63fb16b775f60 Mon Sep 17 00:00:00 2001
From: fahreddinozcan <ozcanfahrettinn@gmail.com>
Date: Fri, 11 Oct 2024 10:46:50 +0300
Subject: [PATCH 17/17] fix(nextjs example): remove index.ts

---
 examples/nextjs/index.ts | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 examples/nextjs/index.ts

diff --git a/examples/nextjs/index.ts b/examples/nextjs/index.ts
deleted file mode 100644
index f67b2c6..0000000
--- a/examples/nextjs/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-console.log("Hello via Bun!");
\ No newline at end of file