{"_id":"@next-safe/middleware","_rev":"44-035e5aced03aacd6c8358b28d410d53e","name":"@next-safe/middleware","dist-tags":{"latest":"0.10.0"},"versions":{"0.2.0":{"name":"@next-safe/middleware","version":"0.2.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"scripts":{"dev":"tsc --watch","clean":"rm -rf dist tsconfig.tsbuildinfo package.tgz","build":"rollup -c rollup.config.js","test":"jest --runInBand","pack":"yarn pack"},"peerDependencies":{"next":"*","react":"^17"},"dependencies":{"@swc/helpers":"^0.3.3","nanoid":"^3.2.0","next-safe":"^3.2.1","ramda":"^0.28.0"},"devDependencies":{"@babel/runtime":"^7.17.2","@swc/core":"^1.2.144","@types/jest":"^27.4.1","@types/node":"17.0.18","@types/ramda":"0.27.64","@types/react":"17.0.39","babel-jest":"^27.5.1","jest":"^27.5.1","next":"12.1.0","react":"17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.2.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-i79l/7eeiE63oBn2jjj3exWuwRIw7N1jFJt26Rofj+iIzT+Yl0U35LpRrZdjt1b6KNBVdlNxKM6karXZkJ0q1w==","shasum":"915d03b4d462020bba8c1b6d04ae79b798de0816","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.2.0.tgz","fileCount":24,"unpackedSize":63100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiF2lOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzSA/9EXUWML58A91lNhhxVTvOlP6JCFoiwUS22coRYclyc39AsUYt\r\n/FUaETVDvAjKFj6MrHYp9YarLFH/63nFldvuc1pCKSNbjXaeL0zEsbDvjHMj\r\nW5tbpfOK4UzClwnBAsOkAdECPbWGlJ0De6PQNzdqYuLE3sqPC/RQvhq75IWs\r\n2+aDZncX5s1drxbTAnYXi1JS0XWwiuu5O4EQqweqcw4/7MUjSHb78yVFmqIU\r\nQ833I2aDuEVxgVHmI3bIEzLZfQYX8n51Q9jHlHU00hoMgChtE0j6Fn2cqMbC\r\n32DCJkfIaVORqiHRcMkNlT/IqSQyqFFqmskyxCCh7Ix7ifPN4at6MuW+6yjK\r\ncx0s1ruaw4YcyUA34jd2n7/o8eHpNWzttYzTCmkSxaaVabXMStWJkPJF6ugy\r\nbf08TVPg94CGHyM/q+Ro05hrNcjP9aMFipxBSxA53e69bGzKMuYDBfh6mDBZ\r\nyELEEpMUwdMUrNFGrxNbPXIpYVH2HqGGxhsOuGlIf6Uqwif4mPJ3p/PWCqTO\r\nOlVEsSmzFIXB+4TiapPSTaIJ+q3ohxXU4RUVFAcIgnlmGmLfThWA6ZPF4jQv\r\nYZIkdXYekKLf5LVhVXBrK7iOEie9bVB2yHSLK7gyb4R8qpdKbNs5XcGaHTr8\r\niNQcFv4+09DqU6vwlgRjexPeVR3dPuRLekU=\r\n=CAIL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdbvXgwIM2RWUVO0jW/DDdYks401CO6Bfr1DblAa2nCAiEA2AuG27t7g3Hljedu9FOwqwRVewNPME25AaPD1q9fqlU="}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.2.0_1645701453988_0.5192686540007385"},"_hasShrinkwrap":false},"0.3.0":{"name":"@next-safe/middleware","version":"0.3.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"scripts":{"dev":"rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"dependencies":{"@swc/helpers":"^0.3.3","nanoid":"^3.2.0","next-safe":"^3.2.1","ramda":"^0.28.0","ua-parser-js":"^1.0.2"},"devDependencies":{"@babel/runtime":"^7.17.2","@swc/core":"^1.2.144","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","babel-jest":"^27.5.1","jest":"^27.5.1","next":"^12.1.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.3.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-nLooddWHliHeqJ48clCSUo85BEEtnldK9e8ny+DP4dXHMxQgSRdrxb5Vf/AUs1lWh0bFNKexVZ3Kop8mDNPzcg==","shasum":"9bcb72d232c64d3b665dafdce15f2bc4bd2b6cb4","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.3.0.tgz","fileCount":26,"unpackedSize":82185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHNDbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuABAAkqaPiTniR8PS6b/BsT6gp3VnwQamxY5rQWkjfJuJWFuy0K43\r\ncOqDQ0KW92BF5+SqT7KZtx2jrQ466lVuumwWjcjLLTst879Ep7g4iZWmflQV\r\nZsVLbWn5VfCkVnXUtAQ3FiQX0g75vscsCH47KcW82IU3aKL9LxZwLtS9wvwm\r\nWnJuc6E8EgnEg6xh6m6lYMSo4XoTiLhVH3Xch+EAzYzwYNa47xiyEjQl/NeN\r\n5ARtDUKUJZNwBnkhcdb3ZZJ0FOyW2w0tFNCEbNXC9Cz8h9r1QltqAzTEmm1j\r\n4EmW/NDYe9OGp2HryYIStSDdDuPNZORe84rNaTRQpESEW1CorF8fUJD1WkK/\r\ninp0M7enNd0KiEpcvZ6iz8MkZ7WmWtUCBWhsfMR2FYdf2u12vzJEUfdyBtvU\r\nchoUkr5M9p7g9nqVrtatQKFkG6rUqZqo8V3mRlbwlkVmi8JfQnXPxiYEHgxJ\r\nw9afb4m81Yrh+aPuWlGfXax6r34bs8lSGwH0ZTx+h2nNMvziC0M8F5V+QXLe\r\nWXdWC9RVyQsKPlwjvKhvSJJMlNTWzeZxuvnTv786g4NtizekApVgRAAE43Vm\r\nh6mXGN5DA58JDRg7NcPqCqDELLYLoBIoo6AVMJS5Qfmmmi8G3EjGCMVQRfFc\r\nQbqprUMiOXOwkXUvjaBGP6xec3aLIoTDzZE=\r\n=39iq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+xCGjKA+ULO0vBOiX9MuKrveglsUWdU39lBBXvHzvgQIhALP50Rgl94pwc27+x060h0NiBQw7ltJgv1x5wLcxwS+O"}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.3.0_1646055643727_0.8330865252653028"},"_hasShrinkwrap":false},"0.3.1":{"name":"@next-safe/middleware","version":"0.3.1","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"scripts":{"dev":"rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"dependencies":{"@swc/helpers":"^0.3.3","nanoid":"^3.2.0","next-safe":"^3.2.1","ramda":"^0.28.0","ua-parser-js":"^1.0.2"},"devDependencies":{"@babel/runtime":"^7.17.2","@swc/core":"^1.2.144","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","babel-jest":"^27.5.1","jest":"^27.5.1","next":"^12.1.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.3.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-1vlU/I9vk9rZjnwTyFkfRvvqUWekoj0zsJ8VSKwiP0Dcyssbm6qOWeMWY0jlFG0Upslrnc59EFb/wMzenB5E3A==","shasum":"9f7765469b348d762111fc9fae52a039e156babd","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.3.1.tgz","fileCount":26,"unpackedSize":82584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHN7mACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqNXw/9G55aIQqirRM4ax8uUauxwS/k/9EvR3QCiXMgonPQSSOHprCB\r\nWKVMy+hC2Dk+TuapJ1kCDJcPd4kNU3UvPtX+JPYDUO85F/duVyn3DSwp9Z1p\r\nYMkfbVoQZNX++U9QApeohoYF0LXOdImuw1s2aTlL78kB1C29E/LpGrTSSAAU\r\nd95ykqV0jJpU59lULh2wnFQS+m0yIg/tkBDpeNOY0Byynw+XbjyZBaQQbrtT\r\naknJlcDLOSHXzvBb0UgTt5qI6X5l/aW4cIHfEJUFqgiLIp3O8SViBXl5QxLx\r\nuzw2Nqh+iqtTQIGn/ybVBHqGwfsCTdxLFOyKXC74QbAXW1PwUIPUHROZAfd2\r\nRAYRKN2kIbSj9r+CPw55bFTtL/S9Oo/qgFiVBFcd3/60Aa3I1H9CHxNXn+Ad\r\nIKpAD3sTOA9LSKjwJpFyN7f1+IImHU6trEHENionI3hMO8i3A1VrC1f1tPv5\r\nSXuOrpwE3zFOFd+Cz3RVT0y0xYfVV/F9jao30bO5RxJLUcbH4aiZWIVlsYlP\r\nFTGjOl4XKMrDrAqyv/ZDAhct9RyP8075YzHDMHQDR4/Im5dNlci84qSODjA4\r\nvHXDsOdTONMtKx++1ZezYRr0XapKA0SzJ660xIC5ygGBcKLHGSKz4KKZ2WS7\r\nKM4P9/hlL2APEgHWKOkReKBcKZWX4FKKDSU=\r\n=pzlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCajMWj0yz8ckhtLiHe5ZCWUTPEMSbd7BosLkGH+0CUcAIhAIFdIgEiCpuved/aJ36gBXxA9rS1ZjDVbtxjmyXT6OZA"}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.3.1_1646059238297_0.05481654584310425"},"_hasShrinkwrap":false},"0.4.0":{"name":"@next-safe/middleware","version":"0.4.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"scripts":{"dev":"rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"dependencies":{"@swc/helpers":"^0.3.3","nanoid":"^3.2.0","next-safe":"^3.2.1","ramda":"^0.28.0","ua-parser-js":"^1.0.2"},"devDependencies":{"@babel/runtime":"^7.17.2","@swc/core":"^1.2.144","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","babel-jest":"^27.5.1","jest":"^27.5.1","next":"^12.1.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.4.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PpiAz296gJsgwit45zsuvwKQlu72wxnLhfDFvvWH0W1kLaFaHUQ9eVp2NObrvCeY7PXizqf5q0NVgLO4TwiyDA==","shasum":"bf94a77081406ea701c049cd95acdea880584a4d","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.4.0.tgz","fileCount":27,"unpackedSize":89379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHm+5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUeA/+N8UWF3FILZpxgFZje0QeEdrYrutj8SP8aCsowfTNSSZYb0eg\r\nFknEagoUPvTG+5cWWyBXbiZWv71rASJRuZj0IH4gjBLsR2wRV//a/nkUp/+U\r\n9MpFA0GHzk2hTq/IHMRdeiOMgM2B89JD2AxV/15phHSF0hgk/K7GYZVxgbYX\r\nnU3iSanF8C7/BWildmswvfBwd5hkMP/TSWZIRK6lzUdN3p/JrpeNxZ0VY2hl\r\nzRRkj4syBeYitsagKGhcdcAJm2ZfKzm4+JmJIZ8e5LH3BZ6GYCLxzbMggVQP\r\nSMUIttqKDcc0XYMeubsCZUWn6vUSrpQOFz7YgwIuUH3Y/R5gSreXTXIRi8Hn\r\nUhf1kwHR1b0PmXn5cIVce2gix9MYI2eC/xfP8c3CXpaAhHO+UVxieqjE53He\r\nf2lUMuqBB2PmPHUSGB+hH4hcpd2NQAP+tTHA9yHrDptKRo0X5QYHfgGvsanN\r\nQWXo/v+lWuxxjgUyGuO/gQadCfKJ3VQOe9rxi71zD2l9Xl3rtyivhGVTu9QD\r\nEdPgXuM6D396cnVHQVS5rmbGCoFHTyYchECVVJ0ZQv7IuHl+WVa/oIzkiOV2\r\nqulITynb12T39T+VtlYTfTCcN38bs/f+NndoBvCBgRKOpykU3AllI50Eyx5o\r\n9I0MT19PECq4GuVD8zIzV+eSzVs6LxTRaTg=\r\n=9vXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmvsvYJq1UzMQuhXMN4vKDP/xLD8NGJ82fd6kYW14IPAiEAiMeWOE4WPa5LrALwq0qj0pbRJEiE6IRUBdcvPr/MfmA="}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.4.0_1646161849638_0.10632795921621518"},"_hasShrinkwrap":false},"0.5.0":{"name":"@next-safe/middleware","version":"0.5.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":"src","output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","jest":"^27.5.1","next":"^12.1.0","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.5.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-D3SiGarJw9AyQR0Dy7Bbw9kHYFxtmQPwWVQ1S48S1W+x8oF+cd+MWoQ33XqkGil6xCx5o/xgXNac7MPi4xXUfw==","shasum":"425f8ee2029833a268b50f7422e6b7f56422679a","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.5.0.tgz","fileCount":12,"unpackedSize":185368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJB5lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvhA/9HqnjwKhElohUy+HdiiKml4FWb9MF1zcUu18UXqKiyZuz30nK\r\nGOnMl/aumVq7Wl3n4t2x/S7TxSZ+uB5nZNp5klvzGmSrAUQRZldvTOPFMUGi\r\nvW3u+NuoHpl7ew0Jkf6TtCmko4Kf7/gaRcRuN9MYHmIHBUwTIjpm3OO1JUo+\r\n5FP8avbNqqicwb4mC4NRULkYgO0wOt/Zqjg9SAuFVzDzU9OdxePmxY9b5STy\r\nvRkGV2uu2DfTpAFU7I8m0hzpbuL/xyoN5ucdWh1fjRhSw0MJQYP/0scNsfzu\r\n3mcbMOHyYTSRap68OWGeftLPtMOHBWuPb/Kqz8xmbWzcN/IpoDxljYIoK7+G\r\nNnJvqEtQPRUgwTRLkoo89N8Btm8tCXuhB8OafifA0tLcwKvqwtRWgrMitDFz\r\ngJk4IUFKJLoTsm3E3nerSjYDuB6ly7r8kscc7WDe01pzyvl4Kq0SwiRNVik8\r\nR0u3kkPrMaaJlL1MhEH1KKvU6RTjFem4DVSg8Vr9QUuG9/Hq/bCQJPpvz1XR\r\ngk24UvQMsR2JSMt9SQFp7Qge7zNTD0uuXeSbqbN+n788DzCVof1wrnwMeZ/a\r\nY/2lCH8YKvP4KXZSV0XQiaG+e7UVrbqCoB86jl46oRjJAkp5izpiYiLxsTBJ\r\nbfpnlAmMuh6rsQp+OBK0z149o0m3mEpz3MA=\r\n=1hHy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBM8ryWNOGvj60e8Ur37a/3Q3CtbMkMWDMhdjqDWwsFlAiBoSzCwL4E/moEwJtK1xSkQqiD6Tg2uExfPaIJLp6QieQ=="}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.5.0_1646534245377_0.6530587013509539"},"_hasShrinkwrap":false},"0.5.1":{"name":"@next-safe/middleware","version":"0.5.1","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","jest":"^27.5.1","next":"^12.1.0","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.5.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-cQG2qIHIwF4DPQSm1juCKq8M5XqWB0M0hFLcYrc23swQwJelaoGB5X76UV3sEOHJ8qdjUk2gbWPAsDiADIsRiA==","shasum":"badc455310e27724f3e54e0eef40e89047b87685","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.5.1.tgz","fileCount":12,"unpackedSize":186215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJpxRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUYQ/+MDZVbBsx6FvZ9fvFXrBDuvQFo4gMnRxr53dAqUNF+oX84h7z\r\n1OBUsmLcKPEgfTqnGwbbuMZYYw2u5DcsY8kp0MFVb2qZ0negXqiuxUsBC7so\r\nkiB8VuGz0BXTaDjrQdXVDkYVvZiEWA6TNL5dJoHe8y7abgstZKHC49GwSU1S\r\nQIwzTMijUd5B3rC4W1eZ5DxU8BWpwMlnI2MyRZwj6XzfY/dc613bq8BfttFP\r\nF5e47HeGMNO1For4IX5EwvwOfPo2VyaAtY3EqvMIzUv7drmj/sODkbkcxzI/\r\nrIlH7fjaj5gsPyCVruafMqOFszmmXTXsQgegwnsJkNMp39C7I/O1xaG5MPrd\r\nfZ/wWRYtrgnuqtwnmJWhtWq1wfr0cTJiQ+U1Sn/YKyiIBeccHxG5Rum3zkRn\r\nCbcxG8FJ3/ULsRDZrdkUzHIlkL+wcEy2JczrNVezs+LKl1bZgMQ1GKg0GgYk\r\nSgtoepkhhlUrPJ+2RPfyTsfakDKy79pjxUZ2pbbM21JcyIrm34j5/QSK8guk\r\n27TvLWKzDyecbkZNyP3gjUsAFR0N3qnEjFBTD6ASfC0Q75xJIbEDdLFmOmYo\r\nxuthfPGrMtwThPBWCLvg1feSJp8SUv0zCVxcp5hnT6V6RYusvY6Nbn6J2qGj\r\nkelLJ0IT8aOhr0YxTRqdX9fea8B9sCgE2wY=\r\n=HzeZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHzlgRaFs6TW4Mzu3fxo4iu4i6JVCwPw1fD5rEAgniTOAiEA1mL9Iv517XnymvWmMsAXkYpEXEXZblTt0u0Mj7m+U04="}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.5.1_1646697553116_0.4554532449612816"},"_hasShrinkwrap":false},"0.5.2":{"name":"@next-safe/middleware","version":"0.5.2","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","jest":"^27.5.1","next":"^12.1.0","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.5.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-VLAiS+X2VhK7Efx+IWNdgRK63amt1xOefdNsjRL8ABtaFRRUSyxTvCq7YAET33qtImWuUXcmRwS+ceP7eKaY2w==","shasum":"c6ed0306c3ff82b288cbab8042574f22833c0e09","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.5.2.tgz","fileCount":12,"unpackedSize":186371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ+7YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCEw//TX9LG5Ce1R1UcEVq2/j8IjgRYlDPYXs0N5eFL4w/Qd2aiL7L\r\nHS5ytAk+H63dAsEinpgMCp+D29pjJUa7aZitNZr4Ll138EwUsgD0HqSOutP6\r\nf9WfdknEdRTnEmzjiQWhOdhpjIPov3ITr5OzcxLmqLt22uuQKwLAX9YBceNq\r\nWfqDkzKKzRyM4i2FS8rcUu8ftk/5u9Saw1v9qQanQLBLeyV99/URrN7klUUr\r\nRvZbVI+xKLKTbigPBhIMwxxtBwwwemDsGs650Me3pwSuWw5mYkmEz2ncsi1R\r\nwt+bz/pMl5aimeqm6c1ggtE/Z8e0YpKomR3ZRC44sTQ4xs1jdkQZLDb1oU+4\r\nLynDb8LjUDf4PAfZR1u5ZVBTctv03vpCWd4hY/Zn1Nd9g01VazB3ZOjeNkKM\r\n8pI3pKvRSRT34ZulePPNHOgel7NHyunSv61DwtOx963u0N/rjWSTmo448gdi\r\nSLETgtdGX1hKwiGQ+yo/RumbWtWJ8zOfKSjVpxU3oYH4Mf1MyJGwmXAxEgVJ\r\n0EhdArQJ/7+LvHiS5hRk/Fu7KIBhg+mHgAa+LZ6TLkw5ripWDCw55bcDAqiO\r\neflos+iNA3CP5J16UpEAxzExAki6+qsIbXo6phB4dhE3nQJ/axeCwzZ2z0NE\r\njytAaWMMJkKf9gVtx4OcJUQs+JLSzCEj8kQ=\r\n=GwBZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIqUSe9LHbZObsuR1dXhBeefx6JOh9SFr3X6Ds5B/f9gIhAIhkJMS17gxsL59SvK8+ReHg1MsQJ5XRQrg5uVJjek6U"}]},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.5.2_1646784215954_0.9791607626074685"},"_hasShrinkwrap":false},"0.6.0":{"name":"@next-safe/middleware","version":"0.6.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":"^12","react":"^17"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","jest":"^27.5.1","next":"^12.1.4","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/packages/next-safe-middleware#readme","bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"dependencies":{"cheerio":"^1.0.0-rc.10"},"description":"## What and Why this is an extension of the [**next-safe**](https://github.com/trezy/next-safe) package for [**Next 12 Middleware**](https://nextjs.org/docs/middleware).","_id":"@next-safe/middleware@0.6.0","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-iPfwocePEpXgAsyPkrkCEIAAmd0ZJhWNvpeSKl9TsbZXz2SVvp4aRzGxMKTnnOnxK7AIKQR4HpvPuoB0tm0qNA==","shasum":"cabc532678c48b13b25caad75981ec9ecb2fd309","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.6.0.tgz","fileCount":12,"unpackedSize":197639,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDX4gsI3xYFaZigR6ydgz6a2KmBUW5crNC+MSy+s3eWdAiEA/uJcC22KLm1kOcu/W5fi/YJE8xUqwWjrzwRxx4fr8wk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS6ghACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqkYA/7B2rEAcci7sUsgdyl9vBNycqN9zOlqCQDNqfk97aSV2+drw/G\r\nqpvKl3oSXnQb0+DBktIVEfAG594fmqXD6Moo+E8EDlsJ15K73wDF1GhxaqeT\r\nKdnY+eNAbYV2eVTUzsfRNxjsedxaFf2hFHvXHCgjRPCFD0Pg0DCGhHxLvN1w\r\njG+EKJpqatz/n+26arhn51fbDfmmoLwCxwYn7DgRmt1hDlITnAK9tLpxNZeH\r\nPGECjZ0Xwf/iUEwv0etvoEGT/dhMQgpV7J2h/isXN/5oWtJT7jzgkkABUCrS\r\nY5LRwyJLdlI1KdtrW2ui/b7OvJns1kVizR8oCFFho/h7vgZY89bz+RSfLCWX\r\nnOJ0P7jmtYxmxSOwNhEolyBRIDED+Bv8iJYc0qEXkyfm20MWMUaX36ZPlqcs\r\nHvURC0A15QWGEfAQiPe00DTUJkmmMxUPDk7GtHE01VKgoFqHBOVNldDKmQuT\r\nmEZpXhiBZZZqzob+rzcGnyS906gKiborgBtBFKobzMK+aEO7ZdRiHOYV+1gT\r\nqmyFAh/uUOvENKZ8Uvm42pNvIamw+awLf6oWu2/VualY7WeguM2RNnYTvGR/\r\n83lelsvZ5/ZgLm0bdoKgjv0C/FFJOncRlEYoHLf/DPWyU5+7vovhgOKiYiLl\r\na2n7i4GeVhd3mdupWmnGtGIz2sGSxbu67zQ=\r\n=DDpc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.6.0_1649125409415_0.008670461198475365"},"_hasShrinkwrap":false},"0.7.0":{"name":"@next-safe/middleware","version":"0.7.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":">=12","react":">=17"},"dependencies":{"cheerio":"^1.0.0-rc.10"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/base-64":"^1","@types/jest":"^27.4.1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","base-64":"^1.0.0","jest":"^27.5.1","next":"^12.1.4","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nibtime/next-safe-middleware.git"},"bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"homepage":"https://github.com/nibtime/next-safe-middleware/tree/main/#readme","description":"Strict Content-Security-Policy (CSP) for Next.js","keywords":["nextjs","security","content-security-policy","strict-csp","strict-dynamic","csp","content-security-policy-report-only","reportingapi","vercel"],"_id":"@next-safe/middleware@0.7.0","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-AHBvox3lAqqbFCu3vav2HnEAGsVPHMZhp5D5usWgd21I5aeWZkzZe101HPaEZ4N9ufr/pmOdSydYfKzIJ2BjVA==","shasum":"bfcd4dfa5b051d1b7cf298b1d62723a70956bf9a","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.7.0.tgz","fileCount":12,"unpackedSize":241712,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByflZX1JYhvMEM7W6ooA/hCDurRXgE+AQm8tyuFZyAjAiBUaf/lt2Mou7Xr7coaNen1rPwjnCl3ovOUPNYwH/HpfQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixPHmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0pg//Xhv9aFO6XDSgqgQ/UwBE9Albr7euUKQ6U1kV+rkrYEeqJbJr\r\nk+iPsX1X9Cw2q4LWVzsvzG1rR92nKfCL7piVVyQtwYkWG9u9GRgjpTQLKq7N\r\n46QQ7W/dHKJGQ+xua6OfpTiblWeqwZvAforhMDiIdJ8eRWcyQo+/XKljx4Dh\r\nyNLXKFjVgNMXyNaR/GZvp/YdwrJ9pRxjAZyabYNsFb2PG2CcDywopkttCCcU\r\nDilHFRqnnRFcb06NPy7VeBnphqrdYgpB/muOo3gwlp69VgQzaUYsgWvSUxyF\r\niii+fmMSCPVjJLI8TS5X+yA1+VRD2VHbnwrNUPsrv2C1WT8doebtp+5uBrmt\r\nWbeEADe/J5Z4Sx2rcFGbdGQUY4TcMF0jKxBRm9p9v+9dgICNFgvkamDDc/+E\r\nx0RZ/dSnYmVAvqC4fcRhkoqKGHkGFsJgugOkGdooDx9fxLFEfbPre+qbcrNI\r\n++gckTq/MyC2bpixyrAOj/Lf+FYbuXzHNtshzrJwJkMVc3mjkCgdRlIwGcZ/\r\nn6KyOP9KdeaoWijD5RYYB9LqW+7IAyqkLBbPUj3xgGOBTkDGYgTqg4EQLwi+\r\nUIZYlt8PNkr5iqCne8uFNcKuZOy3Y5RbB0jgpcbPJopZ2irkeNBndWLgJ5MD\r\nXQZCeq4inpSuZ+M4loDHUcPFdZeZPcivT9M=\r\n=qeLQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.7.0_1657074149850_0.322606312413382"},"_hasShrinkwrap":false},"0.8.0":{"name":"@next-safe/middleware","version":"0.8.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf dist package.tgz","build":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","test":"jest --runInBand"},"peerDependencies":{"next":">=12","react":">=17"},"dependencies":{"cheerio":"^1.0.0-rc.10","lockfile":"^1.0.4"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/base-64":"^1","@types/jest":"^27.4.1","@types/lockfile":"^1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^17.0.39","@types/ua-parser-js":"^0.7.36","base-64":"^1.0.0","jest":"^27.5.1","next":"^12.2.0","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^17.0.1","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5","ua-parser-js":"^1.0.2"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nibtime/next-safe-middleware.git"},"bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"homepage":"https://next-safe-middleware.vercel.app/","description":"Strict Content-Security-Policy (CSP) for Next.js","keywords":["nextjs","security","content-security-policy","strict-csp","strict-dynamic","report-uri","report-to","reporting-api"],"_id":"@next-safe/middleware@0.8.0","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-jqdHhTIQiBBBqb94pNaM0g0F1n9soz4xJjEZhJRyrM8GYGCtCnxyPid9LTzeB1YnZ7BdZEGceGYqjBNrVnvPqA==","shasum":"3cc191c81f5902c6234e677f014418609177c4e8","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.8.0.tgz","fileCount":12,"unpackedSize":243552,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcxpKxrGaSaptMphxGxAigkS2cvwvOlT6zjQRvdUeuKgIgJPQr9xcs9lJypdL0kiwsitsKEaLrScuOpjBYdkQfnxk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixyNSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrs2Q//cpFv4pPeR7FDIXoBWd8jwUbAI2hpfOvAu0Q1Chm4URRNXj+i\r\nx224r7YOUd2Lk6zbgqd21PfVJScqKy/ypJU2soe0GRpJ9k8DwL7bmW/fL7k2\r\nAHtoe6LQauIgHtuLkQSqWSc4NHF+u29/zpmQSN5lMuz3rGFgwibF6kHXDZf9\r\na1xUukkIqyDXSWib5ffjaDMX7f912lscQir1vgN3DL/Fsune+rmP0xoveVLG\r\nOASHd4qbceC8pC/aUpotA3LNAVBHIe5lN08a8vu5deZorucEjNhvEcxnH7wP\r\nqUG2GCPAq46STbEyMvvrPwkl2Porc+6NoEDNKawL7/rqQEF7e6XwDFZP14/D\r\njxCvCugIBWwtpS5WKL3NSQ/6/4bcXNkJMXIoeZ0wpw45rIqlF3XEoyBExbbJ\r\nvZR65Re2qS+HA3nEqZ7KJIugLOpedynQutkrcP1zXTVRHbLho+mmfrSrtDgg\r\n99MFqLZqTIPTpCzf69qheQ44Qf1rhf3MPZ7UEb+H+AMctOrkIORO8AEKhfk0\r\nd97EX1cosJkGTzuzGwEv/kTwsqke/n4uDMgnaWwaLNdb57BwNozU7dM0KR8G\r\noVACO2JBoZ+p7K09V5afg3RDtsQzPmb8y1Z3aF8t1kfU/kA/U8IJSdOrPlxp\r\nR6vav7wrqG1FLxHBeqvmTXQOOvUpax8A+YM=\r\n=GeVn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.8.0_1657217873884_0.2149267661633909"},"_hasShrinkwrap":false},"0.9.0":{"name":"@next-safe/middleware","version":"0.9.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf .swc dist package.tgz","build:pkg":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","build:e2e":"yarn build:pkg","build:docs":"yarn build:pkg","test":"jest"},"peerDependencies":{"next":">=12.2","react":">=17"},"dependencies":{"cheerio":"^1.0.0-rc.10","lockfile":"^1.0.4"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^28.1.5","@types/lockfile":"^1","@types/node":"^17.0.18","@types/ramda":"^0.27.64","@types/react":"^18.0.15","jest":"^28.1.3","next":"^12.2.2","next-safe":"^3.2.1","ramda":"^0.28.0","react":"^18.2.0","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nibtime/next-safe-middleware.git"},"bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"homepage":"https://next-safe-middleware.vercel.app","description":"Strict Content-Security-Policy (CSP) for Next.js with composable middleware","keywords":["nextjs","security","content-security-policy","strict-csp","strict-dynamic","report-uri","report-to","reporting-api","middleware","chain","compose"],"_id":"@next-safe/middleware@0.9.0","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Ou/asuYi7phhMN27Me55ym4pr+YRyOXEvf/5DkfGPiPt0ADExz5RKMwEq+4KZWp9Nxh9jd8I12+I+3kV/+8y6A==","shasum":"ed1caef8b60af50c698df2dc7921f24f8aa380ca","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.9.0.tgz","fileCount":16,"unpackedSize":246972,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDR+Z0Ij4sAY+fGea1m/kwHwSP8YZZH3iT+9rbwJeUw2AiEAxlTx8+l0/W1Lq+8fG87zCTHPVgV6yHnYawG6Wt0kwNQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3LvpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRpA//QWQ7uinLysMN7MCg1KGObHeN3er1UDNr7lfwxfaNbrNDykqT\r\nb5NZNkAXPHNTg7s9cxc0Q7dOmVA0nhRr2v/f0UWn6+Glfc+vYxn48Dmrtu/J\r\nrOgNaxEPHgGWPzEeBbl2L23d8epl6FgSbcbyEpdC10wApOHSfKctVpd4kP24\r\nQaZHim7IxOH3lPkp7XF6TjV22Db+Jp2/2e7MvbDCFkjak2MYKC6a60ssvSY1\r\nLOqL1+sCZyNU/so7+cvEMQsQ5HY9Qu8+3crgVxa7jXdbVLI2XqiJcOnxoJnU\r\n/R4KGf+o1fvdBAVSTzO2TwKzKq2N93+kHCZZMGfl7G3qIWTPkxI2daodygko\r\nsql/dMr2JVNV1yt0+gtXLXVf1Uq1/ebzWKn+n0GMaLPAFUvKkQPYguXNQjZ0\r\nntLBEPvEpZ5Ft9ZC6Kn2FFTwEfp99/c0M4+CAcjFutPqwAwBPd5L5qQk/taZ\r\nidaQ9rqT5ugT/zNX98LX9qlDq7YgCyx07iTEHSKMsNpG/es9RFfyomOl+PNc\r\nGdLkIVuePQIDnHQnh/zveiGUZazgIZiNr5HkGRt06ugwKD/W2jvVGCW7VSsU\r\n/JM76qtMzIHFYwWakT7bo3HuZ42+pay2XUytKf2DdTrPZ5JoWuBocwCybUls\r\n1Jnf5hw0Cg+CkzEgyGHVRPsWWqEzRfe6RlI=\r\n=NXQx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.9.0_1658633193685_0.25149307398126175"},"_hasShrinkwrap":false},"0.10.0":{"name":"@next-safe/middleware","version":"0.10.0","main":"dist/index.js","module":"dist/index.mjs","typings":"dist/index.d.ts","engines":{"node":">=10"},"yarn.build":{"input":["src","rollup.config.js"],"output":"dist"},"scripts":{"dev":"NODE_ENV=development rollup -c rollup.config.js --watch","clean":"rm -rf .swc dist package.tgz","build:pkg":"NODE_ENV=production rollup -c rollup.config.js && yarn pack","build:e2e":"yarn build:pkg","build:docs":"yarn build:pkg","test":"jest"},"peerDependencies":{"next":">=12.2","react":">=17"},"dependencies":{"cheerio":"^1.0.0-rc.10","lockfile":"^1.0.4"},"devDependencies":{"@rollup/plugin-commonjs":"^21.0.2","@rollup/plugin-node-resolve":"^13.1.3","@swc/core":"^1.2.144","@swc/helpers":"^0.3.3","@swc/jest":"^0.2.20","@types/jest":"^28.1.5","@types/lockfile":"^1","@types/node":"^17.0.18","@types/ramda":"^0.28.15","@types/react":"^18.0.15","jest":"^28.1.3","next":"v12.2.4-canary.8","next-safe":"^3.2.1","p-retry":"^5.1.1","ramda":"^0.28.0","react":"^18.2.0","rollup":"^2.68.0","rollup-plugin-dts":"^4.1.0","rollup-plugin-swc3":"^0.2.0","tslib":"^2.3.1","typescript":"^4.5.5"},"author":{"name":"nibtime"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nibtime/next-safe-middleware.git"},"bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"homepage":"https://next-safe-middleware.vercel.app","description":"Strict Content-Security-Policy (CSP) for Next.js with composable middleware","keywords":["nextjs","security","content-security-policy","strict-csp","strict-dynamic","report-uri","report-to","reporting-api","middleware","chain","compose"],"_id":"@next-safe/middleware@0.10.0","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-RWtGAcTby3/NssMRJcb1VHv2prWpJ+99B4EIrR7JyusZdmwPAXjOKZ519qxXjQUDcOyo8XqSNIxGt/YNTwdLhg==","shasum":"1b7b69e2130ec4aee6f7f18a8129483a7daad1b6","tarball":"https://registry.npmjs.org/@next-safe/middleware/-/middleware-0.10.0.tgz","fileCount":16,"unpackedSize":299545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+Yd2qQdKdtH2/DUIBGJNSw6ob89MsOIXOKhfClsbEgAiEA1i/EU39kKi5Dx7ot0IUPbKDlO0EY0S5daZbBg8FzeWM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6YK2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrybQ//Ss3TXf56kWuCzRqGwCMxakvwapfGRMDSkzi+z2miVP/N06WG\r\nSsUKfLsEOl5a/XjUR+3qPIarKI4L5xGS5skfYmykaqkWGBvZjDrwAUPlqVb2\r\nsJokfrf4FZVjaxX/85kFY93wVQ1dmUBEgvpdwDRte/VftyH/E2R3A8ddtFmG\r\ny14ujR2JEitN+KMBWjsFCqr7DfR7gppiZlI0+pp0Aa3VveFQUSZdOxseG6hD\r\nFbc0lts/E0/+t0UQQu/KKTZ1OTpQCtK6p22GAiUvqB1FQWyBcZMLvihiNyvM\r\nT0xHc+aVoldJrDicP3qdzGyqPus5x73rtzT118GsX9BJuVazf0tEtiLJMXZq\r\nvXKdhy/K+caVQoZFX+ExdlwT6NQPO460Qim0qdEGq5QthyEpe1WHuTvfAWcd\r\naCaHFUW2mrGbebbXUS6BuSynlWtpmRj/Jl3wyClhe4aca3DSAtCspvLS2KFD\r\n4jRBsTNQCpB6RujFo3sNw4S4ICWU0ckhImauJXcYot7sju6ivhYqoMSLXK5O\r\noHj4ME+H+2RVwT7MI0zOpGWwmXjZ/trXdbpjwYf5+757CnO6wYGbwBY2G5e9\r\nemYhv/heNqExL/aORW+GjAZPyxl57JOxlcKAySM65XFBny2VEbJDivm9MeEt\r\numJZHASyKX4hAoWAVOmU7pn4evRFdv3sT9o=\r\n=jF0J\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nibtime","email":"kf@new.cannabis-med.org"},"directories":{},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_0.10.0_1659470518328_0.49515713460314625"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-17T09:37:04.266Z","0.0.1-0":"2022-02-17T09:37:04.428Z","modified":"2022-08-02T20:01:58.680Z","0.0.1-1":"2022-02-17T10:07:40.777Z","0.0.1-2":"2022-02-17T10:15:30.466Z","0.0.1-3":"2022-02-17T20:48:08.903Z","0.0.1-4":"2022-02-17T21:05:59.679Z","0.0.1-5":"2022-02-19T10:32:13.210Z","0.0.1-6":"2022-02-19T13:12:39.716Z","0.0.1-7":"2022-02-19T23:38:54.758Z","0.0.1-8":"2022-02-19T23:45:08.287Z","0.0.1-9":"2022-02-20T05:22:15.120Z","0.0.1-10":"2022-02-20T05:56:29.410Z","0.0.1-11":"2022-02-20T06:11:23.118Z","0.0.1-12":"2022-02-20T06:16:20.365Z","0.1.0":"2022-02-24T07:50:31.691Z","0.2.0":"2022-02-24T11:17:34.211Z","0.3.0":"2022-02-28T13:40:43.888Z","0.3.1":"2022-02-28T14:40:38.531Z","0.4.0":"2022-03-01T19:10:49.864Z","0.5.0":"2022-03-06T02:37:25.559Z","0.5.1":"2022-03-07T23:59:13.304Z","0.5.2":"2022-03-09T00:03:36.095Z","0.6.0":"2022-04-05T02:23:29.589Z","0.7.0":"2022-07-06T02:22:30.089Z","0.8.0":"2022-07-07T18:17:54.106Z","0.9.0":"2022-07-24T03:26:33.943Z","0.10.0":"2022-08-02T20:01:58.529Z"},"maintainers":[{"name":"nibtime","email":"kf@new.cannabis-med.org"}],"author":{"name":"nibtime"},"license":"MIT","readme":"<div align=\"center\">\n  <br />\n  <img src=https://user-images.githubusercontent.com/52962482/177227813-b15198ca-2c36-4ba3-afec-efeb581a19a1.png height=75 width=75 />\n  <h1><code>@next-safe/middleware</code></h1>\n  <p><strong>Strict Content-Security-Policy (CSP) for Next.js with composable middleware</strong></p>\n  <p>Works for hybrid apps and supports pages with any data fetching method.</p>\n  <p>Always sets CSP by HTTP Response header and enables easy setup of reporting.</p>\n\n  <br />\n\n  [![Version][version-badge]][package]\n  [![Downloads][downloads-badge]][npmtrends]\n  [![MIT][license-badge]][license]\n\n  [![Release][release-status-badge]][release-status]\n\n  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n<p><a href=\"#contributors\"><img src=\"https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square\"></img></a></p>\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\n  [![Star on GitHub][github-star-badge]][github-star]\n  [![Watch on GitHub][github-watch-badge]][github-watch]\n  [![Forks on GitHub][github-forks-badge]][github-forks]\n\n  \n  <br />\n\n  <h2>\n  \n  <a href=\"#getting-started\">Getting started</a>\n  \n  <a href=\"https://next-safe-middleware.vercel.app\" target=\"_blank\" rel=\"noopener noreferrer\">Read the docs</a>\n\n  <a href=\"#contributors\" target=\"_blank\" rel=\"noopener noreferrer\">Contribute</a>\n\n  </h2>\n\n  <br />\n  <br />\n\n</div>\n\n[package]: https://npmjs.com/package/@next-safe/middleware\n[npmtrends]: https://www.npmtrends.com/@next-safe/middleware\n\n[version-badge]: https://img.shields.io/npm/v/@next-safe/middleware.svg?style=flat-square\n[downloads-badge]: https://img.shields.io/npm/dm/next-safe.svg?style=flat-square\n[license]: LICENSE\n[license-badge]: https://img.shields.io/github/license/nibtime/next-safe-middleware?style=flat-square\n\n[release-status]: https://github.com/nibtime/next-safe-middleware/actions/workflows/release.yml\n[release-status-badge]: https://img.shields.io/github/workflow/status/nibtime/next-safe-middleware/Release?style=flat-square&label=release\n\n[github-watch]: https://github.com/nibtime/next-safe-middleware/watchers\n[github-watch-badge]: https://img.shields.io/github/watchers/nibtime/next-safe-middleware.svg?style=social\n[github-star]: https://github.com/nibtime/next-safe-middleware/stargazers\n[github-star-badge]: https://img.shields.io/github/stars/nibtime/next-safe-middleware.svg?style=social\n[github-forks]: https://github.com/nibtime/next-safe-middleware/network/members\n[github-forks-badge]: https://img.shields.io/github/forks/nibtime/next-safe-middleware.svg?style=social\n\n## What\nThis package strives to make the setup and deployment of a [Strict Content Security Policy (CSP)\n](https://web.dev/strict-csp/) with Next.js an easy task. The design approach that makes this possible requires [Next.js Middleware](https://nextjs.org/docs/advanced-features/middleware), which has been introduced as Beta in [Next.js 12](https://nextjs.org/blog/next-12) and is stable since [Next.js 12.2](https://nextjs.org/blog/next-12-2).\n\nThis package handles all Strict CSP conundrums for you and works for:\n\n* pages with [`getStaticProps`](https://nextjs.org/docs/basic-features/data-fetching/get-static-props) - **Hash-based**\n\n* pages with [`getServerSideProps`](https://nextjs.org/docs/basic-features/data-fetching/get-server-side-props) - **Nonce-based** \n\n* pages with [`getStaticProps` + `revalidate` (ISR)](https://vercel.com/docs/concepts/next.js/incremental-static-regeneration) - **Hash-based**\n  \n\n**This package always sets CSP as HTTP response header**. That enables violation reporting and report-only mode even for static pages. Plus, it provides a middleware and API handlers that make the setup of CSP violation reporting very easy.\n\n\n## Why\nConfiguring and maintaining a [Content-Security-Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) can be a tedious and error prone task. Furthermore, classic CSPs with a whitelist approach don't give you the security you might think you get from them, because in a lot of cases, they are automatically bypassable. \n\nThere is a much better option: a [**Hash-based/Nonce-based Strict CSP**](https://web.dev/strict-csp/).\n\nSuch CSPs provide much better security and have always the same structure, so they don't need the maintenance that whitelist CSPs need, once they've been set up properly. But this setup is usually a a very big issue with Next.js (and with all web frameworks in general).\n\nThis is where this package comes in: To make this setup easy, convenient and a lot less error-prone.\n\n\n### Good Resources about (Strict) Content-Security-Policy (CSP)\n\n* The best overview on Strict CSPs: https://web.dev/strict-csp/\n\n* Great slides from a conference talk, has lots of insights and field data: https://static.sched.com/hosted_files/locomocosec2019/db/CSP%20-%20A%20Successful%20Mess%20Between%20Hardening%20and%20Mitigation%20%281%29.pdf\n\n* Great view on CSPs from an attacker's perspective: https://book.hacktricks.xyz/pentesting-web/content-security-policy-csp-bypass\n\n* Good explanation of the `strict-dynamic` keyword: https://content-security-policy.com/strict-dynamic/\n\n* Indispensible for testing: [The CSP Evaluator Extension for Google Chrome](https://chrome.google.com/webstore/detail/csp-evaluator/fjohamlofnakbnbfjkohkbdigoodcejf?hl=de)\n\n* Great tool to record CSP sources by browsing your site: [The Laboratory Extension for Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/laboratory-by-mozilla/)\n\n## Getting started\n\nInstall `@next-safe/middleware` from NPM\n\n```bash\nnpm -i @next-safe/middleware\n```\n\n```bash\nyarn add @next-safe/middleware\n```\n\n### Quickstart: Strict Content-Security-Policy (CSP)\n\nCreate the file `middleware.js` in your Next.js project folder:\n\n```js\n// middleware.js\nimport {\n  chainMatch,\n  isPageRequest,\n  csp,\n  strictDynamic,\n} from \"@next-safe/middleware\";\n\nconst securityMiddleware = [\n  csp({\n    // your CSP base configuration with IntelliSense\n    // single quotes for values like 'self' are automatic\n    directives: {\n      \"img-src\": [\"self\", \"data:\", \"https://images.unsplash.com\"],\n      \"font-src\": [\"self\", \"https://fonts.gstatic.com\"],\n    },\n  }),\n  strictDynamic(),\n];\n\nexport default chainMatch(isPageRequest)(...securityMiddleware);\n```\n\nCreate the file `pages/_document.js` in your Next.js project folder:\n\n```jsx\n// pages/_document.js\nimport {\n  getCspInitialProps,\n  provideComponents,\n} from \"@next-safe/middleware/dist/document\";\nimport Document, { Html, Main } from \"next/document\";\n\nexport default class MyDocument extends Document {\n  static async getInitialProps(ctx) {\n    const initialProps = await getCspInitialProps({ ctx });\n    return initialProps;\n  }\n  render() {\n    const { Head, NextScript } = provideComponents(this.props);\n    return (\n      <Html>\n        <Head />\n        <body>\n          <Main />\n          <NextScript />\n        </body>\n      </Html>\n    );\n  }\n}\n```\n\nFor every page under `pages` that uses `getServerSideProps` for data fetching:\n\n```js\nimport { gsspWithNonce } from \"@next-safe/middleware/dist/document\";\n\n// wrap data fetching with gsspWithNonce \n// to generate a nonce for CSP\nexport const getServerSideProps = gsspWithNonce(async (ctx) => {\n  return { props: { message: \"Hi, from getServerSideProps\" } };\n});\n\n// the generated nonce also gets injected into page props\nconst Page = ({ message, nonce }) => <h1>{`${message}. Nonce ${nonce}`}</h1>;\n\nexport default Page;\n```\n\nThats it. You should be all set now with a Strict CSP for your Next.js app!\n\n### Quickstart: CSP Violation Reporting\n\nAdd the `reporting` middleware in `middleware.js`:\n\n```js\n// middleware.js\nimport {\n  chainMatch,\n  isPageRequest\n  csp,\n  reporting,\n  strictDynamic,\n  strictInlineStyles,\n} from '@next-safe/middleware';\n\nconst securityMiddleware = [\n  csp(),\n  strictDynamic(),\n  reporting(),\n];\n\nexport default chainMatch(isPageRequest)(...securityMiddleware);\n```\n\nCreate the file `pages/api/reporting.js` to set up the reporting endpoint:\n\n```js\n// pages/api/reporting.js\nimport { reporting } from \"@next-safe/middleware/dist/api\";\n\n/** @type {import('@next-safe/middleware/dist/api').Reporter} */\nconst consoleLogReporter = (data) =>\n  console.log(JSON.stringify(data, undefined, 2));\n\nexport default reporting(consoleLogReporter);\n```\n\nThats it. Browsers will send CSP violation reports to this endpoint. You can easily react on validated reporting data by adding any number of custom reporters.\n\n#### Send violation reports to Sentry\n\nIf you use [Sentry](https://sentry.io) for monitoring your app, there is a convenient helper `sentryCspReporterForEndpoint` to create a reporter, that ingests all CSP violations into your Sentry project:\n\n```jsx\n// pages/api/reporting.js\nimport {\n  reporting,\n  sentryCspReporterForEndpoint,\n} from \"@next-safe/middleware/dist/api\";\n\n// lookup at https://docs.sentry.io/product/security-policy-reporting/\nconst sentryCspEndpoint = process.env.SENTRY_CSP_ENDPOINT;\nconst sentryCspReporter = sentryCspReporterForEndpoint(sentryCspEndpoint);\n\nexport default reporting(sentryCspReporter);\n```\n\n### Quickstart: Compose middleware\n\nHere's an example to show how you can combine security middleware from this package with your custom middleware by using `chain` and `chainMatch`:\n\n```js\n// middleware.js\nimport {\n  chain,\n  chainMatch,\n  isPageRequest,\n  csp,\n  strictDynamic,\n} from \"@next-safe/middleware\";\n\n/** @type {import('@next-safe/middleware').ChainableMiddleware} */\nconst geoBlockMiddleware = (req) => {\n  const BLOCKED_COUNTRY = \"GB\";\n  const country = req.geo.country || \"US\";\n\n  if (country === BLOCKED_COUNTRY) {\n    const response = new Response(\"Blocked for legal reasons\", { status: 451 });\n    // returning response terminates the chain\n    return response;\n  }\n};\n\nconst securityMiddleware = [csp(), strictDynamic()];\n\n/** \n * geoBlockMiddleware will be invoked on all requests \n * from `BLOCKED_COUNTRY` and then block the request \n * and terminate chain by returning a response with status 451\n * \n * securityMiddleware will only run on requests\n * that didn't get geo-blocked and only on requests for pages\n */\nexport default chain(\n  geoBlockMiddleware,\n  chainMatch(isPageRequest)(...securityMiddleware)\n);\n```\n\nIf you only want to use the composition features from this package, there's an extra bundle `@next-safe/middleware/dist/compose` just for that.\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<br />\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/nibtime\"><img src=\"https://avatars.githubusercontent.com/u/52962482?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>nibtime</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/commits?author=nibtime\" title=\"Code\">💻</a> <a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3Anibtime\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/nibtime/next-safe-middleware/commits?author=nibtime\" title=\"Documentation\">📖</a> <a href=\"#infra-nibtime\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"https://github.com/nibtime/next-safe-middleware/commits?author=nibtime\" title=\"Tests\">⚠️</a> <a href=\"#ideas-nibtime\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#example-nibtime\" title=\"Examples\">💡</a></td>\n    <td align=\"center\"><a href=\"https://github.com/alexturpin\"><img src=\"https://avatars.githubusercontent.com/u/134339?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Alex Turpin</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3Aalexturpin\" title=\"Bug reports\">🐛</a> <a href=\"https://github.com/nibtime/next-safe-middleware/commits?author=alexturpin\" title=\"Documentation\">📖</a> <a href=\"#ideas-alexturpin\" title=\"Ideas, Planning, & Feedback\">🤔</a></td>\n    <td align=\"center\"><a href=\"https://github.com/Neki\"><img src=\"https://avatars.githubusercontent.com/u/2143664?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Benoît Faucon</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3Aneki\" title=\"Bug reports\">🐛</a></td>\n    <td align=\"center\"><a href=\"https://uxsd.io/\"><img src=\"https://avatars.githubusercontent.com/u/1551001?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>René Schubert</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3Arenet\" title=\"Bug reports\">🐛</a></td>\n    <td align=\"center\"><a href=\"http://benhodgson.net\"><img src=\"https://avatars.githubusercontent.com/u/189707?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Ben Hodgson</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3Abenhodgson87\" title=\"Bug reports\">🐛</a></td>\n    <td align=\"center\"><a href=\"https://sbw.one\"><img src=\"https://avatars.githubusercontent.com/u/908178?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Stephan Bönnemann-Walenta</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/commits?author=boennemann\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://cian.ru/\"><img src=\"https://avatars.githubusercontent.com/u/2459175?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Shamil Yakupov</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3AShamilik\" title=\"Bug reports\">🐛</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/DuCanhGH\"><img src=\"https://avatars.githubusercontent.com/u/75556609?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>DuCanhGH</b></sub></a><br /><a href=\"https://github.com/nibtime/next-safe-middleware/issues?q=author%3ADuCanhGH\" title=\"Bug reports\">🐛</a></td>\n  </tr>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\n<br />\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! Check out the [contributing guide](https://next-safe-middleware.vercel.app/CONTRIBUTING) for getting started!","readmeFilename":"README.md","description":"Strict Content-Security-Policy (CSP) for Next.js with composable middleware","homepage":"https://next-safe-middleware.vercel.app","repository":{"type":"git","url":"git+https://github.com/nibtime/next-safe-middleware.git"},"bugs":{"url":"https://github.com/nibtime/next-safe-middleware/issues"},"keywords":["nextjs","security","content-security-policy","strict-csp","strict-dynamic","report-uri","report-to","reporting-api","middleware","chain","compose"]}