{"_id":"@remix-run/csrf-middleware","_rev":"14-4419ab5a0b8e1f73d769b5dc2899baf6","name":"@remix-run/csrf-middleware","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.0":{"name":"@remix-run/csrf-middleware","version":"0.0.0","license":"MIT","_id":"@remix-run/csrf-middleware@0.0.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"eafd554e75b7a202f21227caeb9016138d53ec76","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.0.0.tgz","fileCount":2,"integrity":"sha512-Vd/HnGq5RnqZTJ9N6hxlvdc5wClot5Ksm8OqOmIBFAGFOUBQCpRP/m95kTR2kzQN9v7aJW7ml/6yPuW6uvQWzw==","signatures":[{"sig":"MEQCIB4EOQjzneuWbWbxocKleaAQ2VdY4gAm0jCbl9cPuMgrAiB5cEp3wiNJsmTRSOCZ+XaZ5aXZDRczryBNuEhEV48fnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.10.1","description":"Placeholder package for Remix CI/OIDC setup","directories":{},"_nodeVersion":"25.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.0.0_1773201808126_0.6855031510130651","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@remix-run/csrf-middleware","version":"0.1.0","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f368ce2ecccec0461ececbfa0c51ffacc35007c6","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.0.tgz","fileCount":11,"integrity":"sha512-EZAV9UZrx3qdYu3ov9NgFVJchw6kOLYI2uRB+e3WBVW1phruHKc42EpdJIZ6fU0J9Of0Lfo4X4VTM7O1/u1cWw==","signatures":[{"sig":"MEYCIQDZCkAGkvR3a280VLZGwTZVYFklhVLj2SJK/QJ9n0CnOAIhAMgOtxYHr7YoqZ2NIJWEAgXDYeC5l2TzmbCiZTblsIb3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26925},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"node --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/5f870cdac09c45e5e3848d58f1213480/remix-run-csrf-middleware-0.1.0.tgz","_integrity":"sha512-EZAV9UZrx3qdYu3ov9NgFVJchw6kOLYI2uRB+e3WBVW1phruHKc42EpdJIZ6fU0J9Of0Lfo4X4VTM7O1/u1cWw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.9.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@remix-run/session":"^0.4.1","@remix-run/fetch-router":"^0.18.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/cookie":"0.5.1","@remix-run/session":"0.4.1","@remix-run/fetch-router":"0.18.0","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.2.0","@remix-run/form-data-middleware":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.0_1774479874182_0.6094692983902816","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@remix-run/csrf-middleware","version":"0.1.1","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"c802a87e0759ca38f501f83c42bc505483dd43ee","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.1.tgz","fileCount":11,"integrity":"sha512-ipty4+cJIZ7pJqohy6ureErqEvbDwuKMauLHyHO0XYcGx9dQYa6WF88Njap8AHz3AbpaJjxeUYMhs/UunMljjA==","signatures":[{"sig":"MEYCIQDc/6R58+YxooqMDQ1yRteJcpq5qFSFOVzGZ3uDjs8cjQIhAIqZ9jUQULHIDzAECiFBS77wxSXUxRQ6S15TRHKlpZgA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26990},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/dd7e9c1fd3786c1cb4e7b1065fbcd411/remix-run-csrf-middleware-0.1.1.tgz","_integrity":"sha512-ipty4+cJIZ7pJqohy6ureErqEvbDwuKMauLHyHO0XYcGx9dQYa6WF88Njap8AHz3AbpaJjxeUYMhs/UunMljjA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.12.1","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/session":"^0.4.1","@remix-run/fetch-router":"^0.18.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.1.0","@remix-run/assert":"0.1.0","@remix-run/cookie":"0.5.1","@remix-run/session":"0.4.1","@remix-run/fetch-router":"0.18.1","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.2.1","@remix-run/form-data-middleware":"0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.1_1776904692653_0.361623006787138","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@remix-run/csrf-middleware","version":"0.1.2","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"144e34165472fa496677988667bd41d7f55866ce","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.2.tgz","fileCount":11,"integrity":"sha512-f+l8f3sBD3xBec2kKKvEVwPLLD7No96Xf8nOYXhuPyeSy2iRaeRG+psqpZ0nH4WukU0/mmWXxuM0/DkPxr4mgg==","signatures":[{"sig":"MEUCIAZEerQWjEfZiIAUGFNLjnuhLF1CWe59VrXu0YbnRALsAiEA3wbViV+Z/4KdvHberEPiTcgBNzOncR8Dlh8NzM22PI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27032},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/fbeb7cd07e9aaa01b0d636cab7bd74f4/remix-run-csrf-middleware-0.1.2.tgz","_integrity":"sha512-f+l8f3sBD3xBec2kKKvEVwPLLD7No96Xf8nOYXhuPyeSy2iRaeRG+psqpZ0nH4WukU0/mmWXxuM0/DkPxr4mgg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.11.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@remix-run/session":"^0.4.1","@remix-run/fetch-router":"^0.18.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.3.0","@remix-run/assert":"0.2.0","@remix-run/cookie":"0.5.1","@remix-run/session":"0.4.1","@remix-run/fetch-router":"0.18.2","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.2.2","@remix-run/form-data-middleware":"0.2.3"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.2_1777576323765_0.8397639722631802","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@remix-run/csrf-middleware","version":"0.1.3","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.3","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"06afce25835413db21383086cc8a6bcc8d66152d","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.3.tgz","fileCount":11,"integrity":"sha512-h3FLkRnoPaRlS5+L+BwPMSYvqzalhOWC2d0HxJPGditKvGzuE5AcyQcH8ybNvMSqom461GqWSNGbCIJWHCXRSg==","signatures":[{"sig":"MEUCIA4D5pGaco5nraDHpEDCpVTJvsOseLHqXOtldyK7CDtiAiEA1OJS0EpSSP3ji2kgq/IwATBiQDFKRVGAhG9dQnzUW3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27678},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.3.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/18ea3057a528de52e2eccc015b20bd0b/remix-run-csrf-middleware-0.1.3.tgz","_integrity":"sha512-h3FLkRnoPaRlS5+L+BwPMSYvqzalhOWC2d0HxJPGditKvGzuE5AcyQcH8ybNvMSqom461GqWSNGbCIJWHCXRSg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.12.1","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/session":"^0.4.1","@remix-run/fetch-router":"^0.19.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.0","@remix-run/assert":"0.2.0","@remix-run/cookie":"0.5.2","@remix-run/session":"0.4.1","@remix-run/fetch-router":"0.19.0","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.3.0","@remix-run/form-data-middleware":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.3_1779247355659_0.28564029289392745","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@remix-run/csrf-middleware","version":"0.1.4","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.4","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"72828a6a968fd287aa38b5b4ef82407c19b6493b","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.4.tgz","fileCount":11,"integrity":"sha512-FuMf8lEqkb1ldydBCoP++aZ+iYKY/kgPqas5MRbiQ6M6yX18DUfvZfP2B9fq4s9b4n6fsb/rLYqEYkVYDVD3dA==","signatures":[{"sig":"MEQCIAuo62h+Z13rculseANH61DMNlAR1MDEh3WU9UlWgocfAiB8NpJOzd3OMaRil8fj3W/nPSqPxCRrPiAt3HjefN/YbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27678},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.4.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/b1d8d31c2b3fe91bc93e3672880409a0/remix-run-csrf-middleware-0.1.4.tgz","_integrity":"sha512-FuMf8lEqkb1ldydBCoP++aZ+iYKY/kgPqas5MRbiQ6M6yX18DUfvZfP2B9fq4s9b4n6fsb/rLYqEYkVYDVD3dA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.12.1","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.19.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.1","@remix-run/assert":"0.2.1","@remix-run/cookie":"0.5.3","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.19.1","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.3.1","@remix-run/form-data-middleware":"0.3.1"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.4_1779308338507_0.4198892424412237","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@remix-run/csrf-middleware","version":"0.1.5","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.5","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"cde4dd40bf7b1ed3fc028ae7903bb1ff0bff5654","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.5.tgz","fileCount":11,"integrity":"sha512-YGc9WXaOyRfC1k0bykTWf5THh8GYLXcHAcva+lqa9rXxXNSwh86xre77k8ZtugppZdxISZvh0jRyVk0ZyXQszQ==","signatures":[{"sig":"MEQCIG6pcvqQXxPlXX0EcXV4Eh4aXE6wRCnsYO2DrAwq8dkoAiB0LvdAtRZBwH7Mr+P/s6/tN8FLvCTx0bCbPov4xX2gJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27678},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.5.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/a2236cca6a87be0af1771f24057708c9/remix-run-csrf-middleware-0.1.5.tgz","_integrity":"sha512-YGc9WXaOyRfC1k0bykTWf5THh8GYLXcHAcva+lqa9rXxXNSwh86xre77k8ZtugppZdxISZvh0jRyVk0ZyXQszQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.13.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.4.2","@remix-run/assert":"0.2.1","@remix-run/cookie":"0.5.4","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.19.2","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.3.2","@remix-run/form-data-middleware":"0.3.2"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.5_1780078684243_0.0415277996275738","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@remix-run/csrf-middleware","version":"0.1.6","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.6","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"c9a7506ebd4426e87b8cb12d8cd7dcb52d278514","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.6.tgz","fileCount":11,"integrity":"sha512-qqF92bQFwKu3qnLvMjFPhf6B0gHr4U4ZolLFcfOVgK8OcszHZQdBCLwmwGu+G6MxbaNnk0OtE+kL36liJ5+Tzw==","signatures":[{"sig":"MEYCIQCmV33TxU+FhXHjUmuhdmdv5CAJ6m4zM227hEVmkXCiiwIhAOe4A03B8klziUtCg+BpeCWselID4cEO3XcnmQmBQLy9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27678},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.6.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/5f03ddff4f9b623048b90860c2f4e798/remix-run-csrf-middleware-0.1.6.tgz","_integrity":"sha512-qqF92bQFwKu3qnLvMjFPhf6B0gHr4U4ZolLFcfOVgK8OcszHZQdBCLwmwGu+G6MxbaNnk0OtE+kL36liJ5+Tzw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.13.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.20.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.5.0","@remix-run/assert":"0.3.0","@remix-run/cookie":"0.5.4","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.20.0","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.3.3","@remix-run/form-data-middleware":"0.3.3"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.6_1780683979190_0.19750206584087748","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@remix-run/csrf-middleware","version":"0.1.7","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.7","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"94fe5b14b26f769fdf6aec0e8e4fdb1d0b934f3b","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.7.tgz","fileCount":11,"integrity":"sha512-+AUUVIlDEEp62JCyLWC6+pQ7BqaZ2lSkxrBFK/l3t3YYsuA30yk6aPpbQXBXLBtHI12eWA2PHAFZxeRrCPHphQ==","signatures":[{"sig":"MEUCIC+KripWuJOlVJhc6mFByOmQKWJ3W+f5MeSnH08S6ZEfAiEAvjPNI/h4v/V7pMLgMbAICnqsRXMBTNwK6hrkDdvW9YM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27678},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.7.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/ad7fdc0de8005bb2acb5c0add0a63e7a/remix-run-csrf-middleware-0.1.7.tgz","_integrity":"sha512-+AUUVIlDEEp62JCyLWC6+pQ7BqaZ2lSkxrBFK/l3t3YYsuA30yk6aPpbQXBXLBtHI12eWA2PHAFZxeRrCPHphQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.13.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.17.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.20.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/test":"0.5.0","@remix-run/assert":"0.3.0","@remix-run/cookie":"0.5.4","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.20.1","@typescript/native-preview":"7.0.0-dev.20251125.1","@remix-run/session-middleware":"0.3.4","@remix-run/form-data-middleware":"0.3.4"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.7_1782932614818_0.19325163278057023","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@remix-run/csrf-middleware","version":"0.1.8","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.8","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"857f6502259a22094e51e542f03e0ab2410703a9","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.8.tgz","fileCount":11,"integrity":"sha512-7zMWNLjJQW5UwWC2eIwNxT2yFLXzriBD5tls1SEkXyLMlk/NVnqqzISbd0BbZuAX+a+p6RD2vyE4ldcpLdaj+w==","signatures":[{"sig":"MEUCIA8yrDtGwC6VaOhGKbu01fbWJZXR9mTK9p8iYvNMwuQKAiEAiUVcMXFLI7uxQewEPhBY8Zl3wd6HXdTXdRCkYpxeddM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27646},"type":"module","_from":"file:remix-run-csrf-middleware-0.1.8.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/2dae606d7d63c877e7f0e6b61683ebc8/remix-run-csrf-middleware-0.1.8.tgz","_integrity":"sha512-7zMWNLjJQW5UwWC2eIwNxT2yFLXzriBD5tls1SEkXyLMlk/NVnqqzISbd0BbZuAX+a+p6RD2vyE4ldcpLdaj+w==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.16.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0","@remix-run/cookie":"0.6.0","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.21.0","@remix-run/session-middleware":"0.4.0","@remix-run/form-data-middleware":"0.3.5"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.8_1786666476653_0.48723630523100847","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@remix-run/csrf-middleware","version":"0.1.9","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.9","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"6a2f4a90494b070913d7bc75a87019d41a40fb60","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.9.tgz","fileCount":11,"integrity":"sha512-uYvD1fvvvOaepd0qjW3gYshnFvfIOU57w8B0Y/RbhL2cKgNzHnRIO99fzN4sA/4NFhGA0E68ql+NectXE8375g==","signatures":[{"sig":"MEUCIHwOnuFLLn1ULBc0IHIIC/T0TYvghK8zsAMoaObFGf9oAiEAwfe3Gw0jLGAu4B6MqtC/qjrNBNZqKm2DwFCaKbRn73I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27646},"type":"module","_from":"file:/tmp/remix-publish-csrf-middleware-P0B1oe/remix-run-csrf-middleware-0.1.9.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/remix-publish-csrf-middleware-P0B1oe/remix-run-csrf-middleware-0.1.9.tgz","_integrity":"sha512-uYvD1fvvvOaepd0qjW3gYshnFvfIOU57w8B0Y/RbhL2cKgNzHnRIO99fzN4sA/4NFhGA0E68ql+NectXE8375g==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.19.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.22.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0","@remix-run/cookie":"0.6.0","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.22.0","@remix-run/session-middleware":"0.4.1","@remix-run/form-data-middleware":"0.3.6"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.9_1788908626232_0.5468793922259003","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@remix-run/csrf-middleware","version":"0.1.10","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.1.10","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"e3ff6e59c77564d0eddfddf02d92257d8cfa7864","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.1.10.tgz","fileCount":11,"integrity":"sha512-hQFvOKr0sftLQSqcQB1EtKzK5vq5ESKkVo+ZisvKkAgdSUvfwrSV7QKxA/MQPP1e+f7mLgfxBfrvmHvvH9vL7Q==","signatures":[{"sig":"MEUCIQDeFHjGeEXEyozEsPU+Jt/2V/X2ZA/PcS5DTtbCNKkTaAIgfzGwgx9J9jcRD5vAf/sPNKUJVc0tCkU0DEEVxH06XUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCIBsD6jZdDYUf+LtL6ugqeKFef7CgOPe/tUhNM2YCYdQIhAL0x7WIpje9YRqASN8R1KegOa3964L4NfSgKBYlw/sxx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27941},"type":"module","_from":"file:/tmp/remix-publish-csrf-middleware-yuMXXv/remix-run-csrf-middleware-0.1.10.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/remix-publish-csrf-middleware-yuMXXv/remix-run-csrf-middleware-0.1.10.tgz","_integrity":"sha512-hQFvOKr0sftLQSqcQB1EtKzK5vq5ESKkVo+ZisvKkAgdSUvfwrSV7QKxA/MQPP1e+f7mLgfxBfrvmHvvH9vL7Q==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.19.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@remix-run/session":"^0.4.2","@remix-run/fetch-router":"^0.22.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.1","@remix-run/assert":"0.3.0","@remix-run/cookie":"0.7.0","@remix-run/session":"0.4.2","@remix-run/fetch-router":"0.22.1","@remix-run/session-middleware":"0.5.0","@remix-run/form-data-middleware":"0.3.7","@remix-run/method-override-middleware":"0.1.15"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.1.10_1789770882468_0.08253548002107025","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@remix-run/csrf-middleware","version":"0.2.0","keywords":["fetch","router","middleware","csrf","security","origin"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/csrf-middleware@0.2.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"6fc807c2473ca1b093fb28c1c7b17cb0f38edef3","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-0.2.0.tgz","fileCount":11,"integrity":"sha512-F/vLfFMfUMrYGfJ4VVsbVPJEITPGw26IUKcRJNwICuiSccY1seEIgJOWC6z8QKqebFetNxOP7ChJ+LB5FWoeZg==","signatures":[{"sig":"MEUCIGrxqt07JwJ4/y1atqZCyUTQzGkbn7/K55VXF1HJZyQCAiEA46E3qD7pmzOfUzN4eCVi+DUBy+jKkOaCVjgG0Z1w2uk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDO2MP7SptWxOjuiA5Ym1yTYuQYnD6HV1VGdcvVL1RxMgIhAJ6AvvIYuHng7HM1r17srx7dngMy9lOo/LKZf/KfebGq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27931},"type":"module","_from":"file:/tmp/remix-publish-csrf-middleware-5X8Eo7/remix-run-csrf-middleware-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4bcca873-bced-4034-a140-435a15a7624c"}},"_resolved":"/tmp/remix-publish-csrf-middleware-5X8Eo7/remix-run-csrf-middleware-0.2.0.tgz","_integrity":"sha512-F/vLfFMfUMrYGfJ4VVsbVPJEITPGw26IUKcRJNwICuiSccY1seEIgJOWC6z8QKqebFetNxOP7ChJ+LB5FWoeZg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.19.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"@remix-run/session":"^0.4.3","@remix-run/fetch-router":"^0.22.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"0.6.2","@remix-run/assert":"0.3.1","@remix-run/cookie":"0.7.1","@remix-run/session":"0.4.3","@remix-run/fetch-router":"0.22.2","@remix-run/session-middleware":"0.5.1","@remix-run/form-data-middleware":"0.3.8","@remix-run/method-override-middleware":"0.1.16"},"_npmOperationalInternal":{"tmp":"tmp/csrf-middleware_0.2.0_1790631702727_0.3722491542758908","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@remix-run/csrf-middleware@1.0.0","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"807c028d0786b35ea08a072095f36d75ad650783","tarball":"https://registry.npmjs.org/@remix-run/csrf-middleware/-/csrf-middleware-1.0.0.tgz","fileCount":11,"integrity":"sha512-6vfeigi3LOzrHmpkEse1Y/i4d264WGXDpzAE2BhjuFx/HzTHyJYfIfYPV3gKx2psTeeG1pLLX9Ch7end89gZAg==","signatures":[{"sig":"MEYCIQCE6HkF24QHcYzUNLKEkIoVIBfGUVcQBtrZG0Lla4A5dAIhAPqGTavmLmh1I9MorDgzNpA6iOjF4QQ17bjnmHirZL69","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC9MUWnfDkClBPbyABT3TJ5ZmdzGPmfhpV0lDnSaQX86AiBLWgZFrmOnQ2c7k0PpFCUB23Ja43/KDV2XqAHHDARQaQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcsrf-middleware@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27928},"name":"@remix-run/csrf-middleware","type":"module","_from":"file:/tmp/remix-publish-csrf-middleware-zGzDsl/remix-run-csrf-middleware-1.0.0.tgz","author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"version":"1.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4bcca873-bced-4034-a140-435a15a7624c"}},"homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","keywords":["fetch","router","middleware","csrf","security","origin"],"_resolved":"/tmp/remix-publish-csrf-middleware-zGzDsl/remix-run-csrf-middleware-1.0.0.tgz","_integrity":"sha512-6vfeigi3LOzrHmpkEse1Y/i4d264WGXDpzAE2BhjuFx/HzTHyJYfIfYPV3gKx2psTeeG1pLLX9Ch7end89gZAg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"_npmVersion":"11.19.0","description":"Middleware for CSRF protection in Fetch API servers","directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"@remix-run/session":"^1.0.0","@remix-run/fetch-router":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/test":"1.0.0","@remix-run/assert":"1.0.0","@remix-run/cookie":"1.0.0","@remix-run/session":"1.0.0","@remix-run/fetch-router":"1.0.0","@remix-run/session-middleware":"1.0.0","@remix-run/form-data-middleware":"1.0.0","@remix-run/method-override-middleware":"1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/csrf-middleware_1.0.0_1790895338413_0.2996360008512484"}}},"time":{"created":"2026-03-11T04:03:28.059Z","modified":"2026-10-01T22:55:38.831Z","0.0.0":"2026-03-11T04:03:28.289Z","0.1.0":"2026-03-25T23:04:34.313Z","0.1.1":"2026-04-23T00:38:12.797Z","0.1.2":"2026-04-30T19:12:03.889Z","0.1.3":"2026-05-20T03:22:35.805Z","0.1.4":"2026-05-20T20:18:58.672Z","0.1.5":"2026-05-29T18:18:04.386Z","0.1.6":"2026-06-05T18:26:19.304Z","0.1.7":"2026-07-01T19:03:34.951Z","0.1.8":"2026-08-14T00:14:36.812Z","0.1.9":"2026-09-08T23:03:46.374Z","0.1.10":"2026-09-18T22:34:42.602Z","0.2.0":"2026-09-28T21:41:42.805Z","1.0.0":"2026-10-01T22:55:38.495Z"},"bugs":{"url":"https://github.com/remix-run/remix/issues"},"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","homepage":"https://github.com/remix-run/remix/tree/main/packages/csrf-middleware#readme","keywords":["fetch","router","middleware","csrf","security","origin"],"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/csrf-middleware"},"description":"Middleware for CSRF protection in Fetch API servers","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# csrf-middleware\n\nCSRF protection middleware for Remix. It provides synchronizer-token validation backed by session storage, plus origin checks for unsafe requests.\n\n## Features\n\n- **Session-Backed Tokens** - Creates and persists CSRF tokens in the request session\n- **Flexible Token Extraction** - Reads tokens from headers, form fields, or a custom resolver\n- **Origin Validation** - Validates `Origin`/`Referer` for unsafe methods with customizable policies\n- **Configurable Enforcement** - Control safe methods, token keys, and failure responses\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\nThis middleware requires [`session-middleware`](https://github.com/remix-run/remix/tree/main/packages/session-middleware) to run before it.\n\n```ts\nimport { createCookie } from 'remix/cookie'\nimport { createRouter } from 'remix/router'\nimport { createCookieSessionStorage } from 'remix/session-storage/cookie'\nimport { session } from 'remix/middleware/session'\nimport { csrf, getCsrfToken } from 'remix/middleware/csrf'\n\nlet sessionCookie = createCookie('__session', { secrets: ['secret1'] })\nlet sessionStorage = createCookieSessionStorage()\n\nlet router = createRouter({\n  middleware: [session(sessionCookie, sessionStorage), csrf()],\n})\n\nrouter.get('/form', (context) => {\n  let token = getCsrfToken(context)\n\n  return new Response(`\n    <form method=\"post\" action=\"/submit\">\n      <input type=\"hidden\" name=\"_csrf\" value=\"${token}\" />\n      <button type=\"submit\">Submit</button>\n    </form>\n  `)\n})\n```\n\n## Token Sources\n\nBy default, `csrf()` checks token values in this order:\n\n1. Request headers: `X-Csrf-Token`, `X-Xsrf-Token`, `Csrf-Token`\n2. Form field: `_csrf` (requires `formData()` middleware to parse request bodies)\n\nQuery parameters are not read by default. Keep tokens in headers or form fields to avoid exposing them in logs, browser history, and copied URLs.\n\nYou can replace the default lookup using `value(context)`. Applications that need query parameter tokens can opt in explicitly:\n\n```ts\ncsrf({\n  value(context) {\n    return context.url.searchParams.get('_csrf')\n  },\n})\n```\n\nThis resolver replaces both header and form field lookup; it does not add another fallback.\n\n## Origin Validation\n\nFor requests whose original method is unsafe (`POST`, `PUT`, `PATCH`, `DELETE`), the middleware validates the token and request origin. Routing middleware may change `context.method`, but method overrides do not change whether `csrf()` requires validation.\n\n- Default: same-origin validation when `Origin` or `Referer` is present\n- Custom: provide `origin` as string, regex, array, or function\n- Missing origin behavior: controlled by `allowMissingOrigin` (default `true`)\n\n## Caveats\n\n- The synchronizer token is the primary defense in `csrf()`. `Origin` and `Referer` checks are an additional signal, not the only protection.\n- By default, unsafe requests with a valid token still pass when `Origin` and `Referer` are both missing. Set `allowMissingOrigin: false` if your deployment wants to require provenance headers on unsafe requests.\n- If you want to reject more unsafe requests before token validation, especially when browser provenance headers are available, layer [`cop-middleware`](https://github.com/remix-run/remix/tree/main/packages/cop-middleware) in front of `csrf()`.\n\n## Why This Exists\n\nModern browsers now provide stronger cross-origin signals like `Sec-Fetch-Site`, and explicit `SameSite=Lax` cookies already block many CSRF attacks. We have considered the lighter, tokenless model used by Go's `CrossOriginProtection`, and we think it is a good fit when a deployment can make all of the guarantees that model depends on.\n\nRemix cannot assume those guarantees for every app. `csrf()` still exists as the conservative option for apps that want synchronizer tokens in addition to origin checks, especially for session-backed HTML form workflows and mixed deployment environments.\n\nIf your deployment can guarantee the prerequisites for the tokenless model, this middleware is optional. In that case, [`cop-middleware`](https://github.com/remix-run/remix/tree/main/packages/cop-middleware) may be a better fit.\n\n## Related Packages\n\n- [`cop-middleware`](https://github.com/remix-run/remix/tree/main/packages/cop-middleware) - Middleware for tokenless cross-origin protection using browser provenance headers\n- [`fetch-router`](https://github.com/remix-run/remix/tree/main/packages/fetch-router) - Router for the web Fetch API\n- [`session-middleware`](https://github.com/remix-run/remix/tree/main/packages/session-middleware) - Session middleware required by `csrf()`\n- [`form-data-middleware`](https://github.com/remix-run/remix/tree/main/packages/form-data-middleware) - Needed for form body token extraction\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}