{"_id":"@remix-run/cop-middleware","_rev":"12-f8b23b966835a3de22e3796215c66a49","name":"@remix-run/cop-middleware","dist-tags":{"latest":"0.1.10"},"versions":{"0.0.0":{"name":"@remix-run/cop-middleware","version":"0.0.0","license":"MIT","_id":"@remix-run/cop-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":"8f1808b746d0d8c0774922cc1ada7738eedd8d5b","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.0.0.tgz","fileCount":2,"integrity":"sha512-8TeDXoc6hW4M7Z7bR8s7RKMBK221upKSfNEAjNahFpqslejVCQskObqHeNtK2ub21QhaWXGTIoMI7ZuDnkYnvg==","signatures":[{"sig":"MEUCIFwgY8/NXet6O90VqIsbnq3DGfZWRfg/GvizzDh81tI0AiEA3xkCWI2IU3YMNPkfm1D40CxQ04K2AySzrFtsFiqyj9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-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/cop-middleware_0.0.0_1773195815106_0.687214344059776","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@remix-run/cop-middleware","version":"0.1.0","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"9a910b9302302ec925a5b6ed4f51c2a8ccc1a401","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.0.tgz","fileCount":11,"integrity":"sha512-5rMNrBswTJJLPsu1nUfXubgVf7XBTRfPNfd/4QQHaXRdhXVWVxU9HbNJrOjd7iNbBWuZeaJxSdDepbQLnuBkTg==","signatures":[{"sig":"MEUCIQCPFhWHw8BiXlL55TpGfwse/SzOxrxUQ5BzSfWa2hfgdgIgaa+efMYXY8uiPYloPj2Hzn6ByfGsW/oHQo1+ncE2FKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27755},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/f503ff35c5f42ccc63a212e1209731f8/remix-run-cop-middleware-0.1.0.tgz","_integrity":"sha512-5rMNrBswTJJLPsu1nUfXubgVf7XBTRfPNfd/4QQHaXRdhXVWVxU9HbNJrOjd7iNbBWuZeaJxSdDepbQLnuBkTg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.9.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@remix-run/fetch-router":"^0.18.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/fetch-router":"0.18.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.0_1774479837388_0.43060738686553135","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@remix-run/cop-middleware","version":"0.1.1","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"717d5950a4691b6fb145e0822d6f605c78b5a041","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.1.tgz","fileCount":11,"integrity":"sha512-J6LITgsisTWY6TEU9Bx2ngq/l5+1iX3R9hbV8/AC9JJgSVZLC1gq7dda5MlFCUWKLyVb8Cv+UMtKDMpLlxgemw==","signatures":[{"sig":"MEYCIQD2OfDHxCOiAMsd9y2OZ1eU74JKfh/BY0SfshJS53ywwAIhAJv0DYLzHBxVX0Re7oqTebDgs/Vx/ihMfQJCKAfU5HAe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27820},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/43a6498e008e31cdb45d0205c9e5591f/remix-run-cop-middleware-0.1.1.tgz","_integrity":"sha512-J6LITgsisTWY6TEU9Bx2ngq/l5+1iX3R9hbV8/AC9JJgSVZLC1gq7dda5MlFCUWKLyVb8Cv+UMtKDMpLlxgemw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.12.1","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@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/fetch-router":"0.18.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.1_1776904651573_0.5256962489799692","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@remix-run/cop-middleware","version":"0.1.2","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"182ab38d3b3bb8fffdc061f83d4e8dc15fa229ab","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.2.tgz","fileCount":11,"integrity":"sha512-8N0yGKuEeP9AD+1uyq/kwF+F82gmG2otGt4nzzXOYDm/6D7pkFfAvQpV2Fhv6sNYtntKQnIzyTMa6tdMXP3n0A==","signatures":[{"sig":"MEYCIQCacyqCmJtSq6hss/cGXkAzukVwKo+h3FlYFEkxt3UCkwIhAIYmQbpgnVOyFgh15gR8Sj5Kyp9GROVPR7YkElLb5dcF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27862},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/a934a820408138080db356e6e3ea8b85/remix-run-cop-middleware-0.1.2.tgz","_integrity":"sha512-8N0yGKuEeP9AD+1uyq/kwF+F82gmG2otGt4nzzXOYDm/6D7pkFfAvQpV2Fhv6sNYtntKQnIzyTMa6tdMXP3n0A==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.11.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@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/fetch-router":"0.18.2","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.2_1777576288953_0.7368065620380919","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@remix-run/cop-middleware","version":"0.1.3","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.3","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"2b6fa3e614611f94fea2ce8ce3328cc96644adf0","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.3.tgz","fileCount":11,"integrity":"sha512-lDHT30W1ncn2x/exFjiu1m4C6hJjFJeEktRj9lr5Gms9AqXHTaFOjB2AS905+AGnTZauBYGFJ6QlW4APLQLNvg==","signatures":[{"sig":"MEQCICUFm0MGbVNID7eLObpHbTXtJlcEAf0K7U5jmYY7nb7kAiBVWa19l+nXEjqBGBRZrQbTwRGQxfSnjxSN/rBjYYLlbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28010},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/6b07163d07022c9c06853831ee9933de/remix-run-cop-middleware-0.1.3.tgz","_integrity":"sha512-lDHT30W1ncn2x/exFjiu1m4C6hJjFJeEktRj9lr5Gms9AqXHTaFOjB2AS905+AGnTZauBYGFJ6QlW4APLQLNvg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.12.1","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@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/fetch-router":"0.19.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.3_1779247300699_0.04184855124750664","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@remix-run/cop-middleware","version":"0.1.4","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.4","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"c4acd8126bc43004950c0bb627e9db92e3385f37","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.4.tgz","fileCount":11,"integrity":"sha512-HqPRPzEfj/LqF8KO1af2539FQnS4WtbuZ5Uxxse7JveCARL0Lu5dNbZWc46l51vFc5VNvRVT2P1KiULyZn3ONg==","signatures":[{"sig":"MEUCIH+AAawn+qi8lI6mdT1/rNSX40090/s2C50Y6ly4v344AiEAxpphuwQjP2ecu5aNKKr4EefhH5L2oMJx2K+bPaLOfls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28010},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/0bd89ae50df598fc92ba831e5f998558/remix-run-cop-middleware-0.1.4.tgz","_integrity":"sha512-HqPRPzEfj/LqF8KO1af2539FQnS4WtbuZ5Uxxse7JveCARL0Lu5dNbZWc46l51vFc5VNvRVT2P1KiULyZn3ONg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.12.1","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@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/fetch-router":"0.19.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.4_1779308268606_0.6978388639949404","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@remix-run/cop-middleware","version":"0.1.5","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.5","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f89ba6ae48d814e23167302b64a70bdf7344ce92","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.5.tgz","fileCount":11,"integrity":"sha512-mJt81FwPS8Qee4CaCQPy9Gbt9Hm38J4y8hrVJ0DFDBVz0NaTSu56qitfAsa10EUGox9zN7c6w6feOGQUJzrwNQ==","signatures":[{"sig":"MEYCIQCUZVJBS3uQmq4vQmAEzwbFtVwvBYOD10JsgOKVXsJeAwIhAN15HWme/vuBqDSnF545BsmjTIoA0LQN442xb38wQ/oj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28010},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/42762c405c66c184e3cc399dd904ffbe/remix-run-cop-middleware-0.1.5.tgz","_integrity":"sha512-mJt81FwPS8Qee4CaCQPy9Gbt9Hm38J4y8hrVJ0DFDBVz0NaTSu56qitfAsa10EUGox9zN7c6w6feOGQUJzrwNQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.13.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@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/fetch-router":"0.19.2","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.5_1780078621482_0.7370852670564232","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@remix-run/cop-middleware","version":"0.1.6","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.6","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"9a7b481606836bc3badfbf78c2c84eceb1d35b23","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.6.tgz","fileCount":11,"integrity":"sha512-KPTHCIunLQxzNHXPel0jYFpKcmM7TF9GxMaitV0NGh8JktRDX0ckS+6lpHk7gGf06lIBYcafgqwrIVdp/LXSXg==","signatures":[{"sig":"MEUCIClYo1aG8/3+/9RZofN/WfZOayNfstzXHgyFgr+5JFjaAiEAjH36g4nxWD0eqGQ3oyVmd2PhSXxOZVt0ZnVMlpGYBeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28010},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/170711bc0d6b539211c68d8803cd9bcb/remix-run-cop-middleware-0.1.6.tgz","_integrity":"sha512-KPTHCIunLQxzNHXPel0jYFpKcmM7TF9GxMaitV0NGh8JktRDX0ckS+6lpHk7gGf06lIBYcafgqwrIVdp/LXSXg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.13.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@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/fetch-router":"0.20.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.6_1780683929576_0.05988178968116231","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@remix-run/cop-middleware","version":"0.1.7","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.7","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"2ec00c2bc42ed8f3e8f504de26af8462665b06a4","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.7.tgz","fileCount":11,"integrity":"sha512-B3UEE2ob4GNG6eQilEhqUygCK7t7oPqpNfAtCqhoN+R+LBsdi+9+re5wHaT3xNTa4eeT6YqyXnQsQX6A4otzyg==","signatures":[{"sig":"MEUCIQDYAyeangy2XLRxRimmJlIZlBJT5WjNYyLI1GN8RFWpzQIgLEnpSteIZLnkQKuh1jNLcSp3kdTG/dzGilEFDuLWjLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28010},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/a4ac2b445cc79c3f2cc577505be97aa1/remix-run-cop-middleware-0.1.7.tgz","_integrity":"sha512-B3UEE2ob4GNG6eQilEhqUygCK7t7oPqpNfAtCqhoN+R+LBsdi+9+re5wHaT3xNTa4eeT6YqyXnQsQX6A4otzyg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.13.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.17.0","dependencies":{"@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/fetch-router":"0.20.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.7_1782932538068_0.7362271904820816","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@remix-run/cop-middleware","version":"0.1.8","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.8","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"442a0516fbcbb8f55e5458f736304bbd48f03d96","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.8.tgz","fileCount":11,"integrity":"sha512-0AOzbNsTyjxFmwpF0im1RGQCpaj6I2gyUTbai5/vjx2D2H/6LRg6t2eJXj715m1e1dDuyQwURZUJKGKFjVYAlw==","signatures":[{"sig":"MEUCIQDCPSo8A33Db4TYGBTcwy5kowgJkaYzc7E5RkYHwBkhMgIgNWrsbnXcziKjs/yIZ1QTqSp33g3oXzgKCjuVAyl5FlQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27978},"type":"module","_from":"file:remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/fbdfc46ea3672d49d127d65812423749/remix-run-cop-middleware-0.1.8.tgz","_integrity":"sha512-0AOzbNsTyjxFmwpF0im1RGQCpaj6I2gyUTbai5/vjx2D2H/6LRg6t2eJXj715m1e1dDuyQwURZUJKGKFjVYAlw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.16.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@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/fetch-router":"0.21.0"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.8_1786666416630_0.530174108479996","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@remix-run/cop-middleware","version":"0.1.9","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/cop-middleware@0.1.9","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"31aa5636d70f14c6cfe80a52001acb13f894d09a","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.9.tgz","fileCount":11,"integrity":"sha512-qzdqCjCu/YAebSsQsNnfObha40SdbHBfId9t7Xyji5ltUBMhGaGomWNnOCS8/lL1yEJPZ8/bPoLtmdKDo8Uutw==","signatures":[{"sig":"MEUCIQD5SO/hAC78vlTt9drair/5F4QvlqW702XJeVQwrawyowIgB6jf6VpmC4smHGoa5Jw3U8EclF5GaeTIMVHCTjYmih8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27978},"type":"module","_from":"file:/tmp/remix-publish-cop-middleware-jmBOZJ/remix-run-cop-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:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"_resolved":"/tmp/remix-publish-cop-middleware-jmBOZJ/remix-run-cop-middleware-0.1.9.tgz","_integrity":"sha512-qzdqCjCu/YAebSsQsNnfObha40SdbHBfId9t7Xyji5ltUBMhGaGomWNnOCS8/lL1yEJPZ8/bPoLtmdKDo8Uutw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.19.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@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/fetch-router":"0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/cop-middleware_0.1.9_1788908613285_0.05214989144562865","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"_id":"@remix-run/cop-middleware@0.1.10","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"9350c358c0546c8cb4df5e619c332ef2c865870b","tarball":"https://registry.npmjs.org/@remix-run/cop-middleware/-/cop-middleware-0.1.10.tgz","fileCount":11,"integrity":"sha512-07DuZNX2tw72aeErEhVFCgMr7w3hmIV7n6U/MgPa3T8RsqL4ggbbXepTxgTUzdgJqQm0pnpxiFo9zBC2uclaJA==","signatures":[{"sig":"MEYCIQDGFrUehYB5v58C7BVG/YnQVdFXqUd3i8huaRzb/nR+YQIhAO2hNrul9CTgTqWi9HBJDClbiGQPSD0uEJdVroegw+l7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDOfFTRiioUK69Z20uWxIgfilreywtzssGkuqyOrx8NFAIgET9WB40tR6QxfRbWj9mMvvKMekCNZxEAX5eaymQxQGM="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fcop-middleware@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28423},"name":"@remix-run/cop-middleware","type":"module","_from":"file:/tmp/remix-publish-cop-middleware-r7fTvR/remix-run-cop-middleware-0.1.10.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":"0.1.10","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:16462566-e0d4-4620-8dc1-86f1deabbba4"}},"homepage":"https://github.com/remix-run/remix/tree/main/packages/cop-middleware#readme","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"_resolved":"/tmp/remix-publish-cop-middleware-r7fTvR/remix-run-cop-middleware-0.1.10.tgz","_integrity":"sha512-07DuZNX2tw72aeErEhVFCgMr7w3hmIV7n6U/MgPa3T8RsqL4ggbbXepTxgTUzdgJqQm0pnpxiFo9zBC2uclaJA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"_npmVersion":"11.19.0","description":"Middleware for tokenless cross-origin protection in Fetch API servers","directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@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/fetch-router":"0.22.1","@remix-run/form-data-middleware":"0.3.7","@remix-run/method-override-middleware":"0.1.15"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cop-middleware_0.1.10_1789770869336_0.9442813182613126"}}},"time":{"created":"2026-03-11T02:23:35.025Z","modified":"2026-09-18T22:34:29.739Z","0.0.0":"2026-03-11T02:23:35.273Z","0.1.0":"2026-03-25T23:03:57.521Z","0.1.1":"2026-04-23T00:37:31.721Z","0.1.2":"2026-04-30T19:11:29.097Z","0.1.3":"2026-05-20T03:21:40.835Z","0.1.4":"2026-05-20T20:17:48.745Z","0.1.5":"2026-05-29T18:17:01.623Z","0.1.6":"2026-06-05T18:25:29.732Z","0.1.7":"2026-07-01T19:02:18.205Z","0.1.8":"2026-08-14T00:13:36.789Z","0.1.9":"2026-09-08T23:03:33.437Z","0.1.10":"2026-09-18T22:34:29.425Z"},"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/cop-middleware#readme","keywords":["fetch","router","middleware","csrf","cross-origin","sec-fetch-site"],"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/cop-middleware"},"description":"Middleware for tokenless cross-origin protection in Fetch API servers","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# cop-middleware\n\nCross-origin protection middleware for Remix. It mirrors Go's `CrossOriginProtection` by rejecting unsafe cross-origin browser requests without synchronizer tokens.\n\n## Features\n\n- **Browser Provenance Checks** - Uses `Sec-Fetch-Site` when present and falls back to `Origin`\n- **Trusted Origins** - Allow specific cross-origin callers by exact origin\n- **Explicit Escape Hatches** - Support insecure bypass patterns for endpoints like webhooks\n- **No Session State** - Does not require synchronizer tokens or server-side CSRF storage\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\n```ts\nimport { createRouter } from 'remix/router'\nimport { cop } from 'remix/middleware/cop'\n\nlet router = createRouter({\n  middleware: [cop()],\n})\n```\n\n## Behavior\n\nFor requests whose original method is unsafe (`POST`, `PUT`, `PATCH`, `DELETE`), `cop()` follows the same broad model as Go's `CrossOriginProtection`. Routing middleware may change `context.method`, but method overrides do not change whether `cop()` checks the request:\n\n- Allow `Sec-Fetch-Site: same-origin`\n- Allow `Sec-Fetch-Site: none`\n- Reject other `Sec-Fetch-Site` values unless the request matches a trusted origin or insecure bypass\n- If `Sec-Fetch-Site` is missing, compare `Origin` to the request host\n- If both `Sec-Fetch-Site` and `Origin` are missing, allow the request\n\nThis middleware is intentionally tokenless. If you cannot guarantee the deployment assumptions behind that model, prefer [`csrf-middleware`](https://github.com/remix-run/remix/tree/main/packages/csrf-middleware).\n\n## Caveats\n\n- `cop()` is a browser-origin guard, not a universal CSRF solution. It is designed for deployments that can rely on modern browser provenance signals and same-origin request handling.\n- If both `Sec-Fetch-Site` and `Origin` are missing on an unsafe request, `cop()` allows the request to continue. This is intentional so older clients and non-browser callers do not fail closed by default.\n- If `Sec-Fetch-Site` is missing, `cop()` only rejects when `Origin` is present and does not match the request host.\n- If you need stronger guarantees for session-backed form workflows, mixed deployment environments, or requests that should not fall through when browser provenance headers are missing, use [`csrf-middleware`](https://github.com/remix-run/remix/tree/main/packages/csrf-middleware) or layer both middlewares together.\n\n## Using with csrf-middleware\n\nYou can also layer `cop()` in front of `csrf()` when you want both browser provenance checks and session-backed synchronizer tokens.\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 { cop } from 'remix/middleware/cop'\nimport { csrf } from 'remix/middleware/csrf'\n\nlet sessionCookie = createCookie('__session', { secrets: ['secret1'] })\nlet sessionStorage = createCookieSessionStorage()\n\nlet router = createRouter({\n  middleware: [cop(), session(sessionCookie, sessionStorage), csrf()],\n})\n```\n\nIn this setup, `cop()` runs first and rejects unsafe cross-origin browser requests early using `Sec-Fetch-Site` and `Origin`. Requests that pass `cop()` continue into `csrf()`, which still enforces synchronizer-token validation and origin checks for the remaining traffic.\n\n## Trusted Origins\n\n```ts\nimport { createRouter } from 'remix/router'\nimport { cop } from 'remix/middleware/cop'\n\nlet router = createRouter({\n  middleware: [\n    cop({\n      trustedOrigins: ['https://admin.example.com'],\n    }),\n  ],\n})\n```\n\nTrusted origins must be exact origin values in the form `scheme://host[:port]`.\n\n## Insecure Bypass Patterns\n\nBypass patterns intentionally weaken protection for specific endpoints. Method prefixes match the original request method, even when routing middleware overrides `context.method`. They support:\n\n- Optional method prefixes, for example `POST /webhooks/{provider}`\n- Exact paths, for example `/healthz`\n- Trailing-slash subtree patterns, for example `/webhooks/`\n- Single-segment wildcards with `{name}`\n- Tail wildcards with `{name...}`\n\n```ts\nimport { createRouter } from 'remix/router'\nimport { cop } from 'remix/middleware/cop'\n\nlet router = createRouter({\n  middleware: [\n    cop({\n      insecureBypassPatterns: ['POST /webhooks/{provider}', '/healthz'],\n    }),\n  ],\n})\n```\n\n## Related Packages\n\n- [`csrf-middleware`](https://github.com/remix-run/remix/tree/main/packages/csrf-middleware) - Session-backed CSRF protection with synchronizer tokens\n- [`fetch-router`](https://github.com/remix-run/remix/tree/main/packages/fetch-router) - Router for the web Fetch API\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}