{"_id":"@scenarist/nextjs-adapter","_rev":"38-15b0bf5116a58cad8498d4f54cf3b90b","name":"@scenarist/nextjs-adapter","dist-tags":{"latest":"0.4.14"},"versions":{"0.0.1":{"name":"@scenarist/nextjs-adapter","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@scenarist/nextjs-adapter@0.0.1","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"dist":{"shasum":"19e0687491f3dbd8349665ba000b16ad01102117","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.0.1.tgz","fileCount":2,"integrity":"sha512-1I41ve2GSvknFLR25p75Bv3MDHA1HcAV35yyVCDPyp1fS2WV8YHEZGrsVojscaHhFgiELWtKixAUaeGbptfXag==","signatures":[{"sig":"MEQCIDvM1fTQQYnNXHltUr1fgUb3aOmujUORGuI+ZT6ptjyFAiBL8o/ya1naB0NumEC6WLYFVoys///1pFSmD93ZEfYi1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2063},"_npmUser":{"name":"citypaul","email":"paul.ian.hammond@gmail.com"},"_npmVersion":"10.9.4","description":"OIDC trusted publishing setup package for @scenarist/nextjs-adapter","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.0.1_1764182572024_0.4962110024381188","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@scenarist/nextjs-adapter","version":"0.1.0","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.0","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"1913a2ccca06cf37d94f60de5ac7f53c5937f95a","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.0.tgz","fileCount":57,"integrity":"sha512-11hwvf82j0DCq6Gwu3ueu6Q0O+ky0cbmZe7hLFrIJMEzhI7il2uQsdKeFMnnjmq4Ny7BF6urpNOARjPBLcIimw==","signatures":[{"sig":"MEQCIDgebtoLdLB/EOqcdWldl/76UjcJvaZxzxHZm9J+GpKaAiAZP8+WwhXwHrSig+ttILijTXyApXY2e+omtZk8EiFxVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162863},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/61252ed6857f788e7e2394989edfdb16/scenarist-nextjs-adapter-0.1.0.tgz","_integrity":"sha512-11hwvf82j0DCq6Gwu3ueu6Q0O+ky0cbmZe7hLFrIJMEzhI7il2uQsdKeFMnnjmq4Ny7BF6urpNOARjPBLcIimw==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","@scenarist/core":"0.0.0","@scenarist/msw-adapter":"0.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.1","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.8","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.8","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.0_1764192305475_0.24964240598656695","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@scenarist/nextjs-adapter","version":"0.1.1","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.1","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"ee215ed096511ca5b472ab04e5c05b8da9370e0e","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.1.tgz","fileCount":57,"integrity":"sha512-i6G+x3Lf1DpOxf9hvDgr84ak1DJc9tsmcYMj9pxXAmdpGOmnN62eEYxWJ3mv8rviL8a0FSSzYdz3riDbiqz6YA==","signatures":[{"sig":"MEYCIQCoWPcSwckL7N0cl5G/2dDfQIcHgtDakGYzCx+bQiIQUgIhAOM40qPeO0a2TOarg1Aettv9C+Jzb+F0/RNfx+B1CkzM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162855},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/9ef0d45de4a565748df50be6dcfa6ded/scenarist-nextjs-adapter-0.1.1.tgz","_integrity":"sha512-i6G+x3Lf1DpOxf9hvDgr84ak1DJc9tsmcYMj9pxXAmdpGOmnN62eEYxWJ3mv8rviL8a0FSSzYdz3riDbiqz6YA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","@scenarist/core":"0.0.1","@scenarist/msw-adapter":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.1","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.8","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.8","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.1_1764204978470_0.36666719094549816","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@scenarist/nextjs-adapter","version":"0.1.2","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.2","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"49c591f9b17f2ec9fba469ac06febdb40a5d5014","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.2.tgz","fileCount":57,"integrity":"sha512-DsIXpsGst39/cJSpDj6ZPeOeDNtT7qMc9zCzSdXa5jDHaW5j9ti80B4EYmManpnbrWM5Wu35og3ff7sGmy06LA==","signatures":[{"sig":"MEUCIFvplFxlEzFVGh6p7eI35AIMv3ffK24JDNd2++cpqmL+AiEAiD8g+mcKZHlRMte0XhuselBND75BSqWwlTtkwhlCyhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162855},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/49cfbec318fa76df37049df83a4d5e92/scenarist-nextjs-adapter-0.1.2.tgz","_integrity":"sha512-DsIXpsGst39/cJSpDj6ZPeOeDNtT7qMc9zCzSdXa5jDHaW5j9ti80B4EYmManpnbrWM5Wu35og3ff7sGmy06LA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","@scenarist/core":"0.0.2","@scenarist/msw-adapter":"0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.1","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.8","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.8","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.2_1764207815724_0.5882895853976748","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@scenarist/nextjs-adapter","version":"0.1.3","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.3","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"089b87943dc439b85620a23c67efa83c1274f4e6","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.3.tgz","fileCount":57,"integrity":"sha512-Hy0mIYBa1G7u/nBy2tGD1Ft7vJbrPv9ilH1Xv31x48LOHSwfJkkGAQ6xQg7TTAoH3wgT/WW5PoXaImJTKd9Z3A==","signatures":[{"sig":"MEUCIQDzt0TvNMBbZylLoCP1LDWvdwa+2BkDjNvit6wEo5eZPAIgY0CKrrHQSUbd8x15/9qG09W/WyFDCu+78UAjx1DgxA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162855},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/8e765e338b9e12ec6161dec49f27e91c/scenarist-nextjs-adapter-0.1.3.tgz","_integrity":"sha512-Hy0mIYBa1G7u/nBy2tGD1Ft7vJbrPv9ilH1Xv31x48LOHSwfJkkGAQ6xQg7TTAoH3wgT/WW5PoXaImJTKd9Z3A==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","@scenarist/core":"0.1.0","@scenarist/msw-adapter":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.1","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.8","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.8","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.3_1764209352357_0.37828137006263884","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@scenarist/nextjs-adapter","version":"0.1.4","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.4","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"32dddc268834fc9434cf98df08d73fcad2c50e4c","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.4.tgz","fileCount":57,"integrity":"sha512-CiJcPNis350iUsqchH9O/4D4mrWQE8FHYU1qVxqVFAmUMPuIqXN5TjYKP9n+cs3u4Kd5sDQ2TtOZj7nU7qOuPQ==","signatures":[{"sig":"MEUCIQDvQnBb6IQyrMmSVHF3oBqS9WLK0Q41TL0WRP6caQYEZgIgaAQSAe6i2uu01YBDehasBNhTlWuxMLCizWgjiUptSzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162857},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/c0e501b7f0cb02f5a5c5a056abf14840/scenarist-nextjs-adapter-0.1.4.tgz","_integrity":"sha512-CiJcPNis350iUsqchH9O/4D4mrWQE8FHYU1qVxqVFAmUMPuIqXN5TjYKP9n+cs3u4Kd5sDQ2TtOZj7nU7qOuPQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.1","@scenarist/msw-adapter":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.4_1764284616298_0.7122039916915777","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@scenarist/nextjs-adapter","version":"0.1.5","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.5","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"1b36b0ae19a78686134d036928efaab6445b4cc9","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.5.tgz","fileCount":57,"integrity":"sha512-EkVeudN7JCRcwaGv520NoELSxvwX0iy1CPPC6YVZQ3FhIviif7R3OgNGOEIPD1OgUeIUGCSYiaeWC/ALOhzfuQ==","signatures":[{"sig":"MEUCIFvECB+3+6d5l/CJ2XWC4zxLvmZF7woSBnp7fNFgoQ28AiEAlYK5uazw2pvW3j0LVxWd0JBZfJ+nWZWojMUlwcCjbqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162857},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/841edbd087663bac23480a47f8ca22a4/scenarist-nextjs-adapter-0.1.5.tgz","_integrity":"sha512-EkVeudN7JCRcwaGv520NoELSxvwX0iy1CPPC6YVZQ3FhIviif7R3OgNGOEIPD1OgUeIUGCSYiaeWC/ALOhzfuQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.5_1764286652192_0.5424770976039459","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@scenarist/nextjs-adapter","version":"0.1.6","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.6","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"7646ba648718d5af8c6799b8efababb760446f4f","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.6.tgz","fileCount":57,"integrity":"sha512-EmIk3z4WfiQqZNBejb/8If64lQ7otNbtmF2NZu+w3CX6opnOIRK1N7rDU0u1NAB1ssNf3ZpxRKj4J5BAHq4jCg==","signatures":[{"sig":"MEUCIQDd71lRynIZRMLlqTGBW7I0W5vP7LHbrJ+90m61tArOMgIgdn6nDH5OFRPhrib4B+VMd5g1oRY2/RO9OeyGkd7cFsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164041},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/45c0f4c44a12d4506609036f973a7e65/scenarist-nextjs-adapter-0.1.6.tgz","_integrity":"sha512-EmIk3z4WfiQqZNBejb/8If64lQ7otNbtmF2NZu+w3CX6opnOIRK1N7rDU0u1NAB1ssNf3ZpxRKj4J5BAHq4jCg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.6_1764371599233_0.8108304980674939","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@scenarist/nextjs-adapter","version":"0.1.7","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.7","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"a90ab60c5eda6ff95a35d4893bf545dcb4507cd2","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.7.tgz","fileCount":57,"integrity":"sha512-f8H5YFXnmRa+0vc9aVj+grZMY1grmCqLtmHUAPJIorkrRVgYses1rz+QiC2ea8HCJK2Fl2VeUGYReMyXes5o4A==","signatures":[{"sig":"MEQCIH+tm3MDICH/9vwE9gACZONrCuwRndoCNE42+xXrDDofAiA8cuzQPfhbwLSq28Z/Ody3WrwwjWY6iUDH1TR6YzQzSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164041},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/f8017cc4c52b1747d82dd94a301e1fdf/scenarist-nextjs-adapter-0.1.7.tgz","_integrity":"sha512-f8H5YFXnmRa+0vc9aVj+grZMY1grmCqLtmHUAPJIorkrRVgYses1rz+QiC2ea8HCJK2Fl2VeUGYReMyXes5o4A==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.7_1764373936516_0.23743891127260763","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@scenarist/nextjs-adapter","version":"0.1.8","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.8","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"ca752f9efb9f30b8b6a27ec1be9d7f220452da13","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.8.tgz","fileCount":57,"integrity":"sha512-JuuxS1w+xGcjW22xAGbPA5fNxvg0KtKY7HYyax9Iqteeu8JG4++r0orOkOoxAsP30r0KsA9RR3XyyQBZf3IKzA==","signatures":[{"sig":"MEUCIGdhfWyjTCKCE1llqI68VoBvzPiDGzVHEvFPO9mBUn8pAiEA+RT1cJE/x7e2hbFVGQZzPyDy0TnUlQZv6jNfUfbPth0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160285},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/b0069c0533ca86d630d43c87b47afcdf/scenarist-nextjs-adapter-0.1.8.tgz","_integrity":"sha512-JuuxS1w+xGcjW22xAGbPA5fNxvg0KtKY7HYyax9Iqteeu8JG4++r0orOkOoxAsP30r0KsA9RR3XyyQBZf3IKzA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.8_1764460165876_0.4878060410560756","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@scenarist/nextjs-adapter","version":"0.1.9","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.9","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"31685c1026865c5dd8fe68a9634149a5219a3f34","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.9.tgz","fileCount":57,"integrity":"sha512-y6ZmVkmUmfzrgtDcO0/ribote5yLnC8AtQy2Vv1bIxUpmduUs+2dvu8+OyfyDbtVEtD6O0axBG1u2zZDjDPISg==","signatures":[{"sig":"MEYCIQCzaVwaFiRfw9OUut0QX6vkUXeD2ogumD0SQxTAr0LD4AIhALYb17dxHlmYu6flsL2bwt0gwlukZM9/jzEE3WdEL7xJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160285},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.9.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/bbd157e98955a43428456fd450e31aa7/scenarist-nextjs-adapter-0.1.9.tgz","_integrity":"sha512-y6ZmVkmUmfzrgtDcO0/ribote5yLnC8AtQy2Vv1bIxUpmduUs+2dvu8+OyfyDbtVEtD6O0axBG1u2zZDjDPISg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.9_1764491963892_0.12336380166888028","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@scenarist/nextjs-adapter","version":"0.1.10","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.10","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"86e3a99da3e8290dd8e0d866de7844827553e39a","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.10.tgz","fileCount":57,"integrity":"sha512-/TA3OXl++Ko1tcUpvx992bhQdztaVmYF8wsP6ksJEXEwYPkjiA5iTAEihc83dnwp780iq91qhuYymrORqZdcNw==","signatures":[{"sig":"MEUCIC6CyADIiY7PVZw5yvbExGiwur8yAn39omQJeyonSUSSAiEAiHOqe+8g3VTRMXVi98Wjoz8cNp2mfFla9kqRIZ9ojMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158394},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.10.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/286799e7a4894cbebe227985917f8ec6/scenarist-nextjs-adapter-0.1.10.tgz","_integrity":"sha512-/TA3OXl++Ko1tcUpvx992bhQdztaVmYF8wsP6ksJEXEwYPkjiA5iTAEihc83dnwp780iq91qhuYymrORqZdcNw==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.10_1764498130465_0.3586351360784126","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@scenarist/nextjs-adapter","version":"0.1.11","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.11","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"70be3e8b979ceb8a61353aa4412f7aac449b26ba","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.11.tgz","fileCount":57,"integrity":"sha512-PkHH5QXkjC9abUkwOgDf24EwAFx3izIZjEypSrbcor4YYCVKYGakIAZLJym1EdceTtLOAbenX6ioGC175YaXQQ==","signatures":[{"sig":"MEYCIQCcWkGNWLBtokGDdEIU/nftAIQxh62IRk+RvEOdyDnWaAIhAOJNGAqo7+qpA5T1Cdx2XDSgkZOEppTkDuSf7AZ8Xmf/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158568},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.11.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/df4a348d2cdbd479c98e9e49b0ff7950/scenarist-nextjs-adapter-0.1.11.tgz","_integrity":"sha512-PkHH5QXkjC9abUkwOgDf24EwAFx3izIZjEypSrbcor4YYCVKYGakIAZLJym1EdceTtLOAbenX6ioGC175YaXQQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.11_1764522320001_0.33772806859628357","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@scenarist/nextjs-adapter","version":"0.1.12","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.12","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"58f70a0d6e4d86f21bf9747fe1234e6bde306d52","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.12.tgz","fileCount":57,"integrity":"sha512-r3qdBd+z0iMuUqvH/Gjpim5o1Mqvf0Trn4iugPBHYPC7kk46N8GjPSbT4b6BcboQ9gFF13Kd4wUO/upEeqKkgQ==","signatures":[{"sig":"MEQCIH6sYtsdpoJgVqQIZ5/JGelz97hZmd4sRr/NTKZXIBnQAiAbkDFqaXrltF8PgkzCXPMIgpKcL3341WeOSlPtbjTqTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158791},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.12.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/b2365a278ed6f0fdedce01563dfd5269/scenarist-nextjs-adapter-0.1.12.tgz","_integrity":"sha512-r3qdBd+z0iMuUqvH/Gjpim5o1Mqvf0Trn4iugPBHYPC7kk46N8GjPSbT4b6BcboQ9gFF13Kd4wUO/upEeqKkgQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.12_1764541719814_0.8953914128339264","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@scenarist/nextjs-adapter","version":"0.1.13","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.13","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"d8ce6a26e24bcad8a83af7cea5f78393ab1f0534","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.13.tgz","fileCount":57,"integrity":"sha512-yLZ8wnDEI6bPW3iCih8/UHADZfTe7FVZip7vpYEuWmWnJNWxuBVZT4u+II69OQjttDycp7/sRIEGKcdSaHzeLg==","signatures":[{"sig":"MEQCIHLCcd+ISY73WvaUfmFuS+H/sbbL/4XtMO19CQRTu59LAiBqakquW17pufCV2ENYLl2jRzYGQd96PVHzyCmqPXEq5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158791},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.13.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/12a3fa75568a0c0818ca7fdcbac6ff3d/scenarist-nextjs-adapter-0.1.13.tgz","_integrity":"sha512-yLZ8wnDEI6bPW3iCih8/UHADZfTe7FVZip7vpYEuWmWnJNWxuBVZT4u+II69OQjttDycp7/sRIEGKcdSaHzeLg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.13_1764590742034_0.3786422709034498","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@scenarist/nextjs-adapter","version":"0.1.14","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.14","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"e1742df558cceaefe18d916b1b86a3f707a79783","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.14.tgz","fileCount":57,"integrity":"sha512-IOeVvcOGKA3qJ9qoPDbRXWiaALhmq81xPXQP2sm+UK011lKM+y5jfSv7qRP2uxa6UGMKZwqPgAHtnIfdGNG8DQ==","signatures":[{"sig":"MEQCICpBu4cTsVBbwfHQuBZpj3g6X8YaR5MdyKrzmJIGKYjcAiAoXR5ntj94m9CM8vUUHWIsKGUOdH3lZL7peM+c3ZDsUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158791},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.14.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/f1636ea737b0a3c0891f5b2f52ea072e/scenarist-nextjs-adapter-0.1.14.tgz","_integrity":"sha512-IOeVvcOGKA3qJ9qoPDbRXWiaALhmq81xPXQP2sm+UK011lKM+y5jfSv7qRP2uxa6UGMKZwqPgAHtnIfdGNG8DQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.2","@scenarist/msw-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.14_1764597483627_0.5889287780813051","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@scenarist/nextjs-adapter","version":"0.1.15","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.15","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"1c0d282b6c03557c85bf06fa4d48ef8d011bc394","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.15.tgz","fileCount":57,"integrity":"sha512-ku6glXgwHTJRmSEG6KugvFpUkjBJNUUjaLosC8bjwXZZWuBX/z1d1XbdidcLrAO2D+ThO1zDwyafo8D4qkesZQ==","signatures":[{"sig":"MEUCIA8EW+5XINWPEpWmEKpUYfJB1EOWz+cmQndPtWRJ26oKAiEA6DmUJ3sBkwEPEF6AZ5urY71VGa0YE2owwqair5HESMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158791},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.15.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/4886b26961592e12fef0c27c513c0380/scenarist-nextjs-adapter-0.1.15.tgz","_integrity":"sha512-ku6glXgwHTJRmSEG6KugvFpUkjBJNUUjaLosC8bjwXZZWuBX/z1d1XbdidcLrAO2D+ThO1zDwyafo8D4qkesZQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.3","@scenarist/msw-adapter":"0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.15_1764608879048_0.32073377868803754","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@scenarist/nextjs-adapter","version":"0.1.16","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.1.16","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"3448cf46a79ac5f0c294021e80ca6b1c8122be74","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.1.16.tgz","fileCount":57,"integrity":"sha512-gVL6q6WHWxaiUtdiPpJQUdpIFLAc9isQ1KPMH4w+rTWmriwhOejzHQ8mMjG1bYaO4UmSG+JZdGFt3sy1SdGhmQ==","signatures":[{"sig":"MEUCIQDqzfUkPRUiq8F2a2tdmNi+B9sAZCfF4LSvwGcidJSvAgIgQePsSPR5ZoUbYJbzjzNa5qmDJeeydK84RgvJdAWjg+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158793},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.1.16.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/398300437d50664043ca5be2a93b4904/scenarist-nextjs-adapter-0.1.16.tgz","_integrity":"sha512-gVL6q6WHWxaiUtdiPpJQUdpIFLAc9isQ1KPMH4w+rTWmriwhOejzHQ8mMjG1bYaO4UmSG+JZdGFt3sy1SdGhmQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.1.16","@scenarist/msw-adapter":"0.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.1.16_1764610593854_0.9753553973760516","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@scenarist/nextjs-adapter","version":"0.2.0","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.2.0","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"5f5e1954e6fda17c9820f850148c5d293d95a326","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.2.0.tgz","fileCount":57,"integrity":"sha512-4SBjhby5YbpkfoWu0K1479ky7QFp7K+/PFLOb2ImljgLS6wY0dQWReaI+bXdTnK48GQChB5SazzWpz08neGsfA==","signatures":[{"sig":"MEQCIBNpbjBTVNzM3VFN47T93UGaZqPGnrdsoJnmShIMCyd6AiBTVAUFE9BnD9q0MUI8GEmLEkNxCHPyyMSuUFwRA9JGfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159422},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/bfc07b8b24950ae889cb18e10e6b60fc/scenarist-nextjs-adapter-0.2.0.tgz","_integrity":"sha512-4SBjhby5YbpkfoWu0K1479ky7QFp7K+/PFLOb2ImljgLS6wY0dQWReaI+bXdTnK48GQChB5SazzWpz08neGsfA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.2.0","@scenarist/msw-adapter":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.2.0_1764682129030_0.14461960217850778","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@scenarist/nextjs-adapter","version":"0.2.1","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.2.1","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"1bbc7ea1e68c9b54d7e473f1009e3cf67b4fdead","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.2.1.tgz","fileCount":57,"integrity":"sha512-Lwa5225gKinn8ddv16Jgt8TgcIR66uZ7qQzzSW/7U2PUJ2eixNusOBxazh8j+BNYf39Y83WVhPdBt0/kO5leuw==","signatures":[{"sig":"MEUCIQD3sDIlZVMo4J8mGIAaWLwQdOds/2ohvDbTugWkmjy3IQIgZtF5m/+A6SlcQ6opntyHAcrneRrDGcus7zkG3a5DbZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159422},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/95f852c348a66ef0463aa9a048ad53d8/scenarist-nextjs-adapter-0.2.1.tgz","_integrity":"sha512-Lwa5225gKinn8ddv16Jgt8TgcIR66uZ7qQzzSW/7U2PUJ2eixNusOBxazh8j+BNYf39Y83WVhPdBt0/kO5leuw==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.2.1","@scenarist/msw-adapter":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.2.1_1764719071997_0.7779279576287463","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@scenarist/nextjs-adapter","version":"0.3.0","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.3.0","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"e56c780a53dc65596f93de4bc1dda356c97eb99c","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.3.0.tgz","fileCount":57,"integrity":"sha512-uoXHDC6ONW+ThZFrQZ10UGiclub3CwQ7iSzY07kd8DqUKfCEaUQ/F0LUaQW5AD99DeyGIdNQTsCRR3ThReMAXg==","signatures":[{"sig":"MEYCIQDOe/kF4WhwXmFj8LnbhkO0Zvl9E7JmuV3pcukEFLPKnQIhAKprvkvV/FP8jEDHZW7vB/iBfcx00MAol7vX4wvW4lLQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162047},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/a8ff876468a78e37cdf9453acad3a9c0/scenarist-nextjs-adapter-0.3.0.tgz","_integrity":"sha512-uoXHDC6ONW+ThZFrQZ10UGiclub3CwQ7iSzY07kd8DqUKfCEaUQ/F0LUaQW5AD99DeyGIdNQTsCRR3ThReMAXg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.3.0","@scenarist/msw-adapter":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.3.0_1764800421779_0.27065244983940073","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@scenarist/nextjs-adapter","version":"0.3.1","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.3.1","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"dc30ebcb57bc5e25b1ca2192bd5d26b183c58bdb","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.3.1.tgz","fileCount":57,"integrity":"sha512-bKhm7a26DGodtPihddgKBp758KkorKWB7f8rc9IYdGwmhAKwVVj9RIbbIwE8+fkz+BCnOxgDz5pixM1gOELqbw==","signatures":[{"sig":"MEYCIQCS7vr0s+El20c9BqTE57eFJSB0eG3qTFS5X9HDiZXI9AIhAK28L6eJ495xImTd4I/nyHysW0rQOhOvlceYW7qtRzAW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162047},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.3.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/7b7441ae67922b8adf553329307b0264/scenarist-nextjs-adapter-0.3.1.tgz","_integrity":"sha512-bKhm7a26DGodtPihddgKBp758KkorKWB7f8rc9IYdGwmhAKwVVj9RIbbIwE8+fkz+BCnOxgDz5pixM1gOELqbw==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.3.1","@scenarist/msw-adapter":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.3.1_1764843901240_0.620966995704155","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@scenarist/nextjs-adapter","version":"0.3.2","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.3.2","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"0bd2789af87e3fbcb8dfa7415d773fd6405715b1","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.3.2.tgz","fileCount":57,"integrity":"sha512-szeP5MSR68orPzKiY0XFTiCYvA/4lEUYgzzkWyixvJd0RniY/j5Iv2TyxzbkuVxyYjChlbEDRUTGsQT35xYHBg==","signatures":[{"sig":"MEQCIDHk4A4kYcklPW5Yrav0z9QhNU/isMrab5otTFDVUNJ8AiAZam6G4FK1zGMEWCZ/UBLMj7wzezyOmOBK1UTPBSc/bQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":165697},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.3.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/83d0f3e092704e589fcac9e2e26fba4e/scenarist-nextjs-adapter-0.3.2.tgz","_integrity":"sha512-szeP5MSR68orPzKiY0XFTiCYvA/4lEUYgzzkWyixvJd0RniY/j5Iv2TyxzbkuVxyYjChlbEDRUTGsQT35xYHBg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.3.2","@scenarist/msw-adapter":"0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.3.2_1764891445314_0.588046525156128","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@scenarist/nextjs-adapter","version":"0.3.3","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.3.3","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"cf57df9a70c92743f902e98aca86ff6691dc500d","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.3.3.tgz","fileCount":57,"integrity":"sha512-KF/yl/vVvhhAxOKApmdemWZkMfLDstFK+T0a2ejKhgM7WTL3aHNr75caxGGfAVCy/xqo7ws5f1JUBpvWTH+2DQ==","signatures":[{"sig":"MEUCIQD8GCJMOjgv9aOl6IRGCddJTdzqU55fp7oq2xAqc6pDnAIgYvqZyVEHSVJJsETDS3rvw0RewFXCXhLl89ORKstCADk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":165697},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.3.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/e15235aea1954b43b499e774d4346de6/scenarist-nextjs-adapter-0.3.3.tgz","_integrity":"sha512-KF/yl/vVvhhAxOKApmdemWZkMfLDstFK+T0a2ejKhgM7WTL3aHNr75caxGGfAVCy/xqo7ws5f1JUBpvWTH+2DQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.3.3","@scenarist/msw-adapter":"0.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.3.3_1764960519941_0.5193315939512839","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@scenarist/nextjs-adapter","version":"0.4.0","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.0","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"2d9be7802d63e19ea792b9b885b475e0e0e1b15e","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.0.tgz","fileCount":57,"integrity":"sha512-uy7QIfgyOAvvvDD1sGrd2WIw/nJbx7bVL1FQQAs2ZuKH7KXzPPljffXv6KKjK9kkS7d92mblmJjK9+g8Zq2siA==","signatures":[{"sig":"MEUCIQDuj29jNyotOYWBfQfJHGHJ+MmohojOIAs5ehVAwsoudQIgEe/YU3BwB/7mbsh7+gc0StsdqcMzn6mGxhhy2daMbJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/c6660f533421a705389507b572a2c9ac/scenarist-nextjs-adapter-0.4.0.tgz","_integrity":"sha512-uy7QIfgyOAvvvDD1sGrd2WIw/nJbx7bVL1FQQAs2ZuKH7KXzPPljffXv6KKjK9kkS7d92mblmJjK9+g8Zq2siA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.0","@scenarist/msw-adapter":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.0_1765050578300_0.9995752629821217","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@scenarist/nextjs-adapter","version":"0.4.1","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.1","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"2f5f01000a92f14a934b9f09f054e79007999765","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.1.tgz","fileCount":57,"integrity":"sha512-xTHn5edOYVUWDu1Mp2gRxUL2xQhX32J1immp5lwftiPAtSCq7So/21ZFHUFk+mS+dEBTeKkm/0B4C8yGf79tpQ==","signatures":[{"sig":"MEYCIQDeTmzvvTwjA6WSPbALwWbZq/1cIVnlWYVnjrMOpcd1YwIhAJ9Sv8cVFADLu3EGQTMzy/kGYgbaGVLnNf772NkR3GUq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/b81715a3a39e8bd4a360dc893f37be24/scenarist-nextjs-adapter-0.4.1.tgz","_integrity":"sha512-xTHn5edOYVUWDu1Mp2gRxUL2xQhX32J1immp5lwftiPAtSCq7So/21ZFHUFk+mS+dEBTeKkm/0B4C8yGf79tpQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.1","@scenarist/msw-adapter":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.1_1765131113722_0.5115816277115881","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@scenarist/nextjs-adapter","version":"0.4.2","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.2","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"acfb7a477558910287a6bc2a05d5610cab789b7d","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.2.tgz","fileCount":57,"integrity":"sha512-hvowo7iCy254zRMVsf2ujvlm4OaQI29g+f8zdYkHzrU/BE8pqrrRsidQ2kR4pEU+8j90mX6R2qyox0Qtm0eAfg==","signatures":[{"sig":"MEQCIE8L9sQUcAfvAInxLDcy1rTqGs7PIYqBofgDqRcquJUEAiAuVL6w0GvItlmDc2REhHdbY11BKFZ/rSxDjateKktiJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/c32d81da3a73ddcf7ab0a522cd15f2b3/scenarist-nextjs-adapter-0.4.2.tgz","_integrity":"sha512-hvowo7iCy254zRMVsf2ujvlm4OaQI29g+f8zdYkHzrU/BE8pqrrRsidQ2kR4pEU+8j90mX6R2qyox0Qtm0eAfg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.2","@scenarist/msw-adapter":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.2_1765132825279_0.14569838658432865","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@scenarist/nextjs-adapter","version":"0.4.3","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.3","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"f76b72b756e12f0faf1b941336c2db5970487571","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.3.tgz","fileCount":57,"integrity":"sha512-yvITfTgEsAVmVnT/3Kh2J4kYsGN/+6wZpGodXYQRnZioQbaOg4Z/JA6ZG9gypcsvez85NoXMNGE30wWDXGZ4xA==","signatures":[{"sig":"MEUCIGa7fVgJeDSQkk1G/Ha4i+6JoV1wKhQEjciw6rKrbT6IAiEA+rI6LloylWuealIyiKMwV6DhFc8+ejl7UZkMyXx/i/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/b8a2d60d283b0c387351980b06b63d1a/scenarist-nextjs-adapter-0.4.3.tgz","_integrity":"sha512-yvITfTgEsAVmVnT/3Kh2J4kYsGN/+6wZpGodXYQRnZioQbaOg4Z/JA6ZG9gypcsvez85NoXMNGE30wWDXGZ4xA==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.3","@scenarist/msw-adapter":"0.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.0.0","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.3_1765231884727_0.7802576968462414","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@scenarist/nextjs-adapter","version":"0.4.4","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.4","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"7dc035699cd84c58a475ac21d6def6aac1df37c7","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.4.tgz","fileCount":57,"integrity":"sha512-bTO7SnQ9Sd2l/FC2TsElXUseSB59aNpZt024a5Jrzmrvjp96L/bKvwPpHvMec7siqOe3BNCxXcPs48RTmmUCJw==","signatures":[{"sig":"MEYCIQDbnncSnFuWmPIf7WTnMjVR01dAXlvjLaJfs5yKNcm3hgIhAJRtPEZYtz8Hy8swJ4ft7a6be2sar9tF2Y0WJwqtmyLl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174314},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/95207e5204205c8325b1a19a821e6259/scenarist-nextjs-adapter-0.4.4.tgz","_integrity":"sha512-bTO7SnQ9Sd2l/FC2TsElXUseSB59aNpZt024a5Jrzmrvjp96L/bKvwPpHvMec7siqOe3BNCxXcPs48RTmmUCJw==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.4","@scenarist/msw-adapter":"0.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.2.35","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.4_1765803813530_0.2298527692100618","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@scenarist/nextjs-adapter","version":"0.4.5","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.5","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"22f4dfb2b32a19d20f973a9a854540fd0b75a8a6","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.5.tgz","fileCount":57,"integrity":"sha512-Oz1TT9uMOOPYib3lZy1Lx9r79SspW2oQkZm90R5LVGyPrwdw56iVmUkE458VnNzVi9xQczog8dOcyZXptbgFJg==","signatures":[{"sig":"MEUCIQCyu/YmfGLoGXahXoVUE6Mg5FQVipUPeQyrKBv14TH71gIgdMDQ6hoD8XZlHZASNYLd+rHHkZKNaQnCVVPFfACQIbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174314},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/f79eee9a8f8ee269ff7a43c6a425ae1a/scenarist-nextjs-adapter-0.4.5.tgz","_integrity":"sha512-Oz1TT9uMOOPYib3lZy1Lx9r79SspW2oQkZm90R5LVGyPrwdw56iVmUkE458VnNzVi9xQczog8dOcyZXptbgFJg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","@scenarist/core":"0.4.5","@scenarist/msw-adapter":"0.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.3","next":"^14.2.35","eslint":"^9.39.1","vitest":"^4.0.15","typescript":"^5.9.3","@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.14","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.5_1765804608651_0.04436584188957404","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@scenarist/nextjs-adapter","version":"0.4.6","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.6","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"b51c8f19798714513ba69cd11e687cc5c2d6352a","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.6.tgz","fileCount":57,"integrity":"sha512-jBaM8FwgFD9LtaNucCjxEkAGyH53hSaHEO2C5RH0fSrJOavBJyWdXHr/+wNTki01coF98q8U5B+Gqb68gZ/gBg==","signatures":[{"sig":"MEUCIHihpFyohhj6vMQDD0HC6C5BKR+4MR5NL1+9gwwdfRA/AiEAuvRXKlyo0zAjn911RWvj7s1Zrd7Hpu87bQtJv/Nmw3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174312},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/da36c89fcbbca22f1de4648a1a94a8ed/scenarist-nextjs-adapter-0.4.6.tgz","_integrity":"sha512-jBaM8FwgFD9LtaNucCjxEkAGyH53hSaHEO2C5RH0fSrJOavBJyWdXHr/+wNTki01coF98q8U5B+Gqb68gZ/gBg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.2.1","@scenarist/core":"0.4.6","@scenarist/msw-adapter":"0.4.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.7","next":"^14.2.35","eslint":"^9.39.2","vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.6_1767111356456_0.13702036148131036","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@scenarist/nextjs-adapter","version":"0.4.7","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.7","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"20030919ec827d38cce094f5d97daeef410f9333","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.7.tgz","fileCount":57,"integrity":"sha512-+IIrr8mV1LPaDLL8T60SXeW6LhS+sA5XIg7l8xfoEuP6M5KSogM92m9j95QgMKjsRdr9WWbX0njSz7S2rJ9Dqg==","signatures":[{"sig":"MEQCID1P7E13mbNhsfEnV8ewHSxlXNSx8ou7olFdCTYmp6yyAiBV755H1bkS6+/B+2kcgeE6qy0gobZymWxgdC/4236euw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174312},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/3961fbd9136b0425502cd23200d3240d/scenarist-nextjs-adapter-0.4.7.tgz","_integrity":"sha512-+IIrr8mV1LPaDLL8T60SXeW6LhS+sA5XIg7l8xfoEuP6M5KSogM92m9j95QgMKjsRdr9WWbX0njSz7S2rJ9Dqg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.2.1","@scenarist/core":"0.4.7","@scenarist/msw-adapter":"0.4.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.7","next":"^15.5.10","eslint":"^9.39.2","vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@vitest/coverage-v8":"^4.0.16","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.7_1771018327030_0.4105127826412194","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@scenarist/nextjs-adapter","version":"0.4.8","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.8","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"8b402345c61bc1f0b33dbd5d25c6f887344aaf40","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.8.tgz","fileCount":57,"integrity":"sha512-GNpm2bRrnb+xb0YawEWQnF1Mls0TKbvV7MBVqcre58o8n7ZYojFgFv8nfFxIM0U67Oi4eFzcK5djFrkUFUXGfg==","signatures":[{"sig":"MEYCIQC4oDRrcW8j4qDGi/p4JUBBAgkKyhEzwHWA337f9YpVLwIhAPjCcxi9mD6I2jE+2uf26t1pHLRVxHsGGJWpz+9tigz3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/89dcf9a8db1953f754fb58eef51cd523/scenarist-nextjs-adapter-0.4.8.tgz","_integrity":"sha512-GNpm2bRrnb+xb0YawEWQnF1Mls0TKbvV7MBVqcre58o8n7ZYojFgFv8nfFxIM0U67Oi4eFzcK5djFrkUFUXGfg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.8","@scenarist/msw-adapter":"0.4.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.10","next":"^15.5.10","eslint":"^9.39.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.3","@vitest/coverage-v8":"^4.0.18","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.8_1771023053309_0.18339615881832327","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@scenarist/nextjs-adapter","version":"0.4.9","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.9","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"f004387143a5b75eb3c8e0fa082dbe0af7eba8a1","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.9.tgz","fileCount":57,"integrity":"sha512-ZVQurhss6BocAqzcDfFcSiWGcK427F/wV20aR/YjTfwiOmoULzPftGvUmuANMQMZICuaF7vlzQ52VjJWSmCeDg==","signatures":[{"sig":"MEUCIQD1FP6iXmI03kawjKVk8n9p9frZuRmMv1owKqWiS05cNgIgBYEPj8FyyXXi+5hy9HMgEHXE2lVR4wzLWHpWYN3xB2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174313},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.9.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/47b5e40cb9a54451c25301c71cf7dd98/scenarist-nextjs-adapter-0.4.9.tgz","_integrity":"sha512-ZVQurhss6BocAqzcDfFcSiWGcK427F/wV20aR/YjTfwiOmoULzPftGvUmuANMQMZICuaF7vlzQ52VjJWSmCeDg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.9","@scenarist/msw-adapter":"0.4.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.10","next":"^15.5.10","eslint":"^9.39.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.3","@vitest/coverage-v8":"^4.0.18","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.9_1771976755602_0.29895631539117207","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"@scenarist/nextjs-adapter","version":"0.4.10","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.10","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"0801cb8dd6eb554c369366c5c9b87a4e454d0060","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.10.tgz","fileCount":57,"integrity":"sha512-nNT8VviVU+tRzUQcbXDanxbyZeEXtWS7U6i2kau9OslfSAQDLLcl52DlkdGE/NdKjyN8KUVBoTNRFpHy5ITblQ==","signatures":[{"sig":"MEQCIDvBtWgb2ZXKpINdqxcy2FKtaCmikMBj6/UEJcRvgNpjAiAwRlVVMU5OeFjfBTMsUTG2kU/S2kh7558r1rsBjiLUWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174316},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.10.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/7025b800f77afd30045db9438ddc920d/scenarist-nextjs-adapter-0.4.10.tgz","_integrity":"sha512-nNT8VviVU+tRzUQcbXDanxbyZeEXtWS7U6i2kau9OslfSAQDLLcl52DlkdGE/NdKjyN8KUVBoTNRFpHy5ITblQ==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.10","@scenarist/msw-adapter":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.10","next":"^15.5.12","eslint":"^9.39.3","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@vitest/coverage-v8":"^4.0.18","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.10_1772015145767_0.3653969823794183","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"@scenarist/nextjs-adapter","version":"0.4.11","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.11","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"196c9aeaae8b6a15adaf88d74486d105efc3c202","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.11.tgz","fileCount":57,"integrity":"sha512-portUp9xYd1OX06+JTWKUtHujLTdxK7uMSiHg75UqL+qbs1KHKtoGWndD7qlILeQqp7+dn4K6nlDZ1zygwLzhg==","signatures":[{"sig":"MEQCIG3atmm6aGCzg26ANFpIyaMqAWr92PooouE+ocSBWzbdAiBdeseUPEFhzEC0jdBROyM608AZk39hmLVJACn5hPOXNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174314},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.11.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/954e8abd324e3343a42a2e0eb96f951c/scenarist-nextjs-adapter-0.4.11.tgz","_integrity":"sha512-portUp9xYd1OX06+JTWKUtHujLTdxK7uMSiHg75UqL+qbs1KHKtoGWndD7qlILeQqp7+dn4K6nlDZ1zygwLzhg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.11","@scenarist/msw-adapter":"0.4.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.10","next":"^15.5.14","eslint":"^9.39.4","vitest":"^4.1.2","typescript":"^5.9.3","@types/node":"^25.3.0","@vitest/coverage-v8":"^4.1.2","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.11_1775130283755_0.1594506759142671","host":"s3://npm-registry-packages-npm-production"}},"0.4.13":{"name":"@scenarist/nextjs-adapter","version":"0.4.13","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"author":{"url":"citypaul","name":"Paul Hammond","email":"paul@packsoftware.co.uk"},"license":"MIT","_id":"@scenarist/nextjs-adapter@0.4.13","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"homepage":"https://github.com/citypaul/scenarist#readme","bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"dist":{"shasum":"545652a592d4ebe7ff7263a0f7464e0d24751903","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.13.tgz","fileCount":57,"integrity":"sha512-ebl4MLtJNgMNz0u/NjDA/n82n7knRyFXmeSIMfv6scptxMxpUyeFG6oigsCvB5T8IrVT7wL5MGpuxbRykcQ6jg==","signatures":[{"sig":"MEYCIQDjFJZ5FMyxI5UYbJDWl64+b0cymkTp9hOlGVU900WGaAIhAIggiiXbn4G9WwRZluWQPBwQXvknJuRiUWWAuuq1FmUL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174324},"main":"./dist/index.js","type":"module","_from":"file:scenarist-nextjs-adapter-0.4.13.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"types":"./dist/app/index.d.ts","import":"./dist/app/index.js","production":"./dist/app/production.js"},"./pages":{"types":"./dist/pages/index.d.ts","import":"./dist/pages/index.js","production":"./dist/pages/production.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"_resolved":"/tmp/1f89d2c4ef38db374b05d7fddf79a974/scenarist-nextjs-adapter-0.4.13.tgz","_integrity":"sha512-ebl4MLtJNgMNz0u/NjDA/n82n7knRyFXmeSIMfv6scptxMxpUyeFG6oigsCvB5T8IrVT7wL5MGpuxbRykcQ6jg==","repository":{"url":"git+https://github.com/citypaul/scenarist.git","type":"git","directory":"packages/nextjs-adapter"},"_npmVersion":"11.6.4","description":"Next.js adapter for Scenarist (Pages Router and App Router)","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.13","@scenarist/msw-adapter":"0.4.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.10","next":"^16.2.6","eslint":"^9.39.4","vitest":"^4.1.5","typescript":"^5.9.3","@types/node":"^25.3.0","@vitest/coverage-v8":"^4.1.5","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0 || ^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nextjs-adapter_0.4.13_1778272724046_0.29722487674902065","host":"s3://npm-registry-packages-npm-production"}},"0.4.14":{"name":"@scenarist/nextjs-adapter","version":"0.4.14","description":"Next.js adapter for Scenarist (Pages Router and App Router)","author":{"name":"Paul Hammond","email":"paul@packsoftware.co.uk","url":"citypaul"},"license":"MIT","homepage":"https://github.com/citypaul/scenarist#readme","repository":{"type":"git","url":"git+https://github.com/citypaul/scenarist.git","directory":"packages/nextjs-adapter"},"bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./pages":{"types":"./dist/pages/index.d.ts","production":"./dist/pages/production.js","import":"./dist/pages/index.js"},"./app":{"types":"./dist/app/index.d.ts","production":"./dist/app/production.js","import":"./dist/app/index.js"}},"dependencies":{"zod":"^4.3.6","@scenarist/core":"0.4.14","@scenarist/msw-adapter":"0.4.14"},"peerDependencies":{"msw":"^2.0.0","next":"^14.0.0 || ^15.0.0 || ^16.0.0"},"devDependencies":{"@types/node":"^25.3.0","@vitest/coverage-v8":"^4.1.5","eslint":"^9.39.4","msw":"^2.12.10","next":"^16.2.6","typescript":"^5.9.3","vitest":"^4.1.5","@scenarist/eslint-config":"^0.0.0","@scenarist/typescript-config":"0.0.0"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --project tsconfig.typecheck.json --noEmit","lint":"eslint .","clean":"rm -rf dist"},"_id":"@scenarist/nextjs-adapter@0.4.14","_integrity":"sha512-lMPfOonB50zq+6Mbt03ykJ/4o7xMoGFko7IV47TtfeXsNabNypyGzTgwurU9yV9eqoawNfhB2oYNYT5Qq/MXgg==","_resolved":"/tmp/c9c2c0fd2196b105866a71b7ab98c97c/scenarist-nextjs-adapter-0.4.14.tgz","_from":"file:scenarist-nextjs-adapter-0.4.14.tgz","_nodeVersion":"22.21.1","_npmVersion":"11.6.4","dist":{"integrity":"sha512-lMPfOonB50zq+6Mbt03ykJ/4o7xMoGFko7IV47TtfeXsNabNypyGzTgwurU9yV9eqoawNfhB2oYNYT5Qq/MXgg==","shasum":"439d193ea8dac0e594d51791a8089b7d675244da","tarball":"https://registry.npmjs.org/@scenarist/nextjs-adapter/-/nextjs-adapter-0.4.14.tgz","fileCount":57,"unpackedSize":173177,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@scenarist%2fnextjs-adapter@0.4.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC+BACwHOJI9qVqipND8FnEyHa1GcoUeWGO8uxXgYRtvwIgPoS1JpGgf6srYd+guO6vrRP6/L5Wp+g4B5eD81dG+VE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:464443a8-5ad5-4079-ac82-c158d1c2df3e"}},"directories":{},"maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nextjs-adapter_0.4.14_1786811326501_0.2967289223112253"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-26T18:42:51.950Z","modified":"2026-08-15T16:28:46.966Z","0.0.1":"2025-11-26T18:42:52.211Z","0.1.0":"2025-11-26T21:25:05.696Z","0.1.1":"2025-11-27T00:56:18.658Z","0.1.2":"2025-11-27T01:43:35.920Z","0.1.3":"2025-11-27T02:09:12.583Z","0.1.4":"2025-11-27T23:03:36.488Z","0.1.5":"2025-11-27T23:37:32.366Z","0.1.6":"2025-11-28T23:13:19.420Z","0.1.7":"2025-11-28T23:52:16.707Z","0.1.8":"2025-11-29T23:49:26.051Z","0.1.9":"2025-11-30T08:39:24.108Z","0.1.10":"2025-11-30T10:22:10.645Z","0.1.11":"2025-11-30T17:05:20.216Z","0.1.12":"2025-11-30T22:28:40.013Z","0.1.13":"2025-12-01T12:05:42.240Z","0.1.14":"2025-12-01T13:58:03.797Z","0.1.15":"2025-12-01T17:07:59.230Z","0.1.16":"2025-12-01T17:36:34.057Z","0.2.0":"2025-12-02T13:28:49.232Z","0.2.1":"2025-12-02T23:44:32.208Z","0.3.0":"2025-12-03T22:20:21.987Z","0.3.1":"2025-12-04T10:25:01.400Z","0.3.2":"2025-12-04T23:37:25.470Z","0.3.3":"2025-12-05T18:48:40.079Z","0.4.0":"2025-12-06T19:49:38.437Z","0.4.1":"2025-12-07T18:11:53.884Z","0.4.2":"2025-12-07T18:40:25.459Z","0.4.3":"2025-12-08T22:11:24.876Z","0.4.4":"2025-12-15T13:03:33.709Z","0.4.5":"2025-12-15T13:16:48.807Z","0.4.6":"2025-12-30T16:15:56.685Z","0.4.7":"2026-02-13T21:32:07.179Z","0.4.8":"2026-02-13T22:50:53.456Z","0.4.9":"2026-02-24T23:45:55.827Z","0.4.10":"2026-02-25T10:25:45.897Z","0.4.11":"2026-04-02T11:44:43.928Z","0.4.13":"2026-05-08T20:38:44.183Z","0.4.14":"2026-08-15T16:28:46.643Z"},"bugs":{"url":"https://github.com/citypaul/scenarist/issues"},"author":{"name":"Paul Hammond","email":"paul@packsoftware.co.uk","url":"citypaul"},"license":"MIT","homepage":"https://github.com/citypaul/scenarist#readme","keywords":["nextjs","next","app-router","pages-router","react-server-components","msw","testing","scenario-testing","mock-service-worker","integration-testing","e2e-testing","typescript"],"repository":{"type":"git","url":"git+https://github.com/citypaul/scenarist.git","directory":"packages/nextjs-adapter"},"description":"Next.js adapter for Scenarist (Pages Router and App Router)","maintainers":[{"name":"citypaul","email":"paul.ian.hammond@gmail.com"}],"readme":"# @scenarist/nextjs-adapter\n\n[![npm version](https://img.shields.io/npm/v/@scenarist/nextjs-adapter.svg)](https://www.npmjs.com/package/@scenarist/nextjs-adapter)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nNext.js adapter for [Scenarist](https://scenarist.io) - test different backend states in your Next.js applications without restarting your dev server or maintaining multiple test environments.\n\n**🎯 Key capability: Test React Server Components with real execution.** Your Server Components, Route Handlers, and Server Actions all run exactly as they would in production - only external API calls are mocked.\n\n**Problem it solves:** Testing error scenarios, loading states, and edge cases in Next.js is painful. You either restart your app repeatedly, maintain complex mock setups per test, or run tests serially to avoid conflicts. Scenarist lets you switch between complete API scenarios instantly via HTTP calls, enabling parallel testing with isolated backend states.\n\n## What is this?\n\n**Before Scenarist:**\n\n```typescript\n// Every test has fragile per-test mocking\nbeforeEach(() => {\n  server.use(http.get(\"/api/user\", () => HttpResponse.json({ role: \"admin\" })));\n});\n// Repeat 100 times across test files, hope they don't conflict\n```\n\n**With Scenarist:**\n\n```typescript\n// Define scenario once\nconst adminScenario = {\n  id: \"admin\",\n  mocks: [\n    /* complete backend state */\n  ],\n};\n\n// Use in any test with one line\nawait setScenario(\"test-1\", \"admin\");\n// Test runs with complete \"admin\" backend state, isolated from other tests\n```\n\nThis package provides complete Next.js integration for Scenarist's scenario management system, supporting both Pages Router and App Router:\n\n- **Runtime scenario switching** via HTTP endpoints - no restarts needed\n- **Test isolation** using unique test IDs - run tests in parallel\n- **Automatic MSW integration** for request interception - no MSW setup required\n- **Zero boilerplate** - everything wired automatically with one function call\n- **Both routers supported** - Pages Router and App Router with identical functionality\n\n## Quick Navigation\n\n| I want to...                     | Go to                                                       |\n| -------------------------------- | ----------------------------------------------------------- |\n| See what problems this solves    | [What is this?](#what-is-this)                              |\n| Get started in 5 minutes         | [Quick Start (5 Minutes)](#quick-start-5-minutes)           |\n| Choose between routers           | [Pages Router vs App Router](#pages-router-vs-app-router)   |\n| Set up Pages Router              | [Pages Router Setup](#pages-router-setup)                   |\n| Set up App Router                | [App Router Setup](#app-router-setup)                       |\n| Switch scenarios in tests        | [Use in Tests](#4-use-in-tests)                             |\n| Forward headers to external APIs | [Making External API Calls](#making-external-api-calls)     |\n| Understand test isolation        | [Test ID Isolation](#test-id-isolation)                     |\n| Reduce test boilerplate          | [Common Patterns](#common-patterns)                         |\n| Debug issues                     | [Troubleshooting](#troubleshooting)                         |\n| See full API reference           | [API Reference](#api-reference)                             |\n| Learn about advanced features    | [Core Functionality Docs](../../docs/core-functionality.md) |\n\n## 📖 Documentation\n\n**Choose your router:**\n\n- **→ [App Router Getting Started](https://scenarist.io/frameworks/nextjs-app-router/getting-started)** — Server Components, Route Handlers, Server Actions\n- **→ [Pages Router Getting Started](https://scenarist.io/frameworks/nextjs-pages-router/getting-started)** — API Routes, getServerSideProps, getStaticProps\n\n| Topic                                | Link                                                                                                               |\n| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |\n| **🎯 React Server Components Guide** | [scenarist.io/frameworks/nextjs-app-router/rsc-guide](https://scenarist.io/frameworks/nextjs-app-router/rsc-guide) |\n| **Why Scenarist?**                   | [scenarist.io/getting-started/why-scenarist](https://scenarist.io/getting-started/why-scenarist)                   |\n| **Tool Comparison**                  | [scenarist.io/comparison](https://scenarist.io/comparison)                                                         |\n| **Parallel Testing**                 | [scenarist.io/testing/parallel-testing](https://scenarist.io/testing/parallel-testing)                             |\n| **Writing Scenarios**                | [scenarist.io/scenarios/basic-structure](https://scenarist.io/scenarios/basic-structure)                           |\n| **Request Matching**                 | [scenarist.io/scenarios/request-matching](https://scenarist.io/scenarios/request-matching)                         |\n| **Response Sequences**               | [scenarist.io/scenarios/response-sequences](https://scenarist.io/scenarios/response-sequences)                     |\n| **State-Aware Mocking**              | [scenarist.io/scenarios/state-aware-mocking](https://scenarist.io/scenarios/state-aware-mocking)                   |\n| **Logging & Debugging**              | [scenarist.io/reference/logging](https://scenarist.io/reference/logging)                                           |\n\n## Core Capabilities\n\nScenarist provides 20+ powerful features for scenario-based testing. All capabilities work with Next.js (both Pages Router and App Router).\n\n### Request Matching (6 capabilities)\n\n**Body matching (partial match)** - Match requests based on request body fields\n\n```typescript\n{\n  method: 'POST',\n  url: '/api/items',\n  match: { body: { itemId: 'premium-item' } },\n  response: { status: 200, body: { price: 100 } }\n}\n```\n\n**Header matching (exact match)** - Perfect for user tier testing\n\n```typescript\n{\n  method: 'GET',\n  url: '/api/data',\n  match: { headers: { 'x-user-tier': 'premium' } },\n  response: { status: 200, body: { limit: 1000 } }\n}\n```\n\n**Query parameter matching** - Different responses for filtered requests\n**Combined matching** - Combine body + headers + query (all must pass)\n**Specificity-based selection** - Most specific mock wins (no need to order carefully)\n**Fallback mocks** - Mocks without match criteria act as catch-all\n\n### Response Sequences (4 capabilities)\n\n**Single responses** - Return same response every time\n**Response sequences (ordered)** - Perfect for polling APIs\n\n```typescript\n{\n  method: 'GET',\n  url: '/api/job/:id',\n  sequence: {\n    responses: [\n      { status: 200, body: { status: 'pending' } },\n      { status: 200, body: { status: 'processing' } },\n      { status: 200, body: { status: 'complete' } }\n    ],\n    repeat: 'last'  // Stay at final response\n  }\n}\n```\n\n**Repeat modes** - `last` (stay at final), `cycle` (loop), `none` (exhaust)\n**Sequence exhaustion with fallback** - Exhausted sequences skip to next mock\n\n### Stateful Mocks (6 capabilities)\n\n**State capture from requests** - Extract values from body/headers/query\n**State injection via templates** - Inject captured state using `{{state.X}}`\n\n```typescript\n// Capture from POST\n{\n  method: 'POST',\n  url: '/api/cart/items',\n  captureState: { 'cartItems[]': 'body.item' },  // Append to array\n  response: { status: 200 }\n}\n\n// Inject into GET response\n{\n  method: 'GET',\n  url: '/api/cart',\n  response: {\n    status: 200,\n    body: {\n      items: '{{state.cartItems}}',\n      count: '{{state.cartItems.length}}'\n    }\n  }\n}\n```\n\n**Array append support** - Syntax: `stateKey[]` appends to array\n**Nested state paths** - Support dot notation: `user.profile.name`\n**State isolation per test ID** - Each test ID has isolated state\n**State reset on scenario switch** - Fresh state for each scenario\n\n### Core Features (4 capabilities)\n\n**Multiple API mocking** - Mock any number of external APIs in one scenario\n**Automatic default fallback** - Active scenarios inherit mocks from default, override via specificity\n**Test ID isolation** - Run 100+ tests concurrently without conflicts\n**Runtime scenario switching** - Change backend state with one API call\n\n### Additional Features\n\n**Path parameters** (`/users/:id`), **Wildcard URLs** (`*/api/*`), **Response delays**, **Custom headers**, **Strict mode** (fail on unmocked requests)\n\n**Want to learn more?** See [Core Functionality Documentation](../../docs/core-functionality.md) for detailed explanations and examples.\n\n## Common Use Cases\n\n### Testing Error Scenarios\n\nTest how your UI handles API errors without maintaining separate error mocks per test:\n\n```typescript\n// Define once\nconst errorScenario = {\n  id: \"api-error\",\n  name: \"API Error\",\n  mocks: [{ method: \"GET\", url: \"*/api/*\", response: { status: 500 } }],\n};\n\n// Use in many tests\nawait setScenario(\"test-1\", \"api-error\");\n// All API calls return 500 for this test\n```\n\n### Testing Loading States\n\nTest slow API responses without actual network delays:\n\n```typescript\nconst slowScenario = {\n  id: \"slow-api\",\n  name: \"Slow API\",\n  mocks: [\n    {\n      method: \"GET\",\n      url: \"*/api/data\",\n      response: { status: 200, body: { data: [] }, delay: 3000 }, // 3s delay\n    },\n  ],\n};\n\n// Perfect for testing loading spinners and skeleton screens\n```\n\n### Testing User Tiers\n\nTest different user permission levels by switching scenarios:\n\n```typescript\nconst freeUserScenario = {\n  id: \"free\",\n  mocks: [\n    /* limited features */\n  ],\n};\nconst premiumUserScenario = {\n  id: \"premium\",\n  mocks: [\n    /* all features */\n  ],\n};\n\n// Test switches scenarios mid-suite - no app restart needed\ntest(\"free user sees upgrade prompt\", async () => {\n  await setScenario(\"test-1\", \"free\");\n  // ... test free tier behavior\n});\n\ntest(\"premium user sees all features\", async () => {\n  await setScenario(\"test-2\", \"premium\");\n  // ... test premium tier behavior\n});\n```\n\n### Parallel Test Execution\n\nRun tests concurrently with different backend states - no conflicts:\n\n```typescript\n// Test 1: Uses 'success' scenario with test-id-1\n// Test 2: Uses 'error' scenario with test-id-2\n// Test 3: Uses 'slow' scenario with test-id-3\n// All running in parallel, completely isolated via test IDs\n```\n\n**Want to see these in action?** Jump to [Quick Start (5 Minutes)](#quick-start-5-minutes).\n\n## Installation\n\n```bash\n# npm\nnpm install --save-dev @scenarist/nextjs-adapter msw\n\n# pnpm\npnpm add -D @scenarist/nextjs-adapter msw\n\n# yarn\nyarn add -D @scenarist/nextjs-adapter msw\n```\n\n**Note:** All Scenarist types (`ScenaristScenario`, `ScenaristMock`, etc.) are re-exported from `@scenarist/nextjs-adapter` for convenience. You don't need to install `@scenarist/core` or `@scenarist/msw-adapter` separately - they're already included as dependencies.\n\n**Peer Dependencies:**\n\n- `next` ^14.0.0 || ^15.0.0\n- `msw` ^2.0.0\n\n## Quick Start (5 Minutes)\n\n**Goal:** Switch between success and error scenarios in your tests.\n\n### 1. Define Scenarios\n\n```typescript\n// lib/scenarios.ts\nimport type {\n  ScenaristScenario,\n  ScenaristScenarios,\n} from \"@scenarist/nextjs-adapter\";\n\nexport const defaultScenario: ScenaristScenario = {\n  id: \"default\",\n  name: \"Default\",\n  mocks: [\n    {\n      method: \"GET\",\n      url: \"https://api.example.com/user\",\n      response: { status: 200, body: { name: \"Default User\", role: \"user\" } },\n    },\n  ],\n};\n\nexport const successScenario: ScenaristScenario = {\n  id: \"success\",\n  name: \"API Success\",\n  mocks: [\n    {\n      method: \"GET\",\n      url: \"https://api.example.com/user\",\n      response: { status: 200, body: { name: \"Alice\", role: \"user\" } },\n    },\n  ],\n};\n\nexport const scenarios = {\n  default: defaultScenario,\n  success: successScenario,\n} as const satisfies ScenaristScenarios;\n```\n\n### 2. Create Scenarist Instance\n\n```typescript\n// lib/scenarist.ts\nimport { createScenarist } from \"@scenarist/nextjs-adapter/pages\"; // or /app\nimport { scenarios } from \"./scenarios\";\n\nexport const scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios, // All scenarios registered upfront\n});\n\n// Start MSW in Node.js environment\nif (typeof window === \"undefined\" && scenarist) {\n  scenarist.start();\n}\n```\n\n> **CRITICAL: Singleton Pattern Required**\n>\n> **You MUST use `export const scenarist = createScenarist(...)` as shown above.** Do NOT wrap `createScenarist()` in a function:\n>\n> ```typescript\n> // ❌ WRONG - Creates new instance each time\n> export function getScenarist() {\n>   return createScenarist({ enabled: true, scenarios });\n> }\n>\n> // ✅ CORRECT - Single exported constant\n> export const scenarist = createScenarist({ enabled: true, scenarios });\n> ```\n>\n> **Why:** Next.js has a [well-documented singleton problem](https://github.com/vercel/next.js/discussions/68572) where webpack bundles modules multiple times across different chunks, breaking the classic JavaScript singleton pattern. This is compounded by [MSW's process model challenges with Next.js](https://github.com/mswjs/msw/issues/1644)—Next.js keeps multiple Node.js processes that make global module patches difficult to maintain.\n>\n> **Symptoms of this problem:**\n>\n> - `[MSW] Multiple handlers with the same URL pattern` warnings\n> - Intermittent 500 errors during tests\n> - Scenarios not switching properly\n> - Different tests getting wrong scenario responses\n>\n> **How Scenarist solves this:** The `createScenarist()` function includes built-in singleton protection using `globalThis` guards, ensuring only ONE MSW instance exists even when Next.js duplicates your module. This protection **only works if you export a constant**—wrapping in a function bypasses the singleton guard.\n\n### 3. Create Scenario Endpoint\n\n**Pages Router:** Create `pages/api/__scenario__.ts`:\n\n```typescript\nimport { scenarist } from \"@/lib/scenarist\";\n\n// In production, scenarist is undefined due to conditional exports\n// When the default export is undefined, Next.js treats the route as non-existent\nexport default scenarist?.createScenarioEndpoint();\n```\n\n**App Router:** Create `app/api/%5F%5Fscenario%5F%5F/route.ts`:\n\n> **Why the URL encoding?** Next.js App Router treats folders starting with `_` (underscore) as private folders that are excluded from routing. To create a URL route `/api/__scenario__`, we use `%5F` (URL-encoded underscore). This creates the actual endpoint at `http://localhost:3000/api/__scenario__`.\n\n```typescript\nimport { scenarist } from \"@/lib/scenarist\";\n\n// In production, scenarist is undefined due to conditional exports\n// When exports are undefined, Next.js treats the route as non-existent\nconst handler = scenarist?.createScenarioEndpoint();\n\nexport const POST = handler;\nexport const GET = handler;\n```\n\n### 4. Use in Tests\n\n```typescript\nimport { scenarist } from \"@/lib/scenarist\";\n\nbeforeAll(() => scenarist.start()); // Start MSW server\nafterAll(() => scenarist.stop()); // Stop MSW server\n\nit(\"fetches user successfully\", async () => {\n  // Set scenario for this test\n  await fetch(\"http://localhost:3000/__scenario__\", {\n    method: \"POST\",\n    headers: {\n      \"x-scenarist-test-id\": \"test-1\",\n      \"content-type\": \"application/json\",\n    },\n    body: JSON.stringify({ scenario: \"success\" }),\n  });\n\n  // Make request - MSW intercepts automatically\n  const response = await fetch(\"http://localhost:3000/api/user\", {\n    headers: { \"x-scenarist-test-id\": \"test-1\" },\n  });\n\n  expect(response.status).toBe(200);\n  const user = await response.json();\n  expect(user.name).toBe(\"Alice\");\n});\n```\n\n**That's it!** You've got runtime scenario switching.\n\n**Next steps:**\n\n- [Add more scenarios](#pages-router-setup) for different backend states\n- [Use test helpers](#pattern-1-test-helpers) to reduce boilerplate\n- [Learn about test isolation](#test-id-isolation) for parallel tests\n- [See advanced features](../../docs/core-functionality.md#dynamic-response-system) like request matching and sequences\n\n---\n\n## Pages Router vs App Router\n\n| Aspect                 | Pages Router                                        | App Router                                                                                                               |\n| ---------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| **Import Path**        | `@scenarist/nextjs-adapter/pages`                   | `@scenarist/nextjs-adapter/app`                                                                                          |\n| **Setup File**         | `pages/api/__scenario__.ts`                         | `app/api/%5F%5Fscenario%5F%5F/route.ts` \\*                                                                               |\n| **Scenario Endpoint**  | `export default scenarist.createScenarioEndpoint()` | `const handler = scenarist.createScenarioEndpoint();`<br>`export const POST = handler;`<br>`export const GET = handler;` |\n| **Core Functionality** | ✅ Same scenarios, same behavior                    | ✅ Same scenarios, same behavior                                                                                         |\n\n\\* App Router uses `%5F%5Fscenario%5F%5F` (URL-encoded) because folders starting with `_` are treated as private folders in Next.js App Router. See [App Router Setup](#app-router-setup) for details.\n\n**Key Insight:** Choose based on your Next.js version - all Scenarist features work identically in both routers.\n\n**Detailed setup guides:**\n\n- **[Pages Router Setup](#pages-router-setup)** - Full walkthrough for Pages Router\n- **[App Router Setup](#app-router-setup)** - Full walkthrough for App Router\n\n---\n\n## Pages Router Setup\n\n### 1. Define Scenarios\n\n```typescript\n// lib/scenarios/default.ts\nimport type { ScenaristScenario } from \"@scenarist/nextjs-adapter/pages\";\n\nexport const defaultScenario: ScenaristScenario = {\n  id: \"default\",\n  name: \"Default Scenario\",\n  description: \"Baseline responses for all APIs\",\n  mocks: [\n    {\n      method: \"GET\",\n      url: \"https://api.example.com/user\",\n      response: {\n        status: 200,\n        body: {\n          id: \"000\",\n          name: \"Default User\",\n          role: \"user\",\n        },\n      },\n    },\n  ],\n};\n\n// lib/scenarios/admin-user.ts\nexport const adminUserScenario: ScenaristScenario = {\n  id: \"admin-user\",\n  name: \"Admin User\",\n  description: \"User with admin privileges\",\n  mocks: [\n    {\n      method: \"GET\",\n      url: \"https://api.example.com/user\",\n      response: {\n        status: 200,\n        body: {\n          id: \"123\",\n          name: \"Admin User\",\n          role: \"admin\",\n        },\n      },\n    },\n  ],\n};\n```\n\n### 2. Create Scenarist Instance\n\n```typescript\n// lib/scenarist.ts\nimport { createScenarist } from \"@scenarist/nextjs-adapter/pages\";\nimport { scenarios } from \"./scenarios\";\n\nexport const scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios, // All scenarios registered upfront\n  strictMode: false, // Allow unmocked requests to pass through to real APIs\n});\n\n// Start MSW in Node.js environment\nif (typeof window === \"undefined\" && scenarist) {\n  scenarist.start();\n}\n```\n\n### 3. Create Scenario Endpoint\n\n```typescript\n// pages/api/__scenario__.ts\nimport { scenarist } from \"../../lib/scenarist\";\n\n// In production, scenarist is undefined due to conditional exports\n// When the default export is undefined, Next.js treats the route as non-existent\nexport default scenarist?.createScenarioEndpoint();\n```\n\nThis single line creates a Next.js API route that handles both GET and POST requests for scenario management.\n\n### 4. Use in Tests\n\n```typescript\n// tests/api.test.ts\nimport { describe, it, expect, beforeAll, afterAll } from \"vitest\";\nimport { scenarist } from \"../lib/scenarist\";\n\ndescribe(\"User API\", () => {\n  beforeAll(() => scenarist.start());\n  afterAll(() => scenarist.stop());\n\n  it(\"should return admin user\", async () => {\n    // Set scenario for this test\n    await fetch(\"http://localhost:3000/__scenario__\", {\n      method: \"POST\",\n      headers: {\n        \"x-scenarist-test-id\": \"admin-test\",\n        \"content-type\": \"application/json\",\n      },\n      body: JSON.stringify({ scenario: \"admin-user\" }),\n    });\n\n    // Make request - MSW intercepts automatically\n    const response = await fetch(\"http://localhost:3000/api/user\", {\n      headers: { \"x-scenarist-test-id\": \"admin-test\" },\n    });\n\n    const user = await response.json();\n    expect(user.role).toBe(\"admin\");\n  });\n});\n```\n\n---\n\n## App Router Setup\n\n### 1. Define Scenarios\n\nSame as Pages Router - see [Define Scenarios](#1-define-scenarios) above.\n\n### 2. Create Scenarist Instance\n\n```typescript\n// lib/scenarist.ts\nimport { createScenarist } from \"@scenarist/nextjs-adapter/app\";\nimport { scenarios } from \"./scenarios\";\n\nexport const scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios, // All scenarios registered upfront\n  strictMode: false, // Allow unmocked requests to pass through to real APIs\n});\n\n// Start MSW in Node.js environment\nif (typeof window === \"undefined\" && scenarist) {\n  scenarist.start();\n}\n```\n\n### 3. Create Scenario Route Handlers\n\n```typescript\n// app/api/%5F%5Fscenario%5F%5F/route.ts\nimport { scenarist } from \"@/lib/scenarist\";\n\n// In production, scenarist is undefined due to conditional exports\n// When exports are undefined, Next.js treats the route as non-existent\nconst handler = scenarist?.createScenarioEndpoint();\n\nexport const POST = handler;\nexport const GET = handler;\n```\n\nThe App Router uses Web standard Request/Response API and requires explicit exports for each HTTP method.\n\n### 4. Use in Tests\n\nSame as Pages Router - see [Use in Tests](#4-use-in-tests) above. The scenario endpoint works identically.\n\n---\n\n## API Reference\n\n### `createScenarist(options)`\n\nCreates a Scenarist instance with everything wired automatically.\n\n**Import:**\n\n```typescript\n// Pages Router\nimport { createScenarist } from \"@scenarist/nextjs-adapter/pages\";\n\n// App Router\nimport { createScenarist } from \"@scenarist/nextjs-adapter/app\";\n```\n\n**Parameters:**\n\n```typescript\ntype AdapterOptions<T extends ScenaristScenarios> = {\n  enabled: boolean; // Whether mocking is enabled\n  scenarios: T; // REQUIRED - scenarios object (all scenarios registered upfront)\n  strictMode?: boolean; // Return 501 for unmocked requests (default: false)\n  headers?: {\n    testId?: string; // Header for test ID (default: 'x-scenarist-test-id')\n  };\n  defaultTestId?: string; // Default test ID (default: 'default-test')\n  registry?: ScenarioRegistry; // Custom registry (default: InMemoryScenarioRegistry)\n  store?: ScenarioStore; // Custom store (default: InMemoryScenarioStore)\n  stateManager?: StateManager; // Custom state manager (default: InMemoryStateManager)\n  sequenceTracker?: SequenceTracker; // Custom sequence tracker (default: InMemorySequenceTracker)\n};\n```\n\n**Returns:**\n\n```typescript\ntype Scenarist<T extends ScenaristScenarios> = {\n  config: ScenaristConfig; // Resolved configuration (headers, etc.)\n  createScenarioEndpoint: () => Handler; // Creates scenario endpoint handler\n  switchScenario: (\n    testId: string,\n    scenarioId: ScenarioIds<T>,\n    variant?: string,\n  ) => ScenaristResult<void, Error>;\n  getActiveScenario: (testId: string) => ActiveScenario | undefined;\n  getScenarioById: (\n    scenarioId: ScenarioIds<T>,\n  ) => ScenaristScenario | undefined;\n  listScenarios: () => ReadonlyArray<ScenaristScenario>;\n  clearScenario: (testId: string) => void;\n  start: () => void; // Start MSW server\n  stop: () => Promise<void>; // Stop MSW server\n};\n```\n\n**Key Difference from Express Adapter:**\n\nUnlike Express, Next.js doesn't have global middleware. Instead, you manually create the scenario endpoint using `createScenarioEndpoint()`:\n\n```typescript\n// Pages Router - single default export\nexport default scenarist.createScenarioEndpoint();\n\n// App Router - explicit method exports\nconst handler = scenarist.createScenarioEndpoint();\nexport const POST = handler;\nexport const GET = handler;\n```\n\n### Scenario Endpoints\n\nThe endpoint handler exposes these operations:\n\n#### `POST /__scenario__` - Set Active Scenario\n\n**Request:**\n\n```typescript\n{\n  scenario: string;      // Scenario ID (required)\n  variant?: string;      // Variant name (optional)\n}\n```\n\n**Response (200):**\n\n```typescript\n{\n  success: true;\n  testId: string;\n  scenarioId: string;\n  variant?: string;\n}\n```\n\n**Example:**\n\n```typescript\nawait fetch(\"http://localhost:3000/__scenario__\", {\n  method: \"POST\",\n  headers: {\n    \"x-scenarist-test-id\": \"test-123\",\n    \"content-type\": \"application/json\",\n  },\n  body: JSON.stringify({ scenario: \"user-logged-in\" }),\n});\n```\n\n#### `GET /__scenario__` - Get Active Scenario\n\n**Response (200):**\n\n```typescript\n{\n  testId: string;\n  scenarioId: string;\n  scenarioName?: string;\n}\n```\n\n**Response (404) - No Active Scenario:**\n\n```typescript\n{\n  error: \"No active scenario for this test ID\";\n  testId: string;\n}\n```\n\n**Example:**\n\n```typescript\nconst response = await fetch(\"http://localhost:3000/__scenario__\", {\n  headers: { \"x-scenarist-test-id\": \"test-123\" },\n});\n\nconst data = await response.json();\nconsole.log(data.scenarioId); // 'user-logged-in'\n```\n\n#### `GET /__scenarist__/state` - Debug State Endpoint\n\nInspect the current test state for debugging. Useful when testing multi-stage flows with `afterResponse.setState`.\n\n**Response (200):**\n\n```typescript\n{\n  testId: string;\n  state: Record<string, unknown>; // Current test state\n}\n```\n\n**Example:**\n\n```typescript\nconst response = await fetch(\"http://localhost:3000/__scenarist__/state\", {\n  headers: { \"x-scenarist-test-id\": \"test-123\" },\n});\n\nconst data = await response.json();\nconsole.log(data.state); // { submitted: true, phase: \"review\" }\n```\n\n**Creating the debug endpoint:**\n\n**Pages Router:**\n\n```typescript\n// pages/api/__scenarist__/state.ts\nimport { scenarist } from \"@/lib/scenarist\";\n\nexport default scenarist?.createStateEndpoint();\n```\n\n**App Router:**\n\n```typescript\n// app/api/%5F%5Fscenarist%5F%5F/state/route.ts\nimport { scenarist } from \"@/lib/scenarist\";\n\nconst handler = scenarist?.createStateEndpoint();\nexport const GET = handler;\n```\n\n**When to use:**\n\n- Debugging failing tests with state-aware mocking\n- Verifying `afterResponse.setState` mutations\n- Testing conditional `afterResponse` behavior (see [ADR-0020](../../docs/adrs/0020-conditional-afterresponse.md))\n\n## Core Concepts\n\nScenarist's core functionality is framework-agnostic. For deep understanding of these concepts (request matching, sequences, stateful mocks), see **[Core Functionality Documentation](../../docs/core-functionality.md)**.\n\n**Quick reference for Next.js:**\n\n### Test ID Isolation\n\nEach request includes an `x-scenarist-test-id` header for parallel test isolation:\n\n```typescript\n// Test 1\nheaders: { 'x-scenarist-test-id': 'test-1' } // Uses scenario A\n\n// Test 2 (parallel!)\nheaders: { 'x-scenarist-test-id': 'test-2' } // Uses scenario B\n```\n\nEach test ID has completely isolated:\n\n- Active scenario selection\n- Sequence positions (for polling scenarios)\n- Captured state (for stateful mocks)\n\n**Learn more:** [Test Isolation in Core Docs](../../docs/core-functionality.md#test-isolation)\n\n### Making External API Calls\n\n**IMPORTANT:** When your API routes call external APIs (or services mocked by Scenarist), you must forward Scenarist headers so MSW can intercept with the correct scenario.\n\n**Why Next.js needs this:** Unlike Express (which uses AsyncLocalStorage middleware), Next.js API routes have no middleware layer to automatically propagate test IDs. You must manually forward the headers.\n\nUse the safe helper functions provided by the adapter:\n\n**Pages Router:**\n\n```typescript\n// pages/api/products.ts\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport { getScenaristHeaders } from \"@scenarist/nextjs-adapter/pages\";\n\nexport default async function handler(\n  req: NextApiRequest,\n  res: NextApiResponse,\n) {\n  // Fetch from external API with Scenarist headers forwarded\n  const response = await fetch(\"http://external-api.com/products\", {\n    headers: {\n      ...getScenaristHeaders(req), // ✅ Scenarist infrastructure headers\n      \"content-type\": \"application/json\", // ✅ Your application headers\n      \"x-user-tier\": req.headers[\"x-user-tier\"], // ✅ Other app-specific headers\n    },\n  });\n\n  const data = await response.json();\n  res.json(data);\n}\n```\n\n**App Router Route Handlers:**\n\n```typescript\n// app/api/products/route.ts\nimport { getScenaristHeaders } from \"@scenarist/nextjs-adapter/app\";\n\nexport async function GET(request: Request) {\n  const response = await fetch(\"http://external-api.com/products\", {\n    headers: {\n      ...getScenaristHeaders(request),\n      \"content-type\": \"application/json\",\n    },\n  });\n\n  const data = await response.json();\n  return Response.json(data);\n}\n```\n\n**App Router Server Components:**\n\n```typescript\n// app/products/page.tsx\nimport { headers } from 'next/headers';\nimport { getScenaristHeadersFromReadonlyHeaders } from '@scenarist/nextjs-adapter/app';\n\nexport default async function ProductsPage() {\n  // Server Components use headers() which returns ReadonlyHeaders, not Request\n  const headersList = await headers();\n\n  const response = await fetch('http://external-api.com/products', {\n    headers: {\n      ...getScenaristHeadersFromReadonlyHeaders(headersList),  // ✅ For ReadonlyHeaders\n      'content-type': 'application/json',\n    },\n  });\n\n  const data = await response.json();\n  return <ProductList products={data.products} />;\n}\n```\n\n**What these helpers do:**\n\n- Extract test ID from request headers (`x-scenarist-test-id` by default)\n- Respect your configured `testIdHeaderName` and `defaultTestId`\n- Return object with Scenarist headers ready to spread\n- Safe to use in production (return empty object when scenarist is undefined)\n\n**When to use which helper:**\n\n- **`getScenaristHeaders(request | req)`** - Route Handlers (Request object) or Pages Router API routes (NextApiRequest)\n- **`getScenaristHeadersFromReadonlyHeaders(headersList)`** - App Router Server Components (ReadonlyHeaders from `headers()`)\n\n**Key Distinction:**\n\n- **Scenarist headers** (`x-scenarist-test-id`) - Infrastructure for test isolation\n- **Application headers** (`x-user-tier`, `content-type`) - Your app's business logic\n\nOnly Scenarist headers need forwarding via helper functions. Your application headers are independent.\n\n**For architectural rationale, see:** [ADR-0007: Framework-Specific Header Forwarding](../../docs/adrs/0007-framework-specific-header-helpers.md)\n\n### Automatic MSW Integration\n\n`createScenarist()` automatically wires MSW for request interception. You never see MSW code directly.\n\n**What it does:**\n\n1. Creates MSW server with dynamic handler\n2. Extracts test ID from request headers\n3. Looks up active scenario for that test ID\n4. Returns mocked responses based on scenario\n\n**Next.js-specific details:**\n\n- Pages Router: Uses Next.js API routes\n- App Router: Uses Web standard Request/Response\n- Both: Full test ID isolation via headers\n\n### Default Scenario Fallback\n\nActive scenario mocks take precedence; unmocked endpoints fall back to default scenario:\n\n```typescript\n// Default covers all endpoints\nconst defaultScenario = {\n  id: \"default\",\n  mocks: [\n    { method: \"GET\", url: \"*/api/users\", response: { status: 200, body: [] } },\n    { method: \"GET\", url: \"*/api/orders\", response: { status: 200, body: [] } },\n  ],\n};\n\n// Test scenario overrides only specific endpoints\nconst errorScenario = {\n  id: \"error\",\n  mocks: [\n    { method: \"GET\", url: \"*/api/users\", response: { status: 500 } },\n    // Orders uses default scenario\n  ],\n};\n```\n\n**Learn more:** [Fallback Behavior in Core Docs](../../docs/core-functionality.md#fallback-behavior)\n\n## Type-Safe Scenario IDs\n\nTypeScript automatically infers scenario names from your scenarios object, providing autocomplete and compile-time safety.\n\n### How It Works\n\n```typescript\n// lib/scenarios.ts\nimport type {\n  ScenaristScenario,\n  ScenaristScenarios,\n} from \"@scenarist/nextjs-adapter/pages\";\n\nexport const scenarios = {\n  default: { id: \"default\", name: \"Default\", mocks: [] },\n  success: { id: \"success\", name: \"Success\", mocks: [] },\n  error: { id: \"error\", name: \"Error\", mocks: [] },\n  timeout: { id: \"timeout\", name: \"Timeout\", mocks: [] },\n} as const satisfies ScenaristScenarios;\n\n// lib/scenarist.ts\nimport { createScenarist } from \"@scenarist/nextjs-adapter/pages\";\nimport { scenarios } from \"./scenarios\";\n\nexport const scenarist = createScenarist({\n  enabled: true,\n  scenarios, // ✅ Autocomplete + type-checked!\n});\n```\n\n### Type Safety Benefits\n\n```typescript\n// ✅ Valid - TypeScript knows about these scenario IDs\nscenarist.switchScenario(\"test-123\", \"success\");\nscenarist.switchScenario(\"test-123\", \"error\");\nscenarist.switchScenario(\"test-123\", \"timeout\");\n\n// ❌ TypeScript error - 'invalid-name' is not a valid scenario ID\nscenarist.switchScenario(\"test-123\", \"invalid-name\");\n//                                    ^^^^^^^^^^^^^^\n// Argument of type '\"invalid-name\"' is not assignable to parameter of type\n// '\"default\" | \"success\" | \"error\" | \"timeout\"'\n```\n\n### In Tests\n\n```typescript\n// tests.ts\nimport { scenarios } from \"./scenarios\";\n\n// ✅ Type-safe scenario switching\nawait fetch(\"http://localhost:3000/__scenario__\", {\n  method: \"POST\",\n  headers: {\n    \"x-scenarist-test-id\": \"test-1\",\n    \"content-type\": \"application/json\",\n  },\n  body: JSON.stringify({ scenario: \"success\" }), // ✅ Autocomplete works!\n});\n\n// Or reference by object key for refactor-safety\nawait fetch(\"http://localhost:3000/__scenario__\", {\n  method: \"POST\",\n  headers: {\n    \"x-scenarist-test-id\": \"test-1\",\n    \"content-type\": \"application/json\",\n  },\n  body: JSON.stringify({ scenario: scenarios.success.id }), // ✅ Even safer!\n});\n```\n\n**What you get:**\n\n- ✅ IDE autocomplete for all scenario names\n- ✅ Compile-time errors for typos (catch bugs before runtime)\n- ✅ Refactor-safe (rename scenarios and all usages update)\n- ✅ Self-documenting code (see all available scenarios in one place)\n- ✅ Single source of truth (scenarios object defines everything)\n\n## Common Patterns\n\n### Pattern 1: Test Helpers\n\nCreate helper functions to reduce boilerplate:\n\n```typescript\n// tests/helpers.ts\nconst API_BASE = \"http://localhost:3000\";\n\nexport const setScenario = async (\n  testId: string,\n  scenario: string,\n  variant?: string,\n) => {\n  await fetch(`${API_BASE}/__scenario__`, {\n    method: \"POST\",\n    headers: {\n      \"x-scenarist-test-id\": testId,\n      \"content-type\": \"application/json\",\n    },\n    body: JSON.stringify({ scenario, variant }),\n  });\n};\n\nexport const makeRequest = (\n  testId: string,\n  path: string,\n  options?: RequestInit,\n) => {\n  return fetch(`${API_BASE}${path}`, {\n    ...options,\n    headers: {\n      ...options?.headers,\n      \"x-scenarist-test-id\": testId,\n    },\n  });\n};\n```\n\n**Usage:**\n\n```typescript\nimport { setScenario, makeRequest } from \"./helpers\";\n\ntest(\"payment flow\", async () => {\n  const testId = \"payment-test\";\n  await setScenario(testId, \"payment-success\");\n\n  const response = await makeRequest(testId, \"/api/charge\", { method: \"POST\" });\n  expect(response.status).toBe(200);\n});\n```\n\n### Pattern 2: Unique Test IDs\n\nGenerate unique test IDs automatically using a factory function:\n\n```typescript\nimport { randomUUID } from \"crypto\";\n\ndescribe(\"API Tests\", () => {\n  // Factory function - no shared mutable state\n  const createTestId = () => randomUUID();\n\n  it(\"should process payment\", async () => {\n    const testId = createTestId(); // Fresh ID per test\n\n    await setScenario(testId, \"payment-success\");\n    const response = await makeRequest(testId, \"/api/charge\", {\n      method: \"POST\",\n    });\n    expect(response.status).toBe(200);\n  });\n\n  it(\"should handle payment decline\", async () => {\n    const testId = createTestId(); // Independent state\n\n    await setScenario(testId, \"payment-declined\");\n    const response = await makeRequest(testId, \"/api/charge\", {\n      method: \"POST\",\n    });\n    expect(response.status).toBe(402);\n  });\n});\n```\n\n### Pattern 3: Development Workflows\n\n**⚠️ Security Warning:** Only enable scenario endpoints in development/test environments, **NEVER in production**.\n\n**Why?** The `/__scenario__` endpoint allows arbitrary mock switching, which could be exploited in production to bypass security, fake data, or cause unexpected behavior.\n\n**Safe configuration:**\n\n```typescript\n// lib/scenarist.ts\n// ✅ CORRECT - Only enabled in safe environments\nconst scenarist = createScenarist({\n  enabled:\n    process.env.NODE_ENV === \"development\" || process.env.NODE_ENV === \"test\",\n  scenarios,\n  strictMode: false,\n});\n\n// ❌ WRONG - Dangerous in production\nconst scenarist = createScenarist({\n  enabled: true, // Always on, including production!\n  scenarios,\n});\n```\n\n**Production checklist:**\n\n- ✅ `enabled` is conditional (never hardcoded `true`)\n- ✅ Environment checks use `process.env.NODE_ENV`\n- ✅ `/__scenario__` endpoints not exposed in production builds\n\n**During development**, manually switch scenarios with curl:\n\n```bash\n# Switch to error scenario\ncurl -X POST http://localhost:3000/__scenario__ \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"scenario\": \"payment-declined\"}'\n\n# Check active scenario\ncurl http://localhost:3000/__scenario__\n```\n\n## Configuration\n\n### Environment-Specific\n\n```typescript\n// Test-only\nconst scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios,\n  strictMode: true, // Fail if any unmocked request\n});\n\n// Development and test\nconst scenarist = createScenarist({\n  enabled:\n    process.env.NODE_ENV === \"test\" || process.env.NODE_ENV === \"development\",\n  scenarios,\n  strictMode: false, // Allow passthrough to real APIs\n});\n\n// Opt-in with environment variable\nconst scenarist = createScenarist({\n  enabled: process.env.ENABLE_MOCKING === \"true\",\n  scenarios,\n  strictMode: false,\n});\n```\n\n### strictMode Option\n\nControls behavior when no mock matches a request.\n\n**`strictMode: false` (recommended for development):**\n\n- Unmocked requests pass through to real APIs\n- Useful when only mocking specific endpoints\n- Default scenario provides fallback for common endpoints\n- Best for development where you want partial mocking\n\n**`strictMode: true` (recommended for tests):**\n\n- Unmocked requests return 501 Not Implemented\n- Ensures tests don't accidentally hit real APIs\n- Catches missing mocks early in test development\n- Best for test isolation and reproducibility\n\n**Example:**\n\n```typescript\n// Development: Only mock failing endpoints, let others pass through\nconst minimalScenarios = {\n  default: minimalScenario, // Only critical mocks\n} as const satisfies ScenaristScenarios;\n\nconst scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"development\",\n  scenarios: minimalScenarios,\n  strictMode: false, // Let unmocked APIs pass through to real services\n});\n\n// Testing: Ensure complete isolation\nconst testScenarios = {\n  default: completeScenario, // Mock all endpoints\n} as const satisfies ScenaristScenarios;\n\nconst scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios: testScenarios,\n  strictMode: true, // Fail loudly if any endpoint isn't mocked\n});\n```\n\n**When strictMode is true:**\n\n- Request for mocked endpoint → Returns defined mock response ✅\n- Request for unmocked endpoint → Returns 501 Not Implemented ❌\n- Easy to spot missing mocks during test development\n\n**When strictMode is false:**\n\n- Request for mocked endpoint → Returns defined mock response ✅\n- Request for unmocked endpoint → Passes through to real API 🌐\n- Useful for incremental mocking in development\n\n### Custom Headers\n\n```typescript\nconst scenarist = createScenarist({\n  enabled: true,\n  scenarios,\n  headers: {\n    testId: \"x-my-test-id\",\n  },\n});\n```\n\n## Logging & Debugging\n\nScenarist includes a flexible logging system for debugging scenario matching, state management, and request handling. Logging is **disabled by default** and must be explicitly enabled. For comprehensive documentation including log categories, custom loggers, and Vitest configuration, see the [full logging guide](https://scenarist.io/reference/logging).\n\n### Quick Start\n\n```typescript\n// App Router\nimport {\n  createScenarist,\n  createConsoleLogger,\n} from \"@scenarist/nextjs-adapter/app\";\n\n// Pages Router\nimport {\n  createScenarist,\n  createConsoleLogger,\n} from \"@scenarist/nextjs-adapter/pages\";\n\nexport const scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios,\n\n  // Enable logging with pretty format\n  logger: createConsoleLogger({ level: \"info\", format: \"pretty\" }),\n});\n```\n\n### Environment Variable Pattern\n\nFor easy toggling without code changes:\n\n```typescript\nimport {\n  createScenarist,\n  createConsoleLogger,\n  noOpLogger,\n  type LogLevel,\n  type LogFormat,\n} from \"@scenarist/nextjs-adapter/app\";\n\n// Type-safe environment variable parsing\nconst LOG_LEVELS: ReadonlyArray<Exclude<LogLevel, \"silent\">> = [\n  \"error\",\n  \"warn\",\n  \"info\",\n  \"debug\",\n  \"trace\",\n];\nconst LOG_FORMATS: ReadonlyArray<LogFormat> = [\"pretty\", \"json\"];\n\nconst parseLogLevel = (\n  value: string | undefined,\n): Exclude<LogLevel, \"silent\"> =>\n  LOG_LEVELS.includes(value as Exclude<LogLevel, \"silent\">)\n    ? (value as Exclude<LogLevel, \"silent\">)\n    : \"info\";\n\nconst parseLogFormat = (value: string | undefined): LogFormat =>\n  LOG_FORMATS.includes(value as LogFormat) ? (value as LogFormat) : \"pretty\";\n\nexport const scenarist = createScenarist({\n  enabled: process.env.NODE_ENV === \"test\",\n  scenarios,\n\n  // Enable via SCENARIST_LOG=1 environment variable\n  logger: process.env.SCENARIST_LOG\n    ? createConsoleLogger({\n        level: parseLogLevel(process.env.SCENARIST_LOG_LEVEL),\n        format: parseLogFormat(process.env.SCENARIST_LOG_FORMAT),\n      })\n    : noOpLogger,\n});\n```\n\nThen run tests with logging:\n\n```bash\n# Enable info-level logging\nSCENARIST_LOG=1 pnpm test\n\n# Enable debug-level logging for match troubleshooting\nSCENARIST_LOG=1 SCENARIST_LOG_LEVEL=debug pnpm test\n```\n\n> **Note:** `SCENARIST_LOG` is a convention for your code, not something Scenarist reads automatically. You must explicitly pass a `logger` to `createScenarist()` as shown above.\n\n### Log Levels\n\n| Level   | Description       | Use Case                                      |\n| ------- | ----------------- | --------------------------------------------- |\n| `error` | Critical failures | Scenario not found, invalid config            |\n| `warn`  | Potential issues  | No mock matched, sequence exhausted           |\n| `info`  | Key events        | Scenario switched, mock selected              |\n| `debug` | Decision logic    | Match criteria evaluation, specificity scores |\n| `trace` | Verbose details   | Request/response bodies, template replacement |\n\n### Sample Output\n\n**Pretty format** (default) - human-readable with emojis and colors:\n\n```\n12:34:56.789 INF 🎬 [test-user-login] scenario | scenario_switched scenarioId=premium-user\n12:34:56.801 INF 🎯 [test-user-login] matching | mock_selected mockIndex=2 specificity=5\n12:34:56.810 INF 💾 [test-user-login] state    | state_captured key=userId value=user-123\n12:34:56.815 WRN 🎯 [test-user-login] matching | mock_no_match url=/api/unknown\n```\n\n**JSON format** - for log aggregation tools (Datadog, Splunk, etc.):\n\n```json\n{\"level\":\"info\",\"category\":\"scenario\",\"message\":\"scenario_switched\",\"testId\":\"test-user-login\",\"scenarioId\":\"premium-user\",\"timestamp\":1732650896789}\n{\"level\":\"info\",\"category\":\"matching\",\"message\":\"mock_selected\",\"testId\":\"test-user-login\",\"data\":{\"mockIndex\":2,\"specificity\":5},\"timestamp\":1732650896801}\n```\n\nFor more details including log categories, custom loggers, and Vitest configuration, see the [full logging documentation](https://scenarist.io/reference/logging).\n\n## Troubleshooting\n\n### Scenarios switch but requests aren't mocked\n\n**Problem:** Scenario endpoints work but external API calls go to real endpoints.\n\n**Solution:** Ensure you've called `scenarist.start()` before tests and `scenarist.stop()` after:\n\n```typescript\nbeforeAll(() => scenarist.start()); // Starts MSW server\nafterAll(() => scenarist.stop()); // Stops MSW server\n```\n\n### Tests see each other's scenarios\n\n**Problem:** Different tests are seeing each other's active scenarios.\n\n**Solution:** Ensure you're sending the `x-scenarist-test-id` header with **every** request:\n\n```typescript\n// ❌ Wrong - missing header on second request\nawait setScenario(\"test-1\", \"my-scenario\");\nconst response = await fetch(\"http://localhost:3000/api/data\"); // No test ID!\n\n// ✅ Correct - header on all requests\nawait setScenario(\"test-1\", \"my-scenario\");\nconst response = await fetch(\"http://localhost:3000/api/data\", {\n  headers: { \"x-scenarist-test-id\": \"test-1\" },\n});\n```\n\n### Scenario not found error\n\n**Problem:** `Scenario not found` when setting scenario.\n\n**Solution:** Ensure the scenario is included in your scenarios object:\n\n```typescript\n// lib/scenarios.ts\nexport const scenarios = {\n  default: defaultScenario,\n  \"my-scenario\": myScenario, // ✅ Include in scenarios object\n} as const satisfies ScenaristScenarios;\n\n// lib/scenarist.ts\nconst scenarist = createScenarist({\n  enabled: true,\n  scenarios, // All scenarios registered automatically\n});\n\n// tests\nawait setScenario(\"test-1\", \"my-scenario\"); // ✅ Now works\n```\n\n### TypeScript errors with Next.js types\n\n**Problem:** Type errors with Next.js request/response types.\n\n**Solution:** Ensure your `next` peer dependency version matches the adapter's supported versions (^14.0.0 || ^15.0.0).\n\n## TypeScript\n\nThis package is written in TypeScript and includes full type definitions.\n\n**Exported Types:**\n\n```typescript\n// Pages Router - adapter-specific types\nimport type {\n  PagesAdapterOptions,\n  PagesScenarist,\n  PagesRequestContext,\n} from \"@scenarist/nextjs-adapter/pages\";\n\n// Pages Router - core types (re-exported for convenience)\nimport type {\n  ScenaristScenario,\n  ScenaristMock,\n  ScenaristResponse,\n  ScenaristSequence,\n  ScenaristMatch,\n  ScenaristCaptureConfig,\n  ScenaristScenarios,\n  ScenaristConfig,\n  ScenaristResult,\n} from \"@scenarist/nextjs-adapter/pages\";\n\n// App Router - adapter-specific types\nimport type {\n  AppAdapterOptions,\n  AppScenarist,\n  AppRequestContext,\n} from \"@scenarist/nextjs-adapter/app\";\n\n// App Router - core types (re-exported for convenience)\nimport type {\n  ScenaristScenario,\n  ScenaristMock,\n  ScenaristResponse,\n  ScenaristSequence,\n  ScenaristMatch,\n  ScenaristCaptureConfig,\n  ScenaristScenarios,\n  ScenaristConfig,\n  ScenaristResult,\n} from \"@scenarist/nextjs-adapter/app\";\n```\n\n**Note:** All core types are re-exported from both `/pages` and `/app` subpaths for convenience. You only need one import path for all Scenarist types - just import from the subpath that matches your Next.js router.\n\n## Advanced Usage\n\n**Note:** Most users should use `createScenarist()`, which handles everything automatically.\n\n<details>\n<summary><strong>For framework authors or custom integrations only - click to expand</strong></summary>\n\nIf you need custom wiring for specialized use cases, you can access low-level components:\n\n```typescript\n// Pages Router low-level components\nimport {\n  PagesRequestContext,\n  createScenarioEndpoint,\n} from \"@scenarist/nextjs-adapter/pages\";\n\n// App Router low-level components\nimport {\n  AppRequestContext,\n  createScenarioEndpoint,\n} from \"@scenarist/nextjs-adapter/app\";\n```\n\n**Use cases for low-level APIs:**\n\n- Building a custom adapter for a Next.js-like framework\n- Integrating with non-standard request handling\n- Creating custom middleware chains\n- Implementing custom test ID extraction logic\n\n**For typical Next.js applications, use `createScenarist()` instead.** It provides the same functionality with zero configuration.\n\n</details>\n\n## Production Tree-Shaking\n\n**Problem:** MSW and Scenarist are test-only dependencies that should never appear in production bundles.\n\n**Solution:** The Next.js adapter uses **conditional exports** to eliminate all testing code from production builds automatically.\n\n### How It Works\n\nWhen `NODE_ENV=production`, bundlers (Next.js webpack/Turbopack, esbuild, Vite, etc.) automatically resolve to production entry points that return `undefined` with **zero imports**:\n\n```typescript\n// Production build imports this instead:\n// packages/nextjs-adapter/src/app/production.ts (or pages/production.ts)\nexport const createScenarist = () => undefined;\n// No imports = 100% tree-shaking\n```\n\n### Bundle Size Impact\n\n**Before (development):**\n\n- Scenarist adapter + Core + MSW: ~320kb\n\n**After (production with tree-shaking):**\n\n- **0kb** - Complete elimination\n\n### Verifying Tree-Shaking\n\nBoth Next.js example apps include verification scripts:\n\n```bash\n# App Router example\ncd apps/nextjs-app-router-example\npnpm verify:treeshaking\n\n# Pages Router example\ncd apps/nextjs-pages-router-example\npnpm verify:treeshaking\n```\n\nThis builds your app with `NODE_ENV=production` and verifies zero MSW code exists in the `.next/` bundle.\n\n### Bundler Configuration\n\n**Next.js (Automatic):**\n\n- Next.js webpack/Turbopack automatically respects `NODE_ENV=production`\n- No configuration needed - tree-shaking works out of the box\n\n**Custom Bundlers:**\n\nIf using a custom bundler, ensure it resolves the `\"production\"` condition:\n\n```javascript\n// esbuild\nesbuild.build({\n  conditions: [\"production\"], // Resolves production entry points\n  define: { \"process.env.NODE_ENV\": '\"production\"' },\n});\n\n// Webpack\nmodule.exports = {\n  resolve: {\n    conditionNames: [\"production\", \"import\"],\n  },\n};\n\n// Vite\nexport default {\n  resolve: {\n    conditions: [\"production\"],\n  },\n};\n```\n\n### What Gets Eliminated\n\nWhen tree-shaking succeeds, your production bundle has:\n\n- ❌ No MSW runtime code (`setupWorker`, `http.get`, `HttpResponse.json`)\n- ❌ No Scenarist core code (scenario manager, state manager, etc.)\n- ❌ No Zod validation schemas\n- ❌ No adapter code (request context, endpoints, etc.)\n- ✅ Only your application code\n\n### Troubleshooting Tree-Shaking\n\n**If `verify:treeshaking` fails:**\n\n1. **Check `NODE_ENV`:** Ensure `NODE_ENV=production` during build\n\n   ```bash\n   NODE_ENV=production next build\n   ```\n\n2. **Check bundler configuration:** Verify `\"production\"` condition is resolved\n   - Next.js: Should work automatically\n   - Custom bundlers: Add `conditions: ['production']`\n\n3. **Check dynamic imports:** Avoid dynamic imports that bypass tree-shaking\n\n   ```typescript\n   // ❌ BAD - Bypasses tree-shaking\n   const scenarist = await import('@scenarist/nextjs-adapter/app');\n\n   // ✅ GOOD - Enables tree-shaking\n   import { createScenarist } from '@scenarist/nextjs-adapter/app';\n   const scenarist = createScenarist({ ... });\n   ```\n\n4. **Inspect bundle:** Check `.next/` directory for MSW strings\n   ```bash\n   grep -r \"setupWorker\\|HttpResponse\\.json\" .next/\n   ```\n\n### Architecture Details\n\nThe adapter uses **package.json conditional exports** to provide different entry points per environment:\n\n```json\n{\n  \"exports\": {\n    \"./app\": {\n      \"types\": \"./dist/app/index.d.ts\",\n      \"production\": \"./dist/app/production.js\", // Returns undefined\n      \"import\": \"./dist/app/index.js\" // Full implementation\n    },\n    \"./pages\": {\n      \"types\": \"./dist/pages/index.d.ts\",\n      \"production\": \"./dist/pages/production.js\", // Returns undefined\n      \"import\": \"./dist/pages/index.js\" // Full implementation\n    }\n  }\n}\n```\n\n**Key Insight:** Since the production entry point has **zero imports**, bundlers eliminate the entire dependency chain (adapter → core → MSW → Zod). This is more effective than dynamic imports or `NODE_ENV` checks, which can't guarantee complete elimination.\n\n**For architectural rationale, see:** [Tree-Shaking Investigation](../../docs/investigations/tree-shaking-dynamic-imports-vs-conditional-exports.md)\n\n## Documentation\n\n📖 **[Full Documentation](https://scenarist.io)** - Complete guides, API reference, and examples.\n\n## Contributing\n\nSee [CONTRIBUTING.md](../../CONTRIBUTING.md) for development setup and guidelines.\n\n## License\n\nMIT\n\n## Related Packages\n\n- **[@scenarist/core](../core)** - Core scenario management\n- **[@scenarist/express-adapter](../express-adapter)** - Express.js adapter\n- **[@scenarist/msw-adapter](../msw-adapter)** - MSW integration (used internally)\n\n**Note:** The MSW adapter is used internally by this package. Users of `@scenarist/nextjs-adapter` don't need to interact with it directly.\n","readmeFilename":"README.md"}