{"_id":"@d3-inc/d3-edge-vercel-middleware","_rev":"4-c91799136884b4adddc2492d7247f9f0","name":"@d3-inc/d3-edge-vercel-middleware","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@d3-inc/d3-edge-vercel-middleware","version":"0.1.0","license":"Apache-2.0","_id":"@d3-inc/d3-edge-vercel-middleware@0.1.0","maintainers":[{"name":"junaid.faryad","email":"junaid@d3.email"},{"name":"kaid3","email":"kai@d3.email"},{"name":"d3inc","email":"devops@d3.email"},{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},{"name":"renato.atd.3","email":"renato@d3.email"}],"homepage":"https://github.com/d3-inc/d3-edge#readme","bugs":{"url":"https://github.com/d3-inc/d3-edge/issues"},"dist":{"shasum":"94d6a41c8ec182ef70409f8885ad3721288ec718","tarball":"https://registry.npmjs.org/@d3-inc/d3-edge-vercel-middleware/-/d3-edge-vercel-middleware-0.1.0.tgz","fileCount":6,"integrity":"sha512-7uZB4z6aFWpnSaWyVHFc+VN3Fm4xiJfEfN5FIpWK/usFBg01llPwUARmmna6PY1noOlNbKCD3ZiYdvEh4sKKBA==","signatures":[{"sig":"MEQCIBjNBl/6xmUI5x4JJinbuT4W5SGR+qEMT0pNFxuqLoakAiBxBJLMSeiX4LloDvQwPZ97lgWqNq8w2ixziN8jiV2DZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28526},"main":"./dist/index.js","type":"module","_from":"file:d3-inc-d3-edge-vercel-middleware-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"d3inc","email":"devops@d3.email"},"_resolved":"/private/var/folders/bp/gbf6vn4d1hl587kp536wrpbm0000gn/T/d57a5e9fb619b1c10fd61aee6a7ebf1e/d3-inc-d3-edge-vercel-middleware-0.1.0.tgz","_integrity":"sha512-7uZB4z6aFWpnSaWyVHFc+VN3Fm4xiJfEfN5FIpWK/usFBg01llPwUARmmna6PY1noOlNbKCD3ZiYdvEh4sKKBA==","repository":{"url":"git+https://github.com/d3-inc/d3-edge.git","type":"git","directory":"packages/adapters/vercel-middleware"},"_npmVersion":"11.12.1","description":"Vercel Routing Middleware adapter for D3 Edge bot-auth enforcement: extract → policy decision → pass/block, fail-open.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@vercel/functions":"^3.7.6","@d3-inc/d3-edge-core":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/d3-edge-vercel-middleware_0.1.0_1785796764432_0.13823473627356697","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@d3-inc/d3-edge-vercel-middleware","version":"0.2.0","license":"Apache-2.0","_id":"@d3-inc/d3-edge-vercel-middleware@0.2.0","maintainers":[{"name":"junaid.faryad","email":"junaid@d3.email"},{"name":"kaid3","email":"kai@d3.email"},{"name":"d3inc","email":"devops@d3.email"},{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},{"name":"renato.atd.3","email":"renato@d3.email"}],"homepage":"https://github.com/d3-inc/d3-edge#readme","bugs":{"url":"https://github.com/d3-inc/d3-edge/issues"},"dist":{"shasum":"78f0c61165999e704e7412e22f611da91a10794a","tarball":"https://registry.npmjs.org/@d3-inc/d3-edge-vercel-middleware/-/d3-edge-vercel-middleware-0.2.0.tgz","fileCount":6,"integrity":"sha512-OnM+oDs4gJ//jj4MNiCkiIU9sByd6R/gZQaVFJcgO4fzG84G13Ulzrwzcd/oGnuYxZeXQBoESWCBqY+ypeUM1g==","signatures":[{"sig":"MEQCIBc3DSnfRmdTljz6JeM0RcH+T+cUQrzLohiPrGq0zTHfAiBu9LGbZ4xV4CpGbDQH+CBF/0X+rh37f3M65/gIv0to/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31551},"type":"module","exports":{".":{"types":"./src/index.ts","default":"./src/index.ts"}},"gitHead":"f1b6bdd1554449aef0f34dd115df3df0afe7acd6","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"tsup"},"_npmUser":{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},"repository":{"url":"git+https://github.com/d3-inc/d3-edge.git","type":"git","directory":"packages/adapters/vercel-middleware"},"_npmVersion":"11.13.0","description":"Vercel Routing Middleware adapter for D3 Edge bot-auth enforcement: extract → policy decision → pass/block, fail-open.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@vercel/functions":"^3.9.0","@d3-inc/d3-edge-core":"workspace:*"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"catalog:","vitest":"catalog:","typescript":"catalog:","@types/node":"catalog:"},"_npmOperationalInternal":{"tmp":"tmp/d3-edge-vercel-middleware_0.2.0_1789550910168_0.5484106621514537","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@d3-inc/d3-edge-vercel-middleware","version":"0.2.1","license":"Apache-2.0","_id":"@d3-inc/d3-edge-vercel-middleware@0.2.1","maintainers":[{"name":"junaid.faryad","email":"junaid@d3.email"},{"name":"kaid3","email":"kai@d3.email"},{"name":"d3inc","email":"devops@d3.email"},{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},{"name":"renato.atd.3","email":"renato@d3.email"}],"homepage":"https://github.com/d3-inc/d3-edge#readme","bugs":{"url":"https://github.com/d3-inc/d3-edge/issues"},"dist":{"shasum":"90a7d67c2cac60984763aed9e66ff6dee3b39c92","tarball":"https://registry.npmjs.org/@d3-inc/d3-edge-vercel-middleware/-/d3-edge-vercel-middleware-0.2.1.tgz","fileCount":6,"integrity":"sha512-s3ymEtNC35bG49zkVq64rTeBAq6w4R/UXoBRgTpp31ujohTvn1pKva44E7qbvCLnl/MpOQdT+qp10tKIG1Qtkw==","signatures":[{"sig":"MEYCIQClIIBPnMxUxjARlxNbR6jzPpoJ8cHqeR2dSqIhPHGOYgIhAJgSuYq65hEhpteWDjOBIXH4WcFj8e7OWZKIkYt/uz/e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31381},"main":"./dist/index.js","type":"module","_from":"file:d3-inc-d3-edge-vercel-middleware-0.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},"_resolved":"C:\\Users\\YEVHEN~1.AND\\AppData\\Local\\Temp\\cea1235e19017121bbd542e9d8500471\\d3-inc-d3-edge-vercel-middleware-0.2.1.tgz","_integrity":"sha512-s3ymEtNC35bG49zkVq64rTeBAq6w4R/UXoBRgTpp31ujohTvn1pKva44E7qbvCLnl/MpOQdT+qp10tKIG1Qtkw==","repository":{"url":"git+https://github.com/d3-inc/d3-edge.git","type":"git","directory":"packages/adapters/vercel-middleware"},"_npmVersion":"11.13.0","description":"Vercel Routing Middleware adapter for D3 Edge bot-auth enforcement: extract → policy decision → pass/block, fail-open.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@vercel/functions":"^3.9.0","@d3-inc/d3-edge-core":"0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.1.0","typescript":"^6.0.3","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/d3-edge-vercel-middleware_0.2.1_1789551113604_0.3272937821604631","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"_id":"@d3-inc/d3-edge-vercel-middleware@0.2.2","bugs":{"url":"https://github.com/d3-inc/d3-edge/issues"},"dist":{"shasum":"9d9f12a6574251354c1c0719e3d1faa39ce053ca","tarball":"https://registry.npmjs.org/@d3-inc/d3-edge-vercel-middleware/-/d3-edge-vercel-middleware-0.2.2.tgz","fileCount":6,"integrity":"sha512-dWOPJ1UVh9iP/GzD+xxiZssRjEfD0X5oPr8kVZu8zCgJ9wEOmetbsYGJGe4/EiEG7eB+A7wzAxGngsMZRYKz1Q==","signatures":[{"sig":"MEQCID+wdyq5xWbTEvpqkCyOE2FFzZJupSQR/nvXlHmvx0jRAiAfjt3NG+DWGdIzkI+ILYRyZaGQdd+EhsMyA452u7pVDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDqgPPtqIpJZ83//HrVvij30vO8pqKUkFCRiz4Jk2LadwIgA1iY35QCxIZg9vnC6czu9ovUOC4tDrswf1JyXGlyI+A="}],"unpackedSize":31381},"main":"./dist/index.js","name":"@d3-inc/d3-edge-vercel-middleware","type":"module","_from":"file:d3-inc-d3-edge-vercel-middleware-0.2.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.2.2","_npmUser":{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},"homepage":"https://github.com/d3-inc/d3-edge#readme","_resolved":"C:\\Users\\YEVHEN~1.AND\\AppData\\Local\\Temp\\1883fa9865e2a63924674d919fb25392\\d3-inc-d3-edge-vercel-middleware-0.2.2.tgz","_integrity":"sha512-dWOPJ1UVh9iP/GzD+xxiZssRjEfD0X5oPr8kVZu8zCgJ9wEOmetbsYGJGe4/EiEG7eB+A7wzAxGngsMZRYKz1Q==","repository":{"url":"git+https://github.com/d3-inc/d3-edge.git","type":"git","directory":"packages/adapters/vercel-middleware"},"_npmVersion":"11.13.0","description":"Vercel Routing Middleware adapter for D3 Edge bot-auth enforcement: extract → policy decision → pass/block, fail-open.","directories":{},"maintainers":[{"name":"junaid.faryad","email":"junaid@d3.email"},{"name":"kaid3","email":"kai@d3.email"},{"name":"d3inc","email":"devops@d3.email"},{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},{"name":"renato.atd.3","email":"renato@d3.email"}],"_nodeVersion":"26.2.0","dependencies":{"@vercel/functions":"^3.9.0","@d3-inc/d3-edge-core":"0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^4.1.0","typescript":"^6.0.3","@types/node":"^26.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/d3-edge-vercel-middleware_0.2.2_1789992981700_0.44278204853103764"}}},"time":{"created":"2026-08-03T22:39:24.244Z","modified":"2026-09-21T12:16:22.033Z","0.1.0":"2026-08-03T22:39:24.581Z","0.2.0":"2026-09-16T09:28:30.294Z","0.2.1":"2026-09-16T09:31:53.738Z","0.2.2":"2026-09-21T12:16:21.791Z"},"bugs":{"url":"https://github.com/d3-inc/d3-edge/issues"},"license":"Apache-2.0","homepage":"https://github.com/d3-inc/d3-edge#readme","repository":{"url":"git+https://github.com/d3-inc/d3-edge.git","type":"git","directory":"packages/adapters/vercel-middleware"},"description":"Vercel Routing Middleware adapter for D3 Edge bot-auth enforcement: extract → policy decision → pass/block, fail-open.","maintainers":[{"name":"junaid.faryad","email":"junaid@d3.email"},{"name":"kaid3","email":"kai@d3.email"},{"name":"d3inc","email":"devops@d3.email"},{"name":"d3_yevhenii_andrushchak","email":"yevhenii@d3.com"},{"name":"renato.atd.3","email":"renato@d3.email"}],"readme":"# @d3-inc/d3-edge-vercel-middleware\n\nVercel Routing Middleware adapter for [D3 Edge](https://ai.d3.com) bot-auth\nenforcement. On every request it extracts the signature headers, user agent,\nand IP, asks your D3 Edge policy endpoint for a decision, and passes or blocks\naccordingly — failing open if the policy call errors or times out, so an\noutage never takes down your site.\n\n## Install\n\n```sh\nnpm i @d3-inc/d3-edge-vercel-middleware\n```\n\n## Usage\n\n```ts\n// middleware.ts (project root)\nimport { createD3Middleware, config } from '@d3-inc/d3-edge-vercel-middleware';\n\nexport default createD3Middleware();\nexport { config };\n```\n\nSet two project environment variables (from your D3 Edge dashboard's install\npage):\n\n| Variable             | Value                                 |\n| -------------------- | ------------------------------------- |\n| `POLICY_WORKER_URL`  | `https://edge-api.d3.com/v1/decision` |\n| `POLICY_ADAPTER_KEY` | Your org's adapter key (`d3_k_…`)     |\n\nLeave `POLICY_WORKER_URL` unset for pure passthrough (no enforcement, no\nreporting) — useful for staging the rollout.\n\n## Docs\n\nFull documentation, including config options and the decision model:\n[ai.d3.com/docs](https://ai.d3.com/docs).\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}