{"_id":"@fastify/passport","_rev":"42-958a805ffb8a76434f534ec4c772310f","name":"@fastify/passport","dist-tags":{"one":"1.1.0","next":"3.0.0","latest":"4.0.3"},"versions":{"1.0.0":{"name":"@fastify/passport","version":"1.0.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@1.0.0","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"bff17964beaf303b3d3d2952d06dd720e7fb23f6","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-1.0.0.tgz","fileCount":33,"integrity":"sha512-0ONYDNPWHCgo+p0bCcVZJk7ov7m79Bn/AvwRjD0NXguIEbDbSsMydPsqwIpgNrRMM2XrtdEyE4Q4alUIXH1ETQ==","signatures":[{"sig":"MEUCIQCtJxVSI5Sn0Ml3q7Q7odXIpgKdAU+a7Uf1nog6MJSAUAIgBFdXkNP/+NPJ+peZ3NTZBeeCgP1xKfhm7i0LLvAKPdc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaVS5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeUA/6A7VkHoDnDOQRf1fwHOCm0CBNowsfPM+lUspWOMnJs/Y7KzlW\r\nASjzbSe8VozaLeGL6+A4Kl0cUxGQfdmfiE8+iy4MdhBNjv2/a6nm+GlRoWJ7\r\nnaxtUvzJmgpbUffYDoJlQg9o30GKOTRN5qcDaAaPk/4diTu2WQyMf+gS0Pw/\r\nBz8sg15dCd0Yvf0r1TlQH6/aChtHAY2f0nmCUuzXMxfL5yLlsj2drm76y6wp\r\nFJVqIg9vgyN6oYWt1LOPWns+t8YYVozoHfLFZD8MWRjvF/NcFwQCKOndI/Hn\r\n47BYMhDh72zUQCnTdlgXfra9svIMm8Wxn/o2j6LCLs+JZhfD0ujSB6OMb0iP\r\nvV4JhBQRx6EQn8hTzG6Unyj/UI4ggEsExpNt9Ob6gQWBvemH2eb78MMRuBer\r\nUygRzu/qvj9CAPFvcKYdampXOF2/ybmyla/yRm1geCIoC0d75cue33xckz0N\r\nigtb24A4l5KkE224p+gmRliLweErzClcGiLzDG63y+5q5zJSejy4BI0sRn+9\r\naiCXDi+7omamC693tPRSJZ22LPeX6BD4QNrejMPekHy94ziXxSJYSwf8Xg3z\r\nstMhnpRMqM+wvQ7Rp2KQGPBCr14IrT7ffKoiIEUgDBMOR4rfmWoCayzNuZAD\r\nicumz2kNmVYKpLGzFtr2VMoapRPnNcIzbTg=\r\n=j0+t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"4af471546d4d9333caa2e87c04eba54dd6d4c214","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.6.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"18.0.0","dependencies":{"fastify-flash":"^3.0.0","fastify-plugin":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^3.9.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^17.0.0","@types/semver":"^7.3.4","@types/passport":"^1.0.5","@fastify/session":"^8.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","fastify-secure-session":"^3.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"peerDependencies":{"fastify":"^3.0.3"},"_npmOperationalInternal":{"tmp":"tmp/passport_1.0.0_1651070137117_0.1446578934952778","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@fastify/passport","version":"1.0.1","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@1.0.1","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"a0db1f9c4c73d5ba57ca471943b9f72d26f2cbe6","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-1.0.1.tgz","fileCount":33,"integrity":"sha512-Ocb7unIJ8JNaDYjwK+qrzVPC2ji+YgwzgnXIpFdFz7HsnfCkuqZpiru/ZjN7WVDH/dO4blGcdE/yQPHQ2RgkUg==","signatures":[{"sig":"MEUCIG38vkTe24HnRtc75zGPewZAw8Y+y5F87bYRdyt7fOgiAiEAznWExCgYXAkFUyDwnv1DXCJjxUhuwBdi9zRZ7eD+ihY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaXawACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4lRAAjq82PF/uLGECUDnNALpvcbQYWVojqxbnkCeMgPAKVLnwTBvJ\r\nJUnS7WCbPoAwApY20jRHnM5aHm/jJOgv6ewWb8W/gNhoyGtG2DT9pNN3K/qj\r\nsoJs+Zc8A3oDFKdGHHQbKRUGcY94IgPY5RlyAHkSJgOf1AdpZm3JbXU9dNAC\r\ntAmjUWw/p7W5lRmWsp1qwo8NB7MxayeZzQj1b14VZrvxTgZwR41ZEaOPHYPL\r\ngt1PB0eDLHOTdaK5MiRYL0USwI84RVevzXzDu5ZUw/OpJnfhAW4luPnlVSIf\r\nhZFKXJTcbf8Hk4eiR7moyoPgJcnbv7oRiZnyg5ysnzm1Yb4Rw+KxVjhli2y2\r\nqcoGPqzUehMsvH6xutnHn8Wolxp3a0UfoghTmKeLnBJnos/SuAov0IGqYmt0\r\nUBPkZYigQHsjMnNZAdBJHnXujEKAsR7iPBWeSLiqk9Dh+rVHlSSDFcdaoE65\r\nkCOXYM6RSLmdtByYnXF1VWm/QGbqDx9wJzK+kN75idcvOgyJCtzw5LBLueVj\r\nfLjTSnFcCO73lEp+dDFwxlfv0CbJhhb51PvA6DtTt/VtiuzZJGy1dq7LmZHp\r\nyfjnNXsQKOcy1AOyWU0rmxVxv69WfkjUbxYyoodD+Pd/de8TcjNGDQRd76QV\r\nnHOsfVns9EbbdWnWsLzjgaQrqhSYjhwchRQ=\r\n=fAeD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"784a2e40fd21651f527ae9bf7f4769e7b81d6c44","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.6.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"18.0.0","dependencies":{"@fastify/flash":"^4.0.0","fastify-plugin":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^3.9.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^17.0.0","@types/semver":"^7.3.4","@fastify/cookie":"^6.0.0","@types/passport":"^1.0.5","@fastify/session":"^8.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^4.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"peerDependencies":{"fastify":"^3.0.3"},"_npmOperationalInternal":{"tmp":"tmp/passport_1.0.1_1651078832173_0.17174618606141867","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@fastify/passport","version":"2.0.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.0.0","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"e112c7508a4983deebd0670b3bd0b5367c9f5abb","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.0.0.tgz","fileCount":33,"integrity":"sha512-XPZrzFMf5XO4nCmPDTLOWXAoBWiAQHsdzzMD29AOb0FV9BgjgbOG4Xz+Z+GC9pChg58Caj6EfQkqpEu/IVp8Qg==","signatures":[{"sig":"MEUCIDOXURAhsHQDRxN7FlpfuK72j3jHo4e73QwLvVafwKYPAiEAwjrNCZ22PYoPXGAay9ygvBeZv6KHlgylCXYfcrYAu4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJif2EBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotfA//TEF0aPYhV5U28/8wrw914syJ6UG7wYGh6dJcgzLfEA1fe6u4\r\nu4rkiREb6V5CbJpmGn10v0E7WLbQc2bDlzFQdKzZW+2ow+m2kZtCYlrXG3oh\r\nqeNi2J1L/sCBeApTwf65Nlg/uRd+3VuvBVNWSpCYY8kv61kBj9DSm/JBylwT\r\nmnyi7Wkm/rGSgwTDIM4wcIj51Tphu6/sR3tGWuffJVI4GlvO8izIYz1xNjNS\r\n+yW6eb0aTj/Tv6HaPKhEh31whtDFvkA6HCLPQcL08oMPuOdn1+Ou4jjA62L8\r\nZxUgeJLXEmwJSY/icu4Ct/cvUZ/BcNT490zizMtP51MwGqwxkLuN0emgjHaN\r\nVr2DLBKY36G/YMYD9jPAOA8kslcAkzq6pKbtMV2u29+q3uNnZ6ZGbLzyBgS4\r\nUwMpJNugPFIoHntVFZSLSngMW4AyBI7JGz41iOCUAjcrA8qNP3FIbHiqSuXf\r\nAeIeZqIWnYId6ZcS6hnzpgFLRjhOu/kGLwvxSv7JDFIxRAplmSJXy9XbZsXX\r\n1XggsvuDgUGdAF2JeCSHH+rU78OZUe3Z09LTiJD2YzsD1wqJbw/touXQRr5E\r\ndiB1FUEkrsTOP83fZx6AwnKqu09dgDo/skDcVtBosoWJfrxp7PXPNoGklBDB\r\nEFZaGBEPranY3CldpLQba6i3a/pTGgot574=\r\n=f141\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"042037f510dae1cc83a5658095fcf7084563c276","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.5.5","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^4.0.0-rc.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^17.0.0","@types/semver":"^7.3.4","@fastify/cookie":"^7.0.0","@types/passport":"^1.0.5","@fastify/session":"^9.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^5.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.0.0_1652515072939_0.09116908724874251","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@fastify/passport","version":"2.0.1","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.0.1","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"c40cb6f2f98d6390b070080e50c0d3ceef3203d9","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.0.1.tgz","fileCount":33,"integrity":"sha512-zMxdVUJJ1XeK5ShSHQkypIj9TG8Ww+Vdgv/qgzXczRgAdZVBFX6uHJ2/k9pWX9X6vsE17ukKulPFMHd9BIAkzw==","signatures":[{"sig":"MEUCICefYIps2mO3Q2k7HrxFt8N39FEio71XPxlPy4AwmKMOAiEA2iAdphMIzlsUdLpJl0lW2IrIRr02NW5jUh0HANJSBuM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJisdPRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQ5BAAkUIxQk/58SmVDBRVHfRsl0zDbgVPC9NjFwW4fJbud+eKUM8w\r\nHB/39LxUbYHi53bhujtFb4O+N/BRAZyxmrCFse+kg+4yOK9WGskh+nppgFfj\r\nvJ4RAkWsH393CWpd4YreNRHwG8z92jq8mwKDf1aQcAcbFh1ScfSgNdts0LBJ\r\n8yMZcCRq/HyltG0wVG52oLu2splpIjas02Fl+JOOQUhM7xcsJfxPvZJelCFy\r\nFevT2ANRGoOnkW58lLboMBOq16HRmPg9Wce8zaxb+W/R+tfrpp6gzx3RL8/X\r\nWV9CmutMKlyFYiKQ1H1ugNBM/vbnY1z51hLUvAmNbGA0rVuW+/h4u+YLHo00\r\n/LNo86km2kZZ9X8hyMHuHLxCzD5yVnhHPBIqwddbyv8Dn9YLxDR0vHUJrjO8\r\nAh4/8uH+s9yVnC8oePllRapTK7djn91/ozcbCgmKGJGFN3V5ZXFCzYI1lC+A\r\nsZmCHm3KR+hWgBOadEcy8yqsw3HvkYSpPQjuO6gMGaY85KOUsq7ZoJ/ahzEI\r\newDpcqXWG5+5kdTbnqpI23gqc9tWv1SML8THskrj2U4IX8+cOq6w1nkZza3W\r\nGmqvUbpeaxUhqz+ZfJ9ksomNhJIKmKZxj9aDnmX2vQQSjGRi6T3mG8zqYOVW\r\nNeCq3uYuT24Q8IiZ8cd2MwmdB/iUPV07cQI=\r\n=P3ll\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d075ef049f0fa3606bab976e1d3dfb1f562decb3","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.11.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"16.15.1","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^4.0.0-rc.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^18.0.0","@types/semver":"^7.3.4","@fastify/cookie":"^7.0.0","@types/passport":"^1.0.5","@fastify/session":"^9.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^5.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.0.1_1655821265236_0.29836186312170887","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@fastify/passport","version":"2.1.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.1.0","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"afcf38719206766bb611f9709ae7604b47e3382c","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.1.0.tgz","fileCount":33,"integrity":"sha512-5GDlCHV34SLi8ZdHU+oi1ZsataT2szKq3LBpTmc2EPQuVyzkVa8DrYJ50EmwY4yvd7GxA+WgeuiA0QwnnFZ+gg==","signatures":[{"sig":"MEUCIHzbRVfBjxMIs3Wu+Laldz6ORIgU0I2in/7r2va8hbVTAiEAroMLsKMT8hmfzM6E3VauEu3iU1XfSFf94wtnr36e7gc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3sbgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2khAAjsWLcVoxJwzDDBpUxgrzaP+ZRqgnkiyjJ1vqkQpTmwiOrXZu\r\nPkxunKm36kQofnUGpRh3ijfJvNaGuhzdQAr6/rNcIKoiXFdTDKr+22RGbJLS\r\nVqSdGZ3r/8J5vz4w14krdx81IzsgkCAVvl3gF0Okecd9hkyBrZAFe1qobxpc\r\nCfhwZc8HxBlAKTJ7ALZRowiM5XmYnxeYRrLSmsn5nhyNqsnfKptgKqU8kmZ0\r\nBqtMLyEMP1xFgT0ihsCDGSgAQpNn7D8IOZuTl9Gip24LgEG/ObJ8s/q2AndL\r\nBIxMvXoLl+HfYxIAp878hh5mArCU39gS1C1Ugz8WSnfeaHUTdcng5VfT7cxo\r\nv7vgCjVLD3CUKNZdLXXg0KRXLMR+QXyP05u5YkzXwIwaSRTHxgyo3TpCyRR1\r\n0w22kUEHr0L387wcSSPFGbkCl6M41wY1X6lKZd+k84n0PASNyFqp3Ibe2ywD\r\nDtVw1X1vbNH0f1EsgwxAmYhPVQtNzWIlpsTnfd+o2C5+9jAMgNWpdd95E/xu\r\ndstaOFXpQ3FSi+mNxsHnVpJUaER2VUB6limBfXUcTZ31/p4q0Qw+ypiqT53v\r\nD4onRa9kXDLDfPvyQhWmlJtyxI18t7hu4jjJZWTu0DRAEd/e33Tf6KxJLlRD\r\nL6siCnirr2gEOzbtSmdhq1KhJqq+zMia9Yo=\r\n=epZu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"dd286c99a6df49ba3ef7fc2f5efa984ffa8f027a","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.14.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"16.15.1","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^4.0.0-rc.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^18.0.0","@types/semver":"^7.3.4","@fastify/cookie":"^7.0.0","@types/passport":"^1.0.5","@fastify/session":"^9.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^5.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.1.0_1658767072244_0.5310754645620368","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@fastify/passport","version":"2.2.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.2.0","maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"3b602098af405dabfe68a170fea06cad77558ff3","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.2.0.tgz","fileCount":33,"integrity":"sha512-JbrtmJUotEgPf9FPpCpbMcVDghLbjziAkj7EnufEaRpMOZE3wkeVg0CzgnD+nrIGoHo6D31RCJMIZMvvLxb+ew==","signatures":[{"sig":"MEUCIGhx1F8tkgnCehKSXUQ+yfmz4aVkBjCcXzOxXrhGOuA0AiEA9xI2nrdGVWa6qXVZqoTNYCCdJPGKFQ0OlmqpZ5COJrM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7uEDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5GQ//UWoj514zvwn80bH0ytgK7WyC7hVX81w75BQWc6PkKXk8CRLw\r\nIE/jyLfKovBukCRmnjxG7jDWpjBK5wwe3V7WWqQgnP4eY5mte930sDq67TdW\r\nCll5Vfj6bIdH24+9Y7AX/HBYCtSwKPyc95MJZTop8MNPo9FULiSQSL9XCyBG\r\nyXHzrLpkLsUP7/iClINmSgYPki0r+/X8I1IjX3p5xv85mcTSEsPUu8G4j2ac\r\n2X4rLRtrTXTwQOgvDPM/a7j+A7oyVB8ESvT7+Wdl2ytksjINQsjN4lVbPIJk\r\n+JdsiY3ifvynxQlSFucXtA56NsdflGInC0klIqo4tgE+GwTjUmsOgG+GmehI\r\ng2pKadaP4cHTGQ5nqecTxpvh50mgN35I3iqbJ3Y0eQRUMpeYpH2sVYRsq1ir\r\nKhQJq37v8t+1KsECJ6HE75P3LP+CCm3EQNSOP60D7BfbduSLI1EZxEAYW9WS\r\ngB+imM0GqQabm5hasGUmGOKnxYvnM0SQiTWFsqsTlwpDQMy77eZhZ6eIMmuQ\r\nMrlkzRkhhLLn9Bz+lkiMjIWjHh99Pq+VTc5INe54z5yzb23nHaYwe+Hl8VLi\r\n0G5pnGOKrP3vlDTh3Ck5o0Lmgs2IfbPE2JgFBvpqOHxnRNATiGYGaF8rbICJ\r\nVjeV9GLyR4dYFAPZYmQn6N+6VFfhYbDp3WE=\r\n=KM9F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"970bd8aa13274905bd83e74d1e0aa79fc4402a56","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"8.14.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"16.15.1","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^4.0.0-rc.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^18.0.0","@types/semver":"^7.3.4","openid-client":"^5.1.6","@fastify/cookie":"^7.0.0","@types/passport":"^1.0.5","@fastify/session":"^9.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^5.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.2.0_1659822339235_0.7918143576697256","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@fastify/passport","version":"1.1.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@1.1.0","maintainers":[{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"96decbcbaf054461acc95c4ac26e1a5723f2a353","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-1.1.0.tgz","fileCount":33,"integrity":"sha512-kLKoGBNzbjpcmGLgttlXYjdLDnM0sMstMxOSKZI+C/sIKlpfmApV66j2hUogalr0onI5YMX3IZ9aTsj9EnUBNQ==","signatures":[{"sig":"MEYCIQDtN4mJ774SXu16tbQY5tgP++kgIwbtzeMEWPMJFw9eAAIhAJZVSgKnJkuKlKLTfm4NUySvpIMkNO5PqNzqg3MSvaKr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQwlSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQ+BAAgCHVuYkrTrzvS6HT504RaiX+H9jKpJWS0y5kLsqU7r+K/vRo\r\nq7UfarhAatKBPMJS91dsnr/Y50Xn5qCFwtpURklV6dbwDu+0v9PCt71Gj74O\r\nuzNYE8k9hWCNASrY1e8UzxqPKVyKD0PVd/EJtVmERWQet3C7+nvNBLluLpJH\r\n99KecNf65AOVt296HVv+gKZ3DnnklK6x8arnGHJg3eaRFjWxlOCbi5sl1hMz\r\n89KRHzuRgMW2AxUmaRFCP9iik9eIHNqDrsAXi63RadWIiF2NRmlKl/QKMO8x\r\n45ToatM1MjgJzZjVwQpk6D0OG17MvNh5sp16vaoLMbgmWJydu0ruOtEJ1lJc\r\n90KJo4aiejvSoFgnPqoYFS0iGMnH7ylLsicObWaGPeQe2qXspCwOmO+xTYa9\r\ni6PT4kwDfwZRrzH0JfiruNZVJ+2iorW57trNaV0z/JTwcl26/ZdnFmaGrIot\r\nxE1AQuEvFzijMvJOtP2stnhDRQoc3HSkKiOS1tQ9U1+6NZ+3lKTauW3vt52l\r\nv0SmqzwFW/5Vi3EJjDcLLjX+O1W8lM2NJtzutEvjnj1Yr7o32zkgESY8dTf1\r\npLHBy3JoKKvDD7N7uhCYckk6/MrAQV9yubZ2NfAn0detfLorapiml9VKQiGj\r\nhbEVZV+/+CQZqkqbZExu/cGlLwnsHx3OeOQ=\r\n=K1RN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"628664a0c86f489def6fd2303990ba059cca5417","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit && npm run lint","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"9.5.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"18.15.0","dependencies":{"@fastify/flash":"^4.0.0","fastify-plugin":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"got":"^11.8.1","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^3.0.2","semver":"^7.3.4","fastify":"^3.9.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^17.0.0","@types/semver":"^7.3.4","@fastify/cookie":"^6.0.0","@types/passport":"^1.0.5","@fastify/session":"^8.2.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^4.1.0","@fastify/csrf-protection":"^4.1.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"peerDependencies":{"fastify":"^3.0.3"},"_npmOperationalInternal":{"tmp":"tmp/passport_1.1.0_1682114898745_0.012544889145689408","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@fastify/passport","version":"2.3.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.3.0","maintainers":[{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"e942a914961d8bbe3d989ef39ccb6c33550b1dbc","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.3.0.tgz","fileCount":33,"integrity":"sha512-OVTUXyAm7Tx194RJiJrzSvM8m5O8TR0CIc9ewKDZWjQcFs+MNiVURdjpIm28l7oY2o19TV9XANutfSH/ngEd+A==","signatures":[{"sig":"MEYCIQDpJWhDBbOGDLMMgvKZbaDgk7DI31+fopmQC7U7M+k2HgIhAPYQhiyd50qa1H+FBNiWEUP4fJWgqNZX8Rxuaw5rc+Rv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQwnlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrT1A/9EgNuMYM2QbD3LoEgLSYp4Mvt+BS4uYV4ZUlo6oefKoWxrc2v\r\nZzPen94XO5Ja9ko2PNQRSiSeMl5FgurfzMzsELAc7g0udLh9ZQuw84Cu8ltU\r\nbTLyioaD77k851uQTnK7yTV/TE/MvMUgfIWhDsY0BaBfL8nCn0WzSabUoEiH\r\nLBqkhx7J6Q8oNL9nGhtb4Un/CNc7ygDgCsHVIU3JUIZ1vizBY9Z20cmeamCH\r\n0GzdknFHHBe8Z5B971Iy2VOJB31UdJ6GW3ABYVCjB3xaFEeacyqoumBlBUr6\r\nnHai1q3YKA48iBcPRZsIlqpwz+b0n5Nfds+anGlNMFUjOuF18XpTrKdXteCU\r\nByQI/pydMAEtWhzNvCnsBsfDf2hEf8b3Vhr10Yijy8JhSo3YsEBlF57cx4FM\r\nPEK4tG2Y4xYkAQnf20fH89bvHvV78iGIU5mhxgu6JSSB1ALLnc7l5T+xPx5k\r\nSYtuQ06ic0WLVKKbX7ZFsokpoiCgFXFXIEaoVEhbu3t0DLeDJRgiyzykJAyv\r\nBb3yplqVYRfYr1tdQOgfmcrbm8uddcAXjXSDpurOsKsC0iXpcfUkJJPP/qCI\r\nIBKDXWmP4lNCDpnGcfz7x/kHqA/chocp+uUsZo2CT5CJPOx/gWBpxlFEoLFh\r\nCXVbl37/9IOwIlTEB0laMYJbfsv9SKkmsRw=\r\n=eZQf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"30843bc2f201879950311ad422bc57747a98f35f","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"9.5.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"18.15.0","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","tsd":"^0.28.0","jest":"^27.0.6","eslint":"^8.5.0","rimraf":"^5.0.0","semver":"^7.3.4","fastify":"^4.0.0-rc.2","ts-jest":"^27.1.2","prettier":"^2.0.5","typescript":"^4.5.4","@types/jest":"^27.0.0","@types/node":"^18.0.0","@types/semver":"^7.3.4","openid-client":"^5.1.6","@fastify/cookie":"^8.0.0","@types/passport":"^1.0.5","@fastify/session":"^10.2.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^4.0.0","@fastify/secure-session":"^6.0.0","@fastify/csrf-protection":"^6.2.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^5.8.1","@typescript-eslint/eslint-plugin":"^5.8.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.3.0_1682115045104_0.3470872936928322","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@fastify/passport","version":"2.4.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.4.0","maintainers":[{"name":"gurgunday","email":"gurgun.dayioglu@icloud.com"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@outlook.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"55c2857925cea66607d7e0557393397f8520e8b7","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.4.0.tgz","fileCount":33,"integrity":"sha512-ad/Bg8mi9qrB2jqx63+t6rwUr4KtJzAUj7P+OIObq8zX/LhPz8OyHg8Ou9oyevSo3vZHA8YFmZvLExP4Xwmlhw==","signatures":[{"sig":"MEYCIQCCRFcfqaNPlb/5hZwUueszWpv4hK4BWqzsf+7rWywKCQIhAMq1gIhzXmoTwYu1TI4Th/N8lsz88JOTK190FubUHTAn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57784},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2da4be6a36937a5067b136093aead33d96b04b8d","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"9.6.7","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"18.17.1","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","tsd":"^0.29.0","jest":"^29.5.0","eslint":"^8.5.0","rimraf":"^5.0.0","semver":"^7.3.4","fastify":"^4.23.0","ts-jest":"^29.1.1","prettier":"^3.0.0","typescript":"~5.2.2","@types/jest":"^29.0.0","@types/node":"^20.1.2","@types/semver":"^7.3.4","openid-client":"^5.1.6","@fastify/cookie":"^9.0.4","@types/passport":"^1.0.5","@fastify/session":"^10.2.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@fastify/secure-session":"^7.0.0","@fastify/csrf-protection":"^6.2.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^6.2.1","@typescript-eslint/eslint-plugin":"^6.2.1"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.4.0_1696329918715_0.5169446399575053","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"@fastify/passport","version":"2.5.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@2.5.0","maintainers":[{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"52dd82c255e1d43df0dbe3b40f0118827a3200f0","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-2.5.0.tgz","fileCount":33,"integrity":"sha512-C7FFT4XMjjDFQDDDNZYfciDpCC/BcEy+PBI0RgSJTrRtrDhvDxbQXCiFV6ls5wnGFfz+fIkUYfYzRP2HPv+pBw==","signatures":[{"sig":"MEQCIBxP7h665umHR0eR0AF9My2UEXntIbHDyK2z0I6R2AZXAiA7Lwe7iZl48Vhgl1MWJa3Zgm+ZpyM8nnOlTfoqdlK8TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58516},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"f33ce384931d3bd48d8bb25df2a34259b475edaa","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build && npm run test:unit","build":"rimraf ./dist && mkdir dist && tsc --outDir dist && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"jest","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"6.14.17","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"14.21.2","dependencies":{"@fastify/flash":"^5.0.0","fastify-plugin":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","tsd":"^0.31.0","jest":"^29.5.0","eslint":"^8.5.0","rimraf":"^5.0.0","fastify":"^4.23.0","ts-jest":"^29.1.1","prettier":"^3.0.0","typescript":"~5.4.2","@types/jest":"^29.0.0","@types/node":"^20.1.2","openid-client":"^5.6.1","@fastify/cookie":"^9.0.4","@types/passport":"^1.0.5","@fastify/session":"^10.2.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@fastify/secure-session":"^7.0.0","@fastify/csrf-protection":"^6.2.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^6.2.1","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/passport_2.5.0_1718100200250_0.37517649220912475","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@fastify/passport","version":"3.0.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@3.0.0","maintainers":[{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"f49cc9dd9da29fa1e1adff1fd3ffbd3daeeea786","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-3.0.0.tgz","fileCount":48,"integrity":"sha512-t9dfrVfmfgD87s8OtyAWhyb2DJM1955qNhiq76O/109uwJzWoE5NYfY3SbIv4U35oWsSvsx1H2JXfr3PJbucoQ==","signatures":[{"sig":"MEQCIG7/9D5tvIVD6Vun9CjnRK1UA3RwV3gfRytbY1Whk1dSAiBdLqBMRC+pciqY6HUxlMWpu4XQKCjcHLzg+8Rwpkkb3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80872},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"eb1b61529cb48b1826f6ee3af524e6debdd3651c","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"borp --coverage","build:test":"tsc --project tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"10.8.1","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"got":"^11.8.1","tsd":"^0.31.0","borp":"^0.17.0","eslint":"^8.5.0","rimraf":"^6.0.1","fastify":"^5.0.0-alpha.4","prettier":"^3.0.0","typescript":"~5.5.2","@types/node":"^22.1.0","openid-client":"^5.6.1","@fastify/cookie":"^10.0.0","@types/passport":"^1.0.5","@fastify/session":"^11.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@fastify/secure-session":"^8.0.0","@fastify/csrf-protection":"^7.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^6.2.1","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/passport_3.0.0_1726071935613_0.9741622098266745","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"@fastify/passport","version":"3.0.1","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@3.0.1","maintainers":[{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"is2ei","email":"issei.horie@is2ei.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"e2a421f7031fc001cebb8cedb0b4818a2c023061","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-3.0.1.tgz","fileCount":48,"integrity":"sha512-23hMw7W2rJafea0uiWiWMpNyLFAORABNH2mFzlF4jmlimM8A1dtBuWoyQe/UsgDXtGeDKfyDMJvD5yzR4vY81w==","signatures":[{"sig":"MEUCIQCMTU0iEqAU6ckZibCcMks1UeIxfkEPqNH2cnLTqCPOLgIgb65m47/Y0n15+T8Ra05YJSHCoJerEy9dS7J567vJVYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80864},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a365765c2a1118762d27f3a5c615e3c6c7161a1c","scripts":{"lint":"eslint \"*/**/*.{js,ts,tsx}\"","test":"npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"prettier --loglevel warn --write \"src/**/*.{ts,tsx}\" && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix","test:unit":"borp --coverage","build:test":"tsc --project tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"eomm","email":"behemoth89@gmail.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"10.1.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"20.8.0","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","tsd":"^0.31.0","borp":"^0.17.0","eslint":"^8.5.0","rimraf":"^6.0.1","fastify":"^5.0.0","prettier":"^3.0.0","typescript":"~5.6.2","@types/node":"^22.1.0","openid-client":"^5.6.1","@fastify/cookie":"^10.0.0","@types/passport":"^1.0.5","@fastify/session":"^11.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@fastify/secure-session":"^8.0.0","@fastify/csrf-protection":"^7.0.0","@types/set-cookie-parser":"^2.4.0","@typescript-eslint/parser":"^6.2.1","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/passport_3.0.1_1726997866124_0.11079372181445124","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"@fastify/passport","version":"3.0.2","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@3.0.2","maintainers":[{"name":"starptech","email":"deusdustin@gmail.com"},{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"coopflow","email":"community@coopflow.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"allevo","email":"tomallevi@gmail.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"rafaelgss","email":"rafael.nunu@hotmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"http://passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"d897bb7b0a7cf9b53aff1e1260bfcc6927cb8e05","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-3.0.2.tgz","fileCount":48,"integrity":"sha512-pUzOxHTaTta6RvtbD4Ct4uTH7wWfgFtyj8apTu+IMe0w67qm5Q5fZsESOVdcC5IothVEySf54fyM9qQ5VNHP3A==","signatures":[{"sig":"MEUCIDtcrri8OTgFu3hofQ2nLfQrOjZEaQKjsgL6SNXPFIYVAiEAxhuyNwPGNnm++axzkGaO+FbM+X9ovaNyhWm2Tf9AIw4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80768},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"671fafef69bb9d090f82887f984b19cbadb946a5","scripts":{"lint":"eslint","test":"npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"eslint --fix","test:unit":"borp --coverage","build:test":"tsc --project tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fdawgs","email":"frazer.dev@icloud.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"10.8.2","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^5.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"got":"^11.8.1","tsd":"^0.31.0","borp":"^0.19.0","eslint":"^9.17.0","rimraf":"^6.0.1","fastify":"^5.0.0","typescript":"~5.7.2","@types/node":"^22.1.0","neostandard":"^0.12.0","openid-client":"^5.6.1","@fastify/cookie":"^11.0.1","@types/passport":"^1.0.5","@fastify/session":"^11.0.0","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^2.4.6","passport-google-oauth":"^2.0.0","@fastify/secure-session":"^8.0.0","@fastify/csrf-protection":"^7.0.0","@types/set-cookie-parser":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/passport_3.0.2_1736596952437_0.11058658001593291","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@fastify/passport","version":"4.0.0","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@4.0.0","maintainers":[{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"tony133","email":"a.tripodi133@gmail.com"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"jean-michelet","email":"jean.antoine.michelet@gmail.com"},{"name":"ilteoood","email":"matteopietro.dazzi@gmail.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"https://www.passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"40858e8a5d0475183538bb6e575fb1dcb5abc96b","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-4.0.0.tgz","fileCount":3,"integrity":"sha512-MIYCKmIZ9pt5X40DZ6QR71BqraMSbKoJryLevm9b/MmY0XhBjVVZKga5GdBukvvMwOeyFvb0Ray9MTqagpYUhg==","signatures":[{"sig":"MEUCICTUJbu25PHI8/mqPhCyHd6/YKXv2enxvtDAAX7pcD70AiEA8nj9VrBURVPwACWs3N+1XAiHxrVt/mX5Rr4I6BcLLM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24434},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"501959007c91fc55061ba4d9e084487a37a833aa","scripts":{"lint":"eslint","test":"npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"eslint --fix","test:unit":"borp --coverage --lines 100","build:test":"tsc --project tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"eomm","email":"behemoth89@gmail.com"},"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"11.11.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"borp":"^0.21.0","eslint":"^9.17.0","rimraf":"^6.0.1","fastify":"^5.0.0","typescript":"~6.0.2","@types/node":"^26.0.1","neostandard":"^0.13.0","openid-client":"^6.6.1","@fastify/cookie":"^11.0.1","@types/passport":"^1.0.17","@fastify/session":"^11.0.0","@tsconfig/node20":"^20.1.6","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^3.0.1","passport-google-oauth":"^2.0.0","@fastify/secure-session":"^8.3.0","@types/passport-github2":"^1.2.9","@fastify/csrf-protection":"^8.0.0","@types/passport-facebook":"^3.0.4","@types/set-cookie-parser":"^2.4.10","@types/passport-google-oauth":"^1.0.45"},"_npmOperationalInternal":{"tmp":"tmp/passport_4.0.0_1785056157470_0.8993367975651696","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@fastify/passport","version":"4.0.1","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@4.0.1","maintainers":[{"name":"simoneb","email":"simone.busoli@gmail.com"},{"name":"delvedor","email":"tommydelved@gmail.com"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"jsumners","email":"james.sumners@gmail.com"},{"name":"zekth","email":"vince.legoff@gmail.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"fox1t","email":"maksim@sinik.it"},{"name":"airhorns","email":"harry@harry.me"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"galvez","email":"jonasgalvez@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"tony133","email":"a.tripodi133@gmail.com"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"jean-michelet","email":"jean.antoine.michelet@gmail.com"},{"name":"ilteoood","email":"matteopietro.dazzi@gmail.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"https://www.passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"58390ce91a1fc376ff592fdeaf4410ae87898ae3","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-4.0.1.tgz","fileCount":45,"integrity":"sha512-NEZy4v0fqb95EWlmLGWo1DFjHV2sB746WajqRtEMni8Asp89XnXE1qBqNZD/zlR69hZRsaBXgWXs+PEvN5qV9g==","signatures":[{"sig":"MEQCIBN4qAP5e5J7wuBdym8DvqSlqdNXu8kiQRzlymRHNWWlAiAlaaKlDOPllEirr1+uX73ovm87FXMXafFuRK/4UCTvvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81157},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a07cdb0f54e52a6697c4750d8a444aed9b6ba24a","scripts":{"lint":"eslint","test":"npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"eslint --fix","test:unit":"borp --coverage --lines 100","build:test":"tsc --project tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"eomm","email":"behemoth89@gmail.com"},"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"11.11.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"borp":"^0.21.0","eslint":"^9.17.0","rimraf":"^6.0.1","fastify":"^5.0.0","typescript":"~6.0.2","@types/node":"^26.0.1","neostandard":"^0.13.0","openid-client":"^6.6.1","@fastify/cookie":"^11.0.1","@types/passport":"^1.0.17","@fastify/session":"^11.0.0","@tsconfig/node20":"^20.1.6","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^3.0.1","passport-google-oauth":"^2.0.0","@fastify/secure-session":"^8.3.0","@types/passport-github2":"^1.2.9","@fastify/csrf-protection":"^8.0.0","@types/passport-facebook":"^3.0.4","@types/set-cookie-parser":"^2.4.10","@types/passport-google-oauth":"^1.0.45"},"_npmOperationalInternal":{"tmp":"tmp/passport_4.0.1_1785247574457_0.2505633204172135","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@fastify/passport","version":"4.0.2","keywords":["fastify","auth","authentication"],"license":"MIT","_id":"@fastify/passport@4.0.2","maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"tony133","email":"a.tripodi133@gmail.com"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"homepage":"https://www.passportjs.org/","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"4fea953289c7882389e332ca45327a105ccebe62","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-4.0.2.tgz","fileCount":48,"integrity":"sha512-wijqTZolttYvcnbJXbwigP/8dL78yTt+jC6jfcFwHnjvUULVsWIFxQMu72BGGvBiffuykN8NW85bUid+4SfjWg==","signatures":[{"sig":"MEYCIQD/mA3myyMs6OTydU8wu1HqKs0aHLKlUlBgZsvxjLNdowIhAIg4BSJl0kRELLSPn4NmyZTn57CRrzmz3K9X6XzBghxI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82769},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ef7e65f2af7ae63c010180bd1f64c2d8477004b1","scripts":{"lint":"eslint","test":"npm run test:types && npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"eslint --fix","test:unit":"borp --coverage --lines 100","build:test":"tsc --project tsconfig.test.json","test:types":"npm run build && tstyche","prepublishOnly":"npm run build"},"_npmUser":{"name":"tony133","email":"a.tripodi133@gmail.com"},"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"11.16.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"borp":"^0.21.0","eslint":"^9.17.0","rimraf":"^6.0.1","fastify":"^5.0.0","tstyche":"^7.2.2","typescript":"~6.0.2","@types/node":"^26.0.1","neostandard":"^0.13.0","openid-client":"^6.6.1","@fastify/cookie":"^11.0.1","@types/passport":"^1.0.17","@fastify/session":"^11.0.0","@tsconfig/node20":"^20.1.6","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^3.0.1","passport-google-oauth":"^2.0.0","@fastify/secure-session":"^8.3.0","@types/passport-github2":"^1.2.9","@fastify/csrf-protection":"^8.0.0","@types/passport-facebook":"^3.0.4","@types/set-cookie-parser":"^2.4.10","@types/passport-google-oauth":"^1.0.45"},"_npmOperationalInternal":{"tmp":"tmp/passport_4.0.2_1786567797167_0.7099394531073258","host":"s3://npm-registry-packages-npm-production"}},"4.0.3":{"_id":"@fastify/passport@4.0.3","bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"dist":{"shasum":"8ef684f1050ece2a0e8d397e93f213a1a08dea3b","tarball":"https://registry.npmjs.org/@fastify/passport/-/passport-4.0.3.tgz","fileCount":51,"integrity":"sha512-H+698JpP78d9jbYXU1f3/bMMXitVm7Y22H9dYeWA3Acog2sa2nz94HvIN1kkAN24HSLf5zZzLIc1sHEfVEGxeA==","signatures":[{"sig":"MEQCIGM56Y/oOPAnRCiEas/8ujuRFl5jmexz1oeKE5UPJCFjAiAmZnNB+hckyqUMyiQkPohfWdBPQZlABUS2YHFF5fcZDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH17MK1FGHbo+z4MC1Eg66X9iqC4ALgVj6wHQnYkUrEcAiEA3cEkhi0ZNAHZQoh++h6+W++CekaBihaIXfRE7/vRZ+c="}],"unpackedSize":88233},"main":"dist/index.js","name":"@fastify/passport","type":"commonjs","types":"dist/index.d.ts","gitHead":"64c9cf92e700e03304eb74eca242587c0131b1c6","license":"MIT","scripts":{"lint":"eslint","test":"npm run test:types && npm run build:test && npm run test:unit","build":"rimraf ./dist && tsc && git rev-parse HEAD > BUILD_SHA","lint:fix":"eslint --fix","test:unit":"borp --coverage --check-coverage","build:test":"tsc --project tsconfig.test.json","test:types":"npm run build && tstyche","prepublishOnly":"npm run build"},"version":"4.0.3","_npmUser":{"name":"tony133","email":"a.tripodi133@gmail.com"},"homepage":"https://www.passportjs.org/","keywords":["fastify","auth","authentication"],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"_npmVersion":"11.19.0","description":"Simple, unobtrusive authentication for Fastify.","directories":{},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"tony133","email":"a.tripodi133@gmail.com"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"_nodeVersion":"24.18.0","contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"dependencies":{"@fastify/flash":"^6.0.0","fastify-plugin":"^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"borp":"^1.0.0","eslint":"^9.17.0","rimraf":"^6.0.1","fastify":"^5.0.0","tstyche":"^7.2.2","typescript":"~6.0.2","@types/node":"^26.0.1","neostandard":"^0.13.0","openid-client":"^6.6.1","@fastify/cookie":"^11.0.1","@types/passport":"^1.0.17","@fastify/session":"^11.0.0","@tsconfig/node20":"^20.1.6","passport-github2":"^0.1.12","passport-facebook":"^3.0.0","set-cookie-parser":"^3.0.1","passport-google-oauth":"^2.0.0","@fastify/secure-session":"^8.3.0","@types/passport-github2":"^1.2.9","@fastify/csrf-protection":"^8.0.0","@types/passport-facebook":"^3.0.4","@types/set-cookie-parser":"^2.4.10","@types/passport-google-oauth":"^1.0.45"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/passport_4.0.3_1790111433962_0.8381567210699001"}}},"time":{"created":"2022-04-27T14:35:37.028Z","modified":"2026-09-22T21:10:34.271Z","1.0.0":"2022-04-27T14:35:37.322Z","1.0.1":"2022-04-27T17:00:32.362Z","2.0.0":"2022-05-14T07:57:53.124Z","2.0.1":"2022-06-21T14:21:05.424Z","2.1.0":"2022-07-25T16:37:52.465Z","2.2.0":"2022-08-06T21:45:39.399Z","1.1.0":"2023-04-21T22:08:18.917Z","2.3.0":"2023-04-21T22:10:45.299Z","2.4.0":"2023-10-03T10:45:18.859Z","2.5.0":"2024-06-11T10:03:20.394Z","3.0.0":"2024-09-11T16:25:35.854Z","3.0.1":"2024-09-22T09:37:46.417Z","3.0.2":"2025-01-11T12:02:32.616Z","4.0.0":"2026-07-26T08:55:57.605Z","4.0.1":"2026-07-28T14:06:14.606Z","4.0.2":"2026-08-12T20:49:57.318Z","4.0.3":"2026-09-22T21:10:34.063Z"},"bugs":{"url":"https://github.com/fastify/fastify-passport/issues"},"license":"MIT","homepage":"https://www.passportjs.org/","keywords":["fastify","auth","authentication"],"repository":{"url":"git+https://github.com/fastify/fastify-passport.git","type":"git"},"description":"Simple, unobtrusive authentication for Fastify.","contributors":[{"name":"Maksim Sinik","email":"maksim@sinik.it"},{"name":"Harry Brundage","email":"harry@harry.me"}],"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"eomm","email":"behemoth89@gmail.com"},{"name":"kibertoad","email":"iselwin@gmail.com"},{"name":"climba03003","email":"kaka@kakawebsitedemo.com"},{"name":"gurgunday","email":"hey@gurgun.day"},{"name":"tony133","email":"a.tripodi133@gmail.com"},{"name":"metcoder95","email":"me@metcoder.dev"},{"name":"fdawgs","email":"frazer.dev@icloud.com"}],"readme":"# @fastify/passport\n\n[![CI](https://github.com/fastify/fastify-passport/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fastify/fastify-passport/actions/workflows/ci.yml)\n[![NPM version](https://img.shields.io/npm/v/@fastify/passport.svg?style=flat)](https://www.npmjs.com/package/@fastify/passport)\n[![neostandard javascript style](https://img.shields.io/badge/code_style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard)\n\n`@fastify/passport` is a port of [`passport`](https://www.passportjs.org/) for the Fastify ecosystem. It lets you use Passport strategies to authenticate requests and protect Fastify routes!\n\n## Status\n\nBeta. `@fastify/passport` is still a relatively new project. There may be incompatibilities with express-based `passport` deployments, and bugs. Please report any issues so we can correct them!\n\n## Installation\n\n```shell\nnpm i @fastify/passport\n```\n\n## Google OAuth2 Video tutorial\n\nThe community created this fast introduction to `@fastify/passport`:\n[![Google OAuth2 Tutorial Passport](https://img.youtube.com/vi/XRcQQWU0XOM/0.jpg)](https://www.youtube.com/watch?v=XRcQQWU0XOM)\n\n\n## Example\n\n```js\nimport fastifyPassport from '@fastify/passport'\nimport fastifySecureSession from '@fastify/secure-session'\n\nconst server = fastify()\n// set up secure sessions for @fastify/passport to store data in\nserver.register(fastifySecureSession, { key: fs.readFileSync(path.join(__dirname, 'secret-key')) })\n// initialize @fastify/passport and connect it to the secure-session storage. Note: both of these plugins are mandatory.\nserver.register(fastifyPassport.initialize())\nserver.register(fastifyPassport.secureSession())\n\n// register an example strategy for fastifyPassport to authenticate users using\nfastifyPassport.use('test', new SomePassportStrategy()) // you'd probably use some passport strategy from npm here\n\n// log users in with the strategy named \"test\": on success the user is stored in the session and redirected to /\nserver.post(\n  '/login',\n  { preValidation: fastifyPassport.authenticate('test', { successRedirect: '/', authInfo: false }) },\n  () => {}\n)\n\n// require a login for a route: the session hook has already populated request.user for logged-in requests\nserver.get(\n  '/',\n  {\n    preValidation: async (request, reply) => {\n      if (!request.isAuthenticated()) return reply.redirect('/login')\n    }\n  },\n  async () => 'hello world!'\n)\n\nserver.listen()\n```\n\nAlternatively, [`@fastify/session`](https://github.com/fastify/session) is also supported and works out of the box for session storage.\nHere's an example:\n\n```js\nimport { Authenticator } from '@fastify/passport'\nimport fastifyCookie from '@fastify/cookie'\nimport fastifySession from '@fastify/session'\n\nconst server = fastify()\n\n// setup an Authenticator instance which uses @fastify/session\nconst fastifyPassport = new Authenticator()\n\nserver.register(fastifyCookie)\nserver.register(fastifySession, { secret: 'secret with minimum length of 32 characters' })\n\n// initialize @fastify/passport and connect it to the secure-session storage. Note: both of these plugins are mandatory.\nserver.register(fastifyPassport.initialize())\nserver.register(fastifyPassport.secureSession())\n\n// register an example strategy for fastifyPassport to authenticate users using\nfastifyPassport.use('test', new SomePassportStrategy()) // you'd probably use some passport strategy from npm here\n```\n\n## Protecting routes\n\n`authenticate()` runs a strategy. It does not check whether the request already has a session, so it is the right hook for the routes that *perform* a login (the login route and the OAuth callback route), and the wrong one for the routes that merely *require* one.\n\nOnce `secureSession()` is registered, every request that carries a login session already has `request.user` populated for you, before any route-level hook runs. Guard protected routes on that, with `request.isAuthenticated()`:\n\n```js\nconst requireLogin = async (request, reply) => {\n  if (!request.isAuthenticated()) {\n    request.session.set('returnTo', request.url) // optional, see successReturnToOrRedirect\n    return reply.redirect('/auth/login')\n  }\n}\n\n// performs the login\nserver.get('/auth/login', { preValidation: fastifyPassport.authenticate('google') }, () => {})\nserver.get(\n  '/auth/callback',\n  { preValidation: fastifyPassport.authenticate('google', { successRedirect: '/' }) },\n  () => {}\n)\n\n// requires a login\nserver.get('/', { preValidation: requireLogin }, async (request) => request.user)\n```\n\nPutting a redirect-based strategy (any OAuth/OIDC one: `passport-microsoft`, `passport-google-oauth20`, `passport-github2`, …) on a protected route produces an infinite redirect loop instead of an error, because the strategy has no credentials in the request and so redirects to the identity provider, the provider recognises its own session and immediately redirects back to the callback, the callback redirects to the protected route, and the protected route starts the strategy over again:\n\n```js\n// DON'T: '/' bounces to the IdP and back forever, even for a logged-in user\nserver.get('/', { preValidation: fastifyPassport.authenticate('google') }, async (request) => request.user)\n```\n\nNote also that `authenticate('session')` is not a guard. The built-in session strategy *passes* when the session holds no user rather than failing, so `failureRedirect` never fires and the handler runs with `request.user` unset.\n\n## Session cleanup on logIn\n\nFor security reasons the session is cleaned after login. You can manage this configuration at your own risk by:\n1) Include `keepSessionInfo` true option when perform the passport `.authenticate` call;\n2) Include `keepSessionInfo` true option when perform the request `.login` call;\n3) Using `clearSessionOnLogin (default: true)` and `clearSessionIgnoreFields (default: ['passport', 'session'])`.\n\n## Difference between `@fastify/secure-session` and `@fastify/session`\n`@fastify/secure-session` and `@fastify/session` are both session plugins for Fastify which are capable of encrypting/decrypting the session. The main difference is that `@fastify/secure-session` uses the stateless approach and stores the whole session in an encrypted cookie whereas `@fastify/session` uses the stateful approach for sessions and stores them in a session store.\n\n## Session Serialization\n\nIn a typical web application, the credentials used to authenticate a user will only be transmitted once when a user logs in, and after, they are considered logged in because of some data stored in their session. `@fastify/passport` implements this pattern by storing sessions using `@fastify/secure-session`, and serializing/deserializing user objects to and from the session referenced by the cookie. `@fastify/passport` cannot store rich object classes in the session, only JSON objects, so you must register a serializer/deserializer pair if you want to fetch a User object from your database, and store only a user ID in the session.\n\n```js\n// register a serializer that stores the user object's id in the session ...\nfastifyPassport.registerUserSerializer(async (user, request) => user.id);\n\n// ... and then a deserializer that will fetch that user from the database when a request with an id in the session arrives\nfastifyPassport.registerUserDeserializer(async (id, request) => {\n  return await User.findById(id);\n});\n```\n\n## API\n\n### initialize()\n\nA hook that **must be added**. Sets up a `@fastify/passport` instance's hooks.\n\n### secureSession()\n\nA hook that **must be added**. Sets up `@fastify/passport`'s connector with `@fastify/secure-session` to store authentication in the session.\n\n### authenticate(strategy: string | Strategy | (string | Strategy)[], options: AuthenticateOptions, callback?: AuthenticateCallback)\n\nReturns a hook that authenticates requests, in other words, validates users and then signs them in. `authenticate` is intended for use as a `preValidation` hook on a particular route like `/login`.\n\nApplies the given strategy (or strategies) to the incoming request, in order to authenticate the request. Strategies are usually registered ahead of time using `.use`, and then passed to `.authenticate` by name. If authentication is successful, the user will be logged in and populated at `request.user` and a session will be established by default. If authentication fails, an unauthorized response will be sent.\n\nStrategies or arrays of strategies can also be passed as instances. This is useful when using a temporary strategy you only intend to use once for one user and don't want to register into the global list of available strategies.\n\nOptions:\n\n- `session` Save login state in session, defaults to _true_\n- `successRedirect` After successful login, redirect to given URL\n- `successReturnToOrRedirect` After successful login, redirect to the URL stored in the session under `returnTo` if there is one, otherwise to the given URL. Note that the session is cleared on login by default, so `returnTo` must be preserved: add `'returnTo'` to the `Authenticator`'s `clearSessionIgnoreFields`, or pass `keepSessionInfo: true` here (see [Session cleanup on logIn](#session-cleanup-on-login))\n- `successMessage` True to store success message in\n  req.session.messages, or a string to use as override\n  message for success.\n- `successFlash` True to flash success messages or a string to use as a flash\n  message for success (overrides any from the strategy itself).\n- `failureRedirect` After failed login, redirect to given URL\n- `failureMessage` True to store failure message in\n  req.session.messages, or a string to use as override\n  message for failure.\n- `failureFlash` True to flash failure messages or a string to use as a flash\n  message for failures (overrides any from the strategy itself).\n- `assignProperty` Assign the object provided by the verify callback to given property\n- `authInfo` Pass the `info` returned by the strategy's verify callback through the registered auth info transformer and store the result at `request.authInfo`, defaults to _true_. Set to _false_ to skip this\n- `failWithError` On failed login, throw an `AuthenticationError` instead of sending the failure response, so it reaches your Fastify error handler\n- `state` Pass any provided state through to the strategy (e.g. for Google Oauth)\n- `keepSessionInfo` True to save existing session properties after authentication\n\nAn optional `callback` can be supplied to allow the application to override the default manner in which authentication attempts are handled. The callback has the following signature:\n\n```js\n(request, reply, err | null, user | false, info?, (status | statuses)?) => Promise<void>\n```\n\nwhere `request` and `reply` will be set to the original `FastifyRequest` and `FastifyReply` objects, and `err` will be set to `null` in case of a success or an `Error` object in case of a failure. If `err` is not `null` then `user`, `info`, and `status` objects will be `undefined`. The `user` object will be set to the authenticated user on a successful authentication attempt, or `false` otherwise.\n\nAn optional `info` argument will be passed, containing additional details provided by the strategy's verify callback - this could be information about a successful authentication or a challenge message for a failed authentication.\n\nAn optional `status` or `statuses` argument will be passed when authentication fails - this could be a HTTP response code for a remote authentication failure or similar.\n\n```js\nfastify.get(\n  '/',\n  { preValidation: fastifyPassport.authenticate('test', { authInfo: false }) },\n  async (request, reply, err, user, info, status) => {\n    if (err !== null) {\n      console.warn(err)\n    } else if (user) {\n      console.log(`Hello ${user.name}!`)\n    }\n  }\n)\n```\n\nExamples:\n\n```js\n// create a request handler that uses the Facebook strategy\nfastifyPassport.use(new FacebookStrategy('facebook', {\n  // options for the Facebook strategy, see https://www.npmjs.com/package/passport-facebook\n})))\nfastifyPassport.authenticate('facebook');\n\n// create a request handler to test against the strategy named local, and automatically redirect when it succeeds or fails\nfastifyPassport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' });\n\n// create a request handler that won't use any user information stored in the secure session\nfastifyPassport.authenticate('basic', { session: false });\n```\n\nNote that if a callback is supplied, it becomes the application's responsibility to log-in the user, establish a session, and otherwise perform the desired operations.\n\n#### Multiple Strategies\n\n`@fastify/passport` supports authenticating with a list of strategies, and will try each in order until one passes. Pass an array of strategy names to `authenticate` for this:\n\n```js\n// somewhere before several strategies are registered\nfastifyPassport.use('bearer', new BearerTokenStrategy())\nfastifyPassport.use('basic', new BasicAuthStrategy())\nfastifyPassport.use('google', new FancyGoogleStrategy())\n\n// and then an `authenticate` call can test incoming requests against multiple strategies\nfastify.get(\n  '/',\n  { preValidation: fastifyPassport.authenticate(['bearer', 'basic', 'google'], { authInfo: false }) },\n  async (request, reply, err, user, info, status) => {\n    if (err !== null) {\n      console.warn(err)\n    } else if (user) {\n      console.log(`Hello ${user.name}!`)\n    }\n  }\n)\n```\n\nNote that multiple strategies that redirect to start an authentication flow, like OAuth2 strategies from major platforms, should not be used together in the same `authenticate` call. This is because `@fastify/passport` will run the strategies in order, and the first one that redirects will do so, preventing the user from ever using the other strategies. To set up multiple OAuth2 strategies, add several routes that each use a different strategy in their own `authenticate` call, and then direct users to the right route for the strategy they pick.\n\nMultiple strategies can also be passed as instances if you only intend to use them for that route handler or for that request.\n\n```js\n// use an `authenticate` call can test incoming requests against multiple strategies without registering them for use elsewhere\nfastify.get(\n  '/',\n  {\n    preValidation: fastifyPassport.authenticate([new BearerTokenStrategy(), new BasicAuthStrategy()], {\n      authInfo: false,\n    }),\n  },\n  async (request, reply, err, user, info, status) => {\n    if (err !== null) {\n      console.warn(err)\n    } else if (user) {\n      console.log(`Hello ${user.name}!`)\n    }\n  }\n)\n```\n\n### authorize(strategy: string | Strategy | (string | Strategy)[], options: AuthenticateOptions = {}, callback?: AuthenticateCallback)\n\nReturns a hook that will authorize a third-party account using the given `strategy`, with optional `options`. Intended for use as a `preValidation` hook on any route. `.authorize` has the same API as `.authenticate`, but has one key difference: it doesn't modify the logged in user's details. Instead, if authorization is successful, the result provided by the strategy's verify callback will be assigned to `request.account`. The existing login session and `request.user` will be unaffected.\n\nThis function is particularly useful when connecting third-party accounts to the local account of a user that is currently authenticated.\n\nExamples:\n\n```js\nfastifyPassport.authorize('twitter-authz', { failureRedirect: '/account' })\n```\n\n`.authorize` allows the use of multiple strategies by passing an array of strategy names and allows the use of already instantiated Strategy instances by passing the instance as the strategy, or an array of instances.\n\n### use(name?: string, strategy: Strategy)\n\nUtilize the given `strategy` with optional `name`, overridding the strategy's default name.\n\nExamples:\n\n```js\nfastifyPassport.use(new TwitterStrategy(...));\n\nfastifyPassport.use('api', new http.Strategy(...));\n```\n\n### unuse(name: string)\n\nUn-utilize the `strategy` with given `name`.\n\nIn typical applications, the necessary authentication strategies are static, configured once and always available. As such, there is often no need to invoke this function.\n\nHowever, in certain situations, applications may need dynamically configure and de-configure authentication strategies. The `use()`/`unuse()` combination satisfies these scenarios.\n\nExample:\n\n```js\nfastifyPassport.unuse('legacy-api')\n```\n\n### registerUserSerializer(serializer: (user, request) => Promise<SerializedUser>)\n\nRegisters an async user serializer function for taking a high-level User object from your application and serializing it for storage into the session. `@fastify/passport` cannot store rich object classes in the session, only JSON objects, so you must register a serializer/deserializer pair if you want to fetch a User object from your database, and store only a user ID in the session.\n\n```js\n// register a serializer that stores the user object's id in the session ...\nfastifyPassport.registerUserSerializer(async (user, request) => user.id)\n```\n\n### registerUserDeserializer(deserializer: (serializedUser, request) => Promise<User>)\n\nRegisters an async user deserializer function for taking a low-level serialized user object (often just a user ID) from a session, and deserializing it from storage into the request context. `@fastify/passport` cannot store rich object classes in the session, only JSON objects, so you must register a serializer/deserializer pair if you want to fetch a User object from your database, and store only a user ID in the session.\n\n```js\nfastifyPassport.registerUserDeserializer(async (id, request) => {\n  return await User.findById(id);\n});\n```\n\nDeserializers can throw the string `\"pass\"` if they do not apply to the current session and the next deserializer should be tried. This is useful if you are using `@fastify/passport` to store two different kinds of user objects. An example:\n\n```js\n// register a deserializer for database users\nfastifyPassport.registerUserDeserializer(async (id, request) => {\n  if (id.startsWith(\"db-\")) {\n    return await User.findById(id);\n  } else {\n    throw \"pass\"\n  }\n});\n\n// register a deserializer for redis users\nfastifyPassport.registerUserDeserializer(async (id, request) => {\n  if (id.startsWith(\"redis-\")) {\n    return await redis.get(id);\n  } else {\n    throw \"pass\"\n  }\n});\n```\n\nSessions may specify serialized users that have since been deleted from the datastore storing them for the application. In that case, deserialization often fails because the user row cannot be found for a given id. Depending on the application, this can either be an error condition, or expected if users are deleted from the database while logged in. `@fastify/passport`'s behavior in this case is configurable. Errors are thrown if a deserializer returns undefined, and the session is logged out if a deserializer returns `null` or `false.` This matches the behavior of the original `passport` module.\n\nTherefore, a deserializer can return several things:\n\n- if a deserializer returns an object, that object is assumed to be a successfully deserialized user\n- if a deserializer returns `undefined`, `@fastify/passport` interprets that as an erroneously missing user, and throws an error because the user could not be deserialized.\n- if a deserializer returns `null` or `false`, `@fastify/passport` interprets that as a missing but expected user, and resets the session to log the user out\n- if a deserializer throws the string `\"pass\"`, `@fastify/passport` will try the next deserializer if it exists, or throw an error because the user could not be deserialized.\n\n### Request#isAuthenticated()\n\nTest if the request carries a login session, i.e. whether `request.user` was populated by `secureSession()` or by a preceding `authenticate()` call. This is what protected routes should be guarded with, see [Protecting routes](#protecting-routes).\n\n```js\nserver.get('/', {\n  preValidation: async (request, reply) => {\n    if (!request.isAuthenticated()) return reply.redirect('/auth/login')\n  }\n}, async (request) => request.user)\n```\n\n### Request#isUnauthenticated()\n\nTest if request is unauthenticated.\n\n## Using with TypeScript\n\n`@fastify/passport` is written in TypeScript, so it includes type definitions for all of its API. You can also strongly type the `FastifyRequest.user` property using TypeScript declaration merging. You must re-declare the `PassportUser` interface in the `fastify` module within your own code to add the properties you expect to be assigned by the strategy when authenticating:\n\n```typescript\ndeclare module 'fastify' {\n  interface PassportUser {\n    id: string\n  }\n}\n```\n\nor, if you already have a type for the objects returned from all of the strategies, you can make `PassportUser` extend it:\n\n```typescript\nimport { User } from './my/types'\n\ndeclare module 'fastify' {\n  interface PassportUser extends User {}\n}\n```\n\n## Using multiple instances\n\n`@fastify/passport` supports being registered multiple times in different plugin encapsulation contexts. This is useful to implement two separate authentication stacks. For example, you might have a set of strategies that authenticate users of your application and a whole other set of strategies for authenticating staff members of your application that access an administration area. Users might be stored at `request.user`, and administrators at `request.admin`, and logging in as one should have no bearing on the other. It is important to register each instance of `@fastify/passport` in a different Fastify plugin context so that the decorators `@fastify/passport` like `request.logIn` and `request.logOut` do not collide.\n\nTo register @fastify/passport more than once, you must instantiate more copies with different `keys` and `userProperty`s so they do not collide when decorating your fastify instance or storing things in the session.\n\n```typescript\nimport { Authenticator } from '@fastify/passport'\n\nconst server = fastify()\n\n// users: their own Authenticator, hooks and routes, inside their own plugin context\nserver.register(async (instance) => {\n  const userPassport = new Authenticator({ key: 'users', userProperty: 'user' })\n  userPassport.use('some-strategy', new CoolOAuthStrategy('some-strategy'))\n  instance.register(userPassport.initialize())\n  instance.register(userPassport.secureSession())\n\n  instance.get('/login', { preValidation: userPassport.authenticate('some-strategy') }, () => {})\n  instance.get(\n    '/login/callback',\n    { preValidation: userPassport.authenticate('some-strategy', { successRedirect: '/' }) },\n    () => {}\n  )\n  instance.get(\n    '/',\n    {\n      preValidation: async (request, reply) => {\n        if (!request.isAuthenticated()) return reply.redirect('/login')\n      }\n    },\n    async (request) => `hello ${JSON.stringify(request.user)}!`\n  )\n})\n\n// administrators: the same, in a separate context so the decorators don't collide\nserver.register(async (instance) => {\n  const adminPassport = new Authenticator({ key: 'admin', userProperty: 'admin' })\n  adminPassport.use('admin-google', new GoogleOAuth2Strategy('admin-google'))\n  instance.register(adminPassport.initialize())\n  instance.register(adminPassport.secureSession())\n\n  instance.get('/admin/login', { preValidation: adminPassport.authenticate('admin-google') }, () => {})\n  instance.get(\n    '/admin/login/callback',\n    { preValidation: adminPassport.authenticate('admin-google', { successRedirect: '/admin' }) },\n    () => {}\n  )\n  instance.get(\n    '/admin',\n    {\n      preValidation: async (request, reply) => {\n        if (!request.isAuthenticated()) return reply.redirect('/admin/login')\n      }\n    },\n    async (request) => `hello administrator ${JSON.stringify(request.admin)}!`\n  )\n})\n```\n\n**Note**: Each `Authenticator` instance's initialize plugin and session plugin must be registered separately.\n\nIt is important to note that using multiple `@fastify/passport` instances is not necessary if you want to use multiple strategies to login the same type of user. `@fastify/passport` supports multiple strategies by passing an array to any `.authenticate` call.\n\n# Differences from Passport.js\n\n`@fastify/passport` is an adapted version of Passport that tries to be as compatible as possible but is an adapted version that has some incompatibilities. Passport strategies that adhere to the passport strategy API should work fine, but there are some differences in other APIs made to integrate better with Fastify and to stick with Fastify's theme of performance.\n\nDifferences:\n\n- `serializeUser` renamed to `registerUserSerializer` and always takes an async function with the signature `(user: User, request: FastifyRequest) => Promise<SerializedUser>`\n- `deserializeUser` renamed to `registerUserDeserializer` and always takes an async function with the signature `(serialized: SerializedUser, request: FastifyRequest) => Promise<User>`\n- `transformAuthInfo` renamed to `registerAuthInfoTransformer` and always takes an async function with the signature `(info: any, request: FastifyRequest) => Promise<any>`\n- `.authenticate` and `.authorize` accept strategy instances in addition to strategy names. This allows for using one-time strategy instances (say for testing given user credentials) without adding them to the global list of registered strategies.\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}