{"_id":"@aiyan/safeplaces-auth","_rev":"12-d3e653bed6b25e015f378295f151ea47","time":{"0.0.1":"2020-06-30T21:43:17.336Z","created":"2020-06-30T21:43:45.570Z","0.0.2":"2020-06-30T21:43:45.735Z","modified":"2022-04-04T12:26:03.970Z","0.0.3":"2020-06-30T22:03:24.124Z","0.0.4":"2020-07-01T20:20:17.520Z","0.0.5":"2020-07-01T20:50:36.678Z","0.0.6":"2020-07-02T16:58:56.863Z","0.1.8":"2020-07-13T18:41:35.282Z","0.1.9":"2020-07-13T19:06:48.524Z","0.1.10":"2020-07-13T19:09:19.543Z","0.1.11":"2020-07-13T19:49:18.023Z"},"name":"@aiyan/safeplaces-auth","dist-tags":{"latest":"0.1.11"},"versions":{"0.0.2":{"name":"@aiyan/safeplaces-auth","description":"The modular authentication service for the SafePlaces backend.","version":"0.0.2","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage && coveralls < coverage/lcov.info"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"c45aa934e35e62bde13ebed0c1f54328e167341b","_id":"@aiyan/safeplaces-auth@0.0.2","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-87SEkScy2fukj0osnn+SVNtCJbQ6LFh0cncvHqGH7W/EHVIQx/O7ecXCLJyhvw5A7DH3It1tYEdxPVivManUgQ==","shasum":"3f1e96c6435b29b63996e105350b2ca27f92a732","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.0.2.tgz","fileCount":14,"unpackedSize":12706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+7ISCRA9TVsSAnZWagAAticP/j5Bvv3zKxAcZ+qTBB33\naooM6GbKN96e1rMVCEveiRHESZlfR+ksfS0R1BX25sxQtG92q4jWGm24i5m8\n3xj9kJ8gV7gWA0x5zpqcZIa35mZ/1nyaMMUDErdZxKc9QBqwdjvxi+MAvglE\nbXJknyDcvtb8onJ6zixev9rZuaawDDhjpsVamQE/FZZ6iTK2J7UdgYD7vMbo\n1mGqcFE1S4Q0CYSow5PUUjfT8xpGNpkJXLQhnjrs7dboNye5nBbsn+WIZzYg\nXUsmfSn4W9hxmu8x+bUEXl2Pn381R6R+MxXveU6OilhHnn4YcDxA7avwqGWb\nfKjy5dKNw9KyRaWS76s7NV3qwv/Oa95B9qCTRVGpKtUXX9ioHvlv8hX0bSc3\nNMioH0lIEScAY5CxXjP9V83SxRud1C4FF0kfH7kGZ4+IsoLXLSZbLZAsq96u\nmu8NVAJFL50RH9tp6mtmaDkttDOdH2DT+1A1XToIJ7iCkxEIw6dnf9V+nOiP\nILpo2IvuQ0SMFbD0DoiRq2pi6qRwf7dcGNoxbfubnkLjMB70wC0oIt1l9SQd\nPPTl3ogym9W8k2tbORYYnIlLn4MSSgPZiPO3Yug0f2LSKwGM4HHu2vvVjkpb\n4IvbuwVE9APXf22yuIQld1VJUBbwCEDuKdgqnBHJlIVrEyLAyP3TZN00M1wR\nWWqW\r\n=iHsd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRvk4HHhdrX/cYEhsB7lRzvL8jXpKPtpqCj3D7A0cbpgIgUFxH3YYSdh0fhk/rKGo0iC3K09/9IHzvIvV8bLvfsls="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.0.2_1593553425614_0.058005876313095284"},"_hasShrinkwrap":false},"0.0.3":{"name":"@aiyan/safeplaces-auth","version":"0.0.3","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/aiyan/safeplaces-auth.git"},"homepage":"https://github.com/aiyan/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage && coveralls < coverage/lcov.info"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"9f7a33e86ee3f71046b0b62134f6cca09eecaf4a","bugs":{"url":"https://github.com/aiyan/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.0.3","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-QLM1Ov6/dwVmusBDkIZ6suEkwZK1oiBMf1nZr6roBvHM8ytblYx/egQQGsrMW+c/58reB5swu/YueU0jYzKoYA==","shasum":"176605efacbc448440ccfaec4be1d511e4784d6d","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.0.3.tgz","fileCount":14,"unpackedSize":12884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+7asCRA9TVsSAnZWagAAqLoP/2FU50S15WhlXHz8MnTC\nsuHtoTubcVQyuY1agkXcBYXZu30no2JgRiYOc7IS5p5WUsMCYKwQgi9slNNa\n1NW2HWbrGuHvbLRqX5t07bePZWJr9w8WiSlQmfW52U8uTkx64sY+0k7iGJNf\npYkF3eTgClw8BP52aLvk6CsR/TyOxDnUj/GOvFbmVqr7wxMaE36RO5KHSzYf\nvq5dPD/HXfQg67FpTVO4IBfS8YKhivTJDYdLsRXm18Ncu6m9USm/dUuJ0BQY\n/gcPOfHZh2q/sq3RHvXrVekwv2keLe0M5JEHxU8xE9Par2lecbZLPsDV+XL5\nSGhKfDjaJUuc7cyM+Af580poHip8o8+CzSLrtAmXnXkM6aY47xucYhky3MT7\ngf0WLKk6V0Ju85poq8n82hifVM8Xs98oHozBGJOYQghBCz3Hu77SCNRByInB\nHC6+9GIVEwsaUBypDbZUAlbYEUjiw4yhSrKZhsYolXBTk3g8fBNSBIMeizy7\nJC7U/nRFXRUSPH4HNeWdzYjquKUGWzHbKhRmUkmPM8n3vYSZ3JWUEU8KjllO\nPik2rU1M4STsfq+28oZWX2fb9Ns8KV5ILbuYTx5+MOzt+1ZbB8EisAEzH/lL\nPyiMFn1bY3ol9sEMqoKNb+GpPKT3xEx9LYiB/N7vW4AALWxmz3uadZZH7Z7a\nJpVx\r\n=CGiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTLYD5N5Kt2zEw818YP7jh77q0yr9Tx8A0DuWMnfxeDgIhAKmazkOd9xAI4VW48S387rQzhkoaNSJsyx87m7i2Q0BN"}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.0.3_1593554603967_0.44009690077889974"},"_hasShrinkwrap":false},"0.0.4":{"name":"@aiyan/safeplaces-auth","version":"0.0.4","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/aiyan/safeplaces-auth.git"},"homepage":"https://github.com/aiyan/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage && coveralls < coverage/lcov.info"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"f7f9b0bd94eb071351c454045df7e16e1b4f0b4e","bugs":{"url":"https://github.com/aiyan/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.0.4","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/ooqXbJ2mf8fTfKK2VdPUMFV5GaSQtRB74Odf08uws6bakn5zsmgBxqm2Mzt0R2gKl9XrUnnGajPLw+IS6jm8Q==","shasum":"6dfca059a5e3dbbeb29db424c0b1944e27256f25","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.0.4.tgz","fileCount":15,"unpackedSize":15496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/PABCRA9TVsSAnZWagAAKRkQAJ6S43qPeRGqK12IxtRB\nvQJvl1Ie4X6loRaiVwSqD0PAyCDEeMILSmLsY47PODnOu6Hvj/eHGiBgJb4E\n0zr7lCCBg8j2bawHky2QIaTv1SHkCtXacXeGdJCtKPokW+1VbqwsAwXY/mGT\nMoagAPxGfIIrsyVYClOqI7j+ZCSqYxwvLM0OF8dfUtDZGDZ4nr4Ge+ZCnZhw\n8Bgv9h6FvJWdGg2hB26V97gCVeXdob75Ek2ifQLP9h18XHZy1uMmNZCNmjsI\nwaDGraneBw05OU7DOJufKFOl1WktKrE/L/oE4goksjqcZBXLjxWbIIf9edrP\nES/XuCGWrfDHGgbDJ6FwZcQkX91kGmrzA1dHIcIK2qHZNR3XaAqZ71kpnlAb\nNJccjQEZhTUrlRre5vPJbVz4XT+RcOT7zzpYAKA8tYyRYe8LHpSs7R/IEqbB\nedvU2Usq97pROIbeSzr/j28Hr8LCzq7XhFUngjb41TcjHPMdSZ0rV+B6oRZs\nlURkPg++/Sjqsi46eM4azOIawOMmRAqQ3dvXQMFcex9yed5fTQnsOmWKcf7A\nfhRPaF69TC7COxooIESzIFBkvTGhAqCHrOa1AznEWe7uVvuBjWqmSgh4kgv3\nSkQvNhom1l3s0Rw7btqpIeyx8lXcZhqYwhCetaGKtFlTb2O88T7dP5foVOtX\nyPky\r\n=C59F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbMaVi5leyLbQRLWWCwQ1HrGZa37a4F7cCsfpbS6jStAiEA0tJu2WU28p6a+qNIs0On/xH+uQNWzNmD4S2jBSyneIo="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.0.4_1593634817410_0.2982668669435131"},"_hasShrinkwrap":false},"0.0.5":{"name":"@aiyan/safeplaces-auth","version":"0.0.5","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/aiyan/safeplaces-auth.git"},"homepage":"https://github.com/aiyan/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage && coveralls < coverage/lcov.info"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"2d2cd294bbb0b398ba80dda0e3fcc2850463ba1d","bugs":{"url":"https://github.com/aiyan/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.0.5","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EBAzL9byCt/tLjvmBrQRvyV27roCPatBZrntEVx/vMiERGvBuH3/XYOImjN0/toNolkPKJTkepDflD2+Ao1q0A==","shasum":"ad8a45252eee83f50a25415ac1a21f0baafa9ff3","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.0.5.tgz","fileCount":15,"unpackedSize":15537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/PcdCRA9TVsSAnZWagAAUfUP/1vaKFus/h2BXi9fDvd4\nyWQfzYKg2+eVpVfhJ4b3leb18Y69LUPSGVhlOY9Pv7jAf1n59Y+cqamSjhUW\nNQW7c3VYLgMG1oBDCTVeLgxRiLYrmBxn5zXdpQzvoJoJDhLpRSRyqZxpglyL\nwwDtWQ/EbrR5r4RHdUo2wizYT8qf/X1Ozh0GBTOFFUbRRa7sVxN2kX+a5Ugr\nAvaxb1JfQOJytPd9JoFUzWKCIFuali5IcnYLhu3vzDHTzrfi7vz6lsuE97vE\nb9422PzVTHqqzNkc3Qj6svZEflhcJStfVjLKCcgW9kkdVv5AZFQOhd3jyZOg\nzuxBUiOuwj9PM0wsDF5hmHgG3X34j793fDELBMi6Tm/TRCGErrtrRkpIs9s9\nuwDHRMgzh3rXQkRy6qCWxHnhUY77+D6VcmgV0z6FjDOTxPmUA25WeDu1cN9F\n5b2KLkPAwVcpHoX8lQqgc6JIwk2vd3E5P/ThHbWGZhuNLJytHVES5MzQs6pa\nI3YRnvob1KdAYmL16i57JWt0/WdZTiHlOj2Efxj9Kg5FY+rj2EQRFXaz88PI\nKjayBqCL8DMY3uRWXoQqG14mpQ06ewuU4V5djZ+GeFnTTXyQ3NS1OXt55uHK\n9uFO2VXTkHA1swt5M0ruKbcit7xbije+H96mnoqnwgjKyjVP1ivkvga8ZuIr\nJh0A\r\n=576c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIznyezOA31a9cqad1S3WrKcEdyILNlxhI/Qc4UEeRpgIgY4MfbMG5KNIIm0EX8XOrf3bHfqujGSKm+WSSYJZsCr8="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.0.5_1593636636563_0.18327166855210186"},"_hasShrinkwrap":false},"0.0.6":{"name":"@aiyan/safeplaces-auth","version":"0.0.6","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/aiyan/safeplaces-auth.git"},"homepage":"https://github.com/aiyan/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage && coveralls < coverage/lcov.info"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"32c2f1bbbc067996577f2b01557b7d7fc68260b7","bugs":{"url":"https://github.com/aiyan/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.0.6","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Qh4/5tP5sXGTKfM06/WRYxxgj3Z5fFNyZO37ytqi1LsSq5vlTsCY2jU/v5HdJ24n6/Hjq1G6Tvn7p+0JDZrC2w==","shasum":"b0a3e79e0cd59a773691948a34d7cbf67b47d392","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.0.6.tgz","fileCount":15,"unpackedSize":17613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/hJRCRA9TVsSAnZWagAA2OEP/Rkc2txaPYFqRe7cWASK\nbgpWpivQKw8M6FzjO/ucdn23/CH6cK04lpfq3rSESMjwrBM/pU2xpvEnzTQJ\nqq5o/HUKHxh4xVOg+H8+sEJMElyRkSzk9wEK/MShS7nOeP7M2L8eSndgyF45\nuASuQdznKo9PpHwJ66MEoRTOGxqQIuFb8YVkUhcAm2OaMv0ZUifHiOPOb+VE\n/Wovsm7Nm1oR+LvEKmrObJIobIuo0e4eUh+u98MCMJln4GAG2rMPoC6T+z2c\ncQARKhIRzqqT2BFq9ARgaSd8KATIpyUoeyUcdAUEk5Hzson8BNRLgcaT5Iil\nc4uNGLHrpL1P1QYezRevk2zQN4biXsPX/np1TXXvqGcPGNNhcrj7d36zrc6o\n54OXHScJ8iQGP4vpaDagmf5401YHW37Ly2nrOjkQRkJux7q3sIlgbrPy5snu\n5SQlL4sU2+NuqI9CzBMdcebo4O5GGVl6agSzv7DxlrNE6TVRT7SdNTPYTj57\nzlNJ/VZ5wU0ptArTqvmzhit4LJ503hlO9StI91uqy08pa9/jFQIh9/cUqDgT\n4l5QNrdBZK8PVJDGyCDZH+EnP+kEDg1okavRtS5slKI48MUD11FKQd+Pm1Hh\n+md8kCbsrqi/z2tx5wAtY/Rh83Yey1r2LcDBH+j68kV+KAXkInvBfK+uGqLt\nEUky\r\n=8q4K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBh5MA2yRBk/OL6u+6zHvEyRU+HkZTep6IopjCT8pjn+AiAPRgeLrNJtMu9JeNbspIIGTk2gYoHUC8W5IkN5IwH6kA=="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.0.6_1593709136774_0.09378953336297657"},"_hasShrinkwrap":false},"0.1.8":{"name":"@aiyan/safeplaces-auth","version":"0.1.8","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/Path-Check/safeplaces-auth.git"},"homepage":"https://github.com/Path-Check/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"c4ff187159143bba02c774eba9d1539bd23d8104","bugs":{"url":"https://github.com/Path-Check/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.1.8","_nodeVersion":"12.18.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-VLV6bxuZ6zDYBW1dXpGraCcPdeBLRs07Oy56EImLd9q0kgxvafySMQuGxMlDgFPrWDyoMx55Xdx68O1KrmQsMg==","shasum":"8356378c4d9ce96f7329bc0c13fd4354d562819b","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.1.8.tgz","fileCount":15,"unpackedSize":17918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDKrfCRA9TVsSAnZWagAAFXkP/i/wZl6rZP7Fc50917FT\nOaE+/oLOqo3x6+mC5nF25nv5XSp3FIuYAd5yG5FWmSkFcuA3OCwpy0RoniLh\n38fdP9HoTHmCk95Raoc7FOFLPWkUhsefoua+T/IgHPSAeubtCTi4sBmj2CrV\ndqbpYgvm+wg3IYgU0BWkv27t7WBDuyeEGVW174qH9xyo2gUlmDP1FYlja61W\n1sjvdUBAn54NuzTSTlEjqYBGEnXBDoMWZs8uEMItQIdc2bR5amafAP1yAT6l\nb1DCEJiqSSgE6ZrAOHbNLfhrGfdPNhh2jadCKAmyLQ2fJsaI8opYL9XSX75L\nGsFGoPeNrHkRR6464oyuugDcRIjk/EtXivI35bcL1YW1K3ZqvOcKREBq97UE\nou3Ad8RG8db0nuQNrOdSrMBBIs9RONGntg0hWeDPGbJ+Ea7xzlM6ttud/uzh\nlU8ltACAxaptzFvg3ryADbr86Za25ofn/F7cQz1WhJPtInXhLMD7DaB2x7us\nL2tVyq4HPgkF0tz/Fk0uEr8Sve7vsX3nt0hs0PYGKUAKBo7h4kGI6xJ1JuPy\n7vlhE4Yn1twy38pXzdxlCh1Do1vLfrmZ7Ujz2eyQR+wPMVPcCiyKnXU0fgDY\nmDbPZ/cMmxzLSBVaMn3+/zujh4A2bjUTG6YN8ye4HM7THJ9RvtoPH3tSI5i2\nwvdp\r\n=Z9e0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1hEuTO3jG72EL42ZyUETTsFbd1T/i4HfIYQbsSTZg/AIhAOpSk86kJoh3KNJHKTKYHAR0HcP3hzmmUL3b/W5M6sCu"}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.1.8_1594665695181_0.24439177661485223"},"_hasShrinkwrap":false},"0.1.9":{"name":"@aiyan/safeplaces-auth","version":"0.1.9","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/Path-Check/safeplaces-auth.git"},"homepage":"https://github.com/Path-Check/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"c4ff187159143bba02c774eba9d1539bd23d8104","bugs":{"url":"https://github.com/Path-Check/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.1.9","_nodeVersion":"12.18.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z8pvQQAguE8FrNHFW31gMlf8dy88bOR1iwZbLFKs0MIITiFyy5ezY9tC2wemvvRWDy9O/x+PetnpknN8JsILAw==","shasum":"af14787eae0a1181020af3e30bb80d4d619240af","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.1.9.tgz","fileCount":15,"unpackedSize":18044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDLDJCRA9TVsSAnZWagAAaxgP/jC7Y6YoO+Z6A27bN9qv\ntsEH2eW/zHGGXjVOKb1OsSxDHgulmJBeXC4FiWyxUXs9+P10K1qC3n6xL41+\nVX6UJSPNGt7IZDHXirLtClfy2haTRIadlUa4zSrrnAF7apS/WDeT3o+0Iren\n9bnwY3rJvSCISH8yD/6x6OKkY0cBhzgJEP1QPcAATV40DHDXws+M3LkxAA80\ndP+bcPHtwmyS6WCU2L22kh4o4dyujmpo77rGISQrD3agBPodiewaB+JlwKMd\nEgfR8o+DlU1RjNX0Sp+rPLHJe9YvPghogqdiJ0rnwSQAMZ1U+0PLt9K8XSoZ\nBulNSt1BhsANDsUlb9HiFv/8ewdfX1wUKPx9N232SSQtsCBHWOyxUNNfMMeH\nmzg/aRnzBXJlZWEe8UquiTDGjQ7UY0HkrQOH3/1ZcdZ9eUApWSQIFiCICJJO\nAx2IpHv1CM5c/HGdjOWMvZbBjs2BzeJHyP8wYERdBW0PGtabG0dIXvF1pZBm\n1Tj/sErCwNpm3nhaDSR+9zgk+dFDz7SVHZN7GpH2sPMhd65aMjrBSQag6UH1\nBiIhGJwmib9HZAelHpXwGacckaf2YNr+s53vlqIsY84ZBzobuYG5EdYoEMS6\nRjxQ9CaleTvpGZJBAHwSKauXn0m+diUqjejt9SAJTCepO1nzVTtevc5Gth+4\nMBYi\r\n=iQuV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8r+J7XMQ5yFmMPjWNAcmaKlFdDAzFj3/zot4chg/QsAiEAtqHgMPzPLKR3Zlre/2/IMlYeGXb7G3VolvkE9bEX+zA="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.1.9_1594667208375_0.23088169834967864"},"_hasShrinkwrap":false},"0.1.10":{"name":"@aiyan/safeplaces-auth","version":"0.1.10","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/Path-Check/safeplaces-auth.git"},"homepage":"https://github.com/Path-Check/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"c4ff187159143bba02c774eba9d1539bd23d8104","bugs":{"url":"https://github.com/Path-Check/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.1.10","_nodeVersion":"12.18.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2heURc77ULHBM7oGJZ577At5RlUOiV7pbIK6oLfhawmIN60W0qIo9GIiTCmGtWIa9rvCkGLFltmvwpSNIDzXiQ==","shasum":"e05f1b0a7734ea2123c7217c7ca0323b91b5bcc4","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.1.10.tgz","fileCount":15,"unpackedSize":18072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDLFfCRA9TVsSAnZWagAAdPgP/1nLp/NaYeqXnlNDRVVl\nyZivR0G06WzErapA/S5z5IRnUlIogt/uOfxuUXQTQJ0J2vM+e6Q9dsLj+ye+\n0WWvVz40IKEkPaF9B53mQZSJnlu1luc3MTGzM4AX3MTMDASh9Pb0CmzCbAC7\nVHpJmMvVNnqdqxc5hBrYkjblNpsXXTS7xnw7+4fOi7OH+WtRX2ezTp69UBiH\nuOwgQhIVAkbOxggllkVmXUyz/1VnG3og0AqnoklAwWXkUMIA72JC9gerRC+t\n2GAke7EmkclWl53NLhI4m/Lysb6+wPAlhQZCECJihRFKdHM5NasSy9K9x9MG\nI5Z44z2qWQPKRCdxjJ18bUsN2b512kXV9bcA/65MY5trPMhcEo5A3gckF8g8\njHvxaGnvyfskDsua4iUo4HydCdQJaS6h+BbgCAOcqzGXNf2Hql1/hYVEFkpf\ngfnmP0ufmTHsHUDJyaxYlVuKIUXKX5otCx2nlWgzYOXOau4n96o99LDzrMMN\nUPmJLwwT3Zt8Lj2oAbXE65UY8hdovw0TYZEsb5qHTLIfkxCU8KQwpiXCWnZ0\ntkkya/RSs7tDeHUe7doYie3Cr7kjcGLEdtSo4hBNzA3ozxrehOiDqmjRzGrJ\n//oFS1/mCRI5RBLBx4ef96lO48Zbvo5GgZ6UBStybUR+tPZlgjMEbPwSht+J\nVqDQ\r\n=AUX5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxtS9QwnNCBKOly+sKi2CYusy0MSvhajJV2dNXM1qm0AiEA/prL3HUQHrprTYOLWbz4hLzCysum3kOdx2RPy+B2ai0="}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.1.10_1594667359423_0.5139900160584006"},"_hasShrinkwrap":false},"0.1.11":{"name":"@aiyan/safeplaces-auth","version":"0.1.11","description":"The modular authentication service for the SafePlaces backend.","main":"src/index.js","license":"MIT","author":{"name":"Aiyan Jiang"},"keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/Path-Check/safeplaces-auth.git"},"homepage":"https://github.com/Path-Check/safeplaces-auth#readme","scripts":{"lint":"eslint","format":"prettier --write \"**/*.{js,json}\"","test":"jest","coverage":"jest --coverage"},"dependencies":{"jsonwebtoken":"^8.5.1","jwks-rsa":"^1.8.1","node-fetch":"^2.6.0"},"devDependencies":{"coveralls":"^3.1.0","eslint":"^7.3.1","eslint-plugin-jest":"^23.17.1","jest":"^26.1.0","prettier":"^2.0.5"},"gitHead":"4f418b800b7624f47d2a82619874632293a5895d","bugs":{"url":"https://github.com/Path-Check/safeplaces-auth/issues"},"_id":"@aiyan/safeplaces-auth@0.1.11","_nodeVersion":"12.18.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-08ORJqbHt9mU25aN+SeQD5x+Eo0T/OZl2e3tYhbYWFgymOCFYQfgPfU8sAOaqEAH+DhIUzQ/JC5NiMpSbKy5KQ==","shasum":"95aa2726ecf6d1f96071fd9309c1f0f3ca1589c4","tarball":"https://registry.npmjs.org/@aiyan/safeplaces-auth/-/safeplaces-auth-0.1.11.tgz","fileCount":15,"unpackedSize":18070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDLq+CRA9TVsSAnZWagAA8RUP/0Zm/kpawZ8/Q9N6TaRC\nnDYP9Iy4lTCOdEwW90XP1G/RS5p/wRzuWXXY/kblDlOGl4DstDiEk8HYQFlp\n/vvZuzyX0c5x8HdmjY31MT3pfC0pIGPmuWa0/VVyS0+6jKhSYj9+KxMmSCMs\nYRrsG/HIrhD0lv7Sd6FnefQdhTgVkHBbgLmAKFbuEVESS7CMLsBVajeaKR9s\nbKVIHibQ0kmxHU+DtwLmGSyUohyvKW0Pua+2UBV9FAbhmQdYf0WLJZJlGUUT\nRGzb2LfCtvhaBQiqjeyi6lrx4Gnf2QEuHJfeQ4twpyQQgvTK8QIdvIDeS5rU\n1qqrBbXvABxsX/9bj9iUcEbKJA5E7Jq+2HBsaZ1BsccmmSaaO10s15LRgcb2\n8sxHNsrLtgHspGCufYhj770cD0hzM1xkiDGK3A+sfmIIF9BkCYD2QbJf6W9Q\nt214jAuvXmMWoSBjg32w95Z3tTD35ih7dz/dmX3U78SwmmVoZdukrt1ANWct\nXYcmhXKYYC3Ad/7Lhx8Z6BxEIJYE6ygbAqdyM+PUGayiw1jqbv+pucFCI8Gk\nrXVVEgBLOlMTmzoGCi5wmMO7WD81sciGGHP6YVdtVfAfIwvVb7+Ur6iqSmiy\nFdzBDS2z9WjpLZ+BCdt3J7eGoMcacBFsA3bc3Lwnq+m+UAdFcwPRwleerahk\n6Sb9\r\n=gvSz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcJh4fN4K/7hGs9Nz2/Ji4n6a8ZndOXtE3i1dwQjI0CgIhALZE5mFjHRXshsZ2BwsuKbrPpYQeF9rZMXR6WSlQdRP0"}]},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"_npmUser":{"name":"aiyan","email":"mr.aiyanj@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safeplaces-auth_0.1.11_1594669757892_0.823720954095827"},"_hasShrinkwrap":false}},"maintainers":[{"name":"aiyan","email":"mr.aiyanj@gmail.com"}],"description":"The modular authentication service for the SafePlaces backend.","author":{"name":"Aiyan Jiang"},"license":"MIT","readme":"# SafePlaces Authentication Service\n\n[![Build Status](https://github.com/Path-Check/safeplaces-auth/workflows/Node.js%20CI/badge.svg)](https://github.com/Path-Check/safeplaces-auth/actions?query=workflow%3A%22Node.js+CI%22)\n[![Coverage Status](https://coveralls.io/repos/github/Path-Check/safeplaces-auth/badge.svg?branch=master)](https://coveralls.io/github/Path-Check/safeplaces-auth?branch=master)\n\nThe modular authentication service for the SafePlaces backend.\n\n```shell script\n# Install using NPM\nnpm install @pathcheck/safeplaces-auth\n\n# Install using Yarn\nyarn add @pathcheck/safeplaces-auth\n```\n\n# Table of Contents\n* [Examples](#examples)\n  * [Securing API endpoints](#securing-api-endpoints)\n  * [Handling login requests](#handling-login-requests)\n  * [Handling logout requests](#handling-logout-requests)\n* [Strategies](#strategies)\n  * [Auth0](#auth0)\n  * [Symmetric JWT](#symmetric-jwt)\n  * [Dynamic strategy selection](#dynamic-strategy-selection)\n* [Debugging](#debugging)\n\n# Examples\n\n## Securing API endpoints\n\nThe authentication service can be instantiated and attached to an\nexisting Express application. The point or order at which you attach\nthe service relative to other middleware affects the point at which\nit is invoked.\n\n```javascript\nconst auth = require('@pathcheck/safeplaces-auth');\n\n// Instantiate a public key retrieval client.\nconst pkClient = new auth.JWKSClient(\n  // Pass the URL for the JWKS.\n  `${process.env.AUTH0_BASE_URL}/.well-known/jwks.json`,\n);\n\n// Instantiate a request verification strategy.\nconst auth0Strategy = new auth.strategies.Auth0({\n  jwksClient: pkClient,\n  // The API audience is checked against the user's access token.\n  apiAudience: process.env.AUTH0_API_AUDIENCE,\n});\n\n// Instantiate a strategy enforcer.\nconst enforcer = new auth.Enforcer({\n  strategy: auth0Strategy,\n  // Pass in an asynchronous database lookup function\n  // that takes the user id as the only argument.\n  userGetter: id => User.findOne(id),\n});\n\n// `app` is your Express application.\n// A middleware is attached to the app, and it intercepts every\n// request for verification. The argument to `enforcer.secure`\n// affects which routes are secured.\nenforcer.secure(app);\n```\n\nFor greater flexibility, you access the built-in `enforcer.handleRequest(req, res)`\nfunction to selectively handle requests under your own logic. Note that `enforcer`\nwill continue to end the request with `403 Forbidden` if the request is unauthorized.\n\n```javascript\napp.use((req, res, next) => {\n  if (req.headers['X-Bypass-Login']) {\n    return next();\n  } else {\n    return enforcer\n      // Enforcer ends the request with a `403 Forbidden` if it is unauthorized,\n      // meaning `next` will not be called unless the request is authorized.\n      .handleRequest(req, res)\n      .then(() => next())\n      .catch(err => next(err));\n  }\n});\n```\n\nFor the most flexibility, you can use `enforcer.processRequest(req)` to only validate a request,\nallowing you to decide how to handle the validation result yourself, whether that be ending\nthe request or ignoring the error.\n\n```javascript\napp.use((req, res, next) => {\n  enforcer\n    .processRequest(req)\n    // `.then` is called only if `processRequest` has\n    // determined the request to be authorized.\n    .then(() => next())\n    // Otherwise, an error describing the validation error\n    // will be thrown, and you can decide what to do with it.\n    .catch(err => res.status(403).send('Forbidden'));\n});\n```\n\n## Handling login requests\n\n```javascript\n// Instantiate a login handler.\nconst loginHandler = new auth.handlers.Login({\n  auth0: {\n    baseUrl: process.env.AUTH0_BASE_URL,\n    apiAudience: process.env.AUTH0_API_AUDIENCE,\n    clientId: process.env.AUTH0_CLIENT_ID,\n    clientSecret: process.env.AUTH0_CLIENT_SECRET,\n    realm: process.env.AUTH0_REALM,\n  },\n  cookie: {\n    // Enable/disable cookie attributes depending on environment.\n    secure: process.env.NODE_ENV !== 'development',\n    sameSite: process.env.BYPASS_SAME_SITE !== 'true',\n  },\n});\n\n// Handle all requests to the login endpoint.\n// Since we are passing around the `handle` function, make sure\n// to bind the handle function to its object.\napp.post('/auth/login', loginHandler.handle.bind(loginHandler));\n```\n\n## Handling logout requests\n\n```javascript\n// Instantiate a logout handler.\nconst logoutHandler = new auth.handlers.Logout({\n  redirect: 'https://example.com/logout-success/',\n  cookie: {\n    // Enable/disable cookie attributes depending on environment.\n    secure: process.env.NODE_ENV !== 'development',\n    sameSite: process.env.BYPASS_SAME_SITE !== 'true',\n  },\n});\n\n// Handle all requests to the logout endpoint.\n// Since we are passing around the `handle` function, make sure\n// to bind the handle function to its object.\napp.get('/auth/logout', logoutHandler.handle.bind(logoutHandler));\n```\n\n# Strategies\n\n**Supported strategies:**\n- Auth0 asymmetric JWT\n- Symmetric JWT\n\n## Auth0\n\nValidate the JSON Web Token by checking the signature with\nthe retrieved public key, and validate the API audience.\n\n```javascript\nconst auth = require('@pathcheck/safeplaces-auth');\n\nconst pkClient = new auth.JWKSClient(\n  `${process.env.AUTH0_BASE_URL}/.well-known/jwks.json`,\n);\nconst auth0Strategy = new auth.strategies.Auth0({\n  jwksClient: pkClient,\n  apiAudience: process.env.AUTH0_API_AUDIENCE,\n});\n```\n\n## Symmetric JWT\n\nValidate the JSON Web Token by checking the signature with\na fixed private key.\n\n```javascript\nconst auth = require('@pathcheck/safeplaces-auth');\n\nconst symJWTStrategy = new auth.strategies.SymJWT({\n  algorithm: 'HS256',\n  privateKey: process.env.JWT_SECRET,\n});\n```\n\n## Dynamic strategy selection\n\nYou can also pass a function into the strategy parameter\nto dynamically select the strategy based on the request\nor some other variables.\n\nThe function should accept the request as the only argument\nand return the desired strategy or a promise resolving the\ndesired strategy.\n\n```javascript\nconst enforcer = new auth.Enforcer({\n  strategy: req => {\n    console.log(req);\n    // Check something in the request.\n    // ...\n    // Example conditional:\n    if (process.env.NODE_ENV === 'development') {\n      return symJWTStrategy;\n    } else {\n      return auth0Strategy;\n    }\n  },\n});\n```\n\n# Debugging\n\nTo debug why the `enforcer` is rejecting a request, set the\n`AUTH_LOGGING` environment variable to `verbose`, and the request\nvalidation error will be logged every time.\n","readmeFilename":"README.md","homepage":"https://github.com/Path-Check/safeplaces-auth#readme","keywords":["safeplaces","auth","service"],"repository":{"type":"git","url":"git+https://github.com/Path-Check/safeplaces-auth.git"},"bugs":{"url":"https://github.com/Path-Check/safeplaces-auth/issues"}}