{"_id":"@airdot/linked-roles","_rev":"7-b45cafa8f66e3d9bb5f44897cbf38df3","name":"@airdot/linked-roles","dist-tags":{"latest":"0.2.8"},"versions":{"0.2.1":{"name":"@airdot/linked-roles","version":"0.2.1","description":"A powerful package to create & update linked roles for applications","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"licenseText":"All Credit of the Authorization flow goes to this repo: https://github.com/discord/linked-roles-sample\n_______________________________________________________\nMIT License\n\nCopyright (c) 2022 meister03\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@airdot/linked-roles@0.2.1","dist":{"shasum":"1f0cb49427272dfb7da72618cacbe5d51c32c103","integrity":"sha512-PTVr5+d7ZJnzQs7czJoYkcpqjIT2sWNqM/70fugUNJBZPd4YrYClIs7Bz3/BjwjwYBBrDb8Cjh/3GYYKg8Pexg==","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.1.tgz","fileCount":41,"unpackedSize":54553,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCG6iGwK2dPeMZCI44iSBnMyIT8nhWeP/XaC1vrBOUhAiEAp+okTi9pjCOsMVTceN4LGsB6quR8SItvcyXVjnNo2ao="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3dRgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrmcg//ZpCrUTlcjGLXI9rHyl02Rtwv9yHoTzFymCOy9JZzo/rVAW5j\r\nVKyx8XNpBSk/WgiwLQqc7TCBXofuUmlBqz7SZYh/es6TuERkSsKFGSsTZ0VI\r\ngC0Vyl5XYRtb4Yl8g4W0sh2ZXdDxWJukmwdDdSsB+UfPFr8OirYDlW6ZEuKx\r\n8gntPNgf7Tz+o7pcyj99rB3NhjbyDHEHd0G5ZZpR8/z0WIsZyYNkbnxNPRb7\r\ngzzdQtyY2Nxd34wFdaa/5Q87zjFiQbgOvtKsW2AijV0cuExJaVuTPaZyZ7rx\r\nTWJiKR0uEsnJcew7H+93iuv2TCf048SuaMCwe8xKIl45aB8Vqrv/lsgOzT0I\r\n9w1NmFnYY0obToksCyHiaTbKhG8o0/oX39EESusO0gr2HfrjbLT3jgaXnwaV\r\nFO8KGNam9KzacQJXlx+geue3Of9OAbocN8G8B9Bq2pGx3V5z9anpVyazOIiO\r\nmJmCTxPh4Z4lmzq1FLvJBiuFMDzE7Uw9sdRvfj5bnRuw9eq9eF7jefGWvxOh\r\nW8rb5IWNDJRD/vmMHA2fNYQ/VSx3VCkSus0FwjZTOj05/SfmZ0a7RCtIJaOW\r\n5LK+YfBnj2PJzUrfe92bb9GjNwBnZHIvCcY0y6fTKj/NHvOYxaurOuhNDXUc\r\nQ7idJ3A3Lu+D9vF0bsLjdgGFdoYdOQ0Y3K8=\r\n=AXm5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.1_1675482208795_0.5369416516694812"},"_hasShrinkwrap":false},"0.2.2":{"name":"@airdot/linked-roles","version":"0.2.2","description":"A powerful package to create & update linked roles for applications","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"licenseText":"All Credit of the Authorization flow goes to this repo: https://github.com/discord/linked-roles-sample\n_______________________________________________________\nMIT License\n\nCopyright (c) 2022 meister03\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@airdot/linked-roles@0.2.2","dist":{"shasum":"59877307a9cc9a4a31f1f658ef809f94d321e9da","integrity":"sha512-NZU33XTkM1Xsv3FDQDCqM/7gPghydCBpWuFXYeBMVOIFHp/poJ4V7C4cxgO2/AemZZL4YrEtrJ+31wXPUqOGrA==","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.2.tgz","fileCount":41,"unpackedSize":54474,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBTshUNcA3cbkLGZjBX+1blHnNHdDPRtnYuctE7ahW2aAiArl6OGklWJ4U14IweOAI+MFRZmihLOKSMrbPhg67vg7Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3dZAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq4ABAAmxH1wZmWAI/ifLQE8VyLvA295ZXzaUUMP1Q10z4wnWdZ7vD/\r\nJiY/Ujqr5bl54U9X/8BNzehMQuB97cAw6nu0s+6w/fVd+kTPauOZx4RPQbNR\r\nPXfdcb6tLTwjTpdUItyeAz+q3kHK/8dYuXRh9zAsw0gqTCU8mpCIVrM5KB0Z\r\nZPmUrwV1d2LpkPhJpUuPdPH/wm7VFLRQS8zytIykjkTeyzHOcqqaSWWu3ie/\r\nRtZtIbREWSp0s+Qo47idQ5osHMfPAJ9uIhBVbib8zlqLCjURBZuIYDjUrwZL\r\nIYTRz4b9Lqe8QOdVIbUl7+vf+M+oASYViA2hdF3rUbAcbqhmwqICs/cxxrRR\r\nf4jf2r2KbO6cVAj0PgueoEwB/4mGEyUmGyhPDsSmuB8YyX83y5QfcgYPc4FN\r\n0s7MC0qKG4A84iCpmqfjxy9RL6ohD08USblhyZ1DFdYjq5u1gkpsvqxPof57\r\nnc/FsgTwEVfOEcHCF8rzYjSDzNv1srGEO02qrQO8R8L56yeT5rKecc6Z2sIu\r\n5IhEbxr3CR2sKH7wnYLW0yOjilW7pnMvbVrqGAGeJi9kqmXuLSm0HiT3pSuL\r\n7SlXv2uG7aEKJM6Bl7Lx5a2EUPwOzsunAZUTpg4iRHV4A0RC+o3ySulZH+iE\r\nVlJ3qKm5ZNSaL1+7BbNTu/vOGmQTWteHv30=\r\n=wqL9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.2_1675482687961_0.9777727289775615"},"_hasShrinkwrap":false},"0.2.3":{"name":"@airdot/linked-roles","version":"0.2.3","description":"A powerful package to create & update linked roles for applications","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":"meister03","license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"_id":"@airdot/linked-roles@0.2.3","gitHead":"7aa319926bb9d2510e71c8d3fac460d84dd7b699","dist":{"shasum":"f2b3e8d3277f716361f48082481c73cf9ca704b5","integrity":"sha512-Dclb2iBI2Se/betAt3CddOQ7IHUQqYzsyQ4BT2Ez4pmrPEye9I6pK6RFUXlf9ccEZzIMBAimzfhbG1QvIKLc9w==","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.3.tgz","fileCount":32,"unpackedSize":54302,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPqQAPM4T9+Ioy8Xi3F5lD75PQZBnkBIqVsTLZucE1AAiAP0Pcb4pL1nhMOLnuBFSZkOVqffRsRWpN03gcWIgxkog=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7F5qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVXg/9FOZeQaj8tQ9TWnYxWUoCG/XmQ3nvftLl8ueFG8zY5cdLb0O5\r\nd6llkoEYick5XzO2tK01L0woXgDBL+CbFjg54X7kJtSD+8nzYnoJFaYFQaKZ\r\nZEd106S87qfOC06omVTabJSbg1QC7smpGm2jXNdg/NiMYlrZ8C7UzyfQ6Fhp\r\ndvF7SIUZ0gqgSGrhN4e0H/xHocsHIhBv930V+CDIh7r+T8gomfSb61Psxe75\r\nmh2aU5b/L27W2lfT0Es83K5cJ7zcFlyMpGZ29f9ioyx8+rNVjUYyDmKvWu3S\r\nAx1SGkjPLe7XjdWX/aVMzZXF8Rr+or6ixXUkz7o7YhyQmgsBvn8f/8siO/+L\r\nFGI//UO3/DDnJlVIfuIZVpjK7UGtDEDe5jTdSPezkuMsCLpXy9W07Q8ATveT\r\nubY/yf69vxzuNRRRD6ChJdqxBo2iG5YxJj5h+7xcCY2xSAcLk2x4TwGtvnuy\r\nkPPaPqolumiqe6OV9fSP2V3lzLG6Uqe7oFsoXqwTn/vSCuVziwzO9I6YAmis\r\nqQQh9+hqsDF+4YYNoC0VA+n4iPA528Fwru6nyzHF+z3ffGaIWyDTSdgbMcpn\r\nwwGPqeB/DMRvGY7v7dTWQ7jfPJowNrNCEfWbf//hbryfT6EHCJZwe3bhNOuk\r\nNGjYTa5Uivd6PwZyj6rhXHBxoQOGjtEy1w8=\r\n=+3hL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.3_1676435050135_0.7998368196920347"},"_hasShrinkwrap":false},"0.2.4":{"name":"@airdot/linked-roles","version":"0.2.4","description":"A powerful package to create & update linked roles for applications","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"resolutions":{"discord-api-types":"0.37.35"},"gitHead":"50b448f41017998811c31d331c39515929e5bf50","_id":"@airdot/linked-roles@0.2.4","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-YVQvYx4A1kkIrkogRGAlApqlu/2p0xdcEyuX5MzUmQUb1lRUQ+KagOnd9q35WTONE1bTWh4Av2056cmV7gA8Cw==","shasum":"98ef9d7e1050416af1987c351d3ac19659b8c1cd","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.4.tgz","fileCount":12,"unpackedSize":27756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDoYGQlsSvesYkVWGxA7F2tXG6gVWiNzWgJxKjKtdsyGAiEAgVdbzvKS983y4GrmI5kTOaVTIe0HXOrgeTjYnqbkaA4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCmAuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTLA//VAm58ApbXX1OnH67fgAgCsF2sccNlRGFBCP3EkBMfoUbIOFf\r\n+0zBySeWk2dP0UU43iK5zol/41eg2keZvQgsNLlDfWwZSQPOIc0cEqDngoTn\r\nlo0ff/USJyuyY6vTEP+O8hrM9jTh+gn3g/u2qyW6HD0qpXTe/xVhonfFwvXG\r\ngMwRr6WeLir7xEke1uIpPJgSUVPxFg4BYiEGfoyMr5P5hRf9kEQYqdriOF53\r\nUILU9GcsFzOkVdpHH968+YTNgpww7vwa6UwHlK9fvo0ntHgZ+VZfje2bWy15\r\nkRskzjXk5Urnr8YOMMK3Si63Y8MxnohHrq/umC5egJvnNEr6CiLqO9IxQkVH\r\nyeg2y4esG7k4d5Tl2QuwoCBJB1EhYayka/p/dG01qzNJzQG8UQDDr8ME4ppj\r\nECUsagY3ljQHmlJQbdbi0MX738lBrYTnXQJ0OjGTcBla01TrlsMLaxNbtpR+\r\nWKBHYLh6vpOo3K6+lhL+uAqEBLTeOa0+EqJ47oDBopjGe2Yr5xoYaKD4D8Qm\r\n/tnULWShsSaIZ7hUCyPhcXXpqHNDL1zD8rrnshmJQlZBt9XsyfXfM4pwm6N3\r\n4GlGRgrtOaMMoEY3bgNw1Nj+sIZLbZ56X69ZCa+e1jFfRpAWeey85p86HSjA\r\nl8leN7PH6WGpuMC2Dvx0humY27PY9vUnbHM=\r\n=ksdP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.4_1678401582129_0.9670076934662035"},"_hasShrinkwrap":false},"0.2.5":{"name":"@airdot/linked-roles","version":"0.2.5","description":"A powerful package to create & update linked roles for applications","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json","build":"tsc","prepublish":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"resolutions":{"discord-api-types":"0.37.35"},"gitHead":"53eff05bde40e4ab784b0afcfc95f7aed03ff05e","_id":"@airdot/linked-roles@0.2.5","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-qXApYm3PezH50Kin44C2WXvh6Twfm1NJgBqrFELuY9bbIjUPOOrLsYTL7TRn2qbqMLjeNBuqqvQhnzS0MLaHkg==","shasum":"c73c15bec5a214ef915e41c4e7a4c57651ce9d93","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.5.tgz","fileCount":33,"unpackedSize":54663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNS8nW3k89eTkN0efaYv3r+vjaiLy61rezpsuB/XGkHwIhALHHhS9eCB/ewgCqjpXV0tRMvDeku1vpUiVHTrQoYYgW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCmVaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqw8w//TrKsH1oBWIbBmn4Nu5dBL4bQYK2ivr/qEeshELxVQv1XSY6e\r\nHBe2h68eycU1lXX3GAxXdiI2TCvMIKXIN4a6kfoT7djqKL7XcVYOGaSKbrQO\r\nbNtvBX0csI2313xKWMMWwQ8AlYjls/q8d+hgIu5SnKmDTy8cdeborolRvuHe\r\nEVo4Mbdh+Ua32YpBjO92+V3NM289MzfrvTOZQlnDojzsY2POxIAjKkM9FR/5\r\nSHoaLy70C8I3nsLrRYMwlzFxuQS1+8bhFcc/XB1nesgscQWvMltWPgOpAGSs\r\nmYs+CaRyrusBUdlPdrkD25uSRLavKkK52bTIs20ctSTY17PSLhLnHpp6Y2xD\r\ng4LU845snMdZY9QTDPJPNJRLVmfOKw7c16a5c9X6FCdV6jf2dRJ5umZh5HUS\r\ni+6km0BLFoR47aXaFj7Do0hJpLgQFT8zVWzbiPpgj7ZmQU2iZbohtqfuRaXx\r\nrxoi9ElcoKt1r6mHpTQwjGTsxh2IZZ3qqIGVuT38Ht9A7OW19e08hQmjxzT3\r\nmy54lstaPKoaWg5yeBgL/UQY9KrqTeIT0BK+/+BO7SD/FVisNg4gbywu43pl\r\nVWWBnIHlOB7cno+H82KGjyMGCWbdr7q9Nux1wnBIMesdQCdCDZwlm+CG+s7i\r\nxqoJ3bI+6aiaVcx1KZop5DjbEJv+HVl18Vc=\r\n=dT3g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.5_1678402906342_0.21434798800811605"},"_hasShrinkwrap":false},"0.2.6":{"name":"@airdot/linked-roles","version":"0.2.6","description":"A powerful package to create & update linked roles for applications","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json","build":"tsc","prepublish":"yarn build","install":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"resolutions":{"discord-api-types":"0.37.35"},"gitHead":"e387cb9bb8b8695b5632569ecfa7675f7fe6ae09","_id":"@airdot/linked-roles@0.2.6","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-JMX4bbmOnMm/YJpotIAw8NI1L6ynMENUIvEj8gF2meNv629CwrXiIwtAz5h9WlM+at726RvrsDcAXYVEgOJrEw==","shasum":"244b8e978fc5fbea504427dda390381642de4945","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.6.tgz","fileCount":33,"unpackedSize":54692,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmRcsNZaDwYYXrPe0t5RaQeZhT7/HPBag2F0N557z7OAiEA7hMxA7KFaWV6oNJZUJab+8z7hf745NLxuEAPs82AIAo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCmZ4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpsjA//ejmpugE5e2tKxEXhfTEFFVsDbyUHml5qpW9KMAui2TG3yo7u\r\nFubYx0LanNncmyx8mH31570NCFIVWpMoI5RP74fAsW249dtanbWiISHGfsuH\r\nQA0rM42HaAf6IN1ZSVSha5Rhrz24tZkGaOdDZuvs2Vp+I+CpdqFBaTy3ghxe\r\nfjeMIc9BqfRIkA48wCbW47CSiCAnefPqCqdP4QGgWpZ+3HZJgbycejojH1VZ\r\nZV8NslcLo/abqlxqtE3ARyYMxRvvCeiv/ldW+YaY5kVcBb1+Gbb2s54YCb+C\r\nPRt/cYPFzuR7lFKfqBvu3+j2sH99FnhGGWyn7LtHRquqfKhTi9nCpl9QeNhk\r\nGGo01KG53+YXhhfhghUeTXwOx+/P61Jyo8XtTUoPbx9o9af2cti1SQA24Inb\r\nyqzO2TzSOjBuMHNA9ll2+CIysqiCb5gFvtz1AI4sZ/C3ryimPaFMgtlmOAWx\r\n5FPcnW3oL49RLpyo3B4Aa3j2FjrUp8uCYLs252zheCwwrUb/gK01xCLTcba9\r\ngC9xm7fJuXhV8a5LAGVcUO+VqPpr7zDJiZmA5P423yEibYQHhUvWTBSJSo9j\r\nE7Zelfgt6/SWRDkA+zd1+OIqcMSZ7Yu1p3u2wRaN3r48Bg9DjtasEmozyRcV\r\nXlK6Z8gSoxfN/Bf4M0CNUZgHBmyB3ezM9tQ=\r\n=qU/I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.6_1678403192162_0.8587779161347562"},"_hasShrinkwrap":false},"0.2.7":{"name":"@airdot/linked-roles","version":"0.2.7","description":"A powerful package to create & update linked roles for applications","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json","build":"tsc","prepublish":"yarn build","postinstall":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2","typescript":"^4.8.3"},"resolutions":{"discord-api-types":"0.37.35"},"gitHead":"0d9983aeba93f1a495b157f1b2f73e0cf8923212","_id":"@airdot/linked-roles@0.2.7","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-uz9YCDQq4r+0/ihd13MeeCfwhIfWG8xA6/sI14zolUu8PWax9nQj9m5nLlaytE4vHdwt8NIOkPV6fxCmvmzmRw==","shasum":"18f8ec5d5f3f9792c8f15063c368bd1ef44279e6","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.7.tgz","fileCount":33,"unpackedSize":54697,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEy0/0hDLKnFXYswnwuYu0i6SW/w4M8v7zTRuYgmkpyxAiAQWNKZueUQRbSQhQ194CUWD5JnoaQgPxSVDqtut6UswQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkC2xKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7Vw//WtYbDojfNedhPP6bCqxn0/vZ691Stnki737j0c0KXV/z06ml\r\nrMSvJXib93Uzt0v4TXh2QDcvpSVMLZ9oR2PyY0rC3U0aOiOGC55VYi6jtJUd\r\nXKD0vS3UUOq8yhAmxcGqR2tLNpGnHWgXhvNyqQRYmWyanIgr/DxvukcXoEMu\r\nGmAuSoNToMD4UeetR2Bvo+iA618d32D1ZAKwD3ox3vsXiHh6DmbwG8l4T5UZ\r\nSqUzjrbOGg8+SogvVm/ZneBfWy/n6TKi8JxOVi0/2ZXUn++375lpoLP3O7o3\r\nnNWtESh71aDwi+HsM8DgrAINPLJA4z3ept0Q952UjlKcfZSheQXch4s4Y/HH\r\n7OFEfPTMONmHecT8zX/nnmZcIGJ/atoKTwdTAC+FHLkB3Nl7C72H7OEm1a2u\r\nJEi5n1Wt6a5dzyIvNMnaWegJStUUkV+rBZyaf173asUm8ezCnj5r91n+zUxN\r\nOpSZEFdgeKByZ7UIC2YFRBg5CsilXxWzySBD4uQwublEl3PaQ7RoJvJzPXw1\r\nnhaPckPUXF/g+zU5AjoBaqd29SyTB84rLR8uhwXt44BgxgUaoQgIHsChe+Dy\r\ntCKIAbkpmtRO8TkId9MsymKrC0Pa1hjpvkxqBMDWvFS17WNgv0aC/f/9yITI\r\nJKdWaG1tCS7S38h0aAat5HSai2L3jx/1d24=\r\n=S9LM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.7_1678470218362_0.46444138888949316"},"_hasShrinkwrap":false},"0.2.8":{"name":"@airdot/linked-roles","version":"0.2.8","description":"A powerful package to create & update linked roles for applications","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@discordjs/rest":"^1.5.0","cookie-parser":"^1.4.6","crypto":"^1.0.1","discord-api-types":"^0.37.24","express":"^4.18.2","mongoose":"^6.8.1","node-fetch":"^2.6.7","typescript":"^4.8.3"},"scripts":{"lint":"eslint src/**/**.ts","lint:fix":"eslint src/**/**.ts --fix","format":"prettier --check .","format:fix":"prettier --write .","generate-docs":"jsdoc -c ./.jsdoc.conf.json","build":"rm -rf dist/ & tsc","install":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"publishConfig":{"access":"public"},"keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"author":{"name":"meister03"},"license":"MIT","bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"homepage":"https://github.com/meister03/discord-linked-roles#readme","devDependencies":{"@types/node":"^18.7.18","@types/node-fetch":"^2.6.2"},"resolutions":{"discord-api-types":"0.37.35"},"gitHead":"e18ec6d79977ba920e9eb82189069101b2a9079d","_id":"@airdot/linked-roles@0.2.8","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ukEKLjrbJGdLxHdI7EZV9pZ7lgYcnBoJNNz79BH8mQ88/N8i++PN+Pexsdh2e9+FS3/A/jUNU2s4NkKeji7F+g==","shasum":"5413c4618f9f2483d1a6ba5a9d391f263498c827","tarball":"https://registry.npmjs.org/@airdot/linked-roles/-/linked-roles-0.2.8.tgz","fileCount":33,"unpackedSize":54672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAs+6HjPgmxvPPEsUUYkLYL0SvaK06C8AKQXqnMHDX4AIgZnri4dYTy4ATEYvXAHWrcVltynDeoB/RtG3TDBy7LLE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFPxVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYww/+NlT4B6pj4z1CxQ1wy6aOunYayHJDarJn8nTcmnf0Cv/8d9En\r\n1DunpueNsrZLSD1q8dj05rvXos6MV4CEWqvHfYEFZGZxRc1WpsVUYu3yEBj4\r\nyf3txF8YBeoJmtE3b9ViR24XsQx4chP4DoJ0m0DHT0oGsRp+yrYdj5vlJxQx\r\nYa7PKSwhzHmV6+wZbKfJaA+pALnY9E70NWM9WRkbDQoT0n//PrrrhnlOCELG\r\nLuubaEfK5gG1BzU6RIZIs0mYoXnD9a1OscH9JM/6aqFspFqGmeV8krT83JJn\r\nDIY3JXvuaa5hNAkStAQTN0bXsj8ZOpR218jmMwOE61689NzeXkJqtfaNNyCa\r\nn87aBjFG9kaLD5Zu1t2+kexiHimXWvI+wEe2GbGIxg+FXJKjPhxubD07/oa/\r\nADqgZLmgVB6WZvTniVumpuB7R+dUI1w+7lrYTowaWy8HR3J6ikkFd0Mxmbgv\r\nh+MfGQYMewef7pryiZHCvNzq60vYWOFJPzdjJegj8CcAQYaroLCtLkA7o1kK\r\ndma6/enCS9W67oYb4wky3AeYFfpGSQWGShN6uds1PK3+44dTsufZ0+v6eCDb\r\nxREsrhtRMngY0+vW/7hLGOzWLk307X1bBUapQ4mcFuoPMpLYV6g8nUFSr7KC\r\nvk5DEEvs+45Wk/0lXhyLOpO5dYfBizr+dcY=\r\n=xQOm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"turtlepaw","email":"olivier@ens-music.com"},"directories":{},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/linked-roles_0.2.8_1679096917254_0.8653131781887802"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-04T03:43:28.744Z","0.2.1":"2023-02-04T03:43:28.956Z","modified":"2023-03-17T23:48:37.673Z","0.2.2":"2023-02-04T03:51:28.161Z","0.2.3":"2023-02-15T04:24:10.332Z","0.2.4":"2023-03-09T22:39:42.349Z","0.2.5":"2023-03-09T23:01:46.567Z","0.2.6":"2023-03-09T23:06:32.303Z","0.2.7":"2023-03-10T17:43:38.540Z","0.2.8":"2023-03-17T23:48:37.481Z"},"maintainers":[{"name":"turtlepaw","email":"olivier@ens-music.com"}],"description":"A powerful package to create & update linked roles for applications","homepage":"https://github.com/meister03/discord-linked-roles#readme","keywords":["discord","discord-linked-roles","linked-roles","discord.js-linked-roles","discord.js","eris","bot","bots","roles","framework","discord-roles"],"repository":{"type":"git","url":"git+https://github.com/meister03/discord-linked-roles.git"},"author":{"name":"meister03"},"bugs":{"url":"https://github.com/meister03/discord-linked-roles/issues"},"license":"MIT","readme":"<p align=\"center\"><a href=\"https://nodei.co/npm/@airdot/linked-roles/\"><img src=\"https://nodei.co/npm/@airdot/linked-roles.png\"></a></p>\n<p align=\"center\"><img src=\"https://img.shields.io/npm/v/@airdot/linked-roles\"> <img src=\"https://img.shields.io/npm/dm/@airdot/linked-roles?label=downloads\"> <img src=\"https://img.shields.io/npm/l/@airdot/linked-roles\"> <img src=\"https://img.shields.io/github/repo-size/Airdot-Company/linked-roles\">  <a href=\"https://discord.gg/Rgxv5M6sq9\"><img src=\"https://discordapp.com/api/guilds/1028789308401918004/widget.png\" alt=\"Discord server\"/></a></p>\n\n### 🪄 This is a fork [meister03/discord-linked-roles](https://github.com/meister03/discord-linked-roles)\n This is a fork of [meister03/discord-linked-roles](https://github.com/meister03/discord-linked-roles), this fork fixes some invalid typings.\n\n# Discord-linked-roles\nA powerful and easy to use package to create linked roles and update user metadata.\n\n## Features:\n- Persistent storage of access tokens to avoid re-authorization (Mongoose or CustomProvider)\n- OAuth2 Authorization flow\n- Less backend code\n\n## Examples\n![Example Image](https://media.discordapp.net/attachments/975812290198765588/1057401509790363738/image.png)\n![Example Image](https://media.discordapp.net/attachments/1051910435823169577/1056984485914230784/image.png?width=320&height=120)\n\n## Getting Started\n1. Create a new application on the [Discord Developer Portal](https://discord.com/developers/applications)\n2. Create a new bot and copy the token\n3. [Go to the Information tab and set the following: `http://localhost:3000/linked-role` as `linked-role` url](https://media.discordapp.net/attachments/975812290198765588/1057386945786945546/image.png)\n4. [Go to the OAuth2 Section and add the following `redirectUri`: `http://localhost:3000/auth-callback`](https://media.discordapp.net/attachments/975812290198765588/1057387153702801408/image.png?width=1440&height=285)\n5. Get the `clientSecret` from the same page\n6. Create a `config.json` file with following entries below:\n```json\n{\n    \"token\": \"...\",\n    \"id\": \"...\",\n    \"clientSecret\": \"...\",\n    \"redirectUri\": \"http://localhost:3000/auth-callback\"\n}\n```\n\n## Registering the Application Metadata\n- The application metadata is a schema that contains maximally 5 entries.\n- The entries consist of the following types: `{key: string, name: string, description: string, type: number}`\n- Once the OAuth2 takes place, you can set the metadata of the user by using the `setUserMetaData` method.\n```js\nconst { Application, MapProvider, MetaDataTypes } = require('discord-linked-roles');\nconst config = require('./config.json');\n\nconst application = new Application({\n    id: config.id,\n    token: config.token,\n    clientSecret: config.clientSecret,\n    redirectUri: config.redirectUri,\n    scopes: config.scopes,\n    databaseProvider: new MapProvider() // new MongooseProvider(databaseUrl),\n});\n// Following value types exists: Boolean, Date, Integer\napplication.registerMetaData([\n        {\n            key: 'level',\n            name: 'Level',\n            description: 'The level of the user',\n            type: MetaDataTypes.INTEGER_GREATER_THAN_OR_EQUAL\n        },\n        {\n            key: 'xp',\n            name: 'Total XP',\n            description: 'The total xp of the user',\n            type: MetaDataTypes.INTEGER_GREATER_THAN_OR_EQUAL\n        }\n]);\n```\n\n## Set the User Metadata\n- You need the `access_token` to set the user metadata.\n- The `access_token` is provided after the OAuth2 flow.\n- The `tokens` are saved under `application.tokenStorage`\n- Install the required packages: `npm i express cookie-parser crypto express`\n```js\nconst { Application, MapProvider, MetaDataTypes } = require('discord-linked-roles');\nconst config = require('./config.json');\nconst crypto = require('crypto');\nconst express = require('express');\nconst cookieParser = require('cookie-parser');\n\nconst application = new Application({\n    id: config.id,\n    token: config.token,\n    clientSecret: config.clientSecret,\n    redirectUri: config.redirectUri,\n    scopes: config.scopes,\n    databaseProvider: new MapProvider() // new MongooseProvider(databaseUrl),\n});\n\nconst app = express();\n\napp.use(cookieParser(crypto.randomUUID()));\napp.get('/linked-role', application.authorization.setCookieAndRedirect.bind(application.authorization));\napp.get('/auth-callback', async (req, res) => {\n    try {\n        // Verifies if the cookie equals the one given on the /linked-role route\n        const code = application.authorization.checkCookieAndReturnCode(req, res);\n        // Invalid Cookie\n        if (!code) return res.sendStatus(403);\n\n        // Gets the user and stores the tokens\n        const data = await application.authorization.getUserAndStoreToken(code);\n        if(!application.authorization.checkRequiredScopesPresent(data.scopes)) return res.redirect('/linked-role');\n        const user = data.user;\n\n        // const advancedUser = await application.fetchUser(user.id); , User with email, verified ...\n        \n        // Set Application MetaData\n        application.setUserMetaData(user.id, user.username ,{ level: 24, xp: 523 })\n        res.send(\"Successfully linked your account!\")\n    } catch (e) {\n        console.log(e);\n        res.sendStatus(500);\n    }\n})\n\napp.listen(3000, () => {\n  console.log(`Example app listening on port ${port}`);\n});\n```\n![](https://media.discordapp.net/attachments/975812290198765588/1057401509790363738/image.png)\n\n## Update Users Metadata\n- You likely want to update the users metadata on some certain point\n- You would need an access token to update the metadata, which is the reason you need a persistent storage\n```js\nasync function startDailyMetaDataUpdates() {\n    let users = await application.tokenStorage.getAllUsers();\n    console.log(\"[Starting Daily Metadata Updates] Users to update:\", users.length)\n    for (let i = 0; i < users.length; i++) {\n      setTimeout(async () => {\n        await updateMetadata(users[i].id);\n      }, i * 1000 * 180);\n    }\n}\n\nasync function updateMetadata(userId) {\n    const user = await application.fetchUser(userId);\n    application.setUserMetaData(user.id, user.username ,{ level: Number((Math.random()*24).toFixed(0)), xp: Number((Math.random()*523).toFixed(0)) })\n}\n```\n### Get the User Metadata\n- You can get the user metadata by using the `getUserMetaData` method.\n- Access token is required to get the metadata.\n```js\nconst metadata = await application.getUserMetaData(userId);\n```\n### Fetch the User\n- You can fetch the user by using the `fetchUser` method.\n- Access token is required to fetch the user.\n- Based on the scopes in the authorization, you can get more information about the user such as email, verified, etc.\n```js\nconst user = await application.fetchUser(userId);\n```\n### Fetch Guilds\n- You can fetch the guilds by using the `fetchUserGuilds` method.\n- Access token is required to fetch the guilds.\n- You need the `guilds` scope to fetch the guilds.\n```js\nconst guilds = await application.fetchUserGuilds(userId);\n```\n### Fetch User Connections\n- You can fetch the user connections by using the `fetchUserConnections` method.\n- Access token is required to fetch the user connections.\n- You need the `connections` scope to fetch the user connections.\n```js\nconst connections = await application.fetchUserConnections(userId);\n```\n### Fetch GuildMember of User in a Guild\n- You can fetch the guild member of a user in a guild by using the `fetchUserGuildMember` method.\n- Access token is required to fetch the guild member.\n- You need the `guilds.members.read` scope to fetch the guild member.\n```js\nconst guildMember = await application.fetchUserGuildMember(userId, guildId);\n```\n\n## Persistent Storage of Access Tokens\n- You can use the `MapProvider` to store the access tokens in memory.\n- You can use the `MongooseProvider` to store the access tokens in a MongoDB database.\n- When you want to store the access tokens on your way, then you can create a database provider with following types:\n```ts\nexport type DataBaseProvider = {\n    findAll(): Promise<{tokens: OAuthTokens, id: string}>;\n    // Gets the token for the user\n    fetchUser: (userId: string) => Promise<OAuthTokens | undefined>;\n    createOrUpdate: (userId: string, token: OAuthTokens) => Promise<void>;\n    deleteUser: (userId: string) => Promise<void>;\n}\n\nexport interface OAuthTokens {\n    access_token: string;\n    refresh_token: string;\n    expires_at: number;\n}\n```\n\n# Bugs, glitches and issues\n\nIf you encounter any problems feel free to open an issue in our <a href=\"https://github.com/meister03/discord-linked-roles/issues\">GitHub repository or join the Discord server.</a>\n\n# Credits\nAll Credit of the Authorization flow goes to this repo: https://github.com/discord/linked-roles-sample","readmeFilename":"README.md"}