{"_id":"@adwait12345/telemetry-next","_rev":"6-b0a5b31db8ef49721543d094c805b50a","name":"@adwait12345/telemetry-next","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@adwait12345/telemetry-next","version":"0.1.0","_id":"@adwait12345/telemetry-next@0.1.0","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"dist":{"shasum":"4242570ee5ef69eb74e8edcab5c21268208212f5","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.0.tgz","fileCount":7,"integrity":"sha512-ds1tLabg5dB3ScgTM8OEEymp0E5fPkIE05Vp2sxyQoWaBRKUZUdpe2EapMUP/NjjXyvZ2DTXh/nGogdDz2dNbg==","signatures":[{"sig":"MEUCIQCBLnIcYDB3mBObPF14/g5dPnK4q3W/HhT2QW8OD1YIdQIgE18rbF0/6RbSCjHilK6wwdS9ek4FTJmvYuFYXr3J9Mo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10010},"main":"./dist/index.js","_from":"file:adwait12345-telemetry-next-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"_resolved":"/private/var/folders/n5/qzpv7qs52kz9rd1ks63nybvc0000gn/T/d6d1d7b4d343841074d5836693261e4f/adwait12345-telemetry-next-0.1.0.tgz","_integrity":"sha512-ds1tLabg5dB3ScgTM8OEEymp0E5fPkIE05Vp2sxyQoWaBRKUZUdpe2EapMUP/NjjXyvZ2DTXh/nGogdDz2dNbg==","_npmVersion":"10.9.3","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@adwait12345/telemetry-core":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry-next_0.1.0_1772737488284_0.641005513778846","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adwait12345/telemetry-next","version":"0.1.1","_id":"@adwait12345/telemetry-next@0.1.1","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"dist":{"shasum":"8fc5b1e48d9d9fc96a5483360f0634cc18ffba22","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.1.tgz","fileCount":7,"integrity":"sha512-8HymSuzPW0x5zE2mtLykIuMkbwG5tYjusB3oBqGtsfckCPwACw+yTr6OyeybtTQI6ZFBRtiA9A44AulcY9iXeA==","signatures":[{"sig":"MEUCIQDaku0pRSbvcvZjRCB1PHYv+6/VGaQNq+Os2WXAyftWdAIgQ6VXairc8n8kf8y7xEvCfDn/NuaOS/SBi3hoN2cY6RE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10632},"main":"./dist/index.js","_from":"file:adwait12345-telemetry-next-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"_resolved":"/private/var/folders/n5/qzpv7qs52kz9rd1ks63nybvc0000gn/T/554e85391be07373fce774507e7a1084/adwait12345-telemetry-next-0.1.1.tgz","_integrity":"sha512-8HymSuzPW0x5zE2mtLykIuMkbwG5tYjusB3oBqGtsfckCPwACw+yTr6OyeybtTQI6ZFBRtiA9A44AulcY9iXeA==","_npmVersion":"10.9.3","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@adwait12345/telemetry-core":"0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry-next_0.1.1_1772789466129_0.3665644515456328","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adwait12345/telemetry-next","version":"0.1.2","_id":"@adwait12345/telemetry-next@0.1.2","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"dist":{"shasum":"2aad0faaf13cf617e63738126927b7b3acf20576","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.2.tgz","fileCount":7,"integrity":"sha512-rYFvD0ecjk8Ghk95/YMJKOsIBmArL0w86X5acsVvDNvkN5CrTRK7WFWERlXAkSdzoQneR4UAdZxq1Wl2dReJNQ==","signatures":[{"sig":"MEUCIH5veWdjDlov4YlwTNMfAMLmz1BJXV/4VmoBI65w5K9aAiEAjr+dwrpMjGneqOpWxWW5XGSUSBg65N80AiPBf6NV7Lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10634},"main":"./dist/index.js","_from":"file:adwait12345-telemetry-next-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"_resolved":"/private/var/folders/n5/qzpv7qs52kz9rd1ks63nybvc0000gn/T/610d3d07e0f81d899c5088436760aa16/adwait12345-telemetry-next-0.1.2.tgz","_integrity":"sha512-rYFvD0ecjk8Ghk95/YMJKOsIBmArL0w86X5acsVvDNvkN5CrTRK7WFWERlXAkSdzoQneR4UAdZxq1Wl2dReJNQ==","_npmVersion":"10.9.3","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@adwait12345/telemetry-core":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry-next_0.1.2_1772789713261_0.7920566383446543","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@adwait12345/telemetry-next","version":"0.1.3","_id":"@adwait12345/telemetry-next@0.1.3","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"dist":{"shasum":"8781d48f2b87a7f191e9d1022759f1561d0e43d0","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.3.tgz","fileCount":6,"integrity":"sha512-pSJo85AfcYeONjaOCXbjzcY+s30cPtpJSVN5eoGgOlP7zpyeLgPJg0lxb9thAWlnOh9d92l7CDiLujs9I4H85A==","signatures":[{"sig":"MEUCIFy/mR8WkVqdd/RMj0CrNiwQFV2OAZjKaC4hz2X7MsApAiEAkJYBzWwUy4L198CF2nt1+A22wxl00ixdBkbqAMPuR6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11742},"main":"./dist/index.js","_from":"file:adwait12345-telemetry-next-0.1.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"_resolved":"/private/var/folders/n5/qzpv7qs52kz9rd1ks63nybvc0000gn/T/2473ef5304c4ed22cbb1d0f51cfe260b/adwait12345-telemetry-next-0.1.3.tgz","_integrity":"sha512-pSJo85AfcYeONjaOCXbjzcY+s30cPtpJSVN5eoGgOlP7zpyeLgPJg0lxb9thAWlnOh9d92l7CDiLujs9I4H85A==","_npmVersion":"10.9.3","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@adwait12345/telemetry-core":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry-next_0.1.3_1772827788988_0.23749296000706632","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@adwait12345/telemetry-next","version":"0.1.4","_id":"@adwait12345/telemetry-next@0.1.4","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"dist":{"shasum":"d6ad56248e8a7620082ac1cf93d9e14da6e27449","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.4.tgz","fileCount":6,"integrity":"sha512-k2zzn20el4sStPLmwQhbAjqvig5LUV9ZFlJJyBSyjtiJHydp5kWp/pZPE+DEL44ez+DFTKTLMWlmt4I0JB4NyA==","signatures":[{"sig":"MEQCICLKvRAx5Z7qUIYYBexOUdFFO8MsZInn0UaFl7ECqRUeAiBVJHB4rx9VZF1+f1+JIsa2UY0HYLjHQaFQ3or9TKbacw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11716},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"602eb8a9300311669ba6cd7653dbc4ff3aa662fe","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"tsup src/index.ts --format esm,cjs --dts --clean","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"_npmVersion":"10.9.3","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@adwait12345/telemetry-core":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry-next_0.1.4_1772885590298_0.6354154895706068","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@adwait12345/telemetry-next","version":"0.1.5","description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","dev":"tsup src/index.ts --format esm,cjs --dts --watch","typecheck":"tsc --noEmit","clean":"rm -rf dist"},"dependencies":{"@adwait12345/telemetry-core":"^0.1.5"},"devDependencies":{"next":"^14.0.0","tsup":"^8.0.0","typescript":"^5.4.0"},"peerDependencies":{"next":">=13.0.0"},"_id":"@adwait12345/telemetry-next@0.1.5","gitHead":"602eb8a9300311669ba6cd7653dbc4ff3aa662fe","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-H6u32QOIYHDdMJc4IVm4ZBRyee62t37Y8Uhq2bnfmn67UDbPQkQuppV5qub8ZVZmSAYEB7ZVQc8RF3py+Ppltw==","shasum":"b12ef136fd7a0a4b8a3e8992c2ea2dc4d2a0b8cd","tarball":"https://registry.npmjs.org/@adwait12345/telemetry-next/-/telemetry-next-0.1.5.tgz","fileCount":6,"unpackedSize":11741,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDSF+cglKo+yMJ+uMbsnEA3K/9/kvTXXRZYGHbfI2o/UwIhAK6bzbylsV4NOYIZIoTS1qDQrwY+AKfZCP4BAjpK5qFN"}]},"_npmUser":{"name":"adwait12345","email":"advtbokde@gmail.com"},"directories":{},"maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/telemetry-next_0.1.5_1773139586509_0.8110623496915803"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T19:04:48.204Z","modified":"2026-03-10T10:46:26.797Z","0.1.0":"2026-03-05T19:04:48.443Z","0.1.1":"2026-03-06T09:31:06.332Z","0.1.2":"2026-03-06T09:35:13.382Z","0.1.3":"2026-03-06T20:09:49.165Z","0.1.4":"2026-03-07T12:13:10.457Z","0.1.5":"2026-03-10T10:46:26.666Z"},"description":"Next.js middleware for Telemetry SDK - track AI bots and crawlers","maintainers":[{"name":"adwait12345","email":"advtbokde@gmail.com"}],"readme":"# `@adwait12345/telemetry-next`\n\nNext.js middleware adapter for the Telemetry SDK. Detects bots and crawlers on every server-side request and sends tracking payloads to the Telemetry API — without slowing down your users.\n\n---\n\n## Requirements\n\n- Next.js **13.0.0 or later** (App Router or Pages Router)\n- A Telemetry account with a **Project ID** and **Server Secret**\n\n---\n\n## Installation\n\n```bash\nnpm install @adwait12345/telemetry-next @adwait12345/telemetry-core\n# or\npnpm add @adwait12345/telemetry-next @adwait12345/telemetry-core\n```\n\n---\n\n## Setup\n\n### 1. Create `middleware.ts` at the root of your project\n\n```typescript\n// middleware.ts  (next to your app/ or pages/ folder)\nimport { telemetryMiddleware } from \"@adwait12345/telemetry-next\";\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\n\nconst telemetry = telemetryMiddleware({\n  projectId: \"your-project-id\",\n  apiUrl: \"https://telemetry-uqd3.onrender.com\",\n  serverSecret: \"sk_...\",\n  debug: false,\n});\n\nexport async function middleware(req: NextRequest) {\n  await telemetry(req);\n  return NextResponse.next();\n}\n\nexport const config = {\n  matcher: [\n    // Match all routes except Next.js internals and static files\n    \"/((?!_next/static|_next/image|favicon.ico).*)\",\n  ],\n};\n```\n\n### 2. Use environment variables (recommended)\n\n```typescript\nconst telemetry = telemetryMiddleware({\n  projectId: process.env.TELEMETRY_PROJECT_ID!,\n  apiUrl: process.env.TELEMETRY_API_URL,\n  serverSecret: process.env.TELEMETRY_SERVER_SECRET!,\n});\n```\n\n```bash\n# .env.local\nTELEMETRY_PROJECT_ID=your-project-id\nTELEMETRY_API_URL=https://telemetry-uqd3.onrender.com\nTELEMETRY_SERVER_SECRET=sk_...\n```\n\n---\n\n## How it works\n\n1. **Every request** that passes the `matcher` runs through the middleware\n2. The request is normalized (UA, IP, headers) and passed to `detectBot()`\n3. If a bot is detected (or `trackAll: true`), a payload is sent to the Telemetry API\n4. On **Vercel Edge / Cloudflare Workers**, `waitUntil` is used so the send happens after the response is sent — zero latency impact\n5. On other runtimes, the send is `await`ed before `NextResponse.next()` is returned\n\n---\n\n## Configuration options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `projectId` | `string` | **required** | Your Telemetry project ID |\n| `serverSecret` | `string` | **required** | Your server secret key for API auth |\n| `apiUrl` | `string` | hosted service | Override the API endpoint |\n| `trackAll` | `boolean` | `false` | Track all requests, not just bots |\n| `trackSearchBots` | `boolean` | `true` | Include Googlebot, Bingbot etc. |\n| `ignorePaths` | `(string \\| RegExp)[]` | — | Paths to skip entirely |\n| `customBots` | `Array<{name, pattern, category?}>` | — | Add custom bot definitions |\n| `debug` | `boolean` | `false` | Log detection results to the console |\n| `authorizationHeader` | `string` | — | Fully custom `Authorization` header value |\n| `headers` | `Record<string, string>` | — | Extra headers on every telemetry request |\n\n---\n\n## Examples\n\n### Skip API routes and health checks\n\n```typescript\ntelemetryMiddleware({\n  projectId: \"...\",\n  serverSecret: \"sk_...\",\n  ignorePaths: [\"/health\", \"/ping\", /^\\/api\\//],\n});\n```\n\n### Track all visitors (not just bots)\n\n```typescript\ntelemetryMiddleware({\n  projectId: \"...\",\n  serverSecret: \"sk_...\",\n  trackAll: true,\n});\n```\n\n### Add custom bot definitions\n\n```typescript\ntelemetryMiddleware({\n  projectId: \"...\",\n  serverSecret: \"sk_...\",\n  customBots: [\n    { name: \"MyInternalCrawler\", pattern: /my-crawler\\/\\d+/i, category: \"scraper\" },\n  ],\n});\n```\n\n---\n\n## What gets tracked\n\nEach bot detection event sends:\n\n| Field | Description |\n|-------|-------------|\n| `projectId` | Your project ID |\n| `path` | Request path |\n| `method` | HTTP method |\n| `userAgent` | Full user-agent string |\n| `ip` | Client IP (from `x-forwarded-for`) |\n| `isBot` | `true` / `false` |\n| `botName` | Named bot e.g. `\"GPTBot\"`, or `null` |\n| `botCategory` | e.g. `\"ai-crawler\"`, `\"search\"`, `\"scraper\"` |\n| `confidence` | `\"certain\"` / `\"high\"` / `\"medium\"` / `\"low\"` |\n| `detectionMethod` | `\"ua-match\"` / `\"header-anomaly\"` / `\"automation-header\"` / etc. |\n| `referrer` | Referrer header |\n| `timestamp` | ISO 8601 UTC |\n","readmeFilename":"README.md"}