{"_id":"tiny-csrf","_rev":"10-84783183ab7d3663170f1dc46dab0df3","name":"tiny-csrf","dist-tags":{"latest":"1.1.6"},"versions":{"1.0.0":{"name":"tiny-csrf","version":"1.0.0","keywords":[],"author":{"name":"Vincent A. Saulys"},"license":"ISC","_id":"tiny-csrf@1.0.0","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"dist":{"shasum":"b2123262832062f90b55d098f2df09901a824ec5","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.0.0.tgz","fileCount":4,"integrity":"sha512-xryo0oPbyP6CTO3fddMKI7ENSIZuoS7UIbuxVd0O68JMcdGuzEA7e3nnqWgbZyzL4P29D7XV42en8tnbmGQ++A==","signatures":[{"sig":"MEQCIC7ztHIj7CaBDHKcTkf+X8czssTE8woxTnTHd0bJcgCAAiA8sC3Kn/7E6lC3rkbvaePc4gZkDnb8ER0PJvIUzcWzGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOglAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWeg//fH1Vj7IKzzeC2BkZ2D7pJthq+hM6TJgCrqAgrtUkUCltvxwd\r\nW0Y4OvfN1xPTn8g7nLAW4j5/6KP1dw9lDg98vGrYGPvVovjzMqxEWfrY6gxe\r\nJakihtUOtU3Y5w+zs4Me4Vg6gz2XZ0repGiP+Vhi68ZPIgXSX8y7B/ilJnJm\r\n3tKe/kuyk2ahOssZmGr7ESQrVdnCjTNH5sds8oASjp2xc7FSXy6eRzvDmAiM\r\nRWlFM7KluAhjqly8xa+AdzaZRBpQ/dy+YOkLX4QrWcWcsL9j1VzNOPguL5qX\r\nmufY8uGzWzbwWtpRj6E+ta9YSuhx+pUfF24xyRqujbGl3tZf0QnHt4nd/gM7\r\nwaVMQTdrUOmpunn8YOinTYr6vqUqqEjfowcwb6OlltLCB7pCpX+llpE64VL9\r\nZTS4pS3F+nCrUImSUp9ndWO5WZJ33fIvnFynF4kpFDV20pCyy7xlvybIbAHu\r\nCe2HQeAnQKMudUg9maz76tiZPGWvVY2RtsdijGQuVIO8Z8/3pcYiS5Z3n46v\r\nnmXoVr1jehfHfWG9VXIq9YP4Rmq3d86PMoQXsnFUfm+gL29Hv3MbjB8IgA3k\r\n1JKRqcN/nptcXV8WbwPWcdKhdmEMefEIvWGKvVcWsp5DVgg8zS7H9tihsrRC\r\n484aqAXWhNtMr1c6D8oVjpflv9K2nb0qWKE=\r\n=EyBY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"d15705d7a8abb0175110660f07dcc44a4642fe3d","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.0.0_1664747839802_0.6509983975616658","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"tiny-csrf","version":"1.0.1","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.0.1","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"50f192061de45260c801d205fc10ea42fa45cca4","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.0.1.tgz","fileCount":4,"integrity":"sha512-GG3nXdGXezQCpB77c8GaHuYanSopyk/OphvfW8neECQzdUXiHz/hD7V5TBhgr5RN3D9hsVjtHIWWx1pTqu6BVA==","signatures":[{"sig":"MEUCIQDVCrHxpt1vyd/+C7pFGiqTEOzJqPaOPVfFPjyxCA/LvgIgUs7/1hqpNwfNYXEnNPT0xhyRdYj1yIYway5dUyk/lrU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOgocACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpClw/+N+fSjc3Y3RjZzo0EDNyxRpq4SIfaj18oKwySCcZ6jGZieIaG\r\nWH3/Ohb4RwWge12nRVYD+/b3UlbsgkjpdvVdwXs3ffGot8vl58jYLr41aimV\r\nh/aeqxuHO9wGHJuXJH6Ll5SiR5y3otMTJcqeqxGDtVzEdgyoxRI/uQ7tCTOL\r\no931yX1qf8HCi5PYqclFNT1t2xFv6+3XneH/l3UKSDlzog541PFgHsm7W//0\r\nnXEdU5xIF9ovfyXoNI3GIye4/JrTYVDO9vvemeUMzldQzQhjc0nupYi279ja\r\nLCpgdYYgylZvVztOtFMn8/p2Ai2V7xeXBmJmHI7uPrJB+qXTFP0ISG4zXbqM\r\nxkuot161SiL3dVDtmnsTU5gpItCq8AzChO1Q7QtSVKb6CV2Jx6EcSJ+Gznhh\r\n+oDwjU1RoOIECZULhnpbfHbPHKhXq9TabNDSXeqsivBoa7focGXEaCZUucru\r\n2xlRnHhOEbsGRit3JhYjBbxqIOTYnysE2AvyLyM7pQGv1f94u1kN6Qvh/kv4\r\nwo+q0ouhKD9dO29XyvP8DoQF2LvZPAl5Z9ZlCp3mvzu2KYWF6UUPbV9N+VqI\r\nEF9DZZc6HnKMUbnOsnhrs5aZ7oYDioFPOEZRV/C3Y/8vntPen8IAmFVRWebQ\r\nrwjjp3qVZsKPyYJHF1HkWlMMGxfvset1N+w=\r\n=m8Xf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"40d6b51613761f39e272bbfa50d1e96015ae14f1","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.0.1_1664748060284_0.15050447412524925","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"tiny-csrf","version":"1.0.2","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.0.2","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"c6f9f9e0cb29f864a77c79defdb2833c16219a79","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.0.2.tgz","fileCount":4,"integrity":"sha512-itl6nysWIcPSdeI7/cKABrm6U7IFOwSxOKhFE3OQA/mp6Wh6HvpVWaYRvhYPOP7HRDaS6O5oMeKj7lLYcphKwg==","signatures":[{"sig":"MEUCIQCMQC27gtekU5pXUmEMtbT2O+0SXJu8wYhIMK6CndtBlgIgI55+nTcq+ovsN5iGVAAd/aXLAp65mNmLRraeG4DieN4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOgtNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpp4Q/9HuQZXGHbE1adePOXsKj8uGSUQZ+z+vncap/TJjc6FVgWWoo2\r\nnmdq0QmUVVeVLHEa7VFOM1Mv6vm2P5vnIXUIEO41+R+gkPaJxwaf5bUSdFIs\r\nTzhz3opS4YW0OORjgzY2Cy+by7VWYLi6wjUL8vkm9qmwhHRaWUw4DE2tMAgZ\r\n1t+cInka/+w7VDJMHrjscCXNYX+fkrLyaCV2YreJbAVIU7wLgJ7+MHeA9aJ+\r\nD+yEqHHixbu2l44pVxgzOet/5ZfxghNWhkcWyvXnIYp+mse+sBXUtqQFkkfV\r\nArwz+ld2D4B8ZGsPLGTrT0IrE/Mpfp2f49rcj8snG+aQRKP1xDickFLnI/SZ\r\n1bifWyEtjI1ONjpa3+b3QQKP+B0iGtWxaS5geGNSRgxExOaXCiTewi4znA6Q\r\n8b/bo0oPQIDv22zK/9yF5fIdLbDiD6bt4gzgLVZPm11OoGxs9J8rR0Hqzi28\r\nPrN5SPnhuai7FvJrO+dQgID0sLk6xK1Khql4IuMsZPOm/G4A9qHIoifE84gD\r\nLJ9NX3OecVIcPVwgHcenkuzmeCmW0BPtLemH7FeLYs9Rbn0XLujjOERtg3He\r\nj6i1+RRpkh1wCdxtVSNFy30mTNKLxxYjQ6CvCCOI2D1zn/XCQ8ykYX6LmobR\r\nATTG+P28xQBYyxGdX+cgmflXGpKEfztObYM=\r\n=cZXi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"40d6b51613761f39e272bbfa50d1e96015ae14f1","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.0.2_1664748365682_0.2356537980019504","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"tiny-csrf","version":"1.0.3","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.0.3","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"7f1f7e74e5ba6da4639505de4e84b8aac293c574","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.0.3.tgz","fileCount":4,"integrity":"sha512-bPhOHC69D+ZlfYem65xrK9YdWAOM+HjqqPIxJqcL2xh6NBuh1/i1zWQV+PirdzLD3pEz4BSF38rEgNGPOPX3Ow==","signatures":[{"sig":"MEYCIQCTtJ7mi6cPajKbWexiIsgDicxaLRxEqOyMFNrQu5cJcgIhALgdEU/q8/1WpsBXZnTbxbxcnby67Eg2a8S3SMJmnvNP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPLPNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrkrA//SOU1tcccVEhGsxwV9T5UpR6WhBw6CzsHobQxxBPBaSnogYu4\r\nl/0xJvM7LZjd+Af6FC+nJVZVT2P9Qd3rBOPu6A9R84MgT3jpxdA9+6o/eOF6\r\nnFFPvDKQS5BjCx6s4SIU/MXnG8ZkaYnKSehr7Ousd7A/Jq+m5zQgIkGGhH6I\r\nrQM+F46aOX1zL7p5Oa/RAJq73b3xyBItXb8zUX4aCA1/t9ToITvb2U/d4CB7\r\n/gMBhRrEip9tBIQABvlIkyMxu7nN++GxCTMrRS8h7Y32Rl/8RYw2tVZycAVu\r\noaID9jWGhBYOWmUwUI2D7R0RpUAKjqbq/yDpEGLfjELuyEnLjZhwHEQYhCpb\r\nRFv61fS1dUTyTovrVNLHXpaK1sBDDHB1NuV/MDjjcws19iLq6+rAadO8tA4H\r\nXU+pCL8MyQJnZ15I73VkM2kodda5Y10TMZBiWNSss2vr8CheWsh16L2EVbHB\r\nv68apB59Vtqzc1y2iUkAU8SOvOM2qEdXGG0OSUkx4lzFPmDtSvRauwYOtR0K\r\n58mVvEQiVQUYCtdNxvFPNdrBV/IQKqDnOg8YPjAAKbeamRsexXQTh0y+KjH6\r\nqqY1q4hbFJrNEAZelcGeKRwjHDYTxzcs7STzRu07XN2+fD2kxOinGe0UfKeO\r\nDFX9iz4n808SIoVsxDLuJfp7bjQQa4NNwTA=\r\n=dQ4J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ae134ea52af062d45b62cbb719f7d37b5d9856c9","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.0.3_1664922572952_0.3376361111086119","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"tiny-csrf","version":"1.1.0","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.0","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"d3a566da51f6a57beb3c9771a957afd13e001808","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.0.tgz","fileCount":5,"integrity":"sha512-jCAhrDqAFURY1JkPFFOHMlYt8GOvFT0H8vOXXoD5LLQ5ZGqAtEqjD3SW+wv8KYZtv2BjAXXlTZSB8W9WO5n1PA==","signatures":[{"sig":"MEQCIASX6IFvwWhh+pWvg+Oo4QBWehozyMI6sIKoExaceU6YAiAG5VlBfNZI4fToObDyFTgTx6C+sE23AdVzQHc4pkUpPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPv5kACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUShAAj7lE9cxkiJlNKxCQefkp3LZ0GnVmN5iF/Nty6suhXcofU34e\r\nNQmQaZnmzCa3/f4Wt3F3HDUitF/FGZRiQ1w5BB3C8VpGyo+LHGnXsk+kwntx\r\nbyDe3ciqaHIJbGsljKa1jqy1+Ns8JUL6OxMqkm27kKkREWilotMYpz+F9H6r\r\npYGu/wsVaqIAAoV2Whpijeitrx551k4osOZjfpQqn7mTyLzzGlwF2AqDSnXr\r\nrgbrDgLKojPlMLc05WfmvO7ZV4xJlHlAVhfw52O4U9lCrLJtLcCP5kQdU+NQ\r\nAXeAMFUXhuIBvpcCdOjMWLUMB5dqc9Ncc4B2MXj7oEAwoeoz8KeBgH72kK1/\r\nmnlUTCByta27nOMOrSLLsS2aJ0HWvXrMJe83IEE4csn8njT6rHDLhu2hytK+\r\nBedeT8PcqT/RPejeNpRiibUoyFArPkSZf64Imo4EL0Dbs6DKCXFLVowrPW1W\r\nEF7Um712vTxHWf6dkOXdVsC0is4mPmO+ydZgqNxz84oX4XwcIvULDc9mRG0k\r\nCFcDR8+yuIXdfSAQw9JvRzO/F7iraALwVPs2DQVj3BV3LmEsv3YFjmjE3GCF\r\n/0WsMGMVcZOOReWDyfkABdfAJ3tlGzWAVAaw0iQLoH3zgLedG4xoVKGL/ax+\r\nNoRGUGChocAz98WTwRx+m14roCp22/rcXJY=\r\n=pDf7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"cafdc519ab63e7ce4614ae78e57f0c0ea1250b78","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.0_1665072740690_0.5527322146182774","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"tiny-csrf","version":"1.1.1","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.1","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"537bbf78e3e7a249c81d2c9d71680061e7f5136b","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.1.tgz","fileCount":5,"integrity":"sha512-YOyaEyB0VQpw81wgNBdeWjwcnepT2x9g4vZ4XGMEUpw3QySPMUXuTsgSKNq6YdvLLUdofnQRPrWSh/vvnij7fw==","signatures":[{"sig":"MEYCIQDIdkZZHvneoYsuyGQ+AggRfheAiTqjGtEFFoLMIBDk7gIhAOSN+lHDsH7AG5AlYv42hMMEKJ0zYQZpXyaV8o/o770Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPwaUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrfvw//WTg/WG64wtksIO0iZN+Ybu0BlhWBEMmNj0N2zqsozDH3Dzh/\r\nTijBscomPuvcGjt4WiTDRZxrU4YLQXBiLWu1Cv3dv1rlm/0GTXNh7Nrqb6Ra\r\nKc8Y5YAfsjndPxiaezZqTd8a4am0rPMy0k0hjmDmNrEYgWMBZ7WU85bKUHyz\r\nnznxg6c5ANhDFZDfCH4kBDLWW8v0ypAHKZn0px3oYn+/UNGyI7p5Cx7l2/os\r\nl5QohC4Bq7oBbYBmAi+wCqknilvNRHjqr9ZXuWAdQZ8Nb0dV5LjQhGlhcJEJ\r\nhSlQdTWsPbt1k9MTP2jTJ6hsI7RDOmhWVF03uTdK5t0eWLpvBS02o+Lp7z2f\r\nPNwzXqp12+8vsHduO1iyowfSUP35Q/YLeEBHb1XdJYQyKJLcIxuVCunVZuxo\r\nlzfxFViqOOJ+NJkQrUOP1TkiJlTPz+SOPEE2nVB7hMEExvaMCWiehdt6KoYf\r\nCzfVwjtRFR+4rcduqo+Vs3F8JhX44ry+bUprdvRLLMsPDFsaNeARArXaHOXu\r\nmMsYZYuxc08G+mvAbnhW8zJPiEqchloQ1REwQ1jpJlwoTHYIC3KuA1rh/f1/\r\nNFoNdAyyMdAqzloE0F7aFSL521d7izOsNNoeqhiO4u9rtMVNn2t1xCQQOUKq\r\ntqG0ZrialsqSDa8p2iPiaYMeMDejY4gjm7A=\r\n=CGu6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"aeff31c95a3d2031caa9974f3a67cd772bac748d","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.1_1665074836245_0.043191128654628264","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"tiny-csrf","version":"1.1.2","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.2","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"5e341b02895eee5c391f10d486cadeb7f32cb981","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.2.tgz","fileCount":5,"integrity":"sha512-qsaTMbmqL4FkS9NzNBdmS2cyqv6OgffpjhKk+x6ETA0ls/qxIAWKn9YBRXbY6EZEeqybYqRUUKP2LhQ/AbPcSQ==","signatures":[{"sig":"MEQCIBGvc3jVQrU3ztZodrK6N4YHJT5p/rRmLISUI2tcIUxSAiAdBUNPvXHTc5D/dpsOEB0Kz5mHHGvvlUlkFKslqZBgzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjP4BQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeCw//aEGTKLfcUWkVh8IY+/oTakY+LgR2k1X+xJxBZG3TtKcerPAc\r\n7D4tAMCWI/jaXLKORbotpARWg/23vw84PUEZXMhAchhM1d7obEX9LzvWDW9F\r\nr3c5vxxexyprjUL21z5Zgn77/z7SLKlYJJ0uZXkh3ACF6GK+FMeNIHjcO4xh\r\nixMsfJj9zwZZYGlxZG7YeO8hxDrLm3QOYSzPI3ZkyBkAnsypYWtD4QeSk2jJ\r\n8QX5pYj1eBCkuPY8XTQ/OGv/6YDbC0aheX1npUWfbgUtWCbTdvPSrmVsZq0V\r\nhi0ssKJea2TAYTblHDjQ3ymZXm+D5rtEqYZzMD0S1bCm2Tyi9H8AZys82P5V\r\nf5v0pd0CBLCDhwER/sCwYSIW5vwB9iT+0xGp/6HOv5vJpbeTXwWSIg/74VIO\r\nPdTXrohKJgI4jWoumaCfLVgXwLnANNtCksRuL7c9bQZj7nMTz5u3x+IUUddY\r\nfuD1olJcZMfDnvGhYckSO4d6H2kYdiqyPvqwgfjr/9hBOHsSxSAd6FRZ/lF2\r\npECx4y/hLrF4BtTzkkFRUhnhuvzBt7NpMXhbh/aQUqe914ibctjGBWh/rTix\r\nzSlEJmBpwxCcaM8sjr0HTSI5K8Ly0RM1b/QfGw0JDk8+xeICz4v8gPqNFTID\r\n6/NikhsXSf09iR7+BVTBqsgwB3SQpJlwSFM=\r\n=mef8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ff3ab95bcefefc38f505d4122cd3176ab9bedac4","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.2_1665105999890_0.0757106548027624","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"tiny-csrf","version":"1.1.3","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.3","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"cb68ce9299685eb02f2524d85c22fb01d4e91de4","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.3.tgz","fileCount":5,"integrity":"sha512-aQqV/yA93E/7Q/gQ4UHoYmYzrzS5wDEtj2fTXiB1zgT2lEI0CGo+5UK3FtlePn8OECsVlGZWeWBFFnvqudNcwA==","signatures":[{"sig":"MEYCIQCW+cdVM9CDmzn/gwdhZvsM60Z+h6tQH4QuIYgMWhiUGwIhAPsP2HOMrsbMcziXPWSVgtmj21nbMRmQBgpg+WPnxKYH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRJHpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJUw//bF0TmTjWk/Ogaajx5gFbCmo5kefrGnpiS0v489uGlbp2OJpF\r\nn1+N1Uf03wds1U12aB+Jsr1bjQNkPexSv5ljKjFQ5abxcGrOlyAz/HfSVRBn\r\n/MhxyRW6LFdSNgqSEJ5VAt5Q5RtWNnNnTdJphvReJUXeUbeXkfW25BN8KcS6\r\nagNJSElF9A9PJ2BiFC15H1T6uJN7lSixRNDFoAGitLeeIy19XQDhQtGcL1O3\r\nDRXyq5QcgODvtUuPZVjQ8ISgXI/7jcol+wa7ORb4uKgAidW01oH6oSbd2VvA\r\n57gK63sIyU1g5QXiFqbJVOf/iUtwL9QGO1kyCAedtNg10Wi31bUdFUO5LgtM\r\n0/cq0AYj9u/PTsOfvDsVyCiUllZnKp1wH2LYL7VJ4ilKTeg8aO+KrTdywDto\r\nYOWO+7DfplBtSI27xs7XHkTv+hFz23kEazCl9GS+GAw7VTbhJvoD1Q+zyFLb\r\nGT/Opk7d/e2Go2rGcYfr0WPK0bADSXIz9jwq8cGwcFZIqLX3peBV9UXVpazA\r\nWGpGeWznmEUrUjBJvfWsxWdCTVJc68Y4IOWWlYtCSBUwiGtSfyUHi0+H0onh\r\nNu+u5gV25s+mTydjo9NPUEncTZYYWdLVgozZc9AeKziHE+2u5sxjJtKmC1/8\r\n7F+CpYhamoZPw7s0DOWayN2tQd2Om6iir4c=\r\n=XJHk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"704604efd5ea58c5fd51772c5f80a85c050e6b89","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"8.19.2","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.3_1665438185380_0.2826005280364636","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"tiny-csrf","version":"1.1.4","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.4","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"564be7db5b59ec6bb4992f253862673194b01a5d","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.4.tgz","fileCount":7,"integrity":"sha512-tyWj/ihvuPCQ8YGy55O/MnSnO4bZ5s3m+Ju3EXcBCFLz09RYLw/iHgy32wd93nEFhqHgh67MKO9669fHfk3cVg==","signatures":[{"sig":"MEUCIArY8ip7+5tAg67e7ibVIrACPbKA4oae1OwRJ70pNVlXAiEA52Qlmk98VDIHh4n7kKpFR7u+hwp/5H2voYxAJ3BzMaQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43618},"main":"index.js","gitHead":"3c423decb8250c5c0ae39de152ecbb5af0294cad","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"9.5.1","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.4_1705702658088_0.22641322761426408","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"tiny-csrf","version":"1.1.5","keywords":["express","csrf","tokens"],"author":{"url":"vincent@saulys.me","name":"Vincent A. Saulys"},"license":"MIT","_id":"tiny-csrf@1.1.5","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"dist":{"shasum":"36ed0fd6935414c5fa7addc3772412117946520e","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.5.tgz","fileCount":7,"integrity":"sha512-DI4NDIICu0J/A79ySdSaGrvHH/8CA1A12XWjQwugukUk0rPRNiQ28rY1arTKcQBeaDEqUkbn1V/E9wbgnlP+mg==","signatures":[{"sig":"MEYCIQDYQzL3ubJ+3fFPjfUwDZePqBlDtlgoHU3myUgFZ2fBcwIhAMUou37EBUPj9STd7qxKtUBsoCIf8SdFwZ3hL87B0fjU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43618},"main":"index.js","gitHead":"c73ad4b896f8a338093c1bcc7f5d06ff2cce46a2","scripts":{"lint":"prettier --write {index,test}.js","test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit"},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"repository":{"url":"git+https://github.com/valexandersaulys/tiny-csrf.git","type":"git"},"_npmVersion":"10.9.2","description":"Tiny CSRF library for use with ExpressJS","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.6","mocha":"^10.0.0","sinon":"^14.0.0","mock-req-res":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/tiny-csrf_1.1.5_1740076857971_0.5463634019260031","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"tiny-csrf","version":"1.1.6","description":"Tiny CSRF library for use with ExpressJS","main":"index.js","scripts":{"test":"mocha test.js","test:watch":"mocha --watch test.js","test:coverage":"nyc --reporter=lcov --reporter=text-summary mocha test.js --exit","lint":"prettier --write {index,test}.js"},"repository":{"type":"git","url":"git+https://github.com/valexandersaulys/tiny-csrf.git"},"keywords":["express","csrf","tokens"],"author":{"name":"Vincent A. Saulys","url":"vincent@saulys.me"},"license":"MIT","devDependencies":{"chai":"^4.3.6","mocha":"^10.0.0","mock-req-res":"^1.2.1","nyc":"^15.1.0","sinon":"^14.0.0"},"_id":"tiny-csrf@1.1.6","gitHead":"271b402d762ebdc05f7e37ea6174420a2a070cf9","types":"./index.d.ts","bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-LffNz9iNYYBrjayZZS/WUNsMFxFDcgOmSNLNPG/LGj38U/R41eUo0ugpl5pskltygp+pnce0ISzsJ39yVYcu+w==","shasum":"09a367e0c9ffc9dd15ff8741bfd3bec56929f405","tarball":"https://registry.npmjs.org/tiny-csrf/-/tiny-csrf-1.1.6.tgz","fileCount":8,"unpackedSize":44559,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDeScxC7Ch1ICxH9i1xKQajtbn9FObwaYCOE7iWOnyG0AIgILyKoyaB5eNmh2WoLLaZ8c4y4EvePMH2+skG/pFhvaE="}]},"_npmUser":{"name":"valexandersaulys","email":"vincent@saulys.me"},"directories":{},"maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tiny-csrf_1.1.6_1740077164774_0.7434107076847298"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-02T21:57:19.746Z","modified":"2025-02-20T18:46:05.143Z","1.0.0":"2022-10-02T21:57:20.011Z","1.0.1":"2022-10-02T22:01:00.427Z","1.0.2":"2022-10-02T22:06:05.921Z","1.0.3":"2022-10-04T22:29:33.166Z","1.1.0":"2022-10-06T16:12:20.874Z","1.1.1":"2022-10-06T16:47:16.488Z","1.1.2":"2022-10-07T01:26:40.055Z","1.1.3":"2022-10-10T21:43:05.612Z","1.1.4":"2024-01-19T22:17:38.221Z","1.1.5":"2025-02-20T18:40:58.140Z","1.1.6":"2025-02-20T18:46:04.972Z"},"bugs":{"url":"https://github.com/valexandersaulys/tiny-csrf/issues"},"author":{"name":"Vincent A. Saulys","url":"vincent@saulys.me"},"license":"MIT","homepage":"https://github.com/valexandersaulys/tiny-csrf#readme","keywords":["express","csrf","tokens"],"repository":{"type":"git","url":"git+https://github.com/valexandersaulys/tiny-csrf.git"},"description":"Tiny CSRF library for use with ExpressJS","maintainers":[{"name":"valexandersaulys","email":"vincent@saulys.me"}],"readme":"# `tiny-csrf` \n\n[![Downloads](https://badgen.net/npm/dt/tiny-csrf)](https://www.npmjs.com/package/tiny-csrf)\n\nThis is a tiny csrf library meant to replace what `csurf` used to do\n[before it was deleted](https://github.com/expressjs/csurf). It is\n_almost_ a drop-in replacement.  \n\n**Notice** that if you require very specific security needs you may\nwant to look elsewhere. This library supports encrypting cookies on\nthe client side to prevent malicious attackers from looking in but\nthis may not be sufficient in some cases. For instance, It\ndoes not protect against things such as [double submit \ncookies](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie). Those \nsetups require more know-how and involvement. This library aims to\nbe simple to setup. If you have very strong security needs (e.g. large\nscale production application, sensitive information, single page\napplication that makes many backend requests), then consult [the OWASP\nSecurity Link\nhere](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html)\nand implement more stringent security. \n\n\n\n## Installation\n\n```\nnpm i tiny-csrf\n```\n\nTo Use in your app:\n\n```javascript\nconst csurf = require(\"tiny-csrf\");\nconst express = require(\"express\");\nconst session = require(\"express-session\");\n\nlet app = express();\n\napp.use(express.urlencoded({ extended: false })); \napp.use(cookieParser(\"cookie-parser-secret\"));\napp.use(session({ secret: \"keyboard cat\" }));\n// order matters: above three must come first\napp.use(csurf(\"123456789iamasecret987654321look\"));\n\n// ...declare all your other routes and middleware\n```\n\nThe secret must be 32 bytes (e.g. 32 characters, 256 bits) in length and uses \n[the built-in `crypto.createCipheriv` library built into Node\n](https://nodejs.org/api/crypto.html#cryptocreatecipherivalgorithm-key-iv-options). The\nsecret length is enforced by the\n[`AES-256-CBC`](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)\nalgorithm. \n\nDefaults to only requiring CSRF protection on `POST`, `PUT`, and `PATCH` requests and\nexcludes no URLs. The csrf will be checked for in the body of a\nrequest via `_csrf`. \n\n\n## Examples\n\n```javascript\nconst csurf = require(\"tiny-csrf\");\nconst express = require(\"express\");\nconst session = require(\"express-session\");\nconst cookieParser = require(\"cookie-parser\");\n\nlet app = express();\n\napp.use(express.urlencoded({ extended: false })); \napp.use(cookieParser(\"cookie-parser-secret\"));\napp.use(session({ secret: \"keyboard cat\" }));\n// order matters: above three must come first\napp.use(\n  csurf(\n    \"123456789iamasecret987654321look\", // secret -- must be 32 bits or chars in length\n    [\"POST\"], // the request methods we want CSRF protection for\n    [\"/detail\", /\\/detail\\.*/i], // any URLs we want to exclude, either as strings or regexp\n    [process.env.SITE_URL + \"/service-worker.js\"]  // any requests from here will not see the token and will not generate a new one\n  )\n);\n\napp.get(\"/\", (req, res) => {\n  const csrfToken = req.csrfToken();\n  return res.status(200).send(\n    `\n<form method=\"POST\" action=\"/\">\n  <input name=\"_csrf\" value=\"${csrfToken}\" type=\"hidden\"/>\n  <input name=\"thing\" type=\"text\"/>\n  <button type=\"submit\"/>Submit</button>\n</form>\n`.trim()\n  );\n});\n\nconst { randomUUID } = require(\"crypto\");\napp.get(\"/wont-pass\", (req, res) => {\n  const uuid = randomUUID();\n  return res.status(200).send(\n    `\n<form method=\"POST\" action=\"/\">\n  <input name=\"_csrf\" value=\"${uuid}\" type=\"hidden\"/>\n  <button type=\"submit\"/>Submit</button>\n</form>\n`.trim()\n  );\n});\n\napp.post(\"/\", (req, res) => {\n  res.status(200).send(\"Your cookie passed!\");\n});\n\napp.listen(3000, () => console.log(\"running\"));\n```\n\n## Code Coverage\n\nAll contributions must contain [adequeate\ntesting](https://github.com/valexandersaulys/tiny-csrf/blob/master/test.js). \n```\n$ npm run test:coverage\n\n> tiny-csrf@1.1.3 test:coverage\n> nyc --reporter=lcov --reporter=text-summary mocha test.js --exit\n\n\n\n  Cookie Encryption Tests\n    ✔ will encrypt and decrypt a cookie\n\n  Default Options Tests\n    ✔ throw internal error if our secret is not long enough\n    ✔ throws internal error if we have no cookies\n    ✔ generates token for non-POST request\n    ✔ allows if the CSRF token is correct\n    ✔ does not allow if the CSRF token is incorrect\n    ✔ does not allow if the CSRF token is missing in body\n    ✔ does not allow if the CSRF token was never generated\n\n  Tests w/Specified Included Request Methods\n    ✔ allows if the CSRF token is correct\n    ✔ does not allow if the CSRF token is incorrect\n    ✔ allows if the method is specified as not included\n\n  Tests w/Specified Excluded URLs\n    ✔ allows if the URL is marked as excluded\n    ✔ allows if the URL is marked as excluded as a regexp\n    ✔ generates a new token if no token is supplied\n    ✔ does not allow if the CSRF token is incorrect and the URL is not marked as excluded\n\n  Excluded Referrer Tests (Service Workers)\n    ✔ throws error if instantiated without a list as the fourth argument\n    ✔ returns null if a service worker accesses an excluded URL\n    ✔ returns null if we are a service worker\n    ✔ allows for reuse of the CSRF token if there is a service worker request before the real one\n    ✔ allows for reuse of the CSRF token if there is a service worker request after the real one\n\n  other tests\n    ✔ works #1\n    ✔ works #2\n\n\n  22 passing (75ms)\n\n\n=============================== Coverage summary ===============================\nStatements   : 100% ( 59/59 )\nBranches     : 100% ( 30/30 )\nFunctions    : 100% ( 8/8 )\nLines        : 100% ( 54/54 )\n================================================================================\n```\n\n\n## License\n\n[MIT](https://mit-license.org/)\n\n\n","readmeFilename":"README.md"}