{"_id":"@airnauts/airside-integration-next","_rev":"7-5c5963028176ddd3d4724be380fbe16c","name":"@airnauts/airside-integration-next","dist-tags":{"latest":"0.10.1"},"versions":{"0.8.0":{"name":"@airnauts/airside-integration-next","version":"0.8.0","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.8.0","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"0c0661badb70078dfa1c4aec3f9078ac343d15bc","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.8.0.tgz","fileCount":13,"integrity":"sha512-G6YHJPyTJVgqKO9Z8JRG4+JdaGP/GbsOWb5B+XoUWAZaN8pmazbPotP46jFO6yv+8qtO/GIQipjoiTDMbaMnOg==","signatures":[{"sig":"MEUCIQDeH4DNSBBMNLNSON/FeQlQUtZggwdd3XE9Z3aae/NoYwIgN0omxufU/Vg8jx0GiyQa/RUSw6vV1qusEnAZnC+tq7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23896},"type":"module","_from":"file:airnauts-airside-integration-next-0.8.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/0cd421c36549d13a6a84c5c2e9b27b47/airnauts-airside-integration-next-0.8.0.tgz","_integrity":"sha512-G6YHJPyTJVgqKO9Z8JRG4+JdaGP/GbsOWb5B+XoUWAZaN8pmazbPotP46jFO6yv+8qtO/GIQipjoiTDMbaMnOg==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@airnauts/airside-server":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.8.0","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.8.0_1781602310839_0.4691761172168494","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@airnauts/airside-integration-next","version":"0.8.1","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.8.1","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"f921b90b6dad9027a67e86eb74b0b65cc7cd20cd","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.8.1.tgz","fileCount":13,"integrity":"sha512-1+dQDcirzQnGLXm3esCiqQojzdPJ3akAXu0Giqp5vd6RXe1QmEMusqoOJFyldQXHNmO9z3Ac6ttBPWcr5pujeA==","signatures":[{"sig":"MEUCIQDm5aWK9vbocrnqFwwUSMIaQBN3B9XvTke4JAqA7UIYRQIgNqhM8QjycYb6YSHGQ7B5GcL/7Hf65wGro+jAC3xNt+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24337},"type":"module","_from":"file:airnauts-airside-integration-next-0.8.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/bcd05d71b4ebf055f0cbd4ade3b48cb3/airnauts-airside-integration-next-0.8.1.tgz","_integrity":"sha512-1+dQDcirzQnGLXm3esCiqQojzdPJ3akAXu0Giqp5vd6RXe1QmEMusqoOJFyldQXHNmO9z3Ac6ttBPWcr5pujeA==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@airnauts/airside-server":"^0.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.8.1","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.8.1_1781606536406_0.907681722325995","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@airnauts/airside-integration-next","version":"0.8.2","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.8.2","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"1b35ea5f4cc309437c13414ff170b3eaef07b11a","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.8.2.tgz","fileCount":13,"integrity":"sha512-zRU4dCMJaK8xbr9VBve0w6ac5g4y2d4RgTtB5OjYU5OvRbjTXJ5LIpXaeM4W9IbTzfxduUJQl4d+KOWfW0Z8WQ==","signatures":[{"sig":"MEUCICji1gTzY6SsYQb1Y/U0NXgGObnY4uDymJnpEfeHg7XFAiEA6ekwBDE5V93Rwrz0gNtTXgeXSdEFFB122V1Xz1zQSLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24337},"type":"module","_from":"file:airnauts-airside-integration-next-0.8.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/6a408c317cff15ae125411b6fb0c7835/airnauts-airside-integration-next-0.8.2.tgz","_integrity":"sha512-zRU4dCMJaK8xbr9VBve0w6ac5g4y2d4RgTtB5OjYU5OvRbjTXJ5LIpXaeM4W9IbTzfxduUJQl4d+KOWfW0Z8WQ==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@airnauts/airside-server":"^0.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.8.2","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.8.2_1781610336890_0.5804110003035268","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@airnauts/airside-integration-next","version":"0.9.0","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.9.0","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"c32740a28ebff7640b31ff51d0abb35aec21f542","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.9.0.tgz","fileCount":17,"integrity":"sha512-cEgVY4gBoxM2sdUrKefg75A0bXEVP2iORGHzcafqKsOSVJe3lSTg4uIwD7y8J+iqjNQ1xGqZJS7YC2+v2gXsBA==","signatures":[{"sig":"MEUCIAhbcVROCT1NF6T/Bfg7CwwOEX4A2xIldkcJ2UDvN+F4AiEAgAnbt2ZdjaLOXLEF/p5F2yaz0ZWPdYtKVF4uCxmLP04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25842},"type":"module","_from":"file:airnauts-airside-integration-next-0.9.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"}},"scripts":{"test":"vitest run","build":"rm -rf dist && tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/d349940f7ca4ca4b4b25a8bc51521c6c/airnauts-airside-integration-next-0.9.0.tgz","_integrity":"sha512-cEgVY4gBoxM2sdUrKefg75A0bXEVP2iORGHzcafqKsOSVJe3lSTg4uIwD7y8J+iqjNQ1xGqZJS7YC2+v2gXsBA==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@airnauts/airside-server":"^0.9.0","@airnauts/airside-integration-react":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.9.0","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.9.0"},"peerDependencies":{"react":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.9.0_1781622015710_0.6463268676119223","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@airnauts/airside-integration-next","version":"0.9.1","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.9.1","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"3f521dbfbc86d26db142ba61c3162242d432dae6","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.9.1.tgz","fileCount":17,"integrity":"sha512-GDyr/bccUxxYI+IqBUmab+k/pz7PiAWlb223Em51q6vhoF53NI+qKtAlkOyWVojwCRPKm7bCgmOMXsO/kSo4Ig==","signatures":[{"sig":"MEUCIQCkcDWs+U+IIdGevApw0507YNFs0Seb/6kZfScPBKNXjQIgZ6TOasBnThLsoK2FD5KBB92gbqWRjCntNIes65yq1YA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25842},"type":"module","_from":"file:airnauts-airside-integration-next-0.9.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"}},"scripts":{"test":"vitest run","build":"rm -rf dist && tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/d8c90c808a0248ca519da009823d6c3f/airnauts-airside-integration-next-0.9.1.tgz","_integrity":"sha512-GDyr/bccUxxYI+IqBUmab+k/pz7PiAWlb223Em51q6vhoF53NI+qKtAlkOyWVojwCRPKm7bCgmOMXsO/kSo4Ig==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@airnauts/airside-server":"^0.9.1","@airnauts/airside-integration-react":"^0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.9.1","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.9.1"},"peerDependencies":{"react":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.9.1_1781770414154_0.2931288464224975","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@airnauts/airside-integration-next","version":"0.10.0","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"author":{"name":"Airnauts"},"license":"MIT","_id":"@airnauts/airside-integration-next@0.10.0","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"homepage":"https://github.com/Airnauts/airside#readme","bugs":{"url":"https://github.com/Airnauts/airside/issues"},"dist":{"shasum":"5efc9562d5ad7d43c628d0b6d97769569f64e979","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.10.0.tgz","fileCount":17,"integrity":"sha512-SmCoQhhxm7Lbl3RnUrLHEz849eNgbaZT9gLBtHlQVYtcfXvF8fJJskGT4vVosvpX442mV4RGIRf02sK9K3LYpA==","signatures":[{"sig":"MEQCICenyoLQx6mY5M/ozx+msVki2J1IW1zpiPVQ2bJZ0cA7AiAw9ApkjO7/6ZotJMKPLnTvPci/tmdRQprX/RdEAmsXCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26043},"type":"module","_from":"file:airnauts-airside-integration-next-0.10.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"}},"scripts":{"test":"vitest run","build":"rm -rf dist && tsup && tsc --build --force","typecheck":"tsc --build"},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"_resolved":"/tmp/7e215247ad1d8ce8c3c0ca643427c794/airnauts-airside-integration-next-0.10.0.tgz","_integrity":"sha512-SmCoQhhxm7Lbl3RnUrLHEz849eNgbaZT9gLBtHlQVYtcfXvF8fJJskGT4vVosvpX442mV4RGIRf02sK9K3LYpA==","repository":{"url":"git+https://github.com/Airnauts/airside.git","type":"git","directory":"packages/next"},"_npmVersion":"10.9.8","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@airnauts/airside-server":"^0.10.0","@airnauts/airside-integration-react":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@airnauts/airside-core":"0.10.0","@airnauts/airside-test-support":"0.0.0","@airnauts/airside-adapter-memory":"0.10.0"},"peerDependencies":{"react":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/airside-integration-next_0.10.0_1782730555447_0.28476734101520296","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@airnauts/airside-integration-next","version":"0.10.1","description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"license":"MIT","author":{"name":"Airnauts"},"homepage":"https://github.com/Airnauts/airside#readme","repository":{"type":"git","url":"git+https://github.com/Airnauts/airside.git","directory":"packages/next"},"bugs":{"url":"https://github.com/Airnauts/airside/issues"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js"}},"publishConfig":{"access":"public"},"dependencies":{"@airnauts/airside-integration-react":"^0.10.1","@airnauts/airside-server":"^0.10.1"},"peerDependencies":{"react":"^19.0.0"},"devDependencies":{"@airnauts/airside-adapter-memory":"0.10.1","@airnauts/airside-core":"0.10.1","@airnauts/airside-test-support":"0.0.0"},"scripts":{"build":"rm -rf dist && tsup && tsc --build --force","typecheck":"tsc --build","test":"vitest run"},"_id":"@airnauts/airside-integration-next@0.10.1","_integrity":"sha512-IBuvDJ6eW5ZRUkezlE4YfIKm4OJocge5dBceZTLFtKR/IFhuOyRG6kg0Ch24A+zrY+4Yz6OaxLPSXZmZtpMVGw==","_resolved":"/tmp/5ec8784f3e784142cc91c6b7e2ea98b8/airnauts-airside-integration-next-0.10.1.tgz","_from":"file:airnauts-airside-integration-next-0.10.1.tgz","_nodeVersion":"22.23.0","_npmVersion":"10.9.8","dist":{"integrity":"sha512-IBuvDJ6eW5ZRUkezlE4YfIKm4OJocge5dBceZTLFtKR/IFhuOyRG6kg0Ch24A+zrY+4Yz6OaxLPSXZmZtpMVGw==","shasum":"e1b77d397fd48810ed851a48df93c3a4b578d3f8","tarball":"https://registry.npmjs.org/@airnauts/airside-integration-next/-/airside-integration-next-0.10.1.tgz","fileCount":17,"unpackedSize":26077,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC9QMp31NXCwzaCn8rgAqUQ1StcQ+25PZNBkUXdDYgfsAiADv2HxjAcSsvhGz5M/Gepfe4uO9m+foEDtZet998QRMQ=="}]},"_npmUser":{"name":"mateuszpaulski","email":"mateusz@airnauts.com"},"directories":{},"maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/airside-integration-next_0.10.1_1782737641736_0.468120172327505"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T09:31:50.695Z","modified":"2026-06-29T12:54:02.002Z","0.8.0":"2026-06-16T09:31:50.980Z","0.8.1":"2026-06-16T10:42:16.531Z","0.8.2":"2026-06-16T11:45:37.025Z","0.9.0":"2026-06-16T15:00:15.846Z","0.9.1":"2026-06-18T08:13:34.298Z","0.10.0":"2026-06-29T10:55:55.580Z","0.10.1":"2026-06-29T12:54:01.876Z"},"bugs":{"url":"https://github.com/Airnauts/airside/issues"},"author":{"name":"Airnauts"},"license":"MIT","homepage":"https://github.com/Airnauts/airside#readme","keywords":["comments","commenting","annotations","feedback","airnauts","next","nextjs"],"repository":{"type":"git","url":"git+https://github.com/Airnauts/airside.git","directory":"packages/next"},"description":"Next.js App and Pages Router integration for the Airnauts commenting tool server.","maintainers":[{"name":"jkrzemie","email":"hello@airnauts.com"},{"name":"mateuszpaulski","email":"mateusz@airnauts.com"}],"readme":"<p align=\"center\">\n  <a href=\"https://github.com/Airnauts/airside\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/Airnauts/airside/main/assets/airside-logo-dark.svg\">\n      <img src=\"https://raw.githubusercontent.com/Airnauts/airside/main/assets/airside-logo-light.svg\" alt=\"Airside\" height=\"40\">\n    </picture>\n  </a>\n  <h1 align=\"center\">\nEmbeddable Commenting Tool\n</h1>\n</p>\n\n# @airnauts/airside-integration-next\n\nNext.js App and Pages Router integration for [Airside](https://github.com/Airnauts/airside). Wraps `createAirsideServer` and the Next.js handler glue into single one-call integrations: `createAirsideAppRoute(config)` for the App Router and `createAirsidePagesRoute(config)` for the Pages Router.\n\n## Installation\n\n```bash\npnpm add @airnauts/airside-integration-next\n# Plus a persistence adapter and storage adapter, e.g.:\npnpm add @airnauts/airside-adapter-mongo @airnauts/airside-storage-vercel-blob\n```\n\n## Quick start — App Router\n\nCreate a catch-all route handler at `app/api/airside/[...path]/route.ts`:\n\n```ts\nimport { createAirsideAppRoute } from '@airnauts/airside-integration-next'\nimport { mongoRepository } from '@airnauts/airside-adapter-mongo'\nimport { createVercelBlobStorage } from '@airnauts/airside-storage-vercel-blob'\n\nexport const { GET, POST, PATCH, DELETE, OPTIONS } = createAirsideAppRoute({\n  secretKey: process.env.AIRSIDE_SECRET!,\n  projectId: 'my-app',\n  allowedOrigins: ['https://my-app.example.com'],\n  repository: mongoRepository({ uri: process.env.MONGODB_URI! }),\n  storage: createVercelBlobStorage({ token: process.env.BLOB_READ_WRITE_TOKEN! }),\n})\n```\n\nFor local development without a real database, swap in the in-memory adapter:\n\n```ts\nimport { createMemoryRepository } from '@airnauts/airside-adapter-memory'\nimport { createFileSystemStorage } from '@airnauts/airside-storage-fs'\nimport { join } from 'node:path'\n\nexport const { GET, POST, PATCH, DELETE, OPTIONS } = createAirsideAppRoute({\n  secretKey: 'dev-key',\n  projectId: 'my-app',\n  allowedOrigins: ['http://localhost:3000'],\n  repository: createMemoryRepository(),\n  storage: createFileSystemStorage({ rootDir: join(process.cwd(), 'public', 'uploads'), baseUrl: '/uploads' }),\n  rateLimit: false,\n})\n```\n\n## Quick start — Pages Router\n\nCreate a catch-all API route at `pages/api/airside/[...path].ts`:\n\n```ts\nimport { createAirsidePagesRoute } from '@airnauts/airside-integration-next'\nimport { mongoRepository } from '@airnauts/airside-adapter-mongo'\nimport { createVercelBlobStorage } from '@airnauts/airside-storage-vercel-blob'\n\n// REQUIRED: Next reads this statically, so the helper can't set it. The comments\n// API parses JSON/multipart itself, so the raw body must reach it unparsed.\nexport const config = { api: { bodyParser: false } }\n\nexport default createAirsidePagesRoute({\n  secretKey: process.env.AIRSIDE_SECRET!,\n  projectId: 'my-app',\n  allowedOrigins: ['https://my-app.example.com'],\n  repository: mongoRepository({ uri: process.env.MONGODB_URI! }),\n  storage: createVercelBlobStorage({ token: process.env.BLOB_READ_WRITE_TOKEN! }),\n})\n```\n\nA single default export handles every method — `server.handle` answers the CORS preflight (`OPTIONS`) internally. Keep this on the **Node runtime** (the default): the server uses `node:crypto`, `Buffer`, and Node-only database drivers; it cannot run on the Edge runtime.\n\n## Client mount\n\nThis package re-exports the React mount so a Next app needs only one install for both halves. In a client component (or directly in an RSC tree — the export ships `'use client'`):\n\n```tsx\nimport { AirsideLayer } from '@airnauts/airside-integration-next/client'\n\nexport function AirsideMount() {\n  return <AirsideLayer airsideKey={process.env.NEXT_PUBLIC_AIRSIDE_KEY!} endpoint=\"/api/airside\" />\n}\n```\n\n`AirsideLayer` is re-exported from [`@airnauts/airside-integration-react`](https://github.com/Airnauts/airside/blob/main/packages/integration-react/README.md); use that package directly in non-Next React hosts.\n\n## API reference\n\n### `createAirsideAppRoute(config)`\n\nAccepts all [`CreateAirsideServerOptions`](https://github.com/Airnauts/airside/blob/main/packages/server/README.md) from `@airnauts/airside-server`, plus:\n\n| Option | Type | Description |\n|---|---|---|\n| `disabled` | `boolean` | When `true`, all handlers return `404` (useful for environment-gated deployments) |\n\nReturns `{ GET, POST, PATCH, DELETE, OPTIONS, server? }`:\n\n- `GET`, `POST`, `PATCH`, `DELETE`, `OPTIONS` — Next.js App Router route handlers; destructure and re-export directly.\n- `server` — the underlying `AirsideServer` instance (absent when `disabled: true`); useful for server-side reads, additional custom routes, or integration tests.\n\n### `createAirsidePagesRoute(config)`\n\nAccepts the same options as `createAirsideAppRoute`. Returns a single Node.js API-route handler function (the Pages Router `default` export). The function carries `.server` (absent when `disabled: true`) for the same uses as the App Router variant.\n\n**`export const config = { api: { bodyParser: false } }` is required** in the route module — Next reads it statically and the helper cannot set it for you. The comments API parses `application/json` and `multipart/form-data` bodies itself, so the raw body must reach it unparsed.\n\n## Configuration / env vars\n\n| Env var | Used by | Description |\n|---|---|---|\n| `AIRSIDE_SECRET` | `secretKey` | Shared bearer token (required in production) |\n| `MONGODB_URI` | `mongoRepository` | MongoDB Atlas connection string |\n| `BLOB_READ_WRITE_TOKEN` | `createVercelBlobStorage` | Vercel Blob token |\n\n## Requirements\n\n- Next.js ≥ 15 (App Router and Pages Router; Next 14 is supported at runtime)\n- Node.js ≥ 18\n\n## Related packages\n\n- **`@airnauts/airside-client`** — widget to mount on the front end\n- **`@airnauts/airside-server`** — lower-level server API (use this for non-Next.js frameworks)\n- **`@airnauts/airside-adapter-mongo`** — MongoDB persistence\n- **`@airnauts/airside-adapter-postgres`** — PostgreSQL persistence\n- **`@airnauts/airside-adapter-memory`** — in-memory persistence (dev/tests)\n- **`@airnauts/airside-storage-vercel-blob`** — Vercel Blob storage\n- **`@airnauts/airside-storage-fs`** — filesystem storage\n\nSee the [integration guide](https://github.com/Airnauts/airside/blob/main/docs/integration.md) and `examples/nextjs-host` for a complete worked example.\n\n## License\n\nMIT © Airnauts\n","readmeFilename":"README.md"}