{"_id":"@aoberoi/passport-slack","_rev":"22-328e6c2f538bcb449030f081dc78b1f7","name":"@aoberoi/passport-slack","description":"Slack authentication strategy for Passport","dist-tags":{"latest":"1.0.5","next":"2.0.0-beta.11"},"versions":{"1.0.0":{"name":"@aoberoi/passport-slack","version":"1.0.0","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"4010612377ba89d3beb4fcc88e66c90bf998e5da","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.0","_shasum":"a900e232b70b8d1d966c1b3ca9ea78a672a456d4","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"a900e232b70b8d1d966c1b3ca9ea78a672a456d4","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.0.tgz","integrity":"sha512-XAXrMKSdZQKp3j3UERkNj11cE6ILIbH7GRz0OxV1I1LtMh3L+xCIMZSwf9hW06Y96ixmAU6+pR1zgo96WxrkLw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyPfEk0AVX/t4dtMWUtISkZggz/fOL6TKzmGw9EEN1/gIgaQRgDxxU1sPasJOoNFhYEQPCPJDl31UcztrJa/NZeyY="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.0.tgz_1481228295216_0.21204551006667316"},"directories":{}},"1.0.1":{"name":"@aoberoi/passport-slack","version":"1.0.1","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"ec13b816e4e1cc18c9d266c844da41d865a8d488","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.1","_shasum":"b9718ebf5ddb80caa352f7ac7c7a1972e32e169b","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"b9718ebf5ddb80caa352f7ac7c7a1972e32e169b","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.1.tgz","integrity":"sha512-sLUrJ2B+Dh/byvfIMFNEnd2tIcI8NG9pTH3kLS6HKo8Zu0n1q0DqMHSdJfLKhI8jg6j8L8RxbpjSjdIIUxykyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD01qj1UETwnffUi9N2kFvkf8xqTitXcuh95oH1SRgn4gIgALRqGKyI0iKTE4/EDAZTzCqXezBApRdKe6I3g60JosU="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.1.tgz_1482368009803_0.35918922908604145"},"directories":{}},"1.0.2":{"name":"@aoberoi/passport-slack","version":"1.0.2","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"db6bbc1529a4d00f43d33cfe6621d836be325a1c","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.2","_shasum":"6f3c0398aa1ed56d600dc030de768cadfb778adc","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"6f3c0398aa1ed56d600dc030de768cadfb778adc","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.2.tgz","integrity":"sha512-01H6LuwgCXT2ipSMxHpvQWywjMj+AvpvuptAKJj362yv191nqz2tNzgRmJp76Lna8EYO6aiRYYX3t1yGx2sGGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrgl4Vj3eObng9TiDzpEsd+NucDdXHExhveSZRN9XRyAiEA10BoBOT34TNE+9biP51q/VqlvhNCQIMaShLMfXIARt4="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.2.tgz_1482376109812_0.907597262179479"},"directories":{}},"1.0.3":{"name":"@aoberoi/passport-slack","version":"1.0.3","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"cab0e07164615782a3b44c24861548f393338352","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.3","_shasum":"e1b1a86bf649ccb2097477055f4cf9d8551a2839","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"e1b1a86bf649ccb2097477055f4cf9d8551a2839","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.3.tgz","integrity":"sha512-VM12fEoANtoo0NA5gvrzAGgdKyi7gt8IXQtrs85AkPvB64YH5si81sKRy7zH3uBJOufiF6yS+d+Wu6fm7zQtFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEH93FYGSOtYyZgo15qY0HaNFxWF7AWag5BBadX3AD1/AiEArnW81e0LY5zJhNy+jOoPp+zLDZOzmMFyHTCDwRwIHzM="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.3.tgz_1482451494165_0.2564105084165931"},"directories":{}},"1.0.4":{"name":"@aoberoi/passport-slack","version":"1.0.4","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"acabc683c3c29220e22092463a9c85bf270ea60c","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.4","_shasum":"2dd0170d8976623d27dd4babd26277d59a007ddd","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"2dd0170d8976623d27dd4babd26277d59a007ddd","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.4.tgz","integrity":"sha512-HUiY63+6kSZNLoOvjZKObH8YN01H8w6Qmc2L5uXVRaYdYt2vVDUVypSXHIamIb4U6e5yo3GUpiAirMbSJGcIQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvkfkqjdUx5dYKD1yF3x0HSGZCWzspt1tt/9vONZS3hgIhAJM0Vuhl47c20doWi7u0Un+3eWQt/2fFmV70F2Y24dFF"}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.4.tgz_1482983679207_0.8231854396872222"},"directories":{}},"1.0.5":{"name":"@aoberoi/passport-slack","version":"1.0.5","description":"Slack authentication strategy for Passport","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=4.2.0"},"scripts":{"build":"babel src -d dist","docs":"esdoc -c ./esdoc.json","prepare":"npm run build"},"dependencies":{"babel-polyfill":"^6.16.0","lodash.defaults":"^4.2.0","lodash.isfunction":"^3.0.8","lodash.pickby":"^4.6.0","needle":"^1.4.2","passport-oauth2":"^1.3.0"},"devDependencies":{"babel-cli":"^6.18.0","babel-preset-es2015":"^6.18.0","babel-preset-es2016":"^6.16.0","esdoc":"^0.4.8","eslint":"^3.9.0","eslint-config-airbnb":"^12.0.0","eslint-plugin-import":"^1.16.0","eslint-plugin-jsx-a11y":"^2.2.3","eslint-plugin-react":"^6.8.0"},"gitHead":"5ccb3b40f294f88d170ce631554582665795dad2","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@1.0.5","_shasum":"08dcd2d951e94d8e2934bd567c01410a0cc42bec","_from":".","_npmVersion":"4.0.2","_nodeVersion":"7.2.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"shasum":"08dcd2d951e94d8e2934bd567c01410a0cc42bec","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-1.0.5.tgz","integrity":"sha512-2mMa6f0IhLzdwhxpuv/I8P/QJa+6Zfq+f8CtTS9MY4FZrD4t0U4AAy+sEGjegmHGq+jKW1lzCMOqwk8mEgeH9Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYut/g3F1vyKHBUIx9683vjNMFHHcyjek9j3wjWnCCUAiEAtqI22EE9Fuwgn0JlmWeWsC1EMB8YT5oh2cj9UhKcgd8="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/passport-slack-1.0.5.tgz_1482984382868_0.6549688284285367"},"directories":{}},"2.0.0-beta.1":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.1","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/needle":"^2.0.2","@types/passport-oauth2":"^1.4.5","needle":"^2.2.3","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"c851baa9e6ca998a158e4d58074250bfe0097b07","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-Y4Fm7kK07oG2jqPAyThkoaNqsnS0sQKcZ6wDmMCWrBkLx6snX2pYKIVQRSGXo9ae2SNqkanWC03SFRsPg1YVSg==","shasum":"5a5f88e710f01f6ae8438494ca7cd48a637e507e","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.1.tgz","fileCount":6,"unpackedSize":27656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboCsgCRA9TVsSAnZWagAApbAP/1l8442Icrvkw/JUet7T\ntq0skevWZQ3wkdwuXs1l3aghWQES2FgBnTaBBOdCyM3KzR0mTIo9XhEfctLH\nRM6AzbSOJhetyu19GVevCPeKomsX6H9ZZBwWa8SnXBnu2DxaDq+Dn/NFrsCv\n9UJbmgEy3jbkntFLYJ7VAZqnLklgSr15Ll0kJ7w8l0aWnKmmBpxg/3gsH0Up\n6+L4VKWYScoik/bOqdKUnU66fftb6XDBZEQlmDU6iDE0OmcmfAw4Nn8JbPym\n92SXm7diu09rBQVGA/U05d6JZUihv6fZ6Mfoum2mR1F2X9bM73ZJCSfiSYdS\n9xOvzgC49UDEKUMNSHHscXJ5Z8XFfgsjpMHeRG3+RPa6Bfn/6YqcZGakRs4h\nZn2kSL6Z98G9k2O3CTb/SXMvRBxa7j6zcAvgvpB7QRFOZF05+7Sm8/HUDX1h\nzDTO26cgh9PCsyYs+KVAqIr6wGd4fexnNoa1FBiojO/PpEsr6m9M/A/r/NXG\nzEtduQDAsvcL0cMm+5K0AeVgnnQ6q93kABNlRy3BpJDKJZQTO/CnQCJ8Swne\n86TKcjeDGdN1qUTzbuL7PLHfCWe8E75F9Cvpc65Ovt1nDSZmIeHLx6OCZNEX\nnmlsh+0RJgqNtnYPpTrOaNls2dAio3otjwKwbrR3mOAqeD218Zh6ffl8vYIS\nYlae\r\n=2lMm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAf4gnP2FRJ7e0gQTDy9tzQW4LFAqsTSznFwU35ys2a9AiEA07zCDNLaPp4fo6sDZojI91TMPOXDAMl3emuPe5XEJRU="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.1_1537223455497_0.27575800276374407"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.3","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/needle":"^2.0.2","@types/passport-oauth2":"^1.4.5","needle":"^2.2.3","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"c7786b29d891a0e884a72ab00033d16e0b2965d1","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-NSSO5WqOlfQ535xiyQo2l8D9YvUN695JN9gVngdG3eatAxhBnq8KbuLqq2XCuDRjLZbGNVs/CgqlrCqbNwLYlg==","shasum":"d5b17477f1b484f4852692a81608bd3f1c43ca70","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.3.tgz","fileCount":6,"unpackedSize":28453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboW9sCRA9TVsSAnZWagAA3fsP/3h3VAp6IG6fn+m1qJ6w\nzqXveM6ogx+UFpPRxKrQ8NuOOxX9J9YiHsJMxjuMHuZ3o47b0k5QR4GxuROR\nmuL67OppG/FScBNCtl2rzuFvu+95AEZROS/ZblseCr5MXdHeRkjAZOatMYWi\n/J8IKj0EB3XRosP5w4gM6X5AxilUzdRhyRPNGf/lIzDd7LvLGnSA0RnmyFy5\nUDBI6jjlIEcsPqCeNLIFirv/FkrUEEwq+DPF2nSV4rDyptfRQvxw/62hCm77\nWzMe5FZRm/hf+KTdIbfzul4LAhL25Wb1a3RfkufNaKDi14Yi8JcLtf/+qGsa\n5/e1OucUYeoja1vPeWHRiH9woSveZ6S5rfjVT4ggkQyjYe1ZH1nSrJ3+AS2c\n9gx+W6PzTj9psUmXlp5YiH2RgcglcpT9MidrP4uZqMXD3aVsLUHQi6GMSE3B\n+yDhOmAd/nXglkNuFFz0FWqJFDVWN2YJW/rD7arSJeoDGj+U9Bp4Md5E5/M1\nPLtcLO1UJIZ5o/4UGiTxP7ARAPY4uGcE1PP9ZaGCIxa9+1UXr7Icq4K58GTx\nTln4aqTuHR0glLzLZVSKKuOr8yglKQV5tH0eLx6dusyCBYoxBKtQsPE/4uuI\nQ/hx7LahRKoSFpDB9YNId63a08chqTYv/i+P5JbI6/qYarZwD/a8vegMoghY\nLI9f\r\n=+BC4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE2Nmxv6NsqWCIBXnGrQd6Urbb/yluLVMl+whffvHt6lAiBcu08JP81kesnKC21pmtlkCNA5ULqrBtTUG0h1JQIzxg=="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.3_1537306475440_0.6743343765602186"},"_hasShrinkwrap":false},"2.0.0-beta.5":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.5","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/needle":"^2.0.2","@types/passport-oauth2":"^1.4.5","needle":"^2.2.3","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"75971b6a26536d8c031e73cb5b19518c6c87c164","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.5","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-MzSXXNiXlq9JJ2fhoEyWeDZaaE3krg1bScD+n/KvwbwaD0dkuRuF94M0hHCd4ZaH11pCNUSpQD/qHzO1mQ0zGA==","shasum":"f7d42b9c083e540563d12fca2c06b221c7a1e839","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.5.tgz","fileCount":6,"unpackedSize":28541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboerrCRA9TVsSAnZWagAAGooP/10orx0ViZ67afkI3HNV\nf+1XOYNZ3B7CKGP+tFSDuuL8asj1zreqI/d/3JBvDFGyAQByMrXRY1cOWqb5\nia7LlNjIKi743rBYnlCvF/5c6h9sgIPbDIf3vHRZ2YS41SxMvu50AoOxliAC\n2au0/tiY1/8OInP1NKyiSUZmhivZawRoEoLEJaGOPVbsIUB4uVx0BpIBq9fq\nKzdz5ji55TYV6LwgeVrJ+VexywWUB9XmcMqoWTXR6ihtlEFLBIZISTkJ5nQl\nXE0RSmohlSk48dXgBo2jsDYIad+xnWsgfCAUEMHDUaBF10EIELKlbmfqmusv\ncGyeazJnuz+aNvwMcNyTWHk2R+HlofNU9zy4v3DZ8D4MKYRjyMoZfXW75T8G\nHheT5Wyt3GySoEzQkjf3yBa6mY6w04D34OtK3P2dvy8YynEL5X2V0T0qblGQ\nCMWnismf5cN4NkJaiXG4WzWUzP0BascVcHdKmnvD57g6tUuk3ZW13nmb2fkr\nre9EjOQpOdUf+VfM9fB8JDf7vH2md8vQGFOY0Uk4fvxmZdCfhqUi8WeIDhRK\noJO8qUwZnXQiMh4sZlO/xSSOXuGN48LL+q14eyTuMFyLofpT3+tHh7MsZ7z2\nqqTLWtgmrtZxVp0rGNNjCTpr7TE7vg23LMSqT76r+bFycWhBJdMaBWtO3zAg\nYnOf\r\n=d9tX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZDWswF2gkvccioHWRpwYI+bh9bzZaNSLG1DS7PaE/WAiEAwE4owYLM4naqavrqjAijgo8Cbdt9YEJlwuL/h6H/liY="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.5_1537338091264_0.4617593801327724"},"_hasShrinkwrap":false},"2.0.0-beta.6":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.6","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/needle":"^2.0.2","@types/passport-oauth2":"^1.4.5","needle":"^2.2.3","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"da439ec6a45664a30091e365d455d48e8e33eeb8","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.6","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-rBHgo9YYGnoJTd7U6VSnxziHrU70W4V9JCmQ9mGjhuF4Gzwg7+rzEyK0yW40RmKWFT/Yy5jFbJrgPsNQWJWVxg==","shasum":"bd99173d771f8d8f8f80ffb5bff877d48f8cd1bc","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.6.tgz","fileCount":6,"unpackedSize":29162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJborwoCRA9TVsSAnZWagAA1WoQAKGqiP4S87u6Iz6wB/5N\nSX3VFb1fXd92NUpmoVZdENrW+QgmZnWXOAaBDwJAwz8V5tif9MfviMkkRPLx\nCbTMx4KZSn7iuNlrzHllGTgwBkNPzPaQ0PrFh7FpsBHmD7pudBolLMsLBhiJ\nKAMMlRAD22BzciQXv/ubBCccx1eNibi/A05H6yASexjpMjBWAS8oAqyPI2MQ\n8MbFxRMG+hV5JXyE0w9pLIauheQA5gwWN2YukhAyaliMFv87vK2ssXkMiOFD\nXHFM7LwMEjNM2akT6UQhh7mnY70Sa6uDvZe7cFj2KwG8lngtoqZgAaZAJGn4\nJF2eYtc7/DapRuse22JJ7aZ1qSsfxMM5wtMgr/d9nIXZTuoEmmlPMwg9QG3N\nOtdh4+yVNOI1WZrmj+eoJrX1/oDVzzNsaJJjiYlxlj/Cz3bybC1CI+fBPmWu\n3mlpGtbdXvYw8mndFPcODmw9qMGkvtqdvEyHSFeOREjL2Nz3dT2h/+Z6Lh4S\nATW2gI3NTuvEItsBwoJrL+5rbBLSMovjkjGFMn26inptT7FafcCSMvMUT8Yw\nruTUPV3F4tAVPwi9NIb+bt17YpsAXalMHIopNcNBYj4FyQeEEsRHxasmRAlB\nJbMd69kf3P2kaE+zrvp0s/B20Whf+81TZei4JFjVzUT+WuzyuVIUI9a8rctM\nIajp\r\n=xjQh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUWERCyuI0jWDiTwaRHqVAy7sujPOjHJYUxthFGD7V5gIgKXkuahQHW8OQY2GGCsz0r5MQF5Smgop0k5NKQOC5ZVc="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.6_1537391655703_0.7261009544663126"},"_hasShrinkwrap":false},"2.0.0-beta.7":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.7","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/passport-oauth2":"^1.4.5","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"2dc7be6acc675d5c9cd115edddcbb02f9f19e99d","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.7","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-gBoO/C9cgaGbGwNOdW+18d64Zeg1kzcneZjdeMTEKOy8mdN6GVORO9hb9UCoFyZWnEXiU43esJhU+biSUPeQ3g==","shasum":"f181367b889406e1fd3c07287ff29dc92e996401","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.7.tgz","fileCount":6,"unpackedSize":30635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbotMjCRA9TVsSAnZWagAAix0P/iys1W2PJvLFfD4MDaxW\ndRp9SeRcXbOLq9347WTKc8itfNTZuRyhHWk3bd17gX8kPnd1CWJJ5v95HOVd\nbV59+Zfz5Y6NAohVuP1wHSD7/Atefsaqjfg+SrJPk/Ku0L9RG5p51OV6lhu9\n5PpgN5Y//LsCvCHNbNSoWu7IiInBF7JbvmsqUMDZk5es61p5zuDAr3yZn26l\nG/ah6fG2RYwetIuqLBs/vbUyA2tHCiNEx+QX1WZYjktCKr6lnzH2hnxMN6x5\nyBBbmp3Q0fIjAY2bFBG5x2oaPFiMJoeRIqOVm8yREbIR4Yz/k6GnkzF9MW3L\nsDOiTGYnKsOKKvxgS4pKnXsTgpTg5JSs+zU7G9vW2KSgh0xTfrc5aNhJnP+v\navZowUCq3ZWWNjGqWLQS0+NwYa/1OBaDqBiiBnCorjft9o+3Z+yKaOQXH3AH\nRyzhmMXM4LBVObikTMAG+KDOMzif9cmn+NJnWnu9Y3oMJjS0811hwSexa0Ix\nLWKE1BVa7AjGcautMBwcgkVGDHzyaITNEjm2iIsIUVNBf3IWpD5ipSD7nWW2\n7PChtqxbTOghNX1V1Af5nLyqYhkL5WkypOuF2TbtYKmOQG1Sv4GfYJl3fpPu\nlCp7wqxpH1gsteZAfE3++pUpHuZReJogKzI9cxNa3Tf+r0aDq1ulRpewyKeo\nI8c3\r\n=Phk9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrc4fuwJGcvlraXdgVDM9QiYl5HlecsEU4oeVvv5GUQAIhAPZnvQTNj3nqzLbHqvc2IV/Mna0M/tG1svBUxIa+zoJY"}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.7_1537397538341_0.06880065686879466"},"_hasShrinkwrap":false},"2.0.0-beta.8":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.8","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/passport-oauth2":"^1.4.5","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"9d7d75f901d10eb1777b24d0189c24877603dbb5","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.8","_npmVersion":"6.4.1","_nodeVersion":"10.5.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-LDT9ijTrNGPcAfQJTUuCywOKIcaDLbwIN6eMa7xmw8Gf43Ua4dB740C3OKjk4HqQ/J7G7M6t7l9DZLwAP7t2VQ==","shasum":"7ec9100a1b593f5edb67cfa751325de2e17fd534","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.8.tgz","fileCount":6,"unpackedSize":32264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbove3CRA9TVsSAnZWagAA7r4P/0rplxjeS4CgtUP+kKia\ngvDT9QfebTItMGsMeWsCSSJKoUOjOZ/O9mpA86fOStSnIQn8pvLoK9+g7aT0\nyhZj96Klu2+KCvKjE6KuU1K2x+1Y8qHDkj8YvVeuktFDisj8EmDYYW1bTkjB\nf1xt0zGojdCI6p5NlzkoBpbWbmAVBvlTG38MSu9y+eshXMFRTNsCxsgIKBBL\n8Q8KNNGvJeAcuDH/eYE+ecRRgLFV+X7EcKr5+jiMTP/TrVje0hsxDmp9mSX3\nsPBrbooD9DY8q/kTIFNLbsQ4BBDELkCQE3CHmOxs9bsm30gqnOzaqQcaK62r\n+BZXN9TCDl/u0PiGZn8mOsfVjYmVDySewwpByw1ZKTUY/vA+CvK2/o+TR3zJ\no498qYa5i1sQ7pAXMejcQydet8lCtfzUGmjhgzWD438kzPrR92hMcn8quKoq\n3bHYImH4DMRvGMGMb1tyTJnCzu/BPsyjIaHTd95CcEYNJYkJgHH1nfo8R52z\nIWrNTm0uhBmsS8MV2PMZYeuTB2mHKoZ1JwyyMiIrB0E1F8nAaE1U1qAAw1E+\nsSP2Y7RJx8uPsL3/5bMRWQUKHIh15g7yjiL0LfSMhOIyzQOCUHz8ddY/pgnH\nQLdNS4rmAEbdSDwHebd5emXCxv8jLgF6XfOdjMIe9zvq70LQod+Cm/qceaA/\nLOWv\r\n=g/GW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXOAoDBANQSEpALrruYaMYPal5a4CjOJEEabyUYeU0WgIhAMBn4adO3kCQvFgRBOAno7EQ6TUhuy5rOamN5GircsvV"}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.8_1537406903095_0.011512642825387331"},"_hasShrinkwrap":false},"2.0.0-beta.9":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.9","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/passport-oauth2":"^1.4.5","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"8ef4acdbb107d2ff40eb5753cd5f3884e9a45c4e","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.9","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-g4J2rz8Qp/wJbpFlMuspb5+Xc3s24raNg7T5DcgXTRgBXbvMqAyfeVCyFvtVr42OR079JPcmuyqQNlsmHcAhcw==","shasum":"91235c4d55a1c2281a25cd8f5c4959a9477961cc","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.9.tgz","fileCount":6,"unpackedSize":32501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboxy7CRA9TVsSAnZWagAAjm8P/iCj7KGNXsUlnu+fJ4/Z\nsIoEUNPxDlgBRhg3Xb9h1CoJTvCJB7fDI18KYvgxAM6k+1gvPTBT6yGWJ0ma\nmEOxlb9d3/DPwlHydCMikYOQdXocvqOyInXS6YGzZw05u8W6R63j88RGNdf4\nHlwTgnlBFxhatqdBG3pK4p+DW4LVgsdWFx6JLFOLpGb7gJU6fVPCHErk08lo\noGL6j9RkljbbyKb7sDjOjqI9zYWc6khfJ3tWeaWI9jQLxd8TA+aIuOLZYKSf\nvvHt+1kpxjlOfV31fxv8ltQATopHlvBxMTpV+GAmP15TU9RbP3q/Pd07Cr4r\nHmZMLajMRMtAWasy10Py08CyPxLN866ln8Cg5lqNVNM655V1vbH7pkXOupQ1\nykcOHm+dOdd+v2e2fMg4nkSQajK28tM5aOTLRjWTWufOHcBT5Fx0EjdDO9Zv\nD70JErHu8ofozHL/NXtWJwrCShOMvH7s1Cj0sZMkg08CqA7X0rsYrpDf6orZ\nZziDsjAN2gCp7eLIASP+x22Am/DL9l+PLcKUAdO1tBn//N9LFPXOepA8WYMV\nN5T7kkDQQwCt1LjJLmPFA2k4QQvOAfPCK8lw66fMFLegywIGKYTL4v1yLy0h\nt8XJdHYgZCdCdD+oZY46KC3BEIFUP9AcFal7FXHqD9gWbP5z6vG5K+qPEmNN\niUdb\r\n=rxi2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBINSxtNy8nPuYZcJfogxLoby8ApzQzw727lejEMs05AIhANuXRVqkvTlgJSPfSLpI2dMR5hEx3WrUcGhN0Yb+Ucuq"}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.9_1537416378995_0.07307807612175332"},"_hasShrinkwrap":false},"2.0.0-beta.10":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.10","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/passport-oauth2":"^1.4.5","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"3188ae947a3fd8483f8ed6332241987fb7b80df7","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.10","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-EhcCkIbkn+lDbkU5rOpZdTZbYWJTG6kKvd3wP8Smyj87Vjy22xfIbd551TSgAAdcdh51P5EkwpQljkPzPtnr3Q==","shasum":"79c99eefcc4451b7728e1cf001df46b825acd357","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.10.tgz","fileCount":6,"unpackedSize":32502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbox44CRA9TVsSAnZWagAALCkP/RsAalPTXg5hdY42NerV\noRgujNuWBd6uoPP9gui1yQqg5zrWH073Af4yHUq5Za/1kvEjCkInNDW9tChv\ngRzjrILXsdH4CSt442GsJcRW1rLozeh+cKccwto0GuKLcz8K3f1Ec3BEQhJ0\nf4XVxNdToNAUgcidvhJfdok38N5ZYky/psAjRXuZbSHaGdRSyoprpiHY0/Td\n+Fc8739F+a3/tio/oJZzv2oTebX4dzKPNVbfS3rkknh5Oz+Q427iXOPnhcuF\nvXScQI+oiWg3yL+kmRkUmcfHQ3pEkKAXYszngFpW3De4sQ2Gxie/wzGgwxwW\nwYwlXfdrG5gaQuzaWcgZ6vyPq5VMPY/oRlrN6xAEQbR3lm0/7w4bbG9Do3a0\nqTQx2tnJO38pi17C6ngtIULzTrdOHbhVMnAojasxo5Nttmc0Vh+OHoMDChQH\nwUU3qZ+oYCCF9dsxqXXv8LaCRigVb+8AQxVbXoddFghVWparJLHVAWlOtjt1\n7QI27Y2pL6oB00NelmhXKMxHuxYzqmdUKx+Et9dJY2NYtSZP/5JCYy9DAYkd\nE8vjtOaOQcJm+jy3xRCSqE5Y+acfV7kyT7K1exSCTRLTVe+oCJQdExwKj+MF\nNc5kUFoD9vBW8NQ+1LwvWTlztJVJV8JfVbkW7ti6E2xIXNDWMt3nkdk+KJTF\nwpmy\r\n=sMKL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICHd3COnX7a9t+GsfdiGEkkHsouol5UVYslIp7HVsHPgAiEAyb/npwaqGTlluMu9wZEOciXLXmrj+aN/X5roYrtlUuQ="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.10_1537416760125_0.8665824708093255"},"_hasShrinkwrap":false},"2.0.0-beta.11":{"name":"@aoberoi/passport-slack","version":"2.0.0-beta.11","description":"Slack authentication strategy for Passport","main":"dist/strategy.js","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"license":"MIT","engines":{"node":">=6"},"scripts":{"lint":"tslint --project .","build":"npm run build:clean && tsc","build:clean":"shx rm -rf ./dist","docs":"esdoc -c ./esdoc.json","test":"echo \"Error: no test specified\" && exit 1"},"dependencies":{"@types/express":"^4.16.0","@types/passport-oauth2":"^1.4.5","object.entries":"^1.0.4","passport-oauth2":"^1.4.0"},"devDependencies":{"esdoc":"^1.1.0","shx":"^0.3.2","tslint":"^5.11.0","tslint-config-airbnb":"^5.11.0","typescript":"^3.0.3"},"readme":"# @aoberoi/passport-slack\n\n[Passport](http://passportjs.org/) strategy for authenticating with the Slack OAuth 2.0 API. This\npackage is helpful to implement [Add to Slack](https://api.slack.com/docs/slack-button) and\n[Sign In with Slack](https://api.slack.com/docs/sign-in-with-slack) for your applications.\n\n## Install\n\n```\n$ npm install --save passport @aoberoi/passport-slack\n```\n\n## Usage\n\n### Create a Slack App\n\nBefore using this package, you must create a [Slack App](https://api.slack.com/slack-apps). You\nwill be issued a **Client ID** and **Client Secret**, which need to be provided to the strategy.\nYou will also need to configure a **Redirect URL** which matches a route in your node HTTP server.\n\n### Configure Strategy\n\nThe Slack strategy authenticates users using their Slack account and OAuth 2.0 access tokens. The\nClient ID and Client Secret obtained when creating your Slack App are supplied as options when\ncreating the strategy. The strategy also requires a `verify` callback, which receives an access\ntoken for the user, the scopes for which the token was authorized, the team in which the user\nauthorized your application, and optionally an authorization for a Bot User, an Incoming\nWebhook, and the user's profile. The `verify` callback must call `done` providing the value you\nwant to assign to `req.user` in authenticated requests.\n\n```javascript\npassport.use(new SlackStrategy({\n  clientID: SLACK_CLIENT_ID,\n  clientSecret: SLACK_CLIENT_SECRET,\n}, (accessToken, scopes, team, { bot, incomingWebhook }, { user: userProfile , team: teamProfile }, done) => {\n  // Create your desired user model and then call `done()`\n  User.findOrCreate({ slackId: userProfile.id }, function (err, user) {\n    return done(err, user);\n  });\n}));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()`, specifying the 'slack' strategy, to authenticate requests.\n\nFor example, as route middleware in an Express application:\n\n```javascript\n// Visiting this route when not already authenticated with slack will redirect the user to slack.com\n// and ask the user to authorize your application for the default scope (`identity.basic`).\napp.get('/auth/slack', passport.authenticate('slack'));\n\n// The user returns to the your site after the authorization above, and if it was successful\n// the next route handler runs, otherwise the user is redirected to chosen failureRedirect.\napp.get('/auth/slack/callback',\n  passport.authenticate('slack', { failureRedirect: '/login' }),\n  function(req, res) {\n    // Successful authentication, redirect home.\n    res.redirect('/');\n  });\n```\n\nInstead of the default scope (`identity.basic` - the least privileged scope for Sign In with Slack),\nyou can specify your own as options for `passport.authenticate()`.\n\n```javascript\n// Sign In with Slack with multiple scopes for increased authorization. The user and team profiles\n// in the verify callback will now have much more information\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['identity.basic', 'identity.email', 'identity.team', 'identity.avatar']\n}));\n\n// Add to Slack with many services. The extra argument in the verify callback will now contain\n// authorization data for the Bot User and Incoming Webhook.\napp.get('/auth/slack', passport.authenticate('slack', {\n  scope: ['incoming-webhook', 'commands', 'bot']\n}));\n```\n\nIf your application is already aware of a Slack Team ID that you intend the user to authenticate\nin, you can specify this ahead of time and save the user from having to select from all Slack Teams\nthey may already be signed into.\n\n```javascript\napp.get('/auth/slack', passport.authenticate('slack', {\n  team: SLACK_TEAM_ID,\n}));\n```\n\n## Examples\n\nSee the [`example` directory](example) for a simple Sign in With Slack server.\n\n## FAQ\n\n##### How do I ask a user for additional permissions?\n\n**TODO**\n\n##### How is this module different from [the existing passport-slack](https://github.com/mjpearson/passport-slack)?\n\n  The existing module is a great start on adapting Slack workflows for OAuth. On closer look, I\n  realized that the way Slack does OAuth is a little different from most providers. For example,\n  Slack uses OAuth for Slack App installation, which is more than just authentication. I saw an\n  opportunity to improve the developer ergonomics around making a library that aligns better with\n  those Slack-specific use cases. Here are some of the key differences:\n\n  *  `scope` and `team` are options at \"authorization-time\", rather than when you instantiate the\n     Strategy.\n  *  the `verify` callback's arguments are designed for the response you receive from Slack's\n     `oauth.access` Web API method. the useless `refreshToken` is removed, and data about additional\n     service authorization (like Incoming Webhooks, Slack Commands, etc) are provided.\n  *  documented all options (including those inherited from the super classes of `SlackStrategy`).\n  *  remove logs to the console.\n  *  authored in ES2016 so more modern syntax can be used, while still transpiling to and\n     distributing ES5. along with modern syntax, the source is linted to adopt consistent code\n     style.\n  *  removed unnecessary dependency of the OAuth 1.0 package.\n","readmeFilename":"README.md","gitHead":"0ae133cf91aa83308d9f933f081a37ddafa84501","bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"homepage":"https://github.com/aoberoi/passport-slack#readme","_id":"@aoberoi/passport-slack@2.0.0-beta.11","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"aoberoi","email":"aoberoi@gmail.com"},"dist":{"integrity":"sha512-mvHJmTdcKcyJlZ28xrzBo+AZL+AXr72gChddFQkVsGKuhknCqE0yJA4ARGjz1EQ3bFrUhOJsKwiVsH6UYZwE4g==","shasum":"3ad3b2559fb841d1cc0f0b639a3b93fd017a3a48","tarball":"https://registry.npmjs.org/@aoberoi/passport-slack/-/passport-slack-2.0.0-beta.11.tgz","fileCount":6,"unpackedSize":32504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbox9mCRA9TVsSAnZWagAAm+0QAIdId/Cl5mf9fvbacE5r\nqlSQSWeFEWEuMAIkY/OwlkIjhyFhmZsMs+s06m/oMSE8SCSF65r94ygokAMC\nC/cVApbYRJ11s2D5828/bIq8vyfsFHBCm7O0nhM8At+Fw1eINkvR/+89T9Uy\nCL49DtNgMoUmp+HxPeiL6rhV+stgtOS1bAbyZuwCJA72VsxjA1iw5+MuVTIh\nupbLnVIp0TRJ9PecFddP0GmFufh43Sik2Aobp/CA1vop2ZitGrWKa/8hh3+j\nqcl+mHkn2xM6+5gEr0rn+pPoZSNkjKNAie+zjWTV1TxLpxKXG7S4B4EtvM8s\nwYY7Ev1u2IcrGvxp1isCXMtOvKfHtPsCXd7FQyTdbiZU7u2qzX0j40wjRpE5\navWWAoPATTdC1I24kS/KLKZKBYLcTjw5LTPj845qWQ78GYbWiXGLT709zxW5\nPoAfUBSKbidxb+O5uklOyyFvNCwvFE3BIwmLGWjCROo5YNBFIOMDo/f27XjA\nUIfWZI1LZ3xbP7OWZ4Mj8PlyOLgKeN3qElGoy3ApFqDdJvmiWu4USKdWnMNW\nOmcR0kFeg8umVtyb9yW8T1XBI05pPt9z1YSeJQ8CzSul/bHo5coAGTz9bwfy\ny0hw9bO59ESFrpH1IH9NeEdAC4rxfrjClhSBgJezXe2pEisgSFTZivLYkxpf\nkXqe\r\n=y+D3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNDTQPgW1kwmX5pKRFRr6AUfpI5ElPAv+f+cn8DugHdAiEAm+ZXVpBe8YKPKszPXIOde10AXptLJAyx7cg+KiPqTIY="}]},"maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack_2.0.0-beta.11_1537417061457_0.5700491051276235"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"aoberoi","email":"aoberoi@gmail.com"}],"time":{"modified":"2022-06-12T14:43:25.892Z","created":"2016-12-08T20:18:16.989Z","1.0.0":"2016-12-08T20:18:16.989Z","1.0.1":"2016-12-22T00:53:31.832Z","1.0.2":"2016-12-22T03:08:30.039Z","1.0.3":"2016-12-23T00:04:54.396Z","1.0.4":"2016-12-29T03:54:39.428Z","1.0.5":"2016-12-29T04:06:23.089Z","2.0.0-beta.1":"2018-09-17T22:30:55.811Z","2.0.0-beta.2":"2018-09-18T21:29:34.360Z","2.0.0-beta.3":"2018-09-18T21:34:35.606Z","2.0.0-beta.4":"2018-09-19T06:19:08.998Z","2.0.0-beta.5":"2018-09-19T06:21:31.368Z","2.0.0-beta.6":"2018-09-19T21:14:15.887Z","2.0.0-beta.7":"2018-09-19T22:52:18.520Z","2.0.0-beta.8":"2018-09-20T01:28:23.237Z","2.0.0-beta.9":"2018-09-20T04:06:19.143Z","2.0.0-beta.10":"2018-09-20T04:12:40.275Z","2.0.0-beta.11":"2018-09-20T04:17:41.569Z"},"homepage":"https://github.com/aoberoi/passport-slack#readme","repository":{"type":"git","url":"git+https://github.com/aoberoi/passport-slack.git"},"author":{"name":"Ankur Oberoi","email":"aoberoi@gmail.com"},"bugs":{"url":"https://github.com/aoberoi/passport-slack/issues"},"license":"MIT","readmeFilename":""}