{"_id":"@sl-nx/superlogin-next","_rev":"28-5d4bc064a40993edd64f221df455c6c8","name":"@sl-nx/superlogin-next","dist-tags":{"latest":"0.16.1"},"versions":{"0.10.5":{"name":"@sl-nx/superlogin-next","version":"0.10.5","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"npm run build"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","@sensu/couch-pwd":"^1.0.1","@sl-nx/sofa-model":"^1.0.1","bluebird":"^3.7.2","deep-equal":"^1.0.1","deepmerge":"^4.2.2","ejs":"^3.0.1","express":"^4.17.1","fs-extra":"^8.1.0","nano":"^8.2.2","nodemailer":"^6.4.3","nodemailer-stub-transport":"^1.1.0","object-keys-map":"^1.0.2","object-map":"0.0.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","superagent":"^5.2.2","urlsafe-base64":"1.0.0","uuid":"^7.0.1"},"devDependencies":{"@babel/core":"^7.9.0","@babel/plugin-proposal-class-properties":"^7.8.3","@types/ejs":"^3.0.2","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.28.0","@typescript-eslint/parser":"^2.28.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.1","gulp":"^4.0.2","gulp-babel":"^8.0.0","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.3","mocha":"^7.1.0","morgan":"^1.9.1","pouchdb":"^7.2.1","pouchdb-security-helper":"^2.1.2","prettier":"^2.0.1","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.0","sinon-chai":"^3.5.0","ts-node":"^8.8.2","typescript":"^3.8.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"2ce5aa4b28d66ebfb9d58a96dbd25d3be84dc61f","_id":"@sl-nx/superlogin-next@0.10.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kcw2+arVZiwZ9k3u3MTV+uzhfdbYXK3xq2LzpXYkg1uDfJDKsEFNqT0xsFtOd9pMIRzD5ua7D7+BBSQ14nXCaw==","shasum":"beb4d006fe743ba887181d19e02329325bd07656","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.10.5.tgz","fileCount":49,"unpackedSize":211895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqneQCRA9TVsSAnZWagAAUh4P/iXCytQiof6v/4kXt6/2\nxH8mSEuiAqM9vNc+oJBsrwecyrwD9U/0OEUrDbAnWJ9yAb9+RKOuZgkH7NGf\nFiCHqo1pfNhRPK75NHnbpx6Ru9nWd//zrCuCqHG8suQI/E5ngYNcXMg2aR5v\nlfHlpSZkA/JFjzXqaWr86p+BecBnuyZYV/K25Al7IaEx9PFf5YM8bm4g+PDY\nxx0NW5+jwHS8IQYu/1RgkXg8wiG75aXPhyNl0IPsDXlubG5bwavN3C8quGwh\n77RW/Gq2KNWu9QA2MH0iRBYmaC2uCeXZLBAeQ3ObZZV7+PM0vHBYLVmm1Bf7\n7qQ1Kn4YR17zjlwuwQxahCK34OvUUXz5xyjxm8YneHOklLKuFF04uFo4nCRr\nDraUqM2+T7BXS2hYhgq/U735ZSXMSvLAjg6EDhRESDVse3W6EPju5M+uJ8wW\nkdEV5MAI6QRx2h/2sXtl89JP5XT4oD6mZezLFdcYc+Hy9OcLu2C7Vq1+v/Yq\nyW/tbvn8NY8Wsw8HcKx7iCPYWfQfQZo3F0h5r/GJac/5cletqnwwa7YcAOzK\n4Exzoapk3v/194Oo0odLUBhmwxYSjdxGilwoedyNpJECElG2XoaLo10dsotn\nh0S4O363qZJSVZXQw/mcvFVL3cXxAJ5Bm0QxhCSoo5qXj9ybonZryopbqUb8\neQFE\r\n=c+vK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqJlhdXNwxdvgKJuNB7oLzMsK/5KyjFIW2QZg4rz9jiQIgCwS/8u95HyakkJNPFdk4A2lLwvnoRaendL8Xy37r6mE="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.10.5_1588230031915_0.19212493796378638"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.11.0":{"name":"@sl-nx/superlogin-next","version":"0.11.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deep-equal":"^2.0.3","deepmerge":"^4.2.2","ejs":"^3.1.2","express":"^4.17.1","fs-extra":"^9.0.0","nano":"^8.2.2","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","object-keys-map":"^1.0.2","object-map":"^1.0.2","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.0.0"},"devDependencies":{"@types/ejs":"^3.0.3","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^6.8.0","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.1.2","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.2.2","ts-node":"^8.9.1","typescript":"^3.8.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"1e045c2b39c1d67a71da2c49563f1fd26bc36c32","_id":"@sl-nx/superlogin-next@0.11.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-g8vkYwefCTbUUkkmDazBqIhw+lDoxI5J9yK4b2R/cS8BlHYHs5aaa4y+Auekihyg1TpmXfgXNbh3M7wngjLKhQ==","shasum":"17a96c04a0c9a3301b2bf697bd6320db032e7c89","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.11.0.tgz","fileCount":49,"unpackedSize":205340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerVH/CRA9TVsSAnZWagAACs4QAIAQ9zWkzpKSvCX3Xx4D\nopAw6NqcnsTTNJbnKF8CbKGpOaC48m5p/PgMr6UKiwkUt6XoaoI/xM2wXYiN\nxYLkSp3nOdcAYTTYwPZN7QAvji1U2d8gffxIvcMeZLIhxIa8JrC6sIPE2/hB\nfE8MvVPWFFw0VQLRGfAxlxCQf1b5dZyD5LQmCA69ywtkIVeKwiVkIbDfBw1Y\n4mISWuaMSvVHF5LQXUSDxlNJLYWpFMRGjpRyvEX7us2TLv8CeiKDI58AmSyB\nY5x0lp5PCe0XJ0MIdAu6sYj9aQRdWVMpNW/TtoJnqmOJPd0s5CMIeVx8C7Am\nGbsFk1xxa4/ZGvP1c9xIFHZiNaq1/DVZuYgO1Hqo5TAldA6xDsd3bmuG726h\nxFF9y9TwucxZzi3xTlIiOp5N5hLzf1GDEMY/JFtnScRVGf0qbz4WfJaD0/Z7\nYF6O3PNVI8clXFZgPSQP7YwGbkz8kNJkIhML2EyQ68zdHZNpwbuvwE694fqG\nWgndRF/KqhZf6h/ajuAHiZ0BSnAsN78mV+FbENe6Haj+Ew5OUAXqXTZFD93b\n5BoKVfoMYHM0ziaeLa2XYUrMm1DYb5QXK6Rkrdn46rvlkxdbJevydpomryuh\nyUKoInPrkgR+Djje8/C/6HpMAYUgQtcpjHO4NjVW33ro65eyak1CxzKg6qHU\nMjCa\r\n=VVHW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD88sm5XGcjtusm7kCL0wUOobrtVVc4JP2lhcPq3wm54AIgejSJenj7SbJi+kuX98yTikMSBDBYYQD7qIZtWbO/GtM="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.11.0_1588417022563_0.38689501359250955"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.12.0":{"name":"@sl-nx/superlogin-next","version":"0.12.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deep-equal":"^2.0.3","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nano":"^8.2.2","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.1.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.2.2","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"71f7e5593035af028df4de520a8315ed8611fec7","_id":"@sl-nx/superlogin-next@0.12.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-pAg2tjyVYryz0r19GYYbbOce+OsaN5mFJ5m4UYnn7fXRPli0ZVBU0GOr/a2gjcdan3GY81+Wkp7r9ljSmUMuFw==","shasum":"d4844296bb89064c4d78aa8bc7a75b433a070f34","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.12.0.tgz","fileCount":49,"unpackedSize":210183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezNjYCRA9TVsSAnZWagAAMtoP/jo2dQtMCxy5YstJn4Rg\nLRF1RhrVSfZ6B12bbdWlDqnmz1xpYZEumWBE7LQE1s0Y70+zMW2QWOAaJcmS\nGyoX7DL2imB9ZQas6u/cQ6PvowCGGAhsuO5yZZUVHhfyKEnY3jo7lcRcLpcX\nPxDbIMnSobQd8LZrqRA4EbK7QbW47DmjJTHO/pL8ZUh4AMSyKBo33JkkBQ3S\nT3Zp/W/ThWK3sPXUAty4zYsGH3iTkLg3uOdBWZVccodTCgMjqlEJib3V7ajK\nTEG0PCEIJJIfXixJ1AHeoWEvyqVxYaXtW9gYZH7L5FxXG8LmJlvMbp2V/QZi\nqn/O0cUjzmPhmRmx/jHxctlGPeE7m3MfvPfF37VlilfQMo1sFsT/G6UL6vcH\nLoIU6XLfAranSdm0Cr7Wl+62z0CZRNWZppQTFcG+rNrb8h3Xab6afKivis4C\n1Uzj8OCyCTvCrjgMKfDbtlHTT7M8/5FV5D+qCweD1rxDgZ3xdEHym00AWhdo\n8e8YP04vUbpQ9YiDs11B9/fJp7CHWlxhPgzRZ5sOGVq716pN4aj1NVGLjUcC\n9058kve682X95Lh2VGcfH+TtnGPmaZCM108RyWDtbXOePmwuSG61vwQDeGyI\nZsTOAg/rnrv0UmGvabCdcjFcPS9vBDEEInpEVt3e7EmMAao4SY1h4dxBpN/O\nH6cR\r\n=DkOT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbXtQHitsuGCNjHMxKTbyHXaxigIZiV14ornUoOMPIHAiEAy4JhFZYtfSonz50ccaWctq7Cw4sXGvum8eNGwIesbpU="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.12.0_1590483159979_0.3220393044059011"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.12.1":{"name":"@sl-nx/superlogin-next","version":"0.12.1","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nano":"^8.2.2","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"506bfb561fcdd597d81cce4705d69e19a991b565","_id":"@sl-nx/superlogin-next@0.12.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-v1n5CJYgKL8LxEPWU787nL18gVYHwsCUIZ1q45bS2Dw121XzcQ+WbGHA3NQiYI0eI1rMACWYIspCRfoaC7u02w==","shasum":"db002d63edb1d836012161cebc4d90d27f58a87a","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.12.1.tgz","fileCount":49,"unpackedSize":210670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+eZaCRA9TVsSAnZWagAAB1sP/jhcm7rHP8lleEIq11E1\ngjKIHLO1C+qzfmI6t425Yhp+pZrEQC8XhuLSDUC08lG6AvtuM9t863Knht9m\nd1+1w3Pkv8T4MVRcAWM/Ot41GOourYyTvP6Jv9q/8oMwZ9kBCN8/8ZeOEB5E\nXGbn4GYx2/ygJP139xtrXbfXQS1Oabn3YS3sz2TRmOSs5lM2kuGImdXH0fmI\n2FC/GnZra0Yl0d7CvINRmNv0o+zjiEVo311472K/Ug3VM2JjFrYNIH2BmsiK\nJSNfnhFXAuP0+lZqeuNWH/LVwimeS2MhaeJKzDPQMvqAABfkedn/GWM//Szy\n++pElfR+Fu9ooDOjQRcFOMftA16JkbqdnIBcTvF/2x0XmjP1qbSYbJ8zyon8\nd2KNbsGUTiIwC6LpsV3A4UX3foB7yZiPh5DfqIIASEIeR7voGLOOFAvgnLHG\nwlI7BFO0Zbn1YfknYsS4UMlMdaGRv9NR+4lVwRHRJ4qqnGPc51Wa1Nt8GiZr\nUhy3ZUoAksOcWwutvdfWPgnUb299M5AoRmLW/TgBx0/UPhMuU1G6DRadEj0Y\nlhiFqsMaS+VbE+Yg2s1zOooEawEAo84KyPWgEZ3UCrNGKWUMq9sf6N6DT4M8\n+rMdfZKZor2ixU91YBUdfmbSkvoiR9e+HwKzyDaxUZHVcNyGRYvF5hE/4zJT\nS6vG\r\n=OAcr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1gLDVuoNYPYqFV48TCKCLqqpzlNlD4Xus9BCd9K4IlwIgGhzBhQoBKtOm4xgFcRq15wuveTi/Jm+UJhdesdB9Tvo="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.12.1_1593435738215_0.18725291212035722"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.12.2":{"name":"@sl-nx/superlogin-next","version":"0.12.2","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nano":"^8.2.2","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"d385be48d7fb71188c3dae08af68ff776a6fa1ea","_id":"@sl-nx/superlogin-next@0.12.2","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ZsADgITKscj7kfleA2hvHlNUtA+3/PKEV5CWneU4/iLZnNqrISM9fqQ3gPdPbQgQCL1C4moOMCcYhQ/fFL9DlA==","shasum":"993bb41a39612df3562ff5eb961651ba8fc94fa2","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.12.2.tgz","fileCount":49,"unpackedSize":210943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/f7BCRA9TVsSAnZWagAAH68P/1GGRQxsbx5bfVzIFvQY\nc7vUeOfCjqDwyMlXWmIg/tsFLPZ+x6NnS2XJHX12OMJ/eyyGgyYuqtUGefSP\nHF5t+33UYynhc4t/hDW9CGCYsZoHd173Q0IrNyGW5nwZyPgEsWiFMQrXuma1\nmnZU9nDuXHsxR5cxV6CBYb5nnw8q3Ys/35iRjSQ3gm310TewDz/+lHqsDFoX\nbSbGCLpPh3WuvLVUPzC9yDVZ9REXRUN1dytpDYCD+6anzFsAu3uUTSnEl26d\nJHxYEQyqLKXq8aO6V0J0ARxKr/+5/n2iY5WG5HOSSyIwdDJNiSvr9tPfXBjM\nP2fREUeaDSaEu2/So2ncYn5oBiWXfmH0gXXl+QpkyF4J2Gkn5xluk7Efsqx7\nlBrs5em45OZ9XrBVo7POTMwV7/iJsSKro4iEiAvZ1hgXA4jcYnrjMua56txj\niVkOAFo2FNooTHM7eDVCXurrJvUzIgCHmMJoS62DJN0l2z7RQqqrY7afwW7s\nKqhCDe26BsIhMQCDH6vcNyILCE095prA+/BEf03fbp3ClNXloHwE7F5njk8u\nsotPYT0MShX/DzPGV/RKTKvraTKmTnoaLJqafF9m8V0pBUKO7suQFQNX1N37\nhVLbkmae37B7UkJGhdxIzGLDgPpMt/xvJ/uzufI0mBwDDaWGnAzo1MA6VH2M\nA9wW\r\n=KedO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD02oRTlAQ4w8NhSIWpwFVqwmy7zZqeQ42PkhHXx5vTKwIgXFrDN3T0LvLR1V57RCw8c3HkOcE+ykiQG8JghlMpyZ8="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.12.2_1593704128306_0.30481181638421484"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.12.3":{"name":"@sl-nx/superlogin-next","version":"0.12.3","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nano":"^8.2.2","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"4165fbccf341daf9ae16357fb973efa737f1309e","_id":"@sl-nx/superlogin-next@0.12.3","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9wy8tpDy0DqAnfp8lmqWogRoApxFb5bMtlM1HB/PSO8EIQ/gIhLW37Wb1ijwVuEYCmul8b8FBBCj98/91c3csg==","shasum":"0d00bb88ca5e5a0a11cbcb7e18ad5103743415ea","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.12.3.tgz","fileCount":49,"unpackedSize":211622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBEy/CRA9TVsSAnZWagAAbk0QAJanvZYHOCQzeQcPo4ja\nfdrkkCCLn2x1WLusxwV0t9QXp5A0gK14f6RemmgjEBfXrk1tAe+DepVdFbFj\np33Egu750BwTpau0NmqdUOmhvSdl4Hz8/LgJ1TSFClsvqQED+m5AbU5dMlki\n53cTIQOPuVW9TawOAuVuQabipeNsDQZ02UstXHHmYm5G79L6cJWn29gehzPD\nAbICabGulACWwgUOBDaf7qg81WQFV4x7EVS/Rl072oYDbDAhE2b1kTcfUN9e\nQU4b8rHDLEL/HW2DPCnxssyVWvKW+RkkdejrQTQuYNQL93KmdIa4HfWTIsLx\nvJxxf1fHOQDo0Vrh3Gpk8KXx79cZoSygOVtfvQmbbtZOtqngYacVHbASmrGa\nKMez7/5wJqW1J0HwHw6AwzG6wRAlFf5nnbdZ9DMFFUaEn8gTgf1h5O/jHmqY\nexU9aQV11hy5E76+2nE7SKo72kcV/wXwbndAAKoCV7OAlJ/RVReSK7DBrSpk\nlqHzxXXOsToLOlJOzf7OIkJBkC2O8nCRm24Q8RAZEGYYB3YY62EKHSRyQRRP\nUbReQXhDPiJe0HN/DhMniFDU6mVnzLSuzVmypV3lqFDymthgUVuhnoGacLTf\nMrUlA+L3Q8VQ+HO7s8+Pg8QGu4GSRc2rmQHTcbQUPkQnYijzGxa5NO8+aCZT\nXj8r\r\n=Rdvj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHU5q30QJaKrkHKlECVDcTjhETCviyXGV9zHJ1IQKVhAiB0LTkufFYnmGofuAJc60p1Sw8W+hLDWjarUyOVFm9/kQ=="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.12.3_1594117310778_0.8274648931712734"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.13.0":{"name":"@sl-nx/superlogin-next","version":"0.13.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.2.4","@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"45a93197c564a85530543e5e850aa33b256a561e","_id":"@sl-nx/superlogin-next@0.13.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-C5QUv24hE0nOagHSXNmefZMU+Km6uQ4RWkw71o3c2pJGCwxxWJWz/JUXIuhKtS7OJsDzDJDwD3DPJ9J4EtBYrA==","shasum":"00bd7b7872a5ce79d00b7937a57402d6099546d0","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.13.0.tgz","fileCount":49,"unpackedSize":216675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIXWfCRA9TVsSAnZWagAAiAAP/3RFG9dVGDzQR5X4V9P8\nvEGLpM/a7SZWPX+7y8NGIkyxSAjLkICUJx+eLymG397ZgVxLXNxo1QZeYcsD\nJ1ryoRsvDOACmz532pfj6IhfqnzqenZ/4L3NVluUxg+Ksp+FomSYmmaGUyF3\nchBaI2TMwZEMGTXwPxun9tuQfvlpK/zmeys4XF4i3zgSHBKrlTkJrDdlQoNY\nNPUywnj6t71hfK5TASAMGtl7iKwSu1x31FWk9AMZ2SRIfxiyfizyZ4nsxUtm\nTn57J+Kqzt0oQc5DQELY1ug/+G6cixcoBRn0lFdxO1BQF3ngj6HLJo1/z+eh\no4k3U7ix93idUfN+OlsqJtt5LsFcCBW/uRlw03D+63c/WnnW4wmcEAXmT8M/\nmzNtsYedsO1KFD9/Aq9532TPv2nnkpKHoQWMAhv2dQZ1+YwmrzH3GhjBwy+/\nBjPwLD83j24VUVbtlLnyRFevHjVnIhTWHhadM9ygViZ8oeVeJzUZhKu5sDxq\njds0eO9fLRheyBUatSii612triuJllCpEszmYH0yOEN2TayMeNSDYQYDAEah\nZ1c0PksF8pujSEAx62nTWJRZxVmQ8+AdQ7y3zU7jNQPJCn+30VGXihFosP9s\nLQJsk8IQJ3O+jrF/H7I9rZWe2V6qrpENSphJrRt3V/MZS7pflW+qh4vSMUW6\ngE+P\r\n=l+NU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGivQw5wTHf/erLyaxVOLSi8ckzA91HXMMcyslJCqh3CAiEAyl1XeX7OmVflU6PQ6fHlabOKnjj31GgCPtl07pIUHUY="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.13.0_1596028319260_0.1429577571315892"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.13.1":{"name":"@sl-nx/superlogin-next","version":"0.13.1","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.2.4","@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"0a2b891d70e86e7fed9bb04f89a5b4432a0757ae","_id":"@sl-nx/superlogin-next@0.13.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lf3tZdub+JlCFAixNSlXIVxVR60XuSYMUFege6GCTIBV6O0kgl86ZhanRgWvj09UhzxNChc+1CgLbwVH5kxgHw==","shasum":"9ed56f4d529971028e85ad98b34df8015b9d639a","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.13.1.tgz","fileCount":49,"unpackedSize":216683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfInMHCRA9TVsSAnZWagAASCsP/RB4aU8tzrE2/RECpc7k\nk3NVjbAprvNYltGTZ24PC5pZBOevNweCnfd7pjP1/A2TYjtFsnyQ8ltcmroP\numVHSgLvo8iDCxDvtix0BGiKcMdeSyDzilXviDJTziWDJ96wyJcjgyDP9Nb1\nIwuVzTd3AOihzSULAttrvdm0xoR1ego+L6Fx4zfyinPv6vPFaYB1P9FEKzNM\nzYzgGaTjkyHcSJ/snR3sbxTTe2V0Ltd/7BmkaxTrh9wL7bPsXiGm+bYxzV2L\nbyeSNUpsaAhQOx5MZJdJwkiNB0NRaSKjfbz0HgrUzEa5/yCrF143LnKr+AT9\nFqGBStpSffqJaSTddDuhh7NYBpHCxZMyOU29rPRQD504xgtVwyArwNA0DY0h\nFZZXiNq3DQ8DDWd6IoMJunbByuTPyUJEeirScrs2vNmtbDmREMKcQtlo+Ng6\n7cJDp/IfF2JzMa+XIL9z1O+rXlttuvJ8T2LfgtUDirvFLUGMlybuukfJaCGc\niwyTO443dX62zx9nAmz7gBYq9cw+hiMdR7aX4XYnBB5cjuSTFMo/KgEJKbx4\nYq4umeJMEo9EjDtkeP18+Qb3dEOJZretxVGKsnISayngXFfTfsf5VOTg8TX3\ngDL5oDm4HI/0uOfOxOxarHuNVdl/ileSXo5XiBmOmgEcmdHtHGaP7U+hfphL\nvUv5\r\n=hKUi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrlJm8loll7pL+K405a835tfADZzyLMH24YJ7ExdpX0AiEA/SIf81NPzGaP6ZgpVx0Z88pIxw2RL+TjZ5MWL3QhlYs="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.13.1_1596093191278_0.3805566490476999"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.13.2":{"name":"@sl-nx/superlogin-next","version":"0.13.2","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.2.4","@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.6","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nodemailer":"^6.4.6","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"98816e76e53cddfbeb5be538144b252b7ac1fe4d","_id":"@sl-nx/superlogin-next@0.13.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u3obV41tWdskZ/5ugaHMGjhsJNIa6skfp8jR8gRZQETHAWRmoFC9BIFDeepwXRTuvxvLRD+e6Qh1crrfyEn3yA==","shasum":"289d3cf2a62731250ec074049104a5361f9298c0","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.13.2.tgz","fileCount":49,"unpackedSize":216683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI9osCRA9TVsSAnZWagAAPRgP+weaR5mPBa6+t8ZPGiUD\ntxuf218tvvfgktFPDCnZG5kYrsOMMAifZX6YfuJup7KYhOPzEmmhGwZtSJOT\nyl9wvenomZXRGOhFZZu0FxjsyBUaziejoXVo0V7BPlJg2Xy2ar9HeHlq45xh\n5L4aGkT3yjuPwwJlF8UNfknpeYdHnCjB3jwIhl2a1P3Y4a2kM11hUj+tQf6X\nNs5d59PdpcW/LmCQlpb7wRvG6bxmsJImjxulwqVwSmA/SEooHQKBPZu2Mw5C\nM71HQLmn+bYIrbYuQE3AKOUYlDVP4WxvFNnokSFN5yV4p9Fds8+6JkX1t5Zv\n5njQVLHHArvygf6PyS3yGRZzFvnzYbn5t1TK7f4YagoEMDaAilHRdKlijdZ8\n46yRSL+SmzXJB2xO62lXqBFSAMg5ce9+tqPSlZ76Y/0iisl3ZO3f1NW34XjK\nsIEzPkGzxlbKu7SIZboucVPL2hpLJgy6ZUX0i+3qFGIDMUDfsbIipzgE+a+m\nUOxtHT+boNWGrzMwGesX+MZy9HRcQ8dcRafoiVujYt9q8U0mN36lJeE4kWk6\n7SEhn5N4VmHZGZvSvVMU2MUkdjtLC39ahMaNNXyhiDsrXOq387MfigybYHZN\nCvO44cDCBK5GILORh720fNS6jkTqvU12Zb0vN/UBfoiAK3zROMWrajuEmnsn\nVDEA\r\n=y0EW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGKMlGEoXu19egkKFlgzcWaVjwP2uUIvwMqO4pcZlX+AiEApMk3dmN+CwkgvcNbGt8dEA1eGXTLB2JyghPOujl2fYI="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.13.2_1596185131774_0.6805184097799422"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.13.3":{"name":"@sl-nx/superlogin-next","version":"0.13.3","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.0","@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.9","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nodemailer":"^6.4.16","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"ec3ea6e7b7ceb7a28a1d84559a5507006862d119","_id":"@sl-nx/superlogin-next@0.13.3","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Iavf8GGsBt2gFelduHRfVR1iRH6G7s/+j2nrUkfuef55a8lrRnflFW8Q7Qi4a3iVv36u1O75rSNYbaezvgfnww==","shasum":"75fb11901e9801ad7d9c2e3ed2f86c901b3e1571","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.13.3.tgz","fileCount":50,"unpackedSize":219724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrqA+CRA9TVsSAnZWagAAlg4P/jndWholjrkCa8uKLH5w\nksKbUVAKik5QZcbWLjeA2c0jc7qLslIuosdQF8dRP1Y7VVT4JoCe7ps/MKhV\nNPDwBKriRPkeAp/c3ieI6t0ZHTgPIbp04H51Eb4t9dyiDjmrMSh2CLhTsyPq\ns2K9vSJkQxWoh+mCbqKCszC1wMuOTie0S0x2gODugrW24PKhiPwfxiiqjv/G\n3W/jqyZhz6Xz5MgWAUpa1qXTkdtHdgAms4I6BG72zCfD9bcrhJsInjBhbtHL\nYqHTY9IIqWjz8/Yi+kTY5LaHMwq+itF3HxSt/IYIQ+oEepuRyEz4+PdCZk7Y\nhcHWgfT2m6bGGOApK3goV8zy/GE9cRbjHVwA3I0P9WG+lmBIec/iX5Ajhcqr\nl6vUXuO5PeJo0U+/mc7fJYgAN9LJR/uTDtE7/WvRAz0j9WRbtzN3vGCJYSb+\nXSAD1kfPQTk48wvHWUsGJIY5jwcYZUyZUCekwuXci5Cy5mty/Vs14yDsRhWd\n3UeteUmp+2smJRapIszblq4N4yZyz3We7GIooyBOV08BB+d3BcSHFy1qNmyQ\nvXpvzYO6rgvpBAsNJZTbFNrVRFwYDMfd5PuZuTgakq7fpgG/qich54QVnWyr\n/l0/JvBsoP/SCg3yr4DB50BhxGH69VeyYVL3NOZktCSG4INrf/oKfiHxIyt1\n4d5H\r\n=dT2J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNihsx490pTihiFTeLA35TEZeT7zGPdaHQBShJKP+10AiEA10UVos3KmElmDYn96LkDeOgdTJe/bW6e6TMtyZwG99E="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.13.3_1605279806300_0.843669335978209"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.13.4":{"name":"@sl-nx/superlogin-next","version":"0.13.4","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"gulp","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.0","@sensu/couch-pwd":"1.0.1","@sl-nx/sofa-model":"^1.0.1","@types/express":"^4.17.9","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.3","bluebird":"^3.7.2","deepmerge":"^4.2.2","ejs":"^3.1.3","express":"^4.17.1","fs-extra":"^9.0.0","nodemailer":"^6.4.16","nodemailer-stub-transport":"^1.1.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","redis":"^3.0.2","urlsafe-base64":"1.0.0","uuid":"^8.2.0"},"devDependencies":{"@types/ejs":"^3.0.4","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","body-parser":"^1.19.0","chai":"^4.2.0","eslint":"^7.3.1","eslint-config-prettier":"^6.11.0","gulp":"^4.0.2","gulp-eslint":"^6.0.0","gulp-mocha":"^7.0.2","husky":"^4.2.5","mocha":"^7.2.0","morgan":"^1.10.0","prettier":"^2.0.5","pretty-quick":"^2.0.1","rimraf":"^3.0.2","sinon":"^9.0.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^8.10.1","typescript":"^3.9.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"ce9d7e2b1fd2dc238034a63fce24e055348687f4","_id":"@sl-nx/superlogin-next@0.13.4","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-3QqC2HQdTV1cYpFdKl2rslGJq9u+sT0sC/atpZuRXAlrm9IAfPySUhBDr0QuMQ225/DNdeg4+LWTv1Cc7KIRCg==","shasum":"172949e1ccedb2738d97d61118d073463ffbac49","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.13.4.tgz","fileCount":50,"unpackedSize":218099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgicsNCRA9TVsSAnZWagAADjwP/2Ufx1SsvB3T34UoyyNG\n8AnInmcRPgmNsluU7+GRuexDsNk34SmwS7DJKYCbfBLpbFqd+VL1cltNLiCP\n3F0zkQ8HK73efudNey82KvsnoA+n8fAnWOAuzILmcxA4xMJuzorgZsYz32Fk\nuHmgsNh4+BM2OrpAol/qEKNwQuwdI5K8v/87GFY1alYeqr6ppGX0sQ7giRNm\n/n2KaSRq1SUIT1sgeZ0IKRz7wuoNSAYaF+gV68kmH+gbodIwxuqlTSpFNDmn\nsHiWtwGNgYv3DjQpzLUqpIVNlEsfAdt3pGsTFEWjB52b6toBnSMGw66Eyfvv\nFu2AW5RNKPiGlTr2AFGCPyWVDZfE1TNHB1kG5C1dfFYsK6EI2/V24nlD+xap\nB0iKCt5ZrVPKNGB8Q0lNAQiHsCoHvCzXyIjRt3oWxQx71hqAky2y6yvJoImy\nqoAjyFK005xKE8GAaENuadYpZylhKMxhHxetHZ91qUrXJ7QKZUwCzJkn+0OJ\n0shLIpsX3iG7gpt6MVhcR2E3R4iEkQsiaJ05aiGuf0F5Z0XCLVQtDopOSeJO\nO31nJI7bSD7OCvyzhCWjlMVosNcMT49zS/ZvRTtBlDsdNzjZb0kXRl4mX1Jm\n0knukqLwnECLWAO0dRsVIl7IP3IH1p6OuiHSmYhAohQpU08dVNzMF9fO8f0m\nvhqn\r\n=+qs2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuK5FauTdqS2PaLfLysJW9PkYL8qTJaEgYST21bbzE6wIhANAr5z0zJjtyMLC55JPB/6ZJrJv56Ags3Yve0AfinzlG"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.13.4_1619643148701_0.012661960927182303"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.0":{"name":"@sl-nx/superlogin-next","version":"0.14.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"6e6b65f1c587486e2a830f4a74a7478c11d537ec","_id":"@sl-nx/superlogin-next@0.14.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-N5GEQdNC6OXBFAZsfaX2jL590Af3BDjCC41loYNcodtQlYCJtB8mCVmnu1VBOZc/uSqYDOVtMmaDPtHzrO+hPw==","shasum":"2f94e13affb55adf5730c268577874d4647d783f","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.0.tgz","fileCount":47,"unpackedSize":194735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgidIBCRA9TVsSAnZWagAAGUUP/2OFJ2WDAhc4iRU6evzu\nXtOcz6ExbDqve5g5iPrSZLyKRQZsZ1JleeUUOzAO0gpecfczfTPnZ4KW1X0K\nPWmD7fS93sotajo8hnTmn26asGzAIFsg1G85gfY5ML+auYTcGvL6m/yc60Zs\nprsBDN8+pnDJ+kcTSgulXYDwcsa0oIghnn/YppIr73YclvW761bajVCGRCSw\nWLHFHJzTytbT+MZSgV/10fs5eKA45U8NFdo/0Yx3XA6Co6E4knf8H+8AYM25\nb+51ZvxcOgw9J3QE0+hxdVZWkvucYR3+Vb77guxDA30SoiKd0osMsIkjouxz\nm5FBdSuQ9S9ohIqBPX40W5/d64lQghUmRCap6L4e6m5+bbDYXTawFhqM747s\nQIsfFvgXf4VTQV0IE2BGb4I8I2JUzVO3oM3Quzk17swijl1SwA/ExP8huuLN\nhC68x9bml9Y1DpUj/avyEH9cJ+PXLO03L/liD3tgzRiqeDV3dqPFvdISjvUE\nmO0qsyqgvy+1Y2sFOMEprMz2kglEF2x0J1YwVOmhvYuP9k3D1Ts/eHCsIVWu\nh/63u8zZehbwIZV4p5YA8/Obmc/QpBJ+0mIRkvgfUMevmaeSzJrKpuIvTNk7\nyRwPKFj8h0Bhj/1ORM6GczKTelIbknUU70D3d3hHJEFhLrDgVHs5HvFv6GBR\nHcuJ\r\n=SED0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICysED+s1I597UnKdzKs74t2A+tCOXw28NQdhAC5t9BcAiBkzNGlgspFzSLe1ud2Q4j7/3lzVEHbaHLue9VnEX2svg=="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.0_1619644929436_0.5333627474752838"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.1":{"name":"@sl-nx/superlogin-next","version":"0.14.1","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"21a63284a5cda140277350e86933fca59dc4575d","_id":"@sl-nx/superlogin-next@0.14.1","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-v0UQgJ661xbC9/GNYoBUYpdj9VFhZLsxCdgTbVtPdehWTscSozZkBC4whkMKd0b2E1ekVGOzEBxeAMqz2fwFtg==","shasum":"f6a1b96edac396ad287adcf3c69a3eec567428c4","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.1.tgz","fileCount":47,"unpackedSize":194670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/4XCRA9TVsSAnZWagAANHsP/Rn+fVK0ugAe2XkJqktY\n+g66w5XKHr9gGS12voOUcvXS1G3GwDNA0/XinjNxVKGvew7qe6Pvp0P0r1fv\nV5PUcaSHrtxa0FE64ZKIYwcZZag5kMsAxphfCVfGOXc0DelBMKtYAaChDWWy\nC5Rm1DNjNsyh968HvV5C9cvBa1r9Wz3bQh+NRYm4Td6xTj/KXyo0r1zAlBIU\n7bKECnNF8g5ukOba1iCX5oMu6Rjed+ZNQujR6kwIgVw3HrCefF6IcvFU5itB\nESrHXZfuA841gemCu+eX/ggMG65Y9nKwNn6BYDC0/5EWhcIh8v6QBUEjCp1o\nlRBFg/kRAmYbKZ5k0+b3o2n9Oal+fCRzjPmR2N45GjanBxAXoyYXR18RwWgz\nYRHi1nkcQDumEeKm9/4GZ4TN/w1Wr2uFt3PUp+Dni5HH3VKg1XUnkWG1LzRh\nEZCJinhCzsrZ22udZD+GiAJ3gBW1+Xu/EeSqutFoW053Tk8BFq+5oxP5a9So\n+nuGaPSHq8ZAzjg2k/WOgbnVEu/c1+0oSypaARRGt9VdvxGf/0qhxMoq8WOR\nypQ2kyrT1yLcSs2UeVR6SRXNrdWSE0PN/iTTGbVcTElBzSQCtGIBx+JBzX+5\ntSfpYT9q7D/wEueTnfUtKOHDQ5rx5Vhfk1Og71LrCwzHZK49ttPHrl/D42g5\nw8C1\r\n=90OP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNvBfLMbpUAYRkA0q/5tUfWc6aXieN2l6Wnz8IWiXjSAIhALHAeWeBiP7MetPn0jzovNrYk+wE6bxXKfhvj6g6Zj0F"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.1_1620049430638_0.6497261464493966"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.2":{"name":"@sl-nx/superlogin-next","version":"0.14.2","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"eca46325ccb35cfb27d7e13102c2e27c36044ff9","_id":"@sl-nx/superlogin-next@0.14.2","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-J8jFsQ3Bup65Y1fOII2DfIw5aKHn+KaqF0eTm6D2VgvNGSHYFlK6jPecT+uVNojjQV7m8G4OvYuUtUu7gki9Gw==","shasum":"7c4d7c212b2c2e9ddd3af4ba1510ada3e2ec1059","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.2.tgz","fileCount":47,"unpackedSize":196203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq57oCRA9TVsSAnZWagAAcg8P/RF1QcDbODCMn1h0dLP6\nQaPseJC3bM4lMEu4eH8IidPigfQEBTACWlgbA3D0k3vEGwcJCnbSwnCvMbqa\nZfr0xUDdYiqfk3lfoVhrZ06vm4xylPN50WoD/eWJuA+Rfh7iWhWdyylr+4PD\nwrdrQ0LZFXv54jf65ZOcA+sMRmTT1nq5JcVGrGBGBTyKnAwcn/K3upG3hlrX\nChHq6RToigTxPF5d0KzyvqWZafypJxKuzEu87P6Z9ucGgXopBnjs5OlDMYIT\nLn7xEFnZ6hbnyyVS/z6dtPGK5hvcW9uPBgMUlLX1sNjWO7q4kMq+R9IfODBf\nM9urEDgU5Rur2m57tdALwqAIb5gIegN/sJNCuA3YMq+GeYerqzvsgQnvrTT6\nz2tJ0psbGJ83ckH0lnpK9NyuN3mtIYKVB5UNjnfroQfadgAYxjDMgcoMyXY8\nTpZPq6yG8BIdhvXoHUbIQflVK7kVK5bJgFBS0N5hjBzb/Nr5C+L9g0RuRiSD\nmCbzZrmZ0SiluG2Ua09PggRsuN6PG663LZ63ZvY0U6OhDEkeBdQkqr2R/YR6\n/ML+6oAkapjlYLvkhVVDXDJ0IxJFtZyH0wkGMRDO4m997k4DzeaG9Z+5VuT+\nAd93/vN31g++2JpU6cLPx/GMYFuyhCFy+xGjJKT7zheZDZG0v3yFkh/jgOcT\n3VRJ\r\n=p6c1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHN8xsZcwwvh+L8XcQi4N7l647Orgr5kxiabZVyj0ZkpAiAHWqY2wfQQ2Ae1YC2p91RLgyW3FhWQXmmC05/NPI4T2A=="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.2_1621860071594_0.23446536342837465"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.3":{"name":"@sl-nx/superlogin-next","version":"0.14.3","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"a3de9a61e2fe0d185d27d45c4143d7980d6c0b7d","_id":"@sl-nx/superlogin-next@0.14.3","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-j7PV+1NLOsSCuTZIo1po9gAenfRel9JRYa/HWwsOg5zYIN8v5TxrneLlCMA8/QrMoKIBIo9h5+sOKkITh4aYAw==","shasum":"adc276fe754dbff0fe655ddf29a24aa1fb8601ca","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.3.tgz","fileCount":47,"unpackedSize":203088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyfwZCRA9TVsSAnZWagAA67sP/1VqHfqg4AkRBMrDabKW\nCB+s4z+9Le65kljSxOTVkjcXxdLjnzSHsa8+BtHr5AK/l+wTu/phofAY06+o\n6o3SgP1F4ttvOACEGmEdjx4wilwrtZOevSr76wT/uZnza1RU0E62AtZBzKEo\ncJJXpI63Xoe0ZLh5kHtEoY6Hi5oVEyqncoUagUiL99BuiYOJA1/juK+zoMfa\nc33Ff0Q8jm5UA2C1XwPhsMJy0CUpnSOF5LQWM1V8455duB8SIDmieXBEXzyn\nNn9jrZEC2LK04UPwpFQSFx+es0QRW2mSUv3PQjR7VgsRC+QLlzVTPQw9wBQ4\nbUAxrrjJ8i/rgd833lDsgjdT7EbcLTgFWz7hKnAx3Svap2RWeY3G+Bpiw2Cm\n/RZtCmHD1wDEHFcTsudRsYv+kyyGw3CjIcz6471FtE4FqW6nBwsZuuXCS/Bo\n1jH9TIDzCjo/cM6/XbdHsopLoeiys09yWEXroUA0NIVjnZAtc5sLMbsseTsY\nMZZiUfLnwYh9w0DsAlCVaDhwIAH4THVf8CtoMFMIMULbSXIXcY9aXHYaHKLS\n/OCcbQHI8hLN5i8EvBVu+lHoBCu1c/JD5/3ZczKRKLvgGxl5UWIlNo7/wGWf\nSIQcWNj0JiTJj1ERPqAkr0mDOdjpL9d7plvg7v9qy3JobvzPJq2BWbZ5Pxlt\nnVpZ\r\n=gwhj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR8OKhdEJPjTuKNDOzCUIW/NsAOLRcZcPh7hlYtajiCAIhAJFvOMdAt6x/sx77AFBiiD7KB/TTcxjNBsxxSsmp/II0"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.3_1623850008981_0.9057199957684368"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.4":{"name":"@sl-nx/superlogin-next","version":"0.14.4","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"b9dcf2eb2a86757d4ec0cb482b8c716a32bb21b4","_id":"@sl-nx/superlogin-next@0.14.4","_nodeVersion":"12.22.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-S5MSAuFudPZAuWTP/abyllzsgGKDnsc0UaegiVcBH7qX0gSv2PNhxrJldCNd75AbgHKbetr1fWwyLPQuMQUkug==","shasum":"a735b52d7f3849bebe26061d1a1a69d9f7ac3e06","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.4.tgz","fileCount":53,"unpackedSize":223874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOIXzCRA9TVsSAnZWagAAnDYP/RGniTxkbyV9rnLIE7Ub\nAvOB2LSrFUp8dvVIFDKXGO40MVDHBIPUqlwfzgjRG8aOsM2ObwtOuJpMVc6H\n8zuySNAGpsVxLRARoaLiqp1DHZkVfjEWjDf4KytWXvO/wIk2Lj/JSrr1uvbw\n8aEWW6Wrq4i5WvOWUquqjXy18tSJ8pPd7gAF4t6QAs6xVavmSWgY+4B7sylt\neyj7/nhCkFe1vWqGS0zMvYlXMrEBVv+4eT8O0rgnVZt0Zmja+u2glOjwYDur\nvbDhMYS3+zfsGdIotJAMmfFRSSJmb3c1/QVv/Jh8HLaFXzNeWdY/aSTh+XL6\nViOduaCgYeq7Egl8+0RBwqnJbi73ImHIHlM7t5Nq93Z4ufAkkwcxOzeTZecq\nrP/aWT1MrGdD2qBRGrdI10YrxBhTCUpUZ+xjVbHZBPvFCXlzqVrcDr+PZB9i\n4Bglr23+ZhQ5I7071Y+DVCHt79VeYB8avQdyDdEmDq6g5jnHnFnY0SvRJzCD\n1wkAbK205USq17XpFm/nn6iAhJP7Mun75hPw6dxvf9nlzGhz4gYRqi8dWnEJ\nbRen2J5Mdva0IBsjeReZH8QDG6PUaWHeXvSwiXTxAVZxrBSceDp+MhM6bpAL\nVCX9t8E0OIxyDgu3nmYjMUnrMCL6bSSspWIKqAmL4rT8ULCbiKJcXZWZyfXt\niO71\r\n=I1rA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgJ8ypmDAo8jz5jYsFQTnkby/iiFbx2ZAV4t5ILtP2FQIhAMSEoIc6twORpG9dy+tanY8cnZCC7B/kJ4U/YGWQoO1q"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.4_1631094258932_0.39498886964927316"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.14.5":{"name":"@sl-nx/superlogin-next","version":"0.14.5","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^8.2.1","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^5.1.3","mocha":"^8.3.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^9.2.4","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^9.1.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"214713b4c97b906696ad6568f8be7808f51474f7","_id":"@sl-nx/superlogin-next@0.14.5","_nodeVersion":"12.22.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-2NdnvaW1kH4LmbAKvF0jrsCktHzizQ8d6thLgdsbbcJc76TWIs+JmGdRU4dADfmI0bO6s6dTkf7t866uvjXU5w==","shasum":"3ec14f8cd85047ca4cddb900386189558b256aa3","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.14.5.tgz","fileCount":53,"unpackedSize":224025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOLI4CRA9TVsSAnZWagAAm3sP/1Nkt6AC7u6CcGcBV4EX\nwJ0GTW40SQy4EOpZw7ouuo50zyGxWKPyo1NtiQ2xTVkVn4iVcTn+Eoua+FFn\noO4Ip4fYabtkBOZV62KtDmhjpHEhDpzXyTomCChj9uusjPXRfsfK5Vc5JlzR\nwCt4twrz/Qd3CrFgQZr2YBL11BlaJcSMq25FArr8kFQluoI1+PZRAMqYh8KN\nt52jsTnK6wUfJzuzXRShUemC0JXrl+OmVT+3bUFXCCOBzySaN4MccMm/fQY8\no0GbfT8OFQj37MyXbak4QouJoM6g30z7xzFs4WK8x1OwGHRSYtSPqsHHkWuu\nF9QLYfvN/wPJzI0dSqBPDrj8K8noVDIujAj0JaQe8MiCaiNk9oGhNYi9Zswn\nPL3FW+d5qApUAZxdSPKzWydOMVjgcbXqmv1zX+0UwKoNDLlPdAXgSWZ4pqP+\nEM9eDcXtJwZ+LwBvJGbiqyavhv72WI2Jos8MdOqwcbed0qRPmIuKsjxU/6Ly\np3JJsfxJzub4ljRehZAdKUASRIfWsR/jmuswNzAQfou95iy0Doeh08zygokB\n4P7SpQVa1BVkhR9tYDnjN9I4xTdDgYCjJfgJOYmF/qvQyhPENkbUrnxkSY1M\ntscV+pq8/MgoB9O/sCfZSpa//opVQh5Yx9/8jN4YZJQMSaHL/7HSi7UO9aoR\n1sca\r\n=vzJm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR4tCxAiOSwMCwNrnDWJJlqHV78PFTCWwUwvqVg7THrgIhAJ/G0nHPg5EO9mRq3XLasFfQ1JdaFm2VQfcYt3buzVmh"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.14.5_1631105592289_0.8066844462430702"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.15.0":{"name":"@sl-nx/superlogin-next","version":"0.15.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@cloudant/cloudant":"^4.3.1","@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.2","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nodemailer":"^6.5.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.15","@types/ejs":"^3.0.6","@types/mocha":"^9.0.0","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^4.16.1","@typescript-eslint/parser":"^4.16.1","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^7.21.0","eslint-config-prettier":"^8.1.0","husky":"^7.0.2","mocha":"^9.1.1","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^11.1.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^10.2.1","typescript":"^4.2.3"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"2ec70aaa0c2a897a018e09eb39c6917999c0c434","_id":"@sl-nx/superlogin-next@0.15.0","_nodeVersion":"12.22.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-JebHUSRJ/YB+12xu4NQGolhpnZCFmPXGA9yFeNvY5wtD2ZjuYtsba+G2NfsSEN5McjovPTku4szxjQPN1ZvQjg==","shasum":"0be745ba01e0c425955819380591730768ab0c30","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.15.0.tgz","fileCount":53,"unpackedSize":234031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6TKidVSgTj79VZsaS917ZMUIpfPu8w377iKLnwNtUbAiEA+GLrz/RyNHn5pD4bvrZaebtMWpsH9fpySSkM1IMPQhU="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.15.0_1632138903826_0.3018002599870604"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.16.0":{"name":"@sl-nx/superlogin-next","version":"0.16.0","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.3","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nano":"^9.0.5||^8.2.2","nodemailer":"^6.7.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.22","@types/ejs":"^3.0.6","@types/mocha":"^9.0.0","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^8.2.0","eslint-config-prettier":"^8.1.0","husky":"^7.0.4","mocha":"^9.1.3","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^11.1.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^10.4.0","typescript":"^4.4.4"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"gitHead":"afab7de6805940f47c94230a765f880110fa7147","_id":"@sl-nx/superlogin-next@0.16.0","_nodeVersion":"12.22.7","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vjrmg5DPcE5um7ZuyjWcBiAL5BrKpNvzRyzjZRGQybj+JyaVlgEkp9hzcxCXjhiOPu3e0A3nHXhct+s17S7Hsw==","shasum":"e174b4035e6e388951bb20f0ba958b2b24993934","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.16.0.tgz","fileCount":53,"unpackedSize":232327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2bEpCRA9TVsSAnZWagAAqckP/Ap3t+mHKRAAdvGS7TWw\nU1Tmm0AitDLiYbODMsnPuyoktLDx4fhYKmjdVLQM3+U68dsv2/i3Roqgd7k/\nCH0/8mAle/kbuIAlC9ctiNMmttJpB0skAnqy6RBD2qnqAPqmavzeizJPSklB\nBV/fMLQt3/y4CTamERTQbEchwodN7SwME+gw+9t0K6sES995n7caylFtwOGJ\nWrotm+qRE7sjNVQhBB3pmVOxFBAXoJaK77HQiqwTDIv0+IltNpu0XdWfgnyy\nqxpM1t0VUQD5DozCNfDgiXGfoWPi2rROUytztCa0wWPoXq5Tald2AGlZC/bm\nIVg1dZxuxzBz5ec1K7PH8csG7llmD5tUb/qSKWHWlphkQGEdtgTMsp8qh4KQ\nlSh247q3rmX98zlXqYrxEEnGkpLAYCfGULxfyZ1KdFTgn7ewKVNFr8pMVTnu\nhkMY5OmrDzhCxn8bCoWxbilLfvUwQwFpF4kCm3gsydhPR84NQx13pOQl8mov\nMnKRbRh5SH9UmonbLlDhabK+t9VgjnW3a9K2pRiAVnEvHTmiwlddl1G8wmRW\n9WSqdPPwP2EM0TrxWQDzHsdXz6VykwJ6v/xkzpeoJ9XyS5U589DnVJZ947M1\nIaJCImVEaJg7iikbP3BM6qtH8Yy/hOeKLONisXRKygpc3RJsGEvQWbVkVyNB\nJlwd\r\n=jNTp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIj3XGmAEDykzZXKEs0szflYQ8KhLqz/+FRNon9kHuZQIhAJbK10Tosw8XnvYc3rOU3T/hhJ48btpz/XoLtNSUOJiv"}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.16.0_1636368926986_0.47892804041401305"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."},"0.16.1":{"name":"@sl-nx/superlogin-next","version":"0.16.1","description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","main":"./lib/index.js","repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"engines":{"node":">=12.0.0"},"scripts":{"test":"mocha","build":"node_modules/typescript/bin/tsc","lint":"node_modules/typescript/bin/tsc --noEmit && eslint \"**/*.{js,ts}\" --quiet --fix","prepare":"node_modules/typescript/bin/tsc"},"keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"author":{"name":"Colin Skow"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"license":"MIT","bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"homepage":"https://github.com/sl-nx/superlogin-next#readme","dependencies":{"@sl-nx/couch-pwd":"2.0.0","@sl-nx/sofa-model":"^1.0.3","@types/express":"^4.17.11","@types/nodemailer":"^6.4.0","@types/passport":"^1.0.6","deepmerge":"^4.2.2","ejs":"^3.1.6","express":"^4.17.1","nano":"^9.0.5||^8.2.2","nodemailer":"^6.7.0","passport":"^0.4.1","passport-http-bearer-sl":"^1.0.1","passport-local":"^1.0.0","urlsafe-base64":"1.0.0","uuid":"^8.3.2","nodemailer-stub-transport":"^1.1.0"},"optionalDependencies":{"nodemailer-stub-transport":"^1.1.0"},"devDependencies":{"@types/chai":"^4.2.22","@types/ejs":"^3.0.6","@types/mocha":"^9.0.0","@types/passport-local":"^1.0.33","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","body-parser":"^1.19.0","chai":"^4.3.3","eslint":"^8.2.0","eslint-config-prettier":"^8.1.0","husky":"^7.0.4","mocha":"^9.1.3","morgan":"^1.10.0","prettier":"^2.2.1","pretty-quick":"^3.1.0","sinon":"^11.1.2","sinon-chai":"^3.5.0","superagent":"^5.3.1","ts-node":"^10.4.0","typescript":"^4.4.4"},"husky":{"hooks":{"pre-commit":"pretty-quick --staged"}},"eslintConfig":{"parserOptions":{"ecmaVersion":2020,"sourceType":"module"}},"types":"./lib/index.d.ts","gitHead":"4fcec40bde13478e12f4079bc56f4cdee4db518a","_id":"@sl-nx/superlogin-next@0.16.1","_nodeVersion":"14.18.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-0Y9TG2aMzAncNq/3OVoBe//owDz0V9iGjMvB2/2pwKTJTi/kxVvSh1YwGEiqt5axme5peJVWUUJNtj9vKzpEsA==","shasum":"9d45a147429b3ff00c2e90f1e565e195d07cbcdc","tarball":"https://registry.npmjs.org/@sl-nx/superlogin-next/-/superlogin-next-0.16.1.tgz","fileCount":53,"unpackedSize":226713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5TrjCRA9TVsSAnZWagAA8eEP+gNAY0l4vBorCvND1QEM\n7BuK1KeDAbAkxiUZtfvVBVi23RfouACIyzwdEIKdx7y53VE16co8YauYXzd7\nbYPVNqDtLl72EUmguXcBqqOSCAEoZ4+6U/bFNl1i7A4gjZ2GswLZDLCsjkgt\nAPnsSpbk8L/OQBFCtHdIFLO11ou5TEmPeOQsYkF7v/XtYxGJaEVZaWa21CWC\neIuM4ZJud5GiKd1NrQ7/K3i5rANRMdlEwh2s+l5mV+BRzu+wbk/u3QMxtGLT\nTC5CyE/BwkxslLfjMzn6bOL53B/fa77M3pkxQgMDeA3XaJwYA790DmK5qq3j\nnIkgSgBe0Af0dDlAW1zD8ZXwH9hfIOhbYXZV22gMrxUuKWegFjltRfjDI5zy\nUCru+6zpRtfsGLIuOX6Z9+vk+Y0iBpPhXvHVnBKiuaRLdX92XjXf3vBhCCLG\nkOqr7N6yBt/a+rCAos+JJHIUAT9cCaYx2Kc2YbNjS15sqxJRNvnlsD0VIaLI\nSLHBaEwK05BVnPppoqxm43a21wp05o/md6Os1T94kyjdBz5LNiH4VzFl1Ht1\nBggbcmig9r5dX78Qa9hA7B6pwqGeoAimIqSg2GG6GJ3oLHEhg/MXSIY2jkQw\ngxaLid1d77vP9YmXBKEkpLEeuxmm+IFACZ5ontJNmLUTzP4vLyZMuUfJPs6D\nNQIZ\r\n=tt9r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ2vV98u+cyDS4OXfQXKH+jY+ZekZYXu/YETYvT9A3lAIgd8/TbqhGHMiyXTTOG9Erla0z/Lk5ufZ+UYvy3nPmi/4="}]},"_npmUser":{"name":"lytefm","email":"npm@leitow.eu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/superlogin-next_0.16.1_1642412771585_0.7897604480942597"},"_hasShrinkwrap":false,"deprecated":"This package has been renamed to @perfood/couch-auth. Please migrate to the new package."}},"time":{"created":"2020-04-29T21:19:50.741Z","0.10.2":"2020-04-29T21:19:51.195Z","modified":"2022-04-07T00:17:05.362Z","0.10.3":"2020-04-29T21:39:03.921Z","0.10.4":"2020-04-30T06:48:44.958Z","0.10.5":"2020-04-30T07:00:32.007Z","0.11.0":"2020-05-02T10:57:02.682Z","0.12.0":"2020-05-26T08:52:40.189Z","0.12.1":"2020-06-29T13:02:18.433Z","0.12.2":"2020-07-02T15:35:28.442Z","0.12.3":"2020-07-07T10:21:50.929Z","0.13.0":"2020-07-29T13:11:59.472Z","0.13.1":"2020-07-30T07:13:11.377Z","0.13.2":"2020-07-31T08:45:31.881Z","0.13.3":"2020-11-13T15:03:26.455Z","0.13.4":"2021-04-28T20:52:28.836Z","0.14.0":"2021-04-28T21:22:09.558Z","0.14.1":"2021-05-03T13:43:50.817Z","0.14.2":"2021-05-24T12:41:11.756Z","0.14.3":"2021-06-16T13:26:49.149Z","0.14.4":"2021-09-08T09:44:19.162Z","0.14.5":"2021-09-08T12:53:12.485Z","0.15.0":"2021-09-20T11:55:04.028Z","0.16.0":"2021-11-08T10:55:27.173Z","0.16.1":"2022-01-17T09:46:11.787Z"},"maintainers":[{"name":"lytefm","email":"npm@leitow.eu"}],"description":"The next generation SuperLogin-Fork, rewritten in Typescript and compatible with current versions of Node and CouchDB.","homepage":"https://github.com/sl-nx/superlogin-next#readme","keywords":["authentication","login","PouchDB","CouchDB","Cloudant","passport","oauth","Facebook","Twitter","Node","Express"],"repository":{"type":"git","url":"git+https://github.com/sl-nx/superlogin-next.git"},"author":{"name":"Colin Skow"},"bugs":{"url":"https://github.com/sl-nx/superlogin-next/issues"},"license":"MIT","readme":"# SuperLogin-Next\n\n![Known Vulnerabilities](https://dev.snyk.io/test/github/sl-nx/superlogin/badge.svg)\n![Build Status](https://github.com/sl-nx/superlogin-next/workflows/Build/badge.svg?branch=master)\n\n**Note**: Future versions of this package will be published under `@perfood/couch-auth`. Version `0.16.1` is the last version to be published under `@sl-nx/superlogin-next`. Please switch to the new package in order to continue receiving updates.\n\nThis is a heavily modified SuperLogin, re-written in TypeScript and developed with Node 12/14/16 & CouchDB 3. It is compatible with Cloudant when using the CouchDB-style authentication, adapted for current OWASP best practises and can be used on [CloudFoundry](https://www.ibm.com/cloud/cloud-foundry).\n\nIf you've used SuperLogin before, the `0.13.X` release should be mostly backwards compatible. New/ migrated projects should use a release >= `0.14.0`.\n\nImportant changes in version `0.14.0`:\n- db and doc ids no longer include PII, but be UUIDs instead. Existing user docs in `sl-users` and user-DBs **must be migrated**. Check `CHANGELOG.md` for details.\n- The adapters for sessions (e.g `redis`) are no longer used.\n- signup with e-Mail only instead of `username` is preferred: now prevents account-guessing via `forgot-pass`, `login`, `signup` and `change-pass`\n- some functionality has been removed (Cloudant legacy auth, `lockedUntil`, IP logging,...)\n\nNote that I'm only actively working on / performing security testing for the `local` email/PW authentication strategy.\n\nIf you encounter a bug, [open an issue](https://github.com/sl-nx/superlogin/issues).\nIf you have trouble setting things up or any other question about the package, [join the discussion]() instead.\n\nCheck the [Project board](https://github.com/sl-nx/superlogin-next/projects/1) for upcoming changes or if you want to contribute.\n\n## Below is the (partially adjusted) original README:\n\n## Overview\n\nSuperLogin is a full-featured NodeJS/Express user authentication solution for APIs and Single Page Apps (SPA) using\nCouchDB or Cloudant.\n\nUser authentication is often the hardest part of building any web app, especially if you want to integrate multiple providers. Now all the tough work has been done for you so you can relax and create with less boilerplate!\n\n## Contents\n\n- [Features](#features)\n- [Client Tools and Demo](#client-tools-and-demo)\n- [How It Works](#how-it-works)\n- [Quick Start](#quick-start)\n- [Securing Your Routes](#securing-your-routes)\n- [Database Security](#database-security)\n- [CouchDB Document Update Validation](#couchdb-document-update-validation)\n- [Adding Providers](#adding-providers)\n- [Adding additional fields](#adding-additional-fields)\n- [Advanced Configuration](#advanced-configuration)\n- [Routes](#routes)\n- [Event Emitter](#event-emitter)\n- [Main API](#main-api)\n\n## Features\n\n- Authentication solution for APIs, sPAs and Offline-First CouchDB powered Apps\n- Supports local login with username/email and password using best security practices\n- Sends system emails for account confirmation, password reset, or anything else you want to configure\n- Add any [Passport](http://passportjs.org) OAuth2 strategy with literally just a couple lines of code\n- Link multiple authentication strategies to the same account for user convenience\n- Provides seamless token access to both your CouchDB server (or Cloudant) and your private API\n- Manages permissions on an unlimited number of private or shared user databases and seeds them with the correct design documents\n\n## How It Works\n\nSimply authenticate yourself with SuperLogin using any supported strategy and you will be issued a temporary access token and password. Then include the access token and password in an Authorization Bearer header on every request to access protected endpoints. The same credentials will authenticate you on any CouchDB or Cloudant database you have been authorized to use.\n\n## Quick Start\n\nHere's a simple minimalist configuration that will get you up and running right away:\n\nFirst:\n\n```\nnpm install @sl-nx/superlogin-next express body-parser morgan\n```\n\nYou'll need an email service that is supported by [nodemailer](https://nodemailer.com/smtp/). Then start a server with the following content:\n\n```javascript\nvar express = require('express');\nvar bodyParser = require('body-parser');\nvar logger = require('morgan');\nvar { SuperLogin } = require('@sl-nx/superlogin-next');\n\nvar app = express();\napp.set('port', process.env.PORT || 3000);\napp.use(logger('dev'));\napp.use(bodyParser.json());\napp.use(bodyParser.urlencoded({ extended: false }));\n\nvar config = {\n  dbServer: {\n    protocol: 'http://',\n    host: 'localhost:5984',\n    user: 'admin',\n    password: 'password',\n    userDB: 'sl-users',\n    couchAuthDB: '_users'\n  },\n  mailer: {\n    fromEmail: 'gmail.user@gmail.com',\n    options: {\n      service: 'Gmail', // N.B.: Gmail won't work out of the box, see https://nodemailer.com/usage/using-gmail/\n      auth: {\n        user: 'gmail.user@gmail.com',\n        pass: 'userpass'\n      }\n    }\n  },\n  userDBs: {\n    defaultDBs: {\n      private: ['supertest']\n    }\n  }\n};\n\n// Initialize SuperLogin\nvar superlogin = new SuperLogin(config);\n\n// Mount SuperLogin's routes to our app\napp.use('/auth', superlogin.router);\napp.listen(app.get(\"port\"));\n```\n\nNow let's create our first user by sending a POST request with the following JSON content to `http://localhost:3000/auth/register`. \nReplace the example E-Mail with one that you can access:\n\n```json\n{\n  \"name\": \"Joe Smith\",\n  \"email\": \"joesmith@example.com\",\n  \"password\": \"bigsecret\",\n  \"confirmPassword\": \"bigsecret\"\n}\n```\n\ne.g. via `curl`:\n\n```bash\ncurl --request POST \\\n  --url http://localhost:3000/auth/register \\\n  --header 'Content-Type: application/json' \\                 \n  --data '{\"name\": \"Joe Smith\", \"email\": \"joesmith@example.com\", \"password\": \"bigsecret\", \"confirmPassword\": \"bigsecret\"}'\n```\n\nUsing `x-www-form-urlencoded` is also supported:\n\n```bash\ncurl --request POST \\\n  --url http://localhost:3000/auth/register \\\n  --header 'Content-Type: application/x-www-form-urlencoded' \\\n  --data-urlencode 'name=Joe Smith' \\\n  --data-urlencode 'email=joesmith@example.com' \\\n  --data-urlencode 'password=bigsecret' \\\n  --data-urlencode 'confirmPassword=bigsecret'\n```\n\nYou should get the response `{\"success\": \"Request processed.\"}` and an confirmation E-Mail should have been sent out. \nClick on the confirmation link to activate your account. \nYou can also manually confirm the user's email by removing the `unverifiedEmail` - property in his doc in `sl-users` and adding `\"email\": \"joesmith@example.com\"` instead.\n\n\nNow to login, simply post your username and password to `http://localhost:3000/auth/login`. You should get a response similar to this:\n\n```json\n{\n  \"issued\": 1440232999594,\n  \"expires\": 1440319399594,\n  \"provider\": \"local\",\n  \"token\": \"aViSVnaDRFKFfdepdXtiEg\",\n  \"password\": \"p7l9VCNbTbOVeuvEBhYW_A\",\n  \"user_id\": \"joesmith\",\n  \"roles\": [\"user\"],\n  \"userDBs\": {\n    \"supertest\": \"http://aViSVnaDRFKFfdepdXtiEg:p7l9VCNbTbOVeuvEBhYW_A@localhost:5984/supertest$joesmith\"\n  }\n}\n```\n\nYou have now been issued an access token. Let's use it to access a protected endpoint. \nMake a request to `http://localhost:3000/auth/refresh` and you'll see it was unauthorized. \nNow add a header to your request: `\"Authorization\": \"Bearer {token}:{password}\"` and you should see that your session was refreshed. That was easy!\n\nIf your user document contains a field called `profile`, this will automatically be included with the session information.\n\nYou can also use the same token and password combination to access your personal database. \nBut as soon as you log out your session, that access will be revoked.\n\n**Note:** Session tokens for your API will be unusable as soon as they expire. \nHowever, there is no mechanism to automatically revoke expired credentials with CouchDB. \nWhenever a user logs in, logs out, or refreshes the session, SuperLogin will automatically clean up any expired credentials for that user. \nBut you **have to** periodically run `superlogin.removeExpiredKeys()`, e.g. with `setInterval` or a cron job. This will deauthorize every single expired credential.\n\n## Securing Your Routes\n\nSecuring your routes is very simple:\n\n```js\napp.get(\n  '/admin',\n  superlogin.requireAuth,\n  superlogin.requireRole('admin'),\n  function (req, res) {\n    res.send('Welcome Admin');\n  }\n);\n```\n\nNote that you must use `requireAuth` prior to checking any roles or an error will be thrown.\n\n##### `superlogin.requireAuth`\n\nMiddleware that authenticates a user with a token and password in the request header. (`\"Authorization\": \"Bearer {token}:{password}\"`)\n\n##### `superlogin.requireRole(role)`\n\nMiddleware that makes sure the authenticated user possesses the specified `role` (string).\n\n##### `superlogin.requireAnyRole(possibleRoles)`\n\nMiddleware that makes sure the user possesses at least one of the specified `possibleRoles` (array).\n\n##### `superlogin.requireAllRoles(requiredRoles)`\n\nMiddleware that makes sure the user possesses ALL of the specified `requiredRoles` (array).\n\n## Database Security\n\nWhen using CouchDB, you should block anonymous reads across all databases by setting `require_valid_user` to `true` under `[couch_httpd_auth]` in your CouchDB config.\n\nFor CouchDB versions `< 3`, Admin Party is default and all your databases are readable and writable by the public until you implement the correct security measures. \n\nSuperLogin also allows you to specify default `_security` roles for members and admins in the `userDBs` section of your config file. See `config.example.js` for details.\n\n## CouchDB Document Update Validation\n\nCouchDB provides the [validate_doc_update function](http://guide.couchdb.org/draft/validation.html) to approve or disapprove what gets written. However, since your CouchDB users are temporary random API keys, you have no idea which user is requesting to write. SuperLogin has inserted the original `user_id` into `userCtx.roles[0]`, prefixed by `user:` (e.g. `user:superman`).\n\n\n## Adding Providers\n\nYou can add support for any Passport OAuth2 strategy to SuperLogin with just a few lines of code. _Maintainers Note: haven't tested this._\n\n#### Configuration\n\nThe first step is to add credentials to your config file. You can skip the callback URL as it will be generated automatically. Here is how to add support for Dropbox:\n\n```js\nproviders: {\n  dropbox: {\n    // Credentials here will be passed in on the call to passport.use\n    credentials: {\n      consumerKey: DROPBOX_APP_KEY,\n      consumerSecret: DROPBOX_APP_SECRET\n    },\n    options: {\n      // Options here will be passed in on the call to passport.authenticate\n    },\n    // You should copy the template from this repo that is in `templates/oauth/auth-callback.ejs` and modify the second parameter\n    // from '*' to your page origin, e.g. 'https://example.com', to avoid any malicious site receiving the auth data returned by the pop-up\n    // window workflow. The template can be the same for all providers.\n    template: path.join(__dirname, './templates/oauth/my-custom-secure-auth-callback.ejs')\n  }\n}\n```\n\nSuperLogin supports two types of workflows for OAuth2 providers: popup window and client access token.\n\n#### Popup Window Workflow for web browsers (desktop and mobile)\n\nYour client must create a popup window and point it to `/{provider}`, where the user will be directed to authenticate with that provider. After authentication, succeeds or fails, it will [post a message](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) to the parent window with the data set to `{error, session, link }`.\n\nIn the parent window add an event listener to wait for the message, e.g:\n\n```js\nwindow.addEventListener('message', (event) => {\n  if (event.origin !== \"http://auth.example.org:3000\") { return; }\n  // event.data on success contains\n  // {\n  //   \"error\": null,\n  //   \"session\": {\n  //     \"issued\": 1624591356009,\n  //     \"expires\": 1624677756009,\n  //     \"provider\": \"google\",\n  //     ...\n  //   },\n  //   \"link\": null\n  // }\n  console.log(event);\n  \n}, false);\n```\n\nAfter completing the configuration step above, all you have to do is register your new provider with SuperLogin. Simply follow this pattern:\n\n```js\nvar DropboxStrategy = require('passport-dropbox-oauth2').Strategy;\nsuperlogin.registerOAuth2('dropbox', DroboxStrategy);\n```\nNow, assuming your credentials are valid, you should be able to authenticate with Dropbox by opening a popup window to `/dropbox`. See below in the Routes documentation for more detail.\n\n#### Client Access Token for Cordova / Phonegap and Native Apps\n\nCordova and most native app frameworks (including iOS and Android) have plugins which authenticate a user with a provider and provide an `access_token` to the client app. All you have to do is post a request to `/{provider}/token` and include your `access_token` in the request body. SuperLogin will respond with a new session or an error message.\n\nYou must use Passport strategies that accept `access_token` posted in the body of the request, such as `passport-facebook-token`, `passport-google-token`, etc.\n\nHere is how to setup the Client Access Token strategy:\n\n```js\nvar FacebookTokenStrategy = require('passport-facebook-token');\nsuperlogin.registerTokenProvider('facebook', FacebookTokenStrategy);\n```\n\nNote that this uses the exact settings in your config as the popup window workflow.\n\n## Adding additional fields\n\nIt's easy to add custom fields to user documents. When added to a `profile` field it will automatically be included with the session information (in a profile object).\n\n1. First whitelist the fields in the [config](https://github.com/sl-nx/superlogin-next/blob/master/config.example.js), for example:\n\n   ```js\n   userModel: {\n     whitelist: ['profile.fullname'];\n   }\n   ```\n\n2. Include the fields with [registrations](#post-register).\n3. To also fill in custom fields after social authentications use the [superlogin.onCreate](#superloginoncreatefn) handler. Example:\n\n   ```js\n   superlogin.onCreate(function (userDoc, provider) {\n     if (userDoc.profile === undefined) {\n       userDoc.profile = {};\n     }\n     if (provider !== 'local') {\n       const displayName = userDoc[provider].profile.displayName;\n       if (displayName) {\n         userDoc.profile.fullname = displayName;\n       }\n     }\n     return Promise.resolve(userDoc);\n   });\n   ```\n\n## Advanced Configuration\n\nTake a look at `config.example.js` or `src/types/config.d.ts` for a complete tour of all available configuration options. You'll find a lot of cool hidden features there that aren't documented here.\n\n`src/config/default.config.ts` contains a list of default settings that will be assumed if you don't specify anything.\n\n## Routes\n\n##### `POST /register`\n\nCreates a new account with a username and password. Required fields are: \n`username`, `email`, `password` and `confirmPassword`. `name` is optional. \nAny additional fields you want to include need to be white listed under \n`userModel` in your config. See `src/config/default.config.ts`, \n`config.example.js` or `src/types/config.d.ts` for details.\n\nIf `local.sendConfirmEmail` is true (_recommended_), a confirmation email will \nbe sent with a verification link. If `local.requireEmailConfirm` is true, \n(_recommended_) the user will not be able to login until the confirmation is \ncomplete. If `security.loginOnRegistration` is true (_discouraged_), a session will \nbe automatically created and sent as the response.\n\n##### `POST /login`\n\nInclude `username` and `password` fields to authenticate and initiate a session. \nThe field names can be customized in your config under `local.usernameField` \nand `local.passwordField`.\n\n##### `GET /confirm-email/{token}`\n\nThis link is included in the confirmation email, and will mark the user as \nconfirmed. If `local.confirmEmailRedirectURL` is specified in your config, it \nwill redirect to that location with `?success=true` if successful or \n`error={error}&message={msg}` if it failed. Otherwise it will generate a \nstandard JSON response.\n\n##### `POST /refresh`\n\nAuthentication token required. Extends the life of your current token and \nreturns updated token information. The only field that will change is `expires`.\nToken life is configurable under `security.sessionLife` and is measured in \nseconds.\n\n##### `POST /logout`\n\nAuthentication required. Logs out the current session and deauthorizes the token\non all user databases.\n\n##### `POST /logout-others`\n\nAuthentication required. Logs out and deauthorizes all user sessions except the \ncurrent one.\n\n##### `POST /logout-all`\n\nAuthentication required. Logs out every session the user has open and \ndeauthorizes the user completely on all databases.\n\n##### `POST /forgot-password`\n\nInclude `email` field to send the forgot password email containing a password \nreset token. The life of the token can be set under `security.tokenLife` (in \nseconds).\n\nHave the email template redirect back to you're app where you're app presents \nU.I. to gather a new password and then `POST` to `/password-reset` with the \nforgot-password `token` and new password\n\n##### `POST /password-reset`\n\nResets the password. Required fields: `token`, `password`, and `confirmPassword`.\n\n##### `POST /password-change`\n\nAuthentication required. Changes the user's password or creates one if it doesn't exist. Required fields: `newPassword`, and `confirmPassword`. If the user already has a password set then `currentPassword` is required.\n\n##### `GET /validate-username/{username}` (_deprecated_)\n\n**Deprecated**\n\nChecks a username to make sure it is correctly formed and not already in use. Responds with status 200 if successful, or status 409 if unsuccessful.\n\n##### `GET /validate-email/{email}` (_deprecated_)\n\n**Deprecated**\n\nChecks an email to make sure it is valid and not already in use. Responds with status 200 if successful, or status 409 if unsuccessful.\n\n##### `POST /change-email`\n\nAuthentication required. Changes the user's email. Required field: `newEmail`.\n\nNote: The server returns an answer once the email has been verified as valid and\nwhether this email already exists in the DB, not waiting for the update of the \nemail to complete.\n\n##### `GET /session`\n\n**Deprecated**. Simply attempt to access the (user's) CouchDB `/` instead.\n\nReturns information on the current session if it is valid. Otherwise you will get a 401 unauthorized response.\nWith 2.0, this route shouldn't be used anymore but is still present for backwards compatibility. You should handle session expiration dates on client side, simply try to connect with the Database and handle 401/403 responses accordingly.\n\n##### `POST /request-deletion`\n\nAuthentication required. A valid login (i.e. email, username or UUId) must be \nprovided as `username` and the current `password`.\nRemoves the user's account and all its private databases.\n##### `GET /{provider}`\n\nOpen this in a popup window to initiate authentication with Facebook, Google, etc. After authentication, the callback will [post a message to the the parent window](#popup-window-workflow-for-web-browsers-desktop-and-mobile) with the data object: `error` explains anything that went wrong, `session` includes the same session object that is generated by `/login` and `link` simply contains the name of the provider that was successfully linked.\n\n##### `GET /link/{provider}?bearer_token={token:password}`\n\nThis popup window is opened by a user that is already authenticated in order to link additional providers to the account.\n\nThere is a security concern here that the session token is exposed as a query parameter in the URL. While this is secure from interception under HTTPS, it can be stored in the user's browser history and your server logs. If you are concerned about this you can either force your user to log out the session after linking an account, or disable link functionality completely by setting `security.disableLinkAccounts` to `true`.\n\n##### `POST /unlink/{provider}`\n\nAuthentication required. Removes the specified provider from the user's account. Local cannot be removed. If there is only one provider left it will fail.\n\n##### `POST /{provider}/token`\n\nThis will invoke the client `access_token` strategy for the specified provider if you have registered it. You should include the `access_token` for the provider in the body of your request.\n\n##### `POST /link/{provider}/token`\n\nThis will link additional providers to an already authenticated user using the client `access_token` strategy.\n\n## Event Emitter\n\nSuperLogin also provides an [event emitter](https://nodejs.org/api/events.html), which allows you to receive notifications when important things happen.\n\n**Example:**\n\n```js\nsuperlogin.emitter.on('login', function (userDoc, provider) {\n  console.log('User: ' + userDoc._id + ' logged in with ' + provider);\n});\n```\n\nHere is a full list of the events that SuperLogin emits, and parameters provided:\n\n- `signup`: (`userDoc`, `provider`)\n- `signup-attempt`: (`userDoc`, `provider`) // currently only for local\n- `link-social`: (`userDoc`, `provider`)\n- `login`: (`newSession`, `provider`)\n- `refresh`: (`newSession`)\n- `password-reset`: (`userDoc`)\n- `password-change`: (`userDoc`)\n- `forgot-password`: (`userDoc`)\n- `forgot-password-attempt`: (`email`)\n- `email-verified`: (`userDoc`)\n- `email-changed`: (`userDoc`)\n- `illegal-email-change`: (`login`, `newEmail`)\n- `user-db-added`: (`dbName`)\n- `user-db-removed`: (`dbName`)\n- `user-deleted`: (`userDoc`, `reason`)\n- `logout`: (`user_id`)\n- `logout-all`: (`user_id`)\n- `consents`: (`userDoc`)\n\n## Main API\n\n##### `new SuperLogin(config, couchServer, passport)`\n\nConstructs a new instance of SuperLogin. All arguments are optional. If you don't supply any config object, default settings will be used for a local CouchDB instance in admin party mode. Emails will be logged to the console but not sent.\n\n- `config`: Your full configuration object.\n- `couchServer`: You can pass a `ServerScope` from `@cloudant/cloudant` or your own customized version of `nano` here to make the requests to your CouchDB/Cloudant-instance. Typing issues can be ignored as long as the relevant methods work as in `nano`.\n- `passport`: You can pass in your own instance of Passport or SuperLogin will generate one if you do not.\n\n**Returns:** the complete SuperLogin API.\n\n##### `superlogin.config`\n\nA reference to the configuration object. You can use this to lookup and change configuration settings at runtime. See `src/types/config.d.ts` for details.\n\n##### `superlogin.router`\n\nA reference to the Express Router that contains all of SuperLogin's routes.\n\n##### `superlogin.passport`\n\nA reference to Passport\n\n#### `superlogin.events`\n\nA reference to the event emitter\n\n##### `superlogin.userDB`\n\nA `nano` instance that gives direct access to the SuperLogin users database\n\n##### `superlogin.couchAuthDB`\n\nA `nano` instance that gives direct access to the CouchDB authentication (`_users`) database.\n\n##### `superlogin.registerProvider(provider, configFunction)`\n\nAdds support for additional Passport strategies. See below under Adding Providers for more information.\n\n##### `superlogin.validateUsername(username)`\n\nChecks that a username is valid and not in use. Resolves with nothing if successful. Resolves with an error object in failed.\n\n##### `superlogin.validateEmail(email)`\n\nChecks that an email is valid and not in use. Resolves with nothing if successful. Resolves with an error object in failed.\n\n##### `superlogin.getUser(login)`\n\nFetches a user document by either username, email or UUID.\n\n##### `superlogin.createUser(form, req)`\n\nCreates a new local user with a username and password.\n\n`form` requires the following: `username`, `email`, `password`, and `confirmPassword`. `name` is optional. Any additional fields must be whitelisted in your config under `userModel` or they will be removed.\n\n`req` should contain `protocol` and `headers.host` to properly generate the confirmation email link. `ip` will be logged if given.\n\n##### `superlogin.onCreate(fn)`\n\nUse this to add as many functions as you want to transform the new user document before it is saved. Your function should accept two arguments `(userDoc, provider)` and return a `Promise` that resolves to the modified user document. onCreate functions will be chained in the order they were added.\n\n##### `superlogin.onLink(fn)`\n\nDoes the same thing as `onCreate`, but is called every time a user links a new provider, or their profile information is refreshed. This allows you to process profile information and, for example, create a master profile. If an object called `profile` exists inside the user doc it will be passed to the client along with session information at each login.\n\n##### `superlogin.createUserSocial(provider, auth, profile)`\n\nCreates a new user following authentication from an OAuth provider. If the user already exists it will update the profile.\n\n- `provider`: the name of the provider in lowercase, (e.g. 'facebook')\n- `auth`: credentials supplied by the provider\n- `profile`: the profile supplied by the provider\n\n##### `superlogin.linkUserSocial(login, provider, auth, profile)`\n\nlike `createUserSocial`, but for an existing user identified by `login`\n\n##### `superlogin.unlinkUserSocial(login, provider)\n\nRemoves the specified provider from the user's account.\n`local` cannot be removed. If there is only one provider left it will fail.\n##### `superlogin.hashPassword(password)`\n\nHashes a password using PBKDF2 and returns an object containing `salt` and `derived_key`.\n\n##### `superlogin.verifyPassword(hashObj, password)`\n\nVerifies a password using a hash object. If you have a user doc, pass in `local` as the hash object.\n\n##### `superlogin.createSession(user_id, provider, req)`\n\nCreates a new session for a user. `provider` is the name of the provider. (eg. 'local', 'facebook', twitter.) `req` is used to log the IP if provided.\n\n##### `superlogin.changePassword(user_id, password)`\n\nChanges the user's password.\n\n##### `superlogin.forgotPassword(email, req)`\n\nSends out the forgot password email and issues a reset token.\n\n##### `superlogin.resetPassword(form, req)`\n\nResets the user's password. Required fields are `token` (from the forgot password email), `password`, and `confirmPassword`.\n\n##### `superlogin.changeEmail(user_id, newEmail)`\n\nChanges the user's email. If email verification is enabled (`local.sendConfirmEmail`) then a new confirmation email will be sent out.\n\n##### `superlogin.verifyEmail(token, req)`\n\nMarks the user's email as verified. `token` comes from the confirmation email.\n\n##### `superlogin.addUserDB(user_id, dbName, type, designDoc, permissions, partitioned)`\n\nAssociates a new database with the user's account. Will also authenticate all existing sessions with the new database.\n\n- `dbName`: the name of the database. For a shared db, this is the actual path. For a private db `userDBs.privatePrefix` will be prepended, and `${user_id}` appended. **(required)**\n- `type`: 'private' (default) or 'shared' (optional)\n- `designDoc`: the name of the designDoc (if any) that will be seeded. (optional)\n- `permissions`: an array of [permissions](https://docs.cloudant.com/authorization.html) for use with Cloudant. (optional)\n- `partitioned`: `false` (default) or `true` if the database should be [partitioned](https://docs.couchdb.org/en/stable/api/partitioned-dbs.html)\n \nIf the optional fields are not specified they will be taken from `userDBs.model.{dbName}` or `userDBs.model._default` in your config.\n\n##### `superlogin.removeUserDB(user_id, dbName, deletePrivate, deleteShared)`\n\nDeauthorizes the specified database from the user's account, and optionally destroys it.\n\n- `dbName`: the full path for a shared db, or the base name for a private db\n- `deletePrivate`: when `true`, will destroy a db if it is marked as private\n- `deleteShared`: when `true`, will destroy a db if it is marked as shared. Caution: may destroy other users' data!\n\n##### `superlogin.logoutUser(user_id, session_id)`\n\nLogs out all of a user's sessions at once. If `user_id` is not specified SuperLogin will look it up from the `session_id`.\n\n##### `superlogin.logoutSession(session_id)`\n\nLogs out the specified session.\n\n##### `superlogin.logoutOthers(session_id)`\n\nLogs out all of a user's sessions, except for the one specified.\n\n##### `superlogin.logoutAll(login, session_id)`\n\nLogs out all of a user's sessions. Retrieves the user by `login` or `session_id`\n##### `superlogin.removeUser(user_id, destroyDBs)`\n\nDeletes a user, deauthorizes all the sessions, and optionally destroys all private databases if `destroyDBs` is true.\n\n##### `superlogin.confirmSession(token, password)`\n\nVerifies a user's session.\n\n##### `superlogin.removeExpiredKeys()`\n\nDeauthorizes every single expired session found in the user database.\n\n##### `superlogin.sendEmail(templateName, email, locals)`\n\nRenders an email and sends it out. Server settings are specified under `mailer` in your config.\n\n- `templateName`: the name of a template object specified under `emails` in your config. See [`config.example.js`](https://github.com/sl-nx/superlogin-next/blob/master/config.example.js) for details.\n- `email`: the email address that the email\n- `locals`: local variables that will be passed into the ejs template to be rendered\n\n","readmeFilename":"README.md"}