{"_id":"@vercel/style-guide","_rev":"270-6323e8667761da4b769759232e1ee584","name":"@vercel/style-guide","dist-tags":{"beta":"0.5.0-beta.2","canary":"6.0.0-canary.1","latest":"6.0.0"},"versions":{"0.1.0":{"name":"@vercel/style-guide","version":"0.1.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.1.0","maintainers":[{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"creationix","email":"tim@creationix.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"2267b68b32069a599c06b423a6656933e55fc5e2","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.1.0.tgz","fileCount":6,"integrity":"sha512-mOKVBKg+veJED9xm2OsKIRGvCEhlTpfALbAf5liHoaK1r/OAChre9zAXTRJd3jj0qFd8iufDC4oG05PQPqyKwg==","signatures":[{"sig":"MEUCIQCDJwVeKLCn7ihchQELbsFCPUP0liI2Xfie/L0KKAVwPwIgA6dI0OW5tpmM7tOpsBuFP6oj2jZ3MSULyBh62oO+Q40=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1btCCRA9TVsSAnZWagAAAccP/3RP6x/ODXhEn9bGw3U2\neaKrESlecyZYlddqxKHr/C9EgAlx0fh3VmeHUmcH8TzG1YQNX65Sir7TXQ2A\nVBM1iuawtpJY0JyAbrPovLybS99L4fbAMgg5syNv2VUIrAxjgBuag+v2fs7G\nmX7/XKd+K6yoe5m17qjGGSjQ6bPjud2YWNfyxuOyRE+DQgpcWwaTd3A9LWCa\n/pumOAtH2RdEB8ElGiNMMbebKS7vaVAxBh8Ptuc6n/imKoh9TZjzkR5ftqxW\n8wICTmNpdrSPx9+LzhjtqvXIwykiM+R16J/AfKkFBNrWPPwtA6I1lbgyek50\nSeh9zLX/Y9h3F3Ffh+Ad1XaTXWGIGLagTH7l4/eIL9PH1z0QErfzmZhHKlgk\nnxLV9j1A5VGZTCbkUEBDcZGNaBEhQlhHXmcHJLNdbSrYfG8GCNTEg10kC2rx\nNE1/wUrDcknFZMc8W7xDBBiThyzxJ0kUxlynbgJasHJh5c5k5EO8RFTTTfZj\nl344z2COofSn90wvcnuUEmIGNCQytl0/Iz5S3Pz67B7lWT9mhzx0AZplWV01\nzYED74/lnPt8iEl3PQvwH62nL6sm59K81C1zmTrn3Jzs3mQj4UoXnpmD1uxS\n7IWEtpkRsdbGUdVDzjkCptk2RVmh6tq1xQUrNVl4fAxFggc6Y528FQ58JhBz\nRRMd\r\n=XN0k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ba503264e1ee8f6553d4f92c88d3eb4a9a39c755","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^6.0.0","prettier":"^2.3.1","@commitlint/cli":"^12.1.4","@commitlint/config-conventional":"^12.1.4"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.1.0_1624619841916_0.9135780492248682","host":"s3://npm-registry-packages"}},"0.2.0-beta.0":{"name":"@vercel/style-guide","version":"0.2.0-beta.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.0-beta.0","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"b19096fc332dd83a8d850d1ef0163caa3be9cc0a","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.0-beta.0.tgz","fileCount":18,"integrity":"sha512-GVtJPCnbzAk7HD682dfubUE2ZqqEu2d1xeJPHWSUy0Chs2lXThwDNmNPv1aQp1tZgvcS8sTl+Y+E0W39/m1FWQ==","signatures":[{"sig":"MEUCIQDjP8/O1+ZKnGj8aBX2qbopMmST+7spvE4S6EqlgZChhQIgG0QJm22y6SMBmNHyM6YtwSLINGown0pQd/kcmR+35AI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+qwKCRA9TVsSAnZWagAAo1gP/R56kwlktID9NnAEuFh8\nd3xHT0b62RENxp62Fm8er2gIS1tzQbM8FnOGVIPLdS6ilw6syAANiH+2wCJe\n8OC3gLJQSdWZw9i1rM6mwbdFhuJJ/Dxycy6bKL2P/kxaEg9GfwwYifJp3Qmr\nXB8X6ePopskKMyRBzxuhEclW1fNxc1hWylqb5FWPr+bnlpL3RnlVHppA9Un9\n4bobldtbqD/4qnPZTg83bM2ljLR2lg2Xx2SThSq0gQaq6xZYze6kAF25q8Pw\nMV40ikQJwbIgUKeKtDD2XWCY0qX1W6JOYbs2et2TeI7/9YwazODThK57gR4W\n3tBX71mReJis4ZWCSSIgUWnYD/5YjsUZVa5AE65YrKqZ9fZpF7bGazz1ilPF\nL3MQjqxqXnhbq8H/f4OQbVwLrD+ZpN2YBXv1HA5QZS6kjR94qA4YOl7qI80b\nwVrfprrmqbrGlq09PP6XGe+AUJJaWtgH38oBWmW/Q9hiNEiBsekq5SdzM2TH\nkjntk43yITw4p3bavgSIJoufayhwU1Qhsxqn0snMqEhBTsM6CluNebT55Dj9\n2U89RZB1jyFYr/bR0/RL6G+BCuZpwkOJzTV/V8kRdZuAUnC4RIjzvJUaNwwM\nSdwwb3zskLcu//l6SqlDFgZoNHozHEqRdkIhzDt0dwk0IGNli9EkggBNZs9h\nOOrZ\r\n=SPgp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# style-guide\n\nThis repository is the home of our style guide, along with configs for popular linting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    '@vercel/style-guide/eslint',\n    '@vercel/style-guide/eslint/react',\n    '@vercel/style-guide/eslint/typescript',\n  ],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: ['@vercel/style-guide/eslint/jest'],\n    },\n  ],\n};\n```\n\n## Coming soon\n\n- EditorConfig\n- Stylelint\n- _Automatic publishing_\n- More?\n","gitHead":"339251ad90bdb8704fbcdc0495352521f6582449","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.0-beta.0_1627040778720_0.6001663993463326","host":"s3://npm-registry-packages"}},"0.2.0-beta.1":{"name":"@vercel/style-guide","version":"0.2.0-beta.1","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.0-beta.1","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"615b72cea6f23a3c1e4bc023b594021158501bd6","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.0-beta.1.tgz","fileCount":19,"integrity":"sha512-1tEPFUDadAXrS0krWR0Nui0p/hUF7zsdSj4pamsI1oe0paDFcDaGivlyW6nDdzWA7AXnPszG3dZsphIqy8aaYA==","signatures":[{"sig":"MEQCIDhvOMebPIaialrRH9EyehN5F0ivAE5wSPSmPU1+ii92AiA47Apw+wrqv+sTIewZXcVTqbNMcOXYiSjLn/e9pnwNGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+q6tCRA9TVsSAnZWagAAKDwQAJpc45DC5WJv8cgKGk+T\n6sKGP83YY/Ww7RROo4DUDUti2Jif6hRXWxn5tOBNsroA2rSvIwe6aCvU10FJ\nsmDV3jUDiQU5IRgva1pI7oBWQwQ6EW3fK6EBvACX7JQLf7pSf7LEwhXjw6xv\nTveEFCrMch19Kk9hyU2pk/j0Bs+nhaHkr4HfdTbQw/Ktn2KlkvPsNLiTo9a/\nWdQb52PskAmaCNEvQ3aKKvXDUV9lYUPUOHNbcUjWgJj1YxkLgM4y51Xf0Kg0\nSI+wCxXEcgyoQXjOjOkyBemaOsV1buloVM3r0U91j4eLTY6bpt6CfpL1ynLE\nl+75iIrsNSAaSf6qubFAXPVxvQi7K4vJ0YK9fo0JJ7r9TYYDtwtUEBi0bmwW\nwvhOo6/vdyEmDPd5io1Zwgi3TEuPfuf6ynJ4NDq7HZP64P+8DZR53anB8CUc\nqLGU+8701ByaKwLf2ktoET/1PrBrJTF4tbSxnm6DlFcM71TSj+Y5LK48GgCM\n0xGs6s/GIH714qyb4dehbYPbnDwcoMyKsb6pn00JYepB6VEkj9KUsCb+05gY\n3PfShD5WK3FuBTZJKk+byg5hL428vytnEDPh9CcXL03n476ZFSXj8W2xC5RX\n7fQZDFjPUKjgPJ+/t8t2xgt/DSJ0uHl7o4/HCrZ3huaN5TIQ7kq7ghsiCzCw\npm40\r\n=g0Cy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# style-guide\n\nThis repository is the home of our style guide, along with configs for popular linting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    '@vercel/style-guide/eslint',\n    '@vercel/style-guide/eslint/react',\n    '@vercel/style-guide/eslint/typescript',\n  ],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: ['@vercel/style-guide/eslint/jest'],\n    },\n  ],\n};\n```\n\n## Coming soon\n\n- EditorConfig\n- Stylelint\n- _Automatic publishing_\n- More?\n","gitHead":"339251ad90bdb8704fbcdc0495352521f6582449","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.0-beta.1_1627041453493_0.020136496894031408","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@vercel/style-guide","version":"0.2.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.0","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"88a372dd4c25d6e953cee285c7a5ae187e336443","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.0.tgz","fileCount":19,"integrity":"sha512-lKExDeoEsDP5rMH16CYEE3t2HZT53PYUI4zhj1Dp8J4SJgXsJrTi4ZbPFTphr6V+w5CLRjzkB9vZYSz4QlzoGg==","signatures":[{"sig":"MEUCIQDRoYR9V+nnRav0JVzNfkmQ0pKQiuSKjN/AhUNuxWC3rAIgMRHX/FH+FZJ3CD8V0iWfvHCEZpvlBgFyFfL+QdWpbt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+rwcCRA9TVsSAnZWagAA/5sP+QFG/hNLNdE9y8oW2VPA\njGjz5rsCzx4MuMVloNdFnRfNnVzxY5zWo+V+NXaEO0wJooO3Y8x6ryGRa8xm\nPP5y/w9hCowqb8vONaejx1IxCHNsRkD0akMSTcOpaNnKtb7lTCOV6aG2P/z1\nxspzytEdZGjMG1fUwsPZQ3K5WRx+lpZI/6iRybs1ywhbLhyCj2bG2nFo1AOX\n2UHROFqU4ih4AIMWwiQQsKGu1Op4Pq1wx259V4cr3Cx+KQZ+y+4l8NLlkSah\noEULjZg947Uv4DgAd44Aecs3eUOxX+Khu5kDsqaQLoX9fpPbH+hQOj+3ZpTs\nWMpYTa9NFIWLv/BpsbMoPXcvGeznvg/SFRaDiwBRoS2IlfDsZadIBMddaaGS\nL+ToMFpiWPJ/weysB2uS34mLjfryYLA7qMziN8TsUcodFXwMHvFtmczyHCqX\nmJgm6/AJWzoIkAwGZjtrIeEKa4Yx/ekmv87RI2fKlvna4nBrKS3mlpOFMTX4\ndXUKSAkz4PATB2OKDFp7P6VGKLRACUor0518C8qIADGWjPsjuvxR80yWlieg\n6vpKBQoxnDPwDaUb1GZQxN7AQFAAAAuocPM8VTcUAf+WVJ1u44QrlLSFDQyW\nQSAXO6Dyujgnc+uNqrglWa7jX9cgTtVMkE3U+DOqql0+MfHhmQKmpPSmSK4B\nLZHf\r\n=li94\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b750477e7768c6293d9fc38c534db585876ea667","release":{"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.0_1627044892025_0.9510218827305787","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@vercel/style-guide","version":"0.2.1","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.1","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"c459739f66ccd0a0cb4039286ebecbc22b156aa3","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.1.tgz","fileCount":19,"integrity":"sha512-eZbWANIXB+tgNNlSMAfewjgB5ZVLqJ9qorIsr0g5wpQKtmj7zovgV8Ik9HhwyWfG4Kc7JLtP4P/TT3Qs2n5F7Q==","signatures":[{"sig":"MEQCIBQ6IGIGuohxmIMZxKWKrh9Uz2kXgAq2RAAS3R/oi1VhAiAT2N3Es1JIqVpXxVKTPKlNTTRNecSGRJMWAGS4Z1lG/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+sKaCRA9TVsSAnZWagAAZd4QAJLsi0c0L8G3shJbg/yR\n9HVDRFnXWqCPZIIF3cZmAukLQmGtWWvRpz2STY0Owc7LImtGDIoyTVKfO6mf\nkg8qTNOWK5QP/+vdaIUETdgu2CnniZuBnXFBrj6IH0Qu9ulo19UoPO//dBmP\nKTFiBGT6lhbCHs5SKk/RgO5I+04b3zYdX9WoLBFIn0SvrO5cxsfiXuBtq/M+\n1M5CanLmwBVq9DeDbOhzzPR47EhqNyq4f1MnjJ5gVj58n9cxh3rOgXbp+NWW\nsmUOF1Bi5lR94mamNh09Q1W/3dH7Xu9VvHOstPmrJIBjRvm78hRnzEDw4a+B\n6oOAQDN+r0l1/bfuwtAHZN7xNQWGIAMoa1VGcctQQHlDcj/KAC2DXN521ofx\nyz9CrSyvn/WdfC42ipaEME7iWbcVJ7TM6v0whbCBUsDMK5EByb8f7A8sAN0y\nltn4CyC47C0RFtAsixlzKKPFgLfGKKDCVu4uDrxKnNKhMrlkV1YMwE+jDLvv\nUhrSHg7N4MvO6npnZ5Nj2K71TbT3JtbbkUSurt7umO1mruxsJdGJLZoJ5wDf\nqRm1YZmodLlubU+yoonE2n0GEkr+fsTXvE3/LzdeKllOpQWGfTgpHIuBwqNu\n0/qOAcbLzip8KRy3O8/D5ZrbfJcjXMoMl4KREXRJvHfiu0IL7f5qASgrLBe6\nVh6a\r\n=XMYW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f56921b7c186131c0466b5efec22969c8c3d1fa2","release":{"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.1_1627046554771_0.9031420752779584","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@vercel/style-guide","version":"0.2.2","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.2","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"cf9bbd57ad19633a1335352620c27babfa44e4bd","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.2.tgz","fileCount":19,"integrity":"sha512-mVmXTGpeKAIu9ztBFkGl1eXEdojkT1L/y6X8y+xdzwD09L7+OjR48Px848JyI9dTlqjoTEZAehZB7aLDFtGPhw==","signatures":[{"sig":"MEQCIDN6IQUsiRNzGqyjoNMwD7TlCetg9YqxVaXiOWeR3OC5AiAVtK4o9LBFMReqxKt8YpNwptptMVHbt6l2sSkMXlb5JA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+sedCRA9TVsSAnZWagAA0dYP/RGkoXyKunwAU4T3Jp+1\nCp3Fz7EhTk9vIvYwXdgFVCq+my7xzhdnvNi5yaT0uOhZpLiAYDUdJ0hapdMc\nPm+mNCCEfUO9NtGtyTF05xjg2LY6Lw6HK4XKUjWdcpR9xOBdb3iSzB0Jmlja\ntG+ILKOKMzOlFi5J2VKgADw9cJ+k3jr0LlJCAlCDvhcuwuuesDO+yS0qJ7VC\nKL9EIbyQ6zfBJDwO5WReBUFsco8yI1nHqCPDFBkffihRfTYELcOaDpgBmogd\nGGpAQ3EF2y1blCwTqRcs8hqyJc0dMei/SxZoJ4et8yHige5l/ZKzrksaA4qS\nN/U8wmxX0ytD7Qy8oB6NseFFZVw9pMDfHjLiBCjacnTkjrgWxkaM+a+ImjWE\n2M/3Y3ady1CdyPG5RxbeQwNdJg6VclyGO7MtsUfIKHleI0jSm7DvcaCAShWZ\nPabtxX9qsMCjw0vzRxX/438jqgi6TD5sst2LH8yYqaNHJAuwa2NY3o8L049b\nQitpVBTcT8FekrHgv9S7wRT8ZEEGSrT4s7mJNfAqF3qXNK5m3f3uYYCUVFyI\nwxLB2Y4UZPBZ3tkQuajbgvAPmQqL05eiTrLehXEgWREOxdzOwG+FpXaioy7K\n7/DeOJid4KNd6IX8KrIPUX5dKMiatiUBORRJFbUT9uVpwZVMF4rbCfIan/Y0\n2/yB\r\n=N+Eh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6165248be02a90a90dfe64aca9208157e099e0b2","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.2_1627047837638_0.42735058566116724","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@vercel/style-guide","version":"0.2.3","license":"UNLICENSED","_id":"@vercel/style-guide@0.2.3","maintainers":[{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"2b7d45e5636053a13858f1db9ea739728eb4452a","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.2.3.tgz","fileCount":19,"integrity":"sha512-3K5fQrernWTd26C60K8w94rQws3vrtdIDzOKhBt14nNuS55dY0ohgOZ7zG4F1rwyv6JSpyE1DtbccGM4x2M2Xg==","signatures":[{"sig":"MEQCIHJpVvKwc1dE2w8z1f6YAa0L+q+8Q/Ke33cXJKlxkoV2AiBkrbV8CwLq02Owa6+D4AndiHG3Fh+SdE1qi4Yr4VxnJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+sj9CRA9TVsSAnZWagAAsuIP/iuIMbdTz0ONjVrnnyVI\nOWA/D/zODu5Sor8CC37TaqS5T4S4zluI7YfuAcHtwrCAP7MggJMYML7Rg2O0\n7XHKItvDJvOUk7URNlKizODqNcCGCSECVYS7AhkSQKNJLXESVJ0Dpk4djgSH\nVeLPr2NDsxCVeMxMK2GBO+9eQ/dBVoCB5vwKtvfXQ9fJJTNHb5KyO/K9KzzP\nTX/njDDh4G1VFb44SfgLFdpsKY65rfCWKv9bvPufAjLqKROjCupXXRgJlQ5q\nJyR4VXMNQgZh0bqBv6e+hsNVX5PnAVtyjJxeYTrPXP3alamErGdIClC99BAl\n9wbBdV/4aRUR+zSGaO5UcU48U2h5OyEK7lr/9LvpjQhkoD452ZUc1+xPUQyV\nHQjisQUGvHLWPVjJvA6tpccu5TFX9X+CpzhpD/ad19F0VU7ClS8OdEwH0zMm\nus+uqtqFxQi1KB6Mujyl1KvTRm7KMfg890M4SCDsg/AUJO3SXi7RIzEpdd3a\nwRL7kAHEFgtCzUBmGxriJI/S3KVVquBGgow7aJ/blsi47sRrqpQ1IJXmRPTh\nJe2kkMkeCNaoN85TTGZYmHRg46pbKtd6mM8r/BU/yhbfzsXjDFbwmEopRYTA\n00eGel+9dbnLMi9r4AgVgLbGuTkBS0BB3MFl6QAU2NQRg2XuLwG3xrywtLhD\naZjo\r\n=u+61\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"a02f8bdbb0078e53c5a7f2eb10112ed669d66cbe","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.14.7","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.28.4","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.28.4","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.31.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.31.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.2.3_1627048189003_0.5625785457094628","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@vercel/style-guide","version":"0.3.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.3.0","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"173902da283f2219657ac1cd5e96f783fcb7a497","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.3.0.tgz","fileCount":19,"integrity":"sha512-x1MQ1HZDGmSUusujTkzqCVdjxXNEnNgeQ5wCUj340K1BoGTtd3AAoKeMGdSD4ljjt2/IV7iLWhfIOR7CPO6mUQ==","signatures":[{"sig":"MEUCIQDZTKCeBOLRnFmcEG0TTGLxHkU7MLUTk07V3hY0Kxm7eQIgUCn1oJ96rhWJCau5hSqRRQcLDkY5ncMgPzlHnsCX/z4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDSpyCRA9TVsSAnZWagAADzwP/1eoLmo0I55Q2iHdNFGK\n98+pdDGZ8XW7E/9dd+PWIzCgwtNSIxeNz/tU/Bb5HWQslY7SOCet5VrtuFcB\n7bcfPjtler64kOgSWgzG1TP6BgM1JlKGJ5c3zS3WU03APVNV2eN6HvQPQU3I\n0lboHt01SQIvnmFJbkMAUlu6bC/o3od9oW6BSpB72+2nC3JcW3svwTCbecd1\npG5kbHJg+ZXluy05T8UgWxGiH773zxz7Bc/gf5AZj3IRXM0zN+0RfhFbZEfD\nm6ep8iR00piyNgEidZhmI/+ln+QiJYYq56uA6kpLX7c3rtuuo7Z8SHkWGYAM\nXLPPBoz/y3HE/AZf7JJ5Lc8qgDQxUgJ9z0d+RBr7SeSZKHHr30i2z6/MOZ3g\nqNc1UDahQ7AlSS2Wwxy0bHcUuQ3JCmBrJCLatPND8p6NFsSa+gF8HlGUt+2X\nFh/hdeoMKyMfyZNjnCHZbw+tkmobme0Tmw0seJ+Qzbo36WzZ38DHa4YQQXJm\ntL3Zp9nKyUXlrL578Ic66+iSUvGsimEALmffSQliBGysuLA2/ORqvDgSCT0p\nqqPU62BaLPMI3i+tkuPCI1xc7nq/PDpbxaGCa+AOwKRVUNIaK5HXQglM2TBQ\nMdV+KiAH1tvlbabcJ2fw87J21FMi/k7HNWUdgQJ02mg/CA2Zwl/XfvrSoQ6e\naNpr\r\n=c0uB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"5771557e3603dd6bc14c946ec0a96184b106c8bc","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.15.0","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.29.0","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.29.0","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.3.0_1628252786202_0.5241103701157201","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@vercel/style-guide","version":"0.4.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.4.0","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"padmaia@me.com"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"223e42f656129c3bc87bcb349f8d629a452aa6e8","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.4.0.tgz","fileCount":22,"integrity":"sha512-W1t44DEpfnQbXgFj8tqnYwHl053cAulHs0uaDfLil7K1aJ14OZgj9AA29LgsBcY6DsWPIdzC4edYmiyU1Xo+xA==","signatures":[{"sig":"MEUCIQC3p+6v9EyxiMZWU6KwR7/Sz/jnDCORcjM4OSA3sqZ4+wIgLmCFmOYC9rcyCEvKj2HfT0Y+BftV/5P+lM+EeASamcc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDTQ9CRA9TVsSAnZWagAAxkEP/1QYva/LewBcDCESAUDx\nhGNNt81N6aD463xPfztqIlxFOJWAkqFHO6Tp15ASd5c9orIXH8rDnWq93d0k\n8MJJLLBsufod+hw+Vz79kWOhwQYTs7B9BhEevAxP+NLaj5gON+SfiUjEWcPM\nDxiThrHGd5cj5Y+jmkOvPYrynY9nzK7iUOr+KwTbdTLaWiu5wMrYVrLb+Bwd\nmQbNNUoNv4cv1xqnAr4Eb295SScz3BH2Ou0qx+ubbF86vhfDrAAIcZ/KdT5f\n0p4oHYWSSJNJFUcT+m7UORLQ3VFcrVERPPOG6Dql1PjD9ROxNq8Gl8sOdqSr\nRVebEqQH7hAae0o5AktSL+AqyPQNlQ4XU7FqsfNzxJxDEBiXv4Wc/I7Ua5Hq\n9CMwgGuiTViYV1GKel2dLYnHxXM+CwG7lr45wA2n8FH2HqteDBbuXSIYmZHu\nlRm4LnlFVbGJ9oWkmcmbIbWIeeKnyHyhdZwWzGOPHD3TBqmZr8Zqzr+XKO6s\nNjFVIH4VoHjA56Hlj6VaNdIdLE/0Ket8e9K4h7HFeLQ2Sb9jvadjr18lY0dJ\nkOMFdJT7GLWDZrWPRolMR5wk3UEwRoaFP4FacNz1eI4JN5vLpLI/ixKh2RsO\nPD9i0yCwl0eMRb2Fau2T74bArWy+pxDWPtxPIUCCe751NhSTrz+xZjVF8aA3\ngcHQ\r\n=LmA8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4402019f4f6436afd6849a5a0284a3bd3d4b6027","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.15.0","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.29.0","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.29.0","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^12.1.4","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^12.1.4"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.4.0_1628255292892_0.7872883613070758","host":"s3://npm-registry-packages"}},"0.5.0-beta.0":{"name":"@vercel/style-guide","version":"0.5.0-beta.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.5.0-beta.0","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"48c3d5460d64f0a6c1ee2cc77d149d59aedc161e","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.5.0-beta.0.tgz","fileCount":23,"integrity":"sha512-VLMmUBPQYvYwVotxrzAqJuaYWuTkKfbIrtpFSIyTxNikTLDaKVIqtBfT+AnjnLkC2SgNKUzPrsgeGLREsd+4rw==","signatures":[{"sig":"MEUCIQDE/5sGWxo9G3YOvtCMN2LyFHzIk4mRd+8q8TfwE++gZAIgexVIRR8wtEllJ4muBTvcFREdBbz6jg4FGzrPoqKSt1o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG7C5CRA9TVsSAnZWagAAYkAP+wU4kqA3HkJ+j1NRk1Wd\n2eGET+pqGsWvktAzlaMSNXkDP6EGeZ+d1KabjRdokNsyuIBAN3T1FUkV+kI1\nn0SXUbnjUpB/gvUXTduDknpfjVp0cEOBcQlIpNIqd+olHm4a67/b7QCFTJVk\n2R6y3Z9iE3Aoe7dzwdA0T0Zl/w8CsvtiwYdKrHe6+V27mkYfCEnnpCSm21t8\n3xRVHxU7wYy8QEjmeYoME5nS7L3a/6loax73rYHzMnuKHDPxuEIqJL0kMpiP\nvytDB3P1JjfxJN3UwwzHRLbdLnWZdrzVwxYr9Zp8GsWO3QXgTUKihgBxlvW1\nIzHtBmik66LCSDdxd811i5k2YVl9xvvGwwQw3iWL6MMiGahtnd/Bz3XQpEcy\nS89VrC1bxbNsE7wNi/0PCiLp49ocXkPF3apsd7QhLPZJoZYgajZs7jpNntcr\nOC84/W/Bi40LPfsNh4TemcdEJ1ZqPWgBu+twJoVsTzYqxs2C7yPmwHVEcsAO\nQpXSVEq3ODClX4bfmEPLjJCMzthhzhYtFOOhb7FJ5Qq+zE3H5O7iRJxW7Ku5\nqQfHyqK5lEN1PdvxEEKT+S2Z6srY1fPRv5ddNJDQqq1DOFgSgYYiK7qUqt++\nXlfr7IrwigBe+OG2TfS1MoxoUFxCJ9Fmy0F0b1WDkPxAlLpVX/40SMaPKOHH\nXAPM\r\n=JQZn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# style-guide\n\nThis repository is the home of our style guide, along with configs for popular linting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should always be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript`\n\nNote that the Jest config can be scoped to include/exclude specific paths.\n\n```js\nmodule.exports = {\n  extends: [\n    '@vercel/style-guide/eslint',\n    '@vercel/style-guide/eslint/typescript',\n  ],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: ['@vercel/style-guide/eslint/jest'],\n    },\n  ],\n};\n```\n","gitHead":"0c5e113013aa9cf828c7909d976aa1cb23ae3eb5","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","eslint-check":"yarn eslint --max-warnings=0 .","prettier-check":"yarn prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.15.0","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.29.0","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.29.0","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^13.1.0","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^13.1.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.5.0-beta.0_1629204664918_0.3156710600259305","host":"s3://npm-registry-packages"}},"0.5.0-beta.1":{"name":"@vercel/style-guide","version":"0.5.0-beta.1","license":"UNLICENSED","_id":"@vercel/style-guide@0.5.0-beta.1","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"f8f2a1a0f8b8121320c2fe623d70df69f2bc6ad0","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.5.0-beta.1.tgz","fileCount":23,"integrity":"sha512-GZ1/6mfwmVcf09++NiKXFxsFvvcBbchw08XNwjfTdHQjGL3qFsze+/z/Pp7iUeBveSPzk7CInTksT6CsLTC1FQ==","signatures":[{"sig":"MEYCIQCC6a+7NvTmDjRvfQqelMrh4TkjdKMvjXGrIj7fuQ0JGQIhAPh9mIdk9IMbuB0le/PReO0Y46dxiKTHisIqkucRm06F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG7TDCRA9TVsSAnZWagAA+IwP/2E6vfWzSAtIxc9eC5Wb\nR/vAvLpaUydZuQ8uT8uEkXlhG+NjuoUTisRPh0PHs1RHLMjthB/XilILyolk\n2IzvpBhqQTGyKDsilmtEhSgOUZ1MJE4QkwB7B/Ir3NX9/pkhkHIfwwNCcEla\nhT/3OKyLAhpIo+jumTQd50S/K5W69Id7Dp8wnrAcbx1EHj9pBtaJs+/pCnQd\nynEFLcaQg2i7cQK7QktDblVR61UywnHCAlhGtLNUQNG67AjILsozqznvB3To\nPhxPVPC0FdJV/tIovbE3dl/NTIgAsK3wDw/XySTbrVxpwmW/KgNkMA7etz2e\nSLV8ylThvWujjvP7EUwJ6C/lgmSv0WweVI6mpgXp2PdWlPuBoAZ/lSqfhUBj\nuex7CwEUZetG6nhXQGZQvc+bcKYijSIfplPMZo4mH+h4JSDj8mg1D0egbmJ9\n8K17HPIvHPqUG+GPSxv5UXgqTtnNwSU0RiQAFjCWEMymkwV2ksNFAlGZzszz\nSP/rJC0f/UKaKEAwMNQy6vNfSC5KdI86J6MwmWPpWWE8kOTY9Z83eQBnF7i0\noPUnNEoQOO/XxkKF+rFkEg1NEvBck8NDQdRVgL7PY2oBywr9ldvVS4r6JVuf\n55l5fxbLvDXsOYIi9wT+FSbyaAOt0/VpB/RzBOH5Yluehg9y2xBAM8czjfD1\nexjP\r\n=nM0P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# style-guide\n\nThis repository is the home of our style guide, along with configs for popular linting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should always be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript`\n\nNote that the Jest config can be scoped to include/exclude specific paths.\n\n```js\nmodule.exports = {\n  extends: [\n    '@vercel/style-guide/eslint',\n    '@vercel/style-guide/eslint/typescript',\n  ],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: ['@vercel/style-guide/eslint/jest'],\n    },\n  ],\n};\n```\n","gitHead":"6314d06acba00d4b7d4463dc4d5c924387f55b0f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","eslint-check":"yarn eslint --max-warnings=0 .","prettier-check":"yarn prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"^24.4.0","eslint-plugin-react":"^7.24.0","eslint-plugin-tsdoc":"^0.2.14","@babel/eslint-parser":"^7.15.0","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-jsx-a11y":"^6.4.1","@rushstack/eslint-patch":"^1.0.6","@next/eslint-plugin-next":"^11.0.1","@typescript-eslint/parser":"^4.29.0","eslint-plugin-react-hooks":"^4.2.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^4.10.1","@typescript-eslint/eslint-plugin":"^4.29.0","eslint-import-resolver-typescript":"^2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^13.1.0","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^13.1.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.5.0-beta.1_1629205699030_0.28838618947513583","host":"s3://npm-registry-packages"}},"0.5.0-beta.2":{"name":"@vercel/style-guide","version":"0.5.0-beta.2","license":"UNLICENSED","_id":"@vercel/style-guide@0.5.0-beta.2","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"133a7378dc9b78a4024228b6b6ae8610f330bf48","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.5.0-beta.2.tgz","fileCount":23,"integrity":"sha512-nhnl4rZH2J5zfJce1EkMPq0wMyjBp5TOUzH9WTOxN+a0TPO2QRDnAsUoGxSdY/bfRQd/o1vDMKqgWK4nqp58Nw==","signatures":[{"sig":"MEQCIAS92AKA2Nu5apb5mATAkbnQ6uyK0caBN6urhTQmE14rAiB3QPE9CTBcjEWCRAZNSOiA1RL+ex8Tm7YLBXbrcOvv5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG7lDCRA9TVsSAnZWagAAu2gQAI6RnnIqlc2HdRV7n3tj\n4RztexPXM3Q2QJKkydAARLaMNnIn7CRfYoJevgAt1B/UXs9jo3Ls/kpfe2xF\nm9Cixz/pXeLhweB0QQqqwOqA3xE2f5Y36UmvDubgFRgO4Xk9oNzRMqQ925I8\n5geWyvFhLQmnZQwKdzW0RgaQr6sOT+xUmLDzpSlcH7CmeCIlQMDVLvqmUDbm\nWCtcoJ1v6FFIHvPwFbG6mx9O0vS2j7u53gcmRCGacIqTrOVj+nWir04bsgtM\n++rfq5vwm03ZDUB/1Lucu2uibsu0SGC8NRiLX3xd3cDyGasvz6wakoaHBAj3\niIkfEotObFYY+H+l1YbIK0oey/EVfHB/97ta1otO4Gjig/hkhsuKWipLdZpv\ncLZhCTMsQSiaWSCZGG9uGGb+0sVQesx3oPTttxTRuq5W45N2pqP1id9eXsNV\n2omCeqlYdNoyC7TTuFx9fXW+v6/bsNOAdWPbvllHPpVh8NeXsZd4vek3rmZm\nXcG/p/LSBwerLvHUctmnI6OkpAT/xtbyBf/8L021FE6P9083PWPWcmVkLhfq\n24ia1qxJmxyJk3P7IR/Zy4FMaRlCTqTquD4vw6NOLI5CHyUIxTQPpzoM0IjP\nhG6VBeRl48TgipQaz1IkedsGmt7gvilUpcAYRIzK8bNBddITmJhnlee6J4y+\nLiOt\r\n=Sk7i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# style-guide\n\nThis repository is the home of our style guide, along with configs for popular linting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should always be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript`\n\nNote that the Jest config can be scoped to include/exclude specific paths.\n\n```js\nmodule.exports = {\n  extends: [\n    '@vercel/style-guide/eslint',\n    '@vercel/style-guide/eslint/typescript',\n  ],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: ['@vercel/style-guide/eslint/jest'],\n    },\n  ],\n};\n```\n","gitHead":"ffb21032363faf95f601b56888ca40c39e150a4f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","eslint-check":"yarn eslint --max-warnings=0 .","prettier-check":"yarn prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"6.14.11","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"24.4.0","eslint-plugin-react":"7.24.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.15.0","eslint-plugin-import":"2.24.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.4.1","@rushstack/eslint-patch":"1.0.6","@next/eslint-plugin-next":"11.1.0","@typescript-eslint/parser":"4.29.2","eslint-plugin-react-hooks":"4.2.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"4.11.0","@typescript-eslint/eslint-plugin":"4.29.2","eslint-import-resolver-typescript":"2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^13.1.0","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^13.1.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.5.0-beta.2_1629206851462_0.6906922904127892","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@vercel/style-guide","version":"0.5.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.5.0","maintainers":[{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"coetry","email":"allenhai03@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"aspctub","email":"aspctub@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy1@outlook.kr"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"5a30107293c0eb66744120f2f593ac1865dfd4ae","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.5.0.tgz","fileCount":23,"integrity":"sha512-0YTZjX/EvNEwSvG8kJx9YUvxhTcw0DXaFEgqycHpZFpTzoXtWa7zKAtOhBxBi4XlFTz1+wKRQJtlcSsMb4m/cw==","signatures":[{"sig":"MEYCIQDnAXO9j80ZW8aMqmdIiMZjnZ4zgzqEksEIWruUpCyC/AIhAMY4Keb1cQhxgtSmHQturzlMfCWhhV4fVHBKCGxCIA8+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG758CRA9TVsSAnZWagAABTUP+gLHbth2LA+yzo8HBJTW\nG9NWMDkYb1m+EcWGZmypXVx+k87akyl7GfT+axURFrDFlMVMTwwUXgiiZQWj\nIvwE/tLQdHIL62qnH2Q5dvcAuXuAmAtiro2BARlLESxEgtskt1RlrLzFromt\n0yj/yBTItmbwd+3EEx8EbuR9Bc+ziPIx5+zBXMoxfL2AvLMel5tYLs8hqL2t\n88Z2iwX+z6gU4Hvyx9+8LGaSj+0WTGBITXeIGVJqFnbMzoSCYfGaMQccTDZn\ndTwJTsZLIAOylEjmthTcaJohUdtFwryySDbRhyuZMD8Gf7lHjcjsixaWIozs\nIY6580PD4FE+zsKsqpg5FMYKkNcVHHJdvdLA48+/kzf/EQf+gmGsUvZr4sv4\n0nTPzeLStBC+lZBccnpzUKxdkvLnzZlV/ewUV7sKOUuby87KREFX52J/cIy2\nqvF4v4uhTyp3+iI0kimzpiofTvEztBOP45G7eDvNcogYdRSH+fIEmQJWnWk3\n4rHDi8sNJL9t4tGo1gZCNBMt0AtJ85cqCAwz/mbapSnk03Z2XcOYNO5riGTl\nB2knBMAi4HrXf2npL3XJw77i/cfPn9Q7Q1pXLv0mVUgw0BzVY3LoGe785pl1\nbjtCAfCRlMXMjsUgu6+OGNo4GJiio+Q7SnVzNNzWKjtsAaet+1e2RYBIZfXW\nElkl\r\n=VS0h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"19eeaf694fe8bf6edc8fd7c08c2146e01d6580ce","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main"]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","eslint-check":"yarn eslint --max-warnings=0 .","prettier-check":"yarn prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.20.6","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"14.16.0","dependencies":{"eslint-plugin-jest":"24.4.0","eslint-plugin-react":"7.24.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.15.0","eslint-plugin-import":"2.24.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.4.1","@rushstack/eslint-patch":"1.0.6","@next/eslint-plugin-next":"11.1.0","@typescript-eslint/parser":"4.29.2","eslint-plugin-react-hooks":"4.2.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"4.11.0","@typescript-eslint/eslint-plugin":"4.29.2","eslint-import-resolver-typescript":"2.4.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.1","eslint":"^7.32.0","prettier":"^2.3.2","typescript":"^4.3.5","@babel/core":"^7.14.8","@commitlint/cli":"^13.1.0","semantic-release":"^17.4.4","@semantic-release/git":"^9.0.0","@commitlint/config-conventional":"^13.1.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.5.0_1629208188187_0.5714240023267905","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@vercel/style-guide","version":"0.6.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.6.0","maintainers":[{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"8c5615b5c9d786ab981b1ab243b0564407189fc0","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.6.0.tgz","fileCount":22,"integrity":"sha512-/3maDNdt5W++JumueXJYXV65nX4dqoR1Qe+AM9pUawCmsH2ngHKjTxciOF2mEyzTs6ENnVT8JvZkT9X8Hgcn2Q==","signatures":[{"sig":"MEUCIQCh+ouNAbzWYgfSjZpY9UjW2qvfksShpEKEAKwvrzwW2AIgYlgqSoK9D0EVYol13SpjzuluCzpGipO7u3iij7GXG1Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37725},"main":"index.js","gitHead":"6b44142bfffcb8789af5c2619d51e35e987f5fbc","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"chore(release): ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","eslint-check":"yarn eslint --max-warnings=0 .","prettier-check":"yarn prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.1","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.10.0","dependencies":{"eslint-plugin-jest":"24.4.2","eslint-plugin-react":"7.26.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.15.7","eslint-plugin-import":"2.24.2","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.4.1","@rushstack/eslint-patch":"1.0.7","@next/eslint-plugin-next":"11.1.2","@typescript-eslint/parser":"4.32.0","eslint-plugin-react-hooks":"4.2.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"4.12.4","@typescript-eslint/eslint-plugin":"4.32.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.2","eslint":"^7.32.0","prettier":"^2.4.1","typescript":"^4.4.3","@babel/core":"^7.15.5","@commitlint/cli":"^13.2.0","semantic-release":"^18.0.0","@semantic-release/git":"^10.0.0","@commitlint/config-conventional":"^13.2.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.4.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.6.0_1632838095136_0.31676203948175696","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@vercel/style-guide","version":"0.7.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.7.0","maintainers":[{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"leo","email":"mindrun@icloud.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"raunofreiberg","email":"freiberggg@gmail.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"arv","email":"erik.arvidsson@gmail.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"ab8342e8729aa4854403d0e2b48f67eaaf575719","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.7.0.tgz","fileCount":22,"integrity":"sha512-N47btSQlwjHREwvBDHmfo6ZiXLWUQUQczw61WRwh/OsG143FWIX8iPdAz8Alpx9pUMSI7qKgAvLrFKoSZdWW+g==","signatures":[{"sig":"MEUCIHgxhL8FoMwV+1ggL7RcEaK+LZb6bcg5nVz8itf/mL3FAiEA+63qw3k7fKAJwCTL5bEwpPLQPJ7AIl1FdugbxEfFevQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37322},"main":"index.js","gitHead":"188ad4d253de19041286a884ed99c1f1265673db","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.2","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"eslint-plugin-jest":"24.4.2","eslint-plugin-react":"7.26.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.15.7","eslint-plugin-import":"2.24.2","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.4.1","@rushstack/eslint-patch":"1.0.7","@next/eslint-plugin-next":"11.1.2","@typescript-eslint/parser":"4.32.0","eslint-plugin-react-hooks":"4.2.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"4.12.4","@typescript-eslint/eslint-plugin":"4.32.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.2","eslint":"^7.32.0","prettier":"^2.4.1","typescript":"^4.4.3","@babel/core":"^7.15.5","@commitlint/cli":"^13.2.0","semantic-release":"^18.0.0","@semantic-release/git":"^10.0.0","@commitlint/config-conventional":"^13.2.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.4.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.7.0_1636126907207_0.8063982023906602","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"@vercel/style-guide","version":"0.8.0","license":"UNLICENSED","_id":"@vercel/style-guide@0.8.0","maintainers":[{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"redacted-vercel","email":"a@vercel.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"aboodman","email":"aaron@aaronboodman.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"19be414d35a443257af6a6486ec95fda003ee5de","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-0.8.0.tgz","fileCount":22,"integrity":"sha512-9WF6R75hgpqO1/0EnHwRZ72fllvDBRCtd9k+PooC3O9bKpVQpEnix4j1GHKS5ZcUep9n2wxen3VelbwEqdT0Ag==","signatures":[{"sig":"MEQCIDvQQxVBWg1YdY5FpUEBo/Fg5HKGX62zQFYc5L/DnmmxAiAIeueyzB5rYKY/phMxX05BRH1g23bqAnp0Z5HiMy/1hQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpVwACRA9TVsSAnZWagAANoAP/26P3kt65bXYYXcaoFFh\ndRKkKlkGCVyskarez9GyX21VQRGDFj2TiFNSOmASOMSVKWPTsQeT49UbcBv+\nw+LJqEH/GqWKRhq+PH+ICKyGXNZ4mrE274dqlFJJapXOL95XIP9zM0HpD1ia\nP0sJLxxQ6ixQP/cYjf3M5jg9fwictfP3/UG7q+W2XjgLte1IaADS4gZ743t2\nMVMvtWCbbrYgC06mieLeh+ll67XjXOFL73OuoTZMNJznHasECNuxnBY4dRoq\nNoxiD+dReX+RTZ/gmRIr8UM6s3XEu3eAKa+NllAlxq/Xir+ZqE1Gruz7Lw0e\nb6ifcOufe3dlw/fpQVmnpYHHTMVvinQapLClKPvwz9KDWnp8g6ZsBbP0UMQL\nWY6bsdDXFn7Qe2SUdKndKwsqUYOKqYJGJWIUgabKbTyF6scGToax0E7kqPsV\nXDFe3N221tB9ZZjJ8HBiFH2+EqdhMbT+qVfDAoPJJTDlnBnuCOjPJsA5Ivqz\nxmSKhQfMShxNIguVDfGRerG2MLzgNsh7X1u3U5YRo4zC4EVUHEnaM5anRSSb\nVI7Zt5kStz4gLXsMthd3B0BRDgZKzS2s2Zj7m3i9p+4aLOCKWnyB25140rGj\nQNpnqSLc8EEShNsUxJ57Fo8quctecLy9q9tFUjWTsuB1GuslObZdPiUkaKWx\n8/wl\r\n=BKCN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ea144a8f0f2343986cbc96675148a93b99e59a54","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.2","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"eslint-plugin-jest":"24.4.2","eslint-plugin-react":"7.26.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.15.7","eslint-plugin-import":"2.24.2","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.4.1","@rushstack/eslint-patch":"1.0.7","@next/eslint-plugin-next":"11.1.2","@typescript-eslint/parser":"4.32.0","eslint-plugin-react-hooks":"4.2.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"4.12.4","@typescript-eslint/eslint-plugin":"4.32.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.2","eslint":"^7.32.0","prettier":"^2.4.1","typescript":"^4.4.3","@babel/core":"^7.15.5","@commitlint/cli":"^13.2.0","semantic-release":"^18.0.0","@semantic-release/git":"^10.0.0","@commitlint/config-conventional":"^13.2.0"},"peerDependencies":{"eslint":"^7.32.0","prettier":"^2.4.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_0.8.0_1638226944613_0.17317481169823012","host":"s3://npm-registry-packages"}},"1.0.0-canary-test-1.1":{"name":"@vercel/style-guide","version":"1.0.0-canary-test-1.1","license":"UNLICENSED","_id":"@vercel/style-guide@1.0.0-canary-test-1.1","maintainers":[{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"da875ed08e2fc4f4178081986cce780477473e05","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-1.0.0-canary-test-1.1.tgz","fileCount":24,"integrity":"sha512-UOwzq4GyWN1X9wgWMWyvdPxPWyMoUauUP/UH1YyN8QbXhKya++r/Xlz/2piiJoMIbmJDV+OrbSdBFdgV9GrRaw==","signatures":[{"sig":"MEYCIQD0SVK8KKxOnMAPv5Vfn2FKG1sMmJYBM07BNloEbKQvbQIhAMUKfRYJ5fiWGXUI0LSPalQMviApe9+iJ70ATGc3EsXS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhp0Q5CRA9TVsSAnZWagAAwuwP/RqdMVQoleamSTc9nRun\n/+NoCKHsTfYAX8KkLEG2Xu1Wl7hPMYh1VmWjwsDgLxvieMlzTfo78dmSWfvY\njEVeUqQHCLRQl1yYKgp1VMSJeaQHkdIWLCskuILu7VZoiaRIhgxyZIC1a+94\nxGZ07YVBCZ7BZIO9DVqDD+yp1WG6JYIILYiF2/pUBZ4EjgVoUzhRz8MtkHir\nNhVJcanjJRM3dpae7R98AThZ6szCqkYVTzRjuj3eluO6IHJIrWsQ+QTbqt98\nCgo6+j8AkuEUE7PajkWVmRgPDCGEzFvjriEaL283RW/sqPX+eLaM0F6ZATkC\nvsyCZNoX9J5r3TAMYQKhyYUaMH00fasCGy6vlnb2XFkOHTmIv1VD13D7idZY\nDKr30vERQao+urZEg+Uk759MEUTAGxWCjrjVnAcq+9uwd9DtAxX5n0d4COnR\n5p/55fUy54lvmxMGFF8T4MegFjZL0srOdmRZMaj7swOMRfBd1c0s3Z6WuYX9\nq+bXUMSf21E9LjcSGRZNeH3oh44qPxk2lnK0xR3yqnhCSzpJyAiWygZG5MeS\nJgNUVyqGKH1YnMXVd/g9suAGE29y8Sm5NYk5C9NpSOzBTzASL5XR472b5pPm\nxJOfRAZsNlgzZnVvulAsVreOOj2vdMpnP4HaGvPE0b+o+pL83em6RksgKQv5\nnKkJ\r\n=GZyv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should\nalways be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"f1ad83819da879941adaf5de6a530b6297d2b4f9","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.2","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"eslint-plugin-jest":"25.3.0","eslint-plugin-react":"7.27.1","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.3","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.4","@typescript-eslint/parser":"5.5.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.0","@typescript-eslint/eslint-plugin":"5.5.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","prettier":"^2.5.0","typescript":"^4.5.2","@babel/core":"^7.16.0","@commitlint/cli":"^15.0.0","semantic-release":"^18.0.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^15.0.0"},"peerDependencies":{"eslint":"^8.3.0","prettier":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_1.0.0-canary-test-1.1_1638351928998_0.017217848490438392","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@vercel/style-guide","version":"1.0.0","license":"UNLICENSED","_id":"@vercel/style-guide@1.0.0","maintainers":[{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"14af5b84b310219bcca5af157a6368718e67a0ac","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-1.0.0.tgz","fileCount":24,"integrity":"sha512-6D+n451+7+MX/UVAyO5csoLiaRW5xt3c0FKHei+KzchKBOtClALq+Jxh44uYyzdMA3Y0sFBz2qxivZqzuJmjoQ==","signatures":[{"sig":"MEUCIEQ57cWtq68Fe2AwNIjd70njD3ybdHTeoMuwR/fef6+1AiEA8muXV5IPfq/RVrKrQ55+Bdri8nGDEkgD7zoF/6G0tkY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhp0W8CRA9TVsSAnZWagAAuFcP/15hIaPi8g58bSJXz/6e\nvxqo7pOud5ENl8FfI5xZofNzC/F09OcEXLcm/7OrnUcNqrcMOFfyf48Dcb+M\nxSQvwoE+FNoiiAiJgYtVr1ivAg0rd9DuxJp0Hd69gsrY9t1cEFtAiNCi9bWC\n9IJX0Diqekxu+vo4tNv/pP4AIwpbzCU8z04zDJWBL30/ZlNSe3DjGUnK3B8r\np4kSco14U4ya+/kM8xv8ef2ehhPQ+Cxw7v2cI8SWxw9msmvOthHPUP4Cbbh4\nlrDztsguHBn5ZKDOCzr94gFvr1Uh3INcO1cvXEossCqjjEjWIiRlqTVbwIKH\nIRWDtl7g4lPfedDdtWdxrp7j+e8zpiiGgfJZ+8aStXTlCeOsp2XE6rDp/ih1\n79d9wngi1MyypzL4pkESMIreoHEule2hdz4hlkQwdLC3JBjEv6GcLyUDNtQW\nXFnXz4TytnT3K0mjxBOhO2VgliBkJGix2q3pyrTMbZIW4cMd5jR/23Ksntvs\nfZka/xNrhjnb0dgOGA06o6PjkVe4ef9+wNEFuQdNn69kL6oL9guCvrOXtpSN\nnTEs+o4PjUf2LD7lgrCgt0gLIliJCRH20NLSXty3KxIencE5oW0Vu6h9Ll6/\nbbfsH2TfDzD9upUNMLkx8ZBPtc6yuhQm20r/kHpxLgxRJ5Cqh925yJLc08Ao\nvwK3\r\n=YePx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6a54685413c52d30bf44d938e043e4c9fcb336e6","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.2","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"eslint-plugin-jest":"25.3.0","eslint-plugin-react":"7.27.1","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.3","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.4","@typescript-eslint/parser":"5.5.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.0","@typescript-eslint/eslint-plugin":"5.5.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","prettier":"^2.5.0","typescript":"^4.5.2","@babel/core":"^7.16.0","@commitlint/cli":"^15.0.0","semantic-release":"^18.0.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^15.0.0"},"peerDependencies":{"eslint":"^8.3.0","prettier":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_1.0.0_1638352316130_0.6224933339059613","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@vercel/style-guide","version":"1.0.1","license":"UNLICENSED","_id":"@vercel/style-guide@1.0.1","maintainers":[{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"joecohens","email":"joecohenr@gmail.com"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"ds303077135@gmail.com"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"mark.glagola@gmail.com"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"f8c0401699dfbf835766f0f403b9db9f9697bd44","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-1.0.1.tgz","fileCount":24,"integrity":"sha512-Z0vHYFoPxPqDi24g0pJgnV1GoXZ5ADMYpWL85dYIif/JW+zmwInaupkeYGnkMU0lpD+Plx0uo+H34gSzsPFytw==","signatures":[{"sig":"MEUCIQDNWNHStH66AJmefD/OXjS08bj01PkYnbuFf743LHkI0gIgSIbL49I/7F52oYo1zfSg+swMWwJBt6no1bLTOh9yX/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr9+LCRA9TVsSAnZWagAAmj8P/2Gjvd9I6eLUw0z+dV36\nK7gC/Y20pF6eh7mUKusytv3spn5m3YhuHrRpumv0kp3Ai7/itd7PCX2Cw81p\ns5JnFPMYOs+DVBQPcCQPkWF1AKjozaXim6KOY5Af7QdQuSsJxkTHwTZRTy8t\n9zmzf+yzR6q8ol16/kaPzoy0bActGWXwz7tu8QTJfWRGBY/PaIp54J8RLGFx\nvyhordVGKaBQpri7TuZ6eLvf58giudnvOXwDMxT1SiDsVZ7GHUMXFs/NkBUz\n6euUU8WHa7e5iknNus5aHIhXANaYjLyL3WqkWIbtnsBLjvN7d190fiznm2Xo\nYg5kQbNgU308YemW3Uqgzf9wB9KPT3kcuCHlNgM5FhoIvAhvIjQNBguJ5Qi7\nVqD/PZM44LlNNePNazBh0k7pEojwjBUuA+sIwrltWuIeSHd1P5ghJmxjM7zu\nu9/GeDhmzBdXO2qbrlK7mjLfeokV0P4QV78meE1lydUoW67gyXD16wMz5evn\nAztgErrBbkgYI1fBuy8xU4hE0s2h+SM9EAsZJz2FyJXtlBEF7G/wdWYToJgF\nYq2ZUAGjHBrqTysstA+30jHtyRlTKcxKSkN1Zw5LYFlH3jHq6JujI39lA+9q\nR6J4RAM569DwnST1FyHVA0BFDzW4h7u3Mt/6nvBzswjRjyAUmMCjBa3vKJYa\nDafl\r\n=sWjc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"68af3b023ffae422a564bed5ba7e801656d1c72f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"canary*","channel":"canary","prerelease":true}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"7.24.2","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"eslint-plugin-jest":"25.3.0","eslint-plugin-react":"7.27.1","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.3","eslint-plugin-import":"2.25.3","eslint-plugin-unicorn":"39.0.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.4","@typescript-eslint/parser":"5.5.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.0","@typescript-eslint/eslint-plugin":"5.5.0","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","prettier":"^2.5.0","typescript":"^4.5.2","@babel/core":"^7.16.0","@commitlint/cli":"^15.0.0","semantic-release":"^18.0.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^15.0.0"},"peerDependencies":{"eslint":"^8.3.0","prettier":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_1.0.1_1638915979163_0.3561831004802565","host":"s3://npm-registry-packages"}},"2.0.0-canary.1":{"name":"@vercel/style-guide","version":"2.0.0-canary.1","license":"UNLICENSED","_id":"@vercel/style-guide@2.0.0-canary.1","maintainers":[{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"6be6bbb812f1efad720f009ea88e8f10ee441f88","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-2.0.0-canary.1.tgz","fileCount":24,"integrity":"sha512-ux1mNUyly6AAGru9ZmjZruSjXKiO72nkR3uL3TasMeH3/gING2qEPCdO8i2Tc6DZJxV+TnY3ZgMuyiYo1kLhGg==","signatures":[{"sig":"MEUCID24Lj3vcjhxC1UrAnALpBKM6ARJC9BiFDDwI2wTpOxRAiEAxEXuUiNcjr81jkTIqW3HYpXFJUl22I99n/3XB2aPOo8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+Om5CRA9TVsSAnZWagAAZz4P/AtftGwoREcyYTx39TpQ\nn7OAzJxmRS+fAe+7vqkJJvLsgVhIrPW0CroC/czZWV9JZ7rpdWs+aduZw4Cf\n/qOdhXqM/HnHoe4SVArMFztrkaQHzBVvUf6BQYIQy/Ulh8Awxk+L9KmWd3Jy\nIobQ1pUaEOcbFZ+TDI9AdxBTeylNxLpMoky0BTGX0tCkoZ0vTyIUw/V91Iqe\nIv4ZkREN4+4He7DjUFBlUNzEgFZ7a3v7HThJi1Jf2Cg1lPsPqq22/GCdbLEI\nZe0RBxP4I0SW7xLDeh1+p+W43SdOZQArHCLoKhMRojhO1FaxWmhzfuUAv/SW\n3WGS8gWeNqLI1GJI1++vBmIxFTsoD3zQv3WvJSraNjZPy1ctDgNh37mXDban\nVxaqaYg7FjYPkGxB35E/VDemf11/o8cWj1hH6y5RaSoDU94GgZPUdfwkl8MZ\nAoKN/Uc/bq+OQ4r0+84LsrJjDy7+wMN2ZWytKCQEBgESwyfoCEKRxxSSzMux\nZ7hGAnA66ywZEUjLc8ZkljJd7nKKLLeLNt6TGAIGBNAnrB588NJm1fE/HYPm\nyDIkld0+/M0Nup4UvqQFFalmT1OYBwu8zft8F1sKYAyDFth1ckPz1ikb9hGI\nr4wsOYMlo5gt9bkhM4Hf2IT6w73gWaY06uCNLRrk+72xV+gXpsMBEbyD02Vn\nIKVj\r\n=QA6D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should\nalways be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"07577b25f7d04e78ba744b308efdbf34ece9e3ba","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"message":"release: ${nextRelease.version} [skip ci]"}]],"branches":["main",{"name":"milestone-*","channel":"canary","prerelease":"canary"}]},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.2","dependencies":{"eslint-plugin-jest":"26.0.0","eslint-plugin-react":"7.28.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.5","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.10","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.4","@typescript-eslint/eslint-plugin":"5.10.2","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.8.0","prettier":"^2.5.1","typescript":"^4.5.5","@babel/core":"^7.16.12","@commitlint/cli":"^16.1.0","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.0.0"},"peerDependencies":{"eslint":"^8.8.0","prettier":"^2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_2.0.0-canary.1_1643702713648_0.6957662937990274","host":"s3://npm-registry-packages"}},"2.0.0-7c88dbc.1":{"name":"@vercel/style-guide","version":"2.0.0-7c88dbc.1","license":"UNLICENSED","_id":"@vercel/style-guide@2.0.0-7c88dbc.1","maintainers":[{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"40e0db055d7bd86e4310999e119d583809f77c1a","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-2.0.0-7c88dbc.1.tgz","fileCount":24,"integrity":"sha512-XaNz20s5YocfKHXDDAMOG5BCPh9HQ+DuKe8Wb4Ms2iWhhicsrXEWpR5vtyh5lnYPW6/cifTcHbSWXu1W0UipVg==","signatures":[{"sig":"MEUCIQDlPUFe785cQc25X+3EOYjBEujoiIaFMaV6KLvJiAMxbwIgZYHoHKxq8UXX7QdFwm9Opbr0TT+2kvy+ROc/DdB/Yrs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+cnsCRA9TVsSAnZWagAAXBYP/2fnK7JpMp9B2ws6cxca\nMmkuDR2fAWXW6KVSVl9SpV7eyWcYsT3HIQEuqUOA8jiIbfXb5l0o+ObhhaV+\n0gxdBcosvQ7aWeZX2EmCxOmXTn5KLjdr+YDfPcHD2rjIEBnEwsR5sDn/fu0m\no3Bh4mmUFNMaWAFPcPEFRfRsvS3yBqzlgf1KchmELZkM2MCx7DeMVSaoFmUl\njy+4CQQ7CAkvLMt84TgesMi9HZk7zZm8Nhu8HXAmFuU++dWhTQH24/6dM6Tj\nF1YM363f0I7zZsirTZlz4n4Hp/hSkmTBHt/fHZnmrjQQEfsz9enmonGa1V7c\nAjiRQvNPtnp7MQ8nrIErMb/T0kw50KJCXP1tLRfHniH1kA51hr78Oj+fSjrl\nV+9cvSUiQniJsO3qBPLvkcPTlJJqPgtZwkNTstzW/k4PINazKJHgVh0EnTAT\n1KAp0kRLmNfJfltxfbewJtJaFqFr+3iB+vG1sj/1u3WJktM0OjyLFJhNGq2R\n4nHKVkb4IGcq+QI9ZyacADt+ip2SBkJvKhHKs4d7e5DSknLBaMn/pVK0j3pI\nguMxSPv4XqNRxU/wEOxV+QVr2CgaSicOpgRcWcODa72aIAi+JGK0h+dbyahP\nl99lOqk6+NYFtJazIVBnnm6Xu2w0eR9ylK865w54Inc6gsmY5CsOMrP/fX1I\nlkp3\r\n=uL0E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should\nalways be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"6d9b76c59c73672e0830e6af8fd54dada047842f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.2","dependencies":{"eslint-plugin-jest":"26.0.0","eslint-plugin-react":"7.28.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.5","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.10","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.4","@typescript-eslint/eslint-plugin":"5.10.2","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.8.0","prettier":"^2.5.1","typescript":"^4.5.5","@babel/core":"^7.16.12","@commitlint/cli":"^16.1.0","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.0.0"},"peerDependencies":{"eslint":"^8.8.0","prettier":"^2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_2.0.0-7c88dbc.1_1643760107953_0.6233780323249756","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@vercel/style-guide","version":"2.0.0","license":"UNLICENSED","_id":"@vercel/style-guide@2.0.0","maintainers":[{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"paco","email":"pvco.coursey@gmail.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"81eafc0be2858fd7e6fedb1aa91ee80b635086a5","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-2.0.0.tgz","fileCount":24,"integrity":"sha512-s0uWVXhYa0cAlHLj36WzN9trP+msMgycYHJ4Zh+5W6aO2z47//xI9Z57q0iMfiOJq3kyM2wrg/KeoWdDDMAiWg==","signatures":[{"sig":"MEQCIGDwp4Ai0z1yEXbghP77g4PBm2MzwoIZtCBvEjq2pRRuAiAhg0MMl77kt9GISg+hAWCAIIltjypAQXpxYzuH2DcDWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+c2FCRA9TVsSAnZWagAAuHIP/i9FuDuHVi1fnFXE3fq2\n4EgSFyXrmmLIa8GWP2uZa/IR8600vPybDanQwawY/LjvPMWU4oTy5mGrmMif\n40nf3Zr2wE96AS29alruveQY8PkIVmtF1XGgj9ZuyQFX//frppPS7uh/KtTY\nppsNQd9sQaPngo1efZbDmOILsLeIn8yE+iAFG9oRvYLteyiQcZfd4BF2iDSw\nrJOrk/VzFsOToO7loQkBuucAlvQoiU4GqWrVDfTFDguch1lVbvlGc+WMqFFJ\n066QA63rqNN6foA+eSNeBI9dLlYBQufTzkc4pwnpp9VuZ+d10SzMXFdhtfO0\n05HYQU4nqLEV2vnVvpfenH0/Gzx+3SQzFF8ORUoUFS8cSh22S+WiK0wsiQEF\nRwsIGRpUqPS1EEIaamWFilkHI+LCFuJ9seZg8YbRHvjhEvqXOU09kenx59fq\nXB6BPUuO1pbWKPfbuNM5Te9GbV2HAr+B+K5NiqrYxAowAHGVzgibGCDzU7/T\nriA/nSwNRcUUgE1Im6iVXweIk23k4CFtCJEKmZH7MZAAjP016SDXOiFhPIDy\nGawkW1DMYXKMj1Y9g7dXYJ9FlCIzBv5svTwoWVBIg4E0tHELjGKK0p5HvvE7\nsoDeHJslWOgrWzDlMeZats8q1SxwyhOTJ8KY3rJ09Jd1jivm+DmxlHGeQyH4\nLkVc\r\n=GtfK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"52882641c3f449c84d393a2ce5122768709a12c2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.13.2","dependencies":{"eslint-plugin-jest":"26.0.0","eslint-plugin-react":"7.28.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.5","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.10","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.4","@typescript-eslint/eslint-plugin":"5.10.2","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.8.0","prettier":"^2.5.1","typescript":"^4.5.5","@babel/core":"^7.16.12","@commitlint/cli":"^16.1.0","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.0.0"},"peerDependencies":{"eslint":"^8.8.0","prettier":"^2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_2.0.0_1643761029226_0.933838452703275","host":"s3://npm-registry-packages"}},"2.1.0-canary.1":{"name":"@vercel/style-guide","version":"2.1.0-canary.1","license":"UNLICENSED","_id":"@vercel/style-guide@2.1.0-canary.1","maintainers":[{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"mitchellwright","email":"mitchellbwright@gmail.com"},{"name":"kwonoj","email":"kwon.ohjoong@gmail.com"},{"name":"kakadiadarpan","email":"kakadiadarpan@gmail.com"},{"name":"amanhimself_","email":"amanmittal.work@gmail.com"},{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"dav-is","email":"mail@connordav.is"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"488e20be74e5c6f8ad28b2d97f6429eed533e0ea","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-2.1.0-canary.1.tgz","fileCount":24,"integrity":"sha512-OT0cVtKnYz6rJ9hDEgwewD2a3H2XVuBmEklQm+n530h1SSplx7NeRiBsYjqrOfvpq6WS1jbfXd8Q3c6MPw+6UA==","signatures":[{"sig":"MEQCIFfzmwSbgtD7l6urbsRxw7k3z89HoWuvY0r0cKMC7TjuAiBdYfwGLdFmHffbMx14IkS6kFo1jspDqrROrNRiQkJuUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHPPRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp60A/7B8SC2YmJaO0RdHoeAlHHrYAaME+OlVnHZpOg8ykGa/LD8FCH\r\nJ1g0N5vLln0teuVo3PA8ZZ/SUfcIcb84MBgXSXkyg1/7dF78/HAqZZFQYiT3\r\ntD3XzkYBUB4yjNo0u3THmqBK5xpgw+HuR6A73ODHP63vFkPQHHwSe4T1fg2V\r\nK2dhtN/mGORDNICRNVolXnRDLFovKL5f0MXQJoRnTaakDUPm8QRt0+Oakgy+\r\n8eul9AgK6cxNHFkZZisxWCxaf0WxyOzLRjj6IEMlnRg7J3WkgN4RaAbvY0Ag\r\n+fAEK4GrJj0XyFklfFLArSAidpP7VjwIqqmokmRWoSfkHimEIETdQfrozw5t\r\n4FMb63yPZGAwdT+4PH1YI1Ko0RmjASQvKPoOUcFCZigMxjECsLmpTZOZ72Bq\r\nYL21ge1k+0ZAYRBUcUVlrjvjY64+Cn0hGyeujohdc4DhYBrSh8/8RL/Zf43V\r\nXa6uHKWwXUAf6fLL9Zu6GhsrW1dycbu81eT80VfeHBGgVU8DSxJq9wP+04dJ\r\nVfkyvUY6+pUSoq2YeoUo5vov4i9TnVYhi5P05zeTttSo17a2DPUSV6pfD9m0\r\nOqRymb/P/GMn5D7i0pAEQR+ct0i0r5hXT7F6dj9mr916HTsfBLyw8y4N7jW4\r\n0Qb9eMVP7koOCkWuHD42F0EET2JO8uW5lMU=\r\n=TEC8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should\nalways be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"4a51480e0b047ab2ca0a8c5100e5a33ede397765","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.14.0","dependencies":{"eslint-plugin-jest":"26.0.0","eslint-plugin-react":"7.28.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.5","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.10","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.4","@typescript-eslint/eslint-plugin":"5.10.2","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.8.0","prettier":"^2.5.1","typescript":"^4.5.5","@babel/core":"^7.16.12","@commitlint/cli":"^16.1.0","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.0.0"},"peerDependencies":{"eslint":"^8.8.0","prettier":"^2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_2.1.0-canary.1_1646064593696_0.9372044767950953","host":"s3://npm-registry-packages"}},"2.1.0-canary.2":{"name":"@vercel/style-guide","version":"2.1.0-canary.2","license":"UNLICENSED","_id":"@vercel/style-guide@2.1.0-canary.2","maintainers":[{"name":"gbibeaulaviolette","email":"g.bibeaulaviolette@gmail.com"},{"name":"thomcrowe","email":"thom@thomcrowe.com"},{"name":"emeraldsanto","email":"yanick.belanger@yahoo.com"},{"name":"ecklf","email":"ecklf@icloud.com"},{"name":"timeyoutakeit","email":"amy.burns87@gmail.com"},{"name":"cramforce","email":"malte.ubl@gmail.com"},{"name":"balazs4","email":"balazs4web@gmail.com"},{"name":"casey.gowrie","email":"casey.gowrie@vercel.com"},{"name":"samuel.foster","email":"samuel.foster@vercel.com"},{"name":"swarnavasengupta","email":"swarnavasengupta@gmail.com"},{"name":"lydiahallie","email":"lydiahallie.dev@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"mitchellwright","email":"mitchellbwright@gmail.com"},{"name":"kwonoj","email":"kwon.ohjoong@gmail.com"},{"name":"kakadiadarpan","email":"kakadiadarpan@gmail.com"},{"name":"amanhimself_","email":"amanmittal.work@gmail.com"},{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"969a9d87af13814b34c324e2fcf050bfa47d36f4","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-2.1.0-canary.2.tgz","fileCount":24,"integrity":"sha512-V7sNc3e/t75PisowXPoiowU0d15C+YOsWK4FcCKuw4fzmA0lD83PhXh8QKPdE2VjklGPO+0QPr4/PIM1KHxX7A==","signatures":[{"sig":"MEYCIQDKWtupklWwxTbCNl1JjQ8wgoRmytugm8Kmrnm6NSW9uQIhAKEPmIC+0pf4pV8cTTBKkQ3lZyThF7ThqONJtR1aKaqO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQIEKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrinQ//XCtvvXttc3/POY/QtaDJdlwndb2EG7mRaKmBayEKKLIUeGHz\r\n1bEAdSHQGtzfLKh8ux3lLpZLYpydasbdGvPm3qIf85MNL/BkbjGeHOS3v8bD\r\nAVlhUQA9yxMYFHq2uIqpxYRSQUOKplRFmpYzbj/Fn+kzr2iLZRdu2VMCkpEA\r\nkGlm1ClWfyQ4sweupjQfVyJdlsh1qgJmIveJwgi3CySae8lYsiHAUmReiWez\r\nX9+Zm60pdzC6wgJlIPBiHXHkUaL1ItPSWIwOl9mYyBL5Tn5fHze7aXu8sr3N\r\nUjyoXdgnm/NC85c0tGGPRp6Kl+gOagaoEjosnWpi7TnEhOIacLm1eAHVmgHn\r\nBIw4Os01Sy1LJ9otuqtrPQhS3blwaBWlEFbxr9UP6ebAE4JarDCTDuWf5x7/\r\n7aEQ30Ku17UaiBJ12YZQ2XHdmViFKNifKccVI0qlGSwrumALnsTfQJMT2o0+\r\nqpsYlpKbnPpH6gqbtE8qGlzGDSDNh1Rf0UesQ2BPx7olOrbPJRHsrJURpPab\r\nFLMDtdAzD3b4fywvCt96ud5jzQIndHf0LMJiISDZndW+RO7sQ/NPXqnReRLH\r\nb0I513EToWGWztpSAkm0FrvcJEmoZCfVYzBIdYYROymzcWz/KRKWkYS5dPBI\r\nNQmj68Wdv1JM2n4/+cjVEH2JoJGm+wJ3mo8=\r\n=QUFP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base config,\n`@vercel/style-guide/eslint`, sets up a project for JavaScript and should\nalways be set first.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"251cafc2a0092d87ed692fb5bc5fbe8fc3fbd163","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.14.0","dependencies":{"eslint-plugin-jest":"26.0.0","eslint-plugin-react":"7.28.0","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.16.5","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"40.1.0","eslint-config-prettier":"8.3.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.0","@next/eslint-plugin-next":"12.0.10","@typescript-eslint/parser":"5.10.2","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.0.4","@typescript-eslint/eslint-plugin":"5.10.2","eslint-import-resolver-typescript":"2.5.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.8.0","prettier":"^2.5.1","typescript":"^4.5.5","@babel/core":"^7.16.12","@commitlint/cli":"^16.1.0","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.0.0"},"peerDependencies":{"eslint":"^8.8.0","prettier":"^2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_2.1.0-canary.2_1648394506504_0.10958846000601508","host":"s3://npm-registry-packages"}},"3.0.0-canary.1":{"name":"@vercel/style-guide","version":"3.0.0-canary.1","license":"UNLICENSED","_id":"@vercel/style-guide@3.0.0-canary.1","maintainers":[{"name":"gbibeaulaviolette","email":"g.bibeaulaviolette@gmail.com"},{"name":"thomcrowe","email":"thom@thomcrowe.com"},{"name":"emeraldsanto","email":"yanick.belanger@yahoo.com"},{"name":"ecklf","email":"ecklf@icloud.com"},{"name":"timeyoutakeit","email":"amy.burns87@gmail.com"},{"name":"cramforce","email":"malte.ubl@gmail.com"},{"name":"balazs4","email":"balazs4web@gmail.com"},{"name":"casey.gowrie","email":"casey.gowrie@vercel.com"},{"name":"samuel.foster","email":"samuel.foster@vercel.com"},{"name":"swarnavasengupta","email":"swarnavasengupta@gmail.com"},{"name":"lydiahallie","email":"lydiahallie.dev@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"mitchellwright","email":"mitchellbwright@gmail.com"},{"name":"kwonoj","email":"kwon.ohjoong@gmail.com"},{"name":"kakadiadarpan","email":"kakadiadarpan@gmail.com"},{"name":"amanhimself_","email":"amanmittal.work@gmail.com"},{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"70878845d0d12927ed6be122f5635f1180efd801","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-3.0.0-canary.1.tgz","fileCount":26,"integrity":"sha512-iCIjD/NOmFs0L6lYvyvhxW0pk3s5eJLffqHvWFGQAT0WjvECz8ud3UFYhjeLwCEQv0PlO29xcMO157RYxQIbcg==","signatures":[{"sig":"MEYCIQDqbrhCPheWEftQQ/3LzNEcJNGuZF77BnIH2mQnL5amNAIhAPWud8xGi5QupwTjgT0ljHtUQm6nlcNqOqu/joUO0MwD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQXTJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9mw/8DF6SRSU33kGY2qpmhGcAN1uKzUW0sK9MMQMBVEXOXulxTNgE\r\ndMrT9Ul5fHAgnZeYzkysH77HfTKg/r1vYTkfC8iVF8FAqe87X76vrZ4CYtok\r\nvTXuuxgGKqEr/abOHOqc7K7rw6i/0dWh6M4bXegS2lG+vrCXJdHNTwZSg756\r\nlzMdQqajE03xWmsN5U0F0MavKbu6dCvhf8pUTMY0b3PgyKg6/6oDhaIJhkme\r\nTAvQ5HLcR5IpHwUAu2+xvSTkrf1sKKIn/Pqzty4UEYDdEQ19jcaWE2kWuC+H\r\nX6i61q5RWcXxBdRn5QuwMaCRYQWyyePE4in9fmkY3XghTE1Qrz0T4Dds4DFU\r\nxF+oe4yV4syV3fV5xCRcrwjY42AO1xGrSgHcBumcs7VPazJVs8P6WpPrPp6w\r\nrzlNWY267QYpBoIeZS/4vIOJjfxzarzk2mvobuek/vhszC8Zeu/vHjPC2JQd\r\nmy6ZcPHXXOMrpubiGZjfg+caghiMgKhqUrtXTaoWvq0XyKQdjJarZBuaDBCi\r\nVPxtjTe14O4A+8sfDUZT9zQ2aizCRtEFxyQ+/U6TZe9QUL9ww2N7KMsmYwFb\r\nn1U1G1BDDghVI9/fm1V7CFTp9CFOHkjEF9PQBDZiVEQ7P3yAsRB2aFNdePSA\r\nF3hUQ0qJuHCgAwA3lY6RsC1ocTGYtgcdTLw=\r\n=Ai9d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n","gitHead":"ac1a024ce0cf8ef7b78ccf17528b9904545c279a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.14.0","dependencies":{"eslint-plugin-jest":"26.1.3","eslint-plugin-react":"7.29.4","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.17.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.1","@next/eslint-plugin-next":"12.1.1","@typescript-eslint/parser":"5.16.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.1.0","@typescript-eslint/eslint-plugin":"5.16.0","eslint-import-resolver-typescript":"2.7.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.6.3","@babel/core":"^7.17.8","@commitlint/cli":"^16.2.3","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.2.1"},"peerDependencies":{"eslint":"^8.12.0","prettier":"^2.6.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_3.0.0-canary.1_1648456904892_0.2913579608752217","host":"s3://npm-registry-packages"}},"3.0.0-canary.2":{"name":"@vercel/style-guide","version":"3.0.0-canary.2","license":"MPL-2.0","_id":"@vercel/style-guide@3.0.0-canary.2","maintainers":[{"name":"tknickman","email":"tknickman@gmail.com"},{"name":"agadzik","email":"andrew.gadzik@vercel.com"},{"name":"gbibeaulaviolette","email":"g.bibeaulaviolette@gmail.com"},{"name":"thomcrowe","email":"thom@thomcrowe.com"},{"name":"emeraldsanto","email":"yanick.belanger@yahoo.com"},{"name":"ecklf","email":"ecklf@icloud.com"},{"name":"timeyoutakeit","email":"amy.burns87@gmail.com"},{"name":"cramforce","email":"malte.ubl@gmail.com"},{"name":"balazs4","email":"balazs4web@gmail.com"},{"name":"casey.gowrie","email":"casey.gowrie@vercel.com"},{"name":"samuel.foster","email":"samuel.foster@vercel.com"},{"name":"swarnavasengupta","email":"swarnavasengupta@gmail.com"},{"name":"lydiahallie","email":"lydiahallie.dev@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"mitchellwright","email":"mitchellbwright@gmail.com"},{"name":"kwonoj","email":"kwon.ohjoong@gmail.com"},{"name":"kakadiadarpan","email":"kakadiadarpan@gmail.com"},{"name":"amanhimself_","email":"amanmittal.work@gmail.com"},{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"7cf68cf94f67a9e710e2ed6006d857fd476578af","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-3.0.0-canary.2.tgz","fileCount":27,"integrity":"sha512-bECTKM6XdGxItfr3Vk1ME6gnqT8wirG4OWrd7C+rhq0D7EimNrl52W/NeEOXVqPMsaX1m1+wGa1tcCAoGZ4IaQ==","signatures":[{"sig":"MEYCIQCf+G9rjpZcfchcLFEgE52Vkd06xuRKzXRUutzsCFIK0QIhAPP4fDpHWqS5D9Y+2kA3OeiDtXs6H9DMH4PkGFcvzSE4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQqJQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoguA/+LtrKY54/iipU5dWe8khH0DhZmeZcJh6cjlhGOni1aKesAMf2\r\n53QdzlnKmk6ucDj+T1B7QcVFcVfz9ZjtX5gAFDNFFJq5Qkd4H3r9Dw4AvQAF\r\noeXZyhYqf3wBppTLNfiQL7RNHaEKnLHgUvvpzRfJTIkY/drwu/rvIymoSamX\r\nTKWP8x3N7EHe3bpzKmGYz+L6F/eb2DA68cVNmKQ4H3OqEqQTaBu9ViuwFm09\r\ntYmuZqeFe+Fu0OY6dyiKUMh1ZaV+UBuRl65zxyqmg/e3fuqy3XAqjo4RLB4t\r\n7TcwYOeynwbGJhl3Xwg08COTQuS8x+jjdtp8Pj9mynNP/phKZdDKVsBgSmh9\r\nr6KVxwzb+7ze/aHXuXwtdX0D9p45tcWy2Hb8vbBVcR209QMwnTeAAxuPLCL6\r\nQNH5fqE0e0z2Rxx0TPNZD/PlZ+IVrzrWOCjdmf1GSsONLNfAJ/C09duYe8N6\r\nLedZuzsPvnBz02kaTEv1XU1MMHsweVK5RSbgd8AR6COmAZvkKA1d8bskUtZg\r\nuXcQhHTtS1fua8MvyWv+jlvYaU1mqaNGZ/Om/thiqq8GGNEpgRXJSaXnJVC7\r\nUqbCsfLye4gqr1EbQ7olI5ziCeViM+OYpxS/ZwHFB/ug0utvb+xFI534gwJo\r\nEnREAJbTd7OmFB2IHIem+kg0MMHRIbWujEo=\r\n=nLtj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of our style guide, along with configs for popular\nlinting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\nTo use the shared ESLint config, set the following in `.eslintrc.js`.\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (needs `parserOptions.project`)\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### ESLint-TypeScript configuration\n\nAs some TypeScript rules require additional type information, you'll need to\nprovide the path to your tsconfig.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project: './tsconfig.json',\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nConfigs can be scoped to include/exclude specific paths. This ensures that\nrules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","gitHead":"b0ef99556d1f903738d8f02192f6af8256ee2c6a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.4.0","description":"Vercel's style guide and configs.","directories":{},"_nodeVersion":"16.14.0","dependencies":{"eslint-plugin-jest":"26.1.3","eslint-plugin-react":"7.29.4","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.17.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.1","@next/eslint-plugin-next":"12.1.2","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.1.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-import-resolver-typescript":"2.7.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^7.0.4","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.6.3","@babel/core":"^7.17.8","@commitlint/cli":"^16.2.3","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.2.1"},"peerDependencies":{"eslint":"^8.12.0","prettier":"^2.6.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_3.0.0-canary.2_1648534096419_0.9188990131082881","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@vercel/style-guide","version":"3.0.0","license":"MPL-2.0","_id":"@vercel/style-guide@3.0.0","maintainers":[{"name":"tknickman","email":"tknickman@gmail.com"},{"name":"agadzik","email":"andrew.gadzik@vercel.com"},{"name":"gbibeaulaviolette","email":"g.bibeaulaviolette@gmail.com"},{"name":"thomcrowe","email":"thom@thomcrowe.com"},{"name":"emeraldsanto","email":"yanick.belanger@yahoo.com"},{"name":"ecklf","email":"ecklf@icloud.com"},{"name":"timeyoutakeit","email":"amy.burns87@gmail.com"},{"name":"cramforce","email":"malte.ubl@gmail.com"},{"name":"balazs4","email":"balazs4web@gmail.com"},{"name":"casey.gowrie","email":"casey.gowrie@vercel.com"},{"name":"samuel.foster","email":"samuel.foster@vercel.com"},{"name":"swarnavasengupta","email":"swarnavasengupta@gmail.com"},{"name":"lydiahallie","email":"lydiahallie.dev@gmail.com"},{"name":"ethan_arrowood","email":"ethan@arrowood.dev"},{"name":"mitchellwright","email":"mitchellbwright@gmail.com"},{"name":"kwonoj","email":"kwon.ohjoong@gmail.com"},{"name":"kakadiadarpan","email":"kakadiadarpan@gmail.com"},{"name":"amanhimself_","email":"amanmittal.work@gmail.com"},{"name":"endangeredmassa","email":"endangeredmassa@gmail.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"crowterli","email":"liam.crowter@vercel.com"},{"name":"gsoltis","email":"greg.soltis@vercel.com"},{"name":"schlez","email":"gal@spitfire.co.il"},{"name":"epallerols","email":"epallerols@vercel.com"},{"name":"domysee","email":"me@domysee.com"},{"name":"nwienert","email":"natewienert@gmail.com"},{"name":"arbw","email":"adrian@op74.net"},{"name":"gudmundur","email":"gudmundur.bjarni@gmail.com"},{"name":"marcgreenstock","email":"marc@marcgreenstock.com"},{"name":"stephdietz","email":"steph.dietz@vercel.com"},{"name":"vvo","email":"vincent@codeagain.com"},{"name":"falcoagustin","email":"agustinfalco.11@gmail.com"},{"name":"nabsul","email":"nabsul@outlook.com"},{"name":"bmealey","email":"blakemealey@gmail.com"},{"name":"brethudson","email":"bret@brethudson.com"},{"name":"maedahbatool","email":"maedahbatool@gmail.com"},{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"jasongullickson","email":"mr@jasongullickson.com"},{"name":"f3d0r","email":"a@f3d0r.com"},{"name":"gaspar09","email":"gaspar.garcia09@gmail.com"},{"name":"jtaylor0196","email":"jourdandiskin@gmail.com"},{"name":"pieparker","email":"signup+npm@pieparker.com"},{"name":"kelly","email":"korevec@gmail.com"},{"name":"dferber90","email":"dominik.ferber@gmail.com"},{"name":"healeycodes","email":"healeycodes@gmail.com"},{"name":"broph123","email":"henry.brophy@vercel.com"},{"name":"codybrouwers","email":"clbrouwers@gmail.com"},{"name":"ebb-tide","email":"denizk@gmail.com"},{"name":"gdborton","email":"gdborton@gmail.com"},{"name":"msimulcik","email":"simulcik.miro@gmail.com"},{"name":"jeffreyarneson","email":"jeffrey@vercel.com"},{"name":"jaredpalmer","email":"jared@palmer.net"},{"name":"kikobeats","email":"josefrancisco.verdu@gmail.com"},{"name":"domeccleston","email":"domeccleston@gmail.com"},{"name":"nutlope","email":"hassan4709@gmail.com"},{"name":"hungrybearstudio","email":"rich@vercel.com"},{"name":"codetaromiura","email":"thexrayone@icloud.com"},{"name":"mattcleg","email":"matthew.cleghorn@gmail.com"},{"name":"gkaragkiaouris","email":"gkaragkiaouris2@gmail.com"},{"name":"geovanisouza92","email":"geovanisouza92@gmail.com"},{"name":"dglsparsons","email":"dglsparsons@gmail.com"},{"name":"lostinpatterns","email":"blweiner@gmail.com"},{"name":"pralhad-vercel","email":"pralhad@vercel.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"williamli","email":"william@bbi.studio"},{"name":"southpolesteve","email":"southpolesteve@gmail.com"},{"name":"goncy","email":"gonzalo.pozzo4@gmail.com"},{"name":"chibicode","email":"shu@chibicode.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"andybitz","email":"artzbitz@gmail.com"},{"name":"iamevilrabbit","email":"hello@evilrabb.it"},{"name":"tootallnate","email":"nathan@tootallnate.net"},{"name":"styfle","email":"steven@ceriously.com"},{"name":"zeit-bot","email":"team@zeit.co"},{"name":"quietshu","email":"g@shud.in"},{"name":"hankvercel","email":"hank@vercel.com"},{"name":"mglagola","email":"npm@mark.gl"},{"name":"javivelasco","email":"javier.velasco86@gmail.com"},{"name":"igorklopov","email":"igor@klopov.com"},{"name":"timer","email":"timer150@gmail.com"},{"name":"lucleray","email":"luc.leray@gmail.com"},{"name":"leerobinson","email":"lrobinson2011@gmail.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"nkzawa","email":"naoyuki.kanezawa@gmail.com"},{"name":"anatrajkovska","email":"ana.trajkovska2015@gmail.com"},{"name":"timneutkens","email":"tim@timneutkens.nl"},{"name":"elsigh","email":"lsimon@commoner.com"},{"name":"cl3arglass","email":"haltaffer@gmail.com"},{"name":"samsisle","email":"samko9522@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"rizbizkits","email":"rizwana.akmal@hotmail.com"},{"name":"ernestd","email":"lapapelera@gmail.com"},{"name":"ismaelrumzan","email":"ismaelrumzan@gmail.com"},{"name":"jhoch","email":"jrshoch@gmail.com"},{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},{"name":"kuvos","email":"npm-public@qfox.nl"},{"name":"creationix","email":"tim@creationix.com"},{"name":"rauchg","email":"rauchg@gmail.com"},{"name":"huozhi","email":"inbox@huozhi.im"},{"name":"aadityajshah","email":"aj@vercel.com"},{"name":"cmvnk","email":"christina@vercel.com"},{"name":"lfades","email":"luisito453@gmail.com"},{"name":"paulogdm","email":"paulogdemitri@gmail.com"},{"name":"ktcarter","email":"ktcarter09@gmail.com"},{"name":"okbel","email":"curciobel@gmail.com"},{"name":"padmaia","email":"dev@padmaia.rocks"},{"name":"msweeneydev","email":"mail@mcs.dev"},{"name":"delba","email":"delbabrown@gmail.com"},{"name":"catsaremlg","email":"joshuadgon@gmail.com"},{"name":"steventey","email":"stevensteel97@gmail.com"},{"name":"sokra","email":"tobias.koppers@googlemail.com"},{"name":"gsandhu","email":"gsandhu@csumb.edu"},{"name":"dbredvick","email":"dbredvick@gmail.com"},{"name":"kdy1","email":"kdy.1997.dev@gmail.com"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"0784db4549b89745fb2780010ddd5b89f4d40f2f","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-3.0.0.tgz","fileCount":27,"integrity":"sha512-4hAlUpXrgty3eWOmYuVMjMxhsYaw0wFZAgFNlsrwp5LM6iPcjZXKbhEi3z3QZIJ7Mkixtg0gpYfq9oNzZgEahA==","signatures":[{"sig":"MEQCIDF0hWZiQz7LJvhSSKrVUNu8N1048HOFOkXi5b3SS+duAiAT/9w1mEOJLw4vIo2y7XlUfInT9Izpiff86saw5tKwNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQsFJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrARQ//a7IQlrM6LlVoG7E8VjLTlcLatOM3tBeLI+3zE6bzc5upNQJY\r\nMdGpFYBCQsbLuezJiw0DLRbQF1i/te3kkkRSHQvMXN/SO2iXsw/+5qdy8BJT\r\ngc5YmOoHSoiK0zhHv0QjNVRo4O3T0NU3MBkPeL9uPPV1RJ5HV8nsI9yqomTL\r\nfd18eIe07pa93uL7H8s05KZGyNxozGNHqaqw0yU1tq3l9aszsQWd2OPdhALc\r\no6KG7jJIzvk+mnyCyHXM4SGEQ4o5FsAsr0CcmKttF4Qu7CX2frTicFT6/g8h\r\nF2l5nM8Mh0HEdBU9EZJKuowc+knDXTjFBkOfp+5cohm+554GPzjF0VtGZ6pS\r\nlYI2kr9eT6T2dtSd8xtVG3lqmGUICUwxkNIQwMDlTcfwfmVqsmxbeFz8+q+G\r\nZrg10HPvyezoVlGsjD5vI1TVHmrHH8sRLZohbJ918O6jVRHDyto5QuT8L3MX\r\nl/dmjrygUcRmN4126y+k2KEBPgiM3oulHQIL7m7CVMRZ1pygwu80cDiTpcDJ\r\nYOA8mHnXyEZcJOociUBesMAAAU8bdAn4mHT9ha78cGluV/9xrks6UC6ZsiVQ\r\n6a94wI3zyXVNpFQDWj1dlE3NdzLFO5Btta6t5NiXKUqPeBBxJey+heulJQ8+\r\ngDXJYRnUXzrUeZHQIbCGX2vMXql5IOVaK8o=\r\n=dnEJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"3aee10cedbcaea73b060eea963bc7bf8089724af","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"mrmckeb","email":"mrmckeb.npm@outlook.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.5.0","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"14.17.6","dependencies":{"eslint-plugin-jest":"26.1.3","eslint-plugin-react":"7.29.4","eslint-plugin-tsdoc":"0.2.14","@babel/eslint-parser":"7.17.0","eslint-plugin-import":"2.25.4","eslint-plugin-unicorn":"41.0.1","eslint-config-prettier":"8.5.0","eslint-plugin-jsx-a11y":"6.5.1","@rushstack/eslint-patch":"1.1.1","@next/eslint-plugin-next":"12.1.2","@typescript-eslint/parser":"5.17.0","eslint-plugin-react-hooks":"4.3.0","eslint-import-resolver-alias":"1.1.2","eslint-plugin-eslint-comments":"3.2.0","eslint-plugin-testing-library":"5.1.0","@typescript-eslint/eslint-plugin":"5.17.0","eslint-import-resolver-typescript":"2.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.6.3","@babel/core":"^7.17.8","@commitlint/cli":"^16.2.3","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^16.2.1"},"peerDependencies":{"eslint":"^8.12.0","prettier":"^2.6.1"},"_npmOperationalInternal":{"tmp":"tmp/style-guide_3.0.0_1648542025572_0.7073716244904213","host":"s3://npm-registry-packages"}},"4.0.0-canary.1":{"name":"@vercel/style-guide","version":"4.0.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.1","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"4e1644a1c1f101c3dca231d1e15c23afdcd8154c","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.1.tgz","fileCount":30,"integrity":"sha512-aZHN4lc8W9Hr6Q+IFeiESyU0OK7Z8PXX16jo1hwiJ2yGW0MpXAzJgRi1l/NgX2HveuUroYbNP5EHaUOjV5tGHQ==","signatures":[{"sig":"MEQCIEJ1vwTOfznAR0nOIqwYBE5nPEsFoErlBoJCy4DzyBvmAiBh3yCfwoQA/69BVxneCZLckFBcHYdW2fFVRrF58+JH5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKui/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjWg//YpBb9etnVsx74mpn3OtjwR2dL6Wsq5dhPhP+XKg/73xBUgDO\r\nXWHl82nm7WFWqlc0OMuZg+QBs9XD9BCBmJF/4HxHAzu4LRUJ1Vl3buFrL2vb\r\nGW+jZ+3DiAi63BC9Zru0utoRL4HO3MRcBez3pHXw56l7ABxOC990itlNE9i/\r\np9ztuQZPFZIeiLKkHold/j+TGFIcaW0FHRGNHYn+JxX98BjRuDh9X8j+1LJn\r\n031mJXxncsSmnp81RrOMDBIDJk38tplD01MexhpGOuOS/BCYJ2X33dritUhd\r\nh0w5rg9dQ1I233sjYON+iNGRqczP3niSOTTn0J5w8Cj8O09MgbRKhKy0scwy\r\nhJXE+I2GsiqdquHtpNrGUOak1V2mwuGpskwXF7s3nHzfq1oB/NKE3j+XanDp\r\nQJp51JkNX/gDy+bW/EKHzgKHkfEM+kC9uIPbBuwXPAQZO0Rz5USC/N5SAt8p\r\npVJnncV2cc0WZviAeT4otcv+ipWMhUDWwuBbcbZybfITLIhlDjRXqonK8skT\r\nUJ8Zbr+kv9iWHi7CkdbvqIC9835aK0q+aNFpCpGjVTW0uw4Soi6XU/Ygh6Zn\r\nDeK7wHbXUsq93soSsFpjuJI9FtAL2cpXY87IXQttOPfachuG64TaCLxMgXN5\r\nhMz1VBkSD9lGBmHB4kkseo7FwqXb7bi9CgU=\r\n=IPS+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"1ed86a4f5e42d37f4fba990d199d4f93fc841410","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.0","dependencies":{"@babel/core":"^7.19.1","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.1","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"next":"^12.3.0","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.1_1663756479657_0.6396124538086538","host":"s3://npm-registry-packages"}},"4.0.0-canary.2":{"name":"@vercel/style-guide","version":"4.0.0-canary.2","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.2","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"707b1a9d21b548670d158ab784ad4cd2643f8a29","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.2.tgz","fileCount":30,"integrity":"sha512-km41aM8tikFVEjRyDB1fyVd+WBk3mNGjTp7fBvz+S8IvK8UBbUUrjo8o6N/l5/fTZsJGUyCHGBep4JJRHQ7Ngw==","signatures":[{"sig":"MEUCIHjGVUWc/dUmv/8Sv1GeuSY9LDZLTxuEZE6nHqrCmHRnAiEAk+lgxZLcOlsa5D89FDDSru6cIhsATKbiF/NncMT8keA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK82wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7cRAAnvWXo6L/COFWcpWCEWH3euhCpm5ymLSAHpH+Xb6J7H7jUTmH\r\nowKX0GU5GvI3mXPgMt7/2QiqGiV+gVyZL7khXw8NlN2Y10PdsR+nQ0XMT85H\r\nzCvjFgxEgfqHefQCp1vPvECxwvrmlcdctE0QhVE0cU/pLmJ/ePT2Aq0coen2\r\nNjMkAMHXnsPcM8b/NdMsXLB/6IqO5NC7vHK6K0m5JmuXh/VrpBr0ldgBfQUk\r\n3cpDj5pckAkZFWfYFEbU3qG7tyzVAjoWpgK1g6LYM4oG6341PgHLzfIELN6F\r\nzLBf6w3LBZOSOPh+LbTYluYZ2qI2Iftv4WHHio2E0aY4Ul5bBs3xjN7xRZMQ\r\nUpF0buTjV0lcevyXmRxJV0pQnf720FS2zl74zevvfQ2/pONqf9CWyDQzpYcu\r\nyzb4pMuW6s8Sw7OpmkXEz2n5z6plGW1SfoRpnqdlpjy+DOnjAWY+QqWbSCJQ\r\nX5FXuCxYwqoK4YXXuV7jgnmNk/hqX5ZnsMO7yvD9z0NVVKuxi2+EFj2nB0Vq\r\nFPp1EkxDpeXabuBOTDywAeG8J2Bap4N0dLzJF4+dn2vhWvrHcpmWptmd229W\r\n7BMae0QcEkj1hTPRdNnylkdLFIbfgwOE6qCUEdTsbFxUTZcfJa+O2el/4bkn\r\nbTB3ZgQcvAWkll/2EhwYKi38gqSHDha2eGE=\r\n=5sDl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"0b2cc80541ed27be76d9047472f281356a589907","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.0","dependencies":{"@babel/core":"^7.19.1","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"next":"^12.3.0","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0","eslint-plugin-playwright":"^0.11.1"},"peerDependenciesMeta":{"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true},"eslint-plugin-playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.2_1663815088678_0.5656289334458253","host":"s3://npm-registry-packages"}},"4.0.0-canary.3":{"name":"@vercel/style-guide","version":"4.0.0-canary.3","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.3","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"74c46447a2fef2b328070544c7bcd369305feefb","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.3.tgz","fileCount":30,"integrity":"sha512-ZdYwSnHYCe5aCeSkCy6H5UB/s9IC6mWNsMC7q0RJ4NQXiL9Pi8OOzy4G0rTPo/aZC1p3xqvfPbkWF3q1TadjKQ==","signatures":[{"sig":"MEUCIQCg8/df6wFG4q++LaWtbTryOWcSPAx2yzKobxG2grBwpQIgSwN7I2+2PS3pAlSg8spcIJQW2ihDrhJ2G20CwzFJKjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK9RQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGYg/5ADEcOWnHYiyKNdWLCdPV1h9UFLtwJVV4u10LovbgQ7GbXnwE\r\nBN6gUubYy3T8b1tljaPSX5FmfpKTU8XNgcW/eqJ8bew+TedHuToyEMpXuCKC\r\nM2nTd2wv0TlvrvQGxb0wBRjjVpSGIk+m8QajZniwcpHSyFptpu7V2sp4kacT\r\nhry01sxGPa73ugkGqHPudHpYTq7dRu81XxqIgWSXStU/sWwmDH+yeXzzzbzR\r\nbhPu8Zs2hyfU4iMxHQaRmj+P29/uTfwGC/n7/hBg52H5qeP73nRqdGAH6ZO9\r\npB6GqjIvyyhCemJfKIE9srP545YgsDhZBerPwvbCEUBc281hlMgqD1WBEJ9U\r\naUUaX9/w17PSqAeXwvNlG387C2gCKN3p/PIpPvY8oMZ9dpjtwg71hbitOBxF\r\nQJxq5Z2tDiaxijU1u6nE+uJ+9QYlh4HF5hURGuzcEfKbV/6pUx7mkfVJlNCi\r\nlOFFiW7SQPXU3wc0d4s7CpjtwfVtLxXd8S1LBSrKOLqDpSJ5yeA9OknTAzuc\r\n8C7wpvOccliPwoMrLjVYYPnvAW0EEHuyI9yHuMjJDUxey1rXyw+gmBtvbIHO\r\nxRqTPZKOL7VlW7e8eKI9upkqxzBl3NjEQSSa2qGNHFaIK/zN366KG4Dy3sNT\r\n9KUefwTONfvvV/2WGrCoObilQ/KndTHLfEc=\r\n=Ez/t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"dc6eaf48796b94c7e10c32061ffc295206c5a7ec","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.0","dependencies":{"@babel/core":"^7.19.1","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"next":"^12.3.0","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0","eslint-plugin-playwright":"^0.11.1"},"peerDependenciesMeta":{"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true},"eslint-plugin-playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.3_1663816783880_0.7566095422589707","host":"s3://npm-registry-packages"}},"4.0.0-canary.4":{"name":"@vercel/style-guide","version":"4.0.0-canary.4","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.4","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"4952020f0500b677b652a2c5bc872fe4ac512b46","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.4.tgz","fileCount":31,"integrity":"sha512-gv5xLrYxFo7GgQAXuVONsFY7+Nb1OQK8r8W+wdxmyzM41dIURUel1Ap8kID3m4WbIhbutMwCXlrbN/Fz7xPGcQ==","signatures":[{"sig":"MEUCIErlnKneK0LwpG2n+6ruwy91efAG9sJeWe0r65xmQs6sAiEAhq4Uq45wXVxNQiEempGzcnSMwexLddx14Zcgxq+uDSQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK+KcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqBaQ/9EUmcyVrzwMJ6YD+5fC2UUznq9lfoAoCLA/zvZN25hPWbPd6P\r\nYTIf6oNrHn+NESBcqLD34+lPLNF7m93l+07TG5VrYAu9WdVyiined3BLrSQx\r\nt+Hl5n7eSk+mZLjjomVdPmScbAjCLtcydtg1sEOPrlfxAOSW4fYum0/3xc/p\r\n7jm2xJ62lfcN9/gZ0B7K54Z7vNCZF0ONwO9V93iHpVyCkOqYfmvj/o2pQ9vq\r\n/ZpGfwkmVc0cJdNkhapxXougeXLGksQhfKYZLVc5d1Ok0/VHe+lW//Fq70OK\r\nHWHf4OLsGtwUxo8rbkwHNV1ISVi0WuwK4207rttyvwzlnv/pcW2LZBQIektv\r\nSurLESdtRmxcQR0udnwzwThSQOhwnPArRASDu3VK5aKa4Onq3UqhiBOwpsKc\r\nOtaqsowAYds91JrgCdqQ+tqCbwkru9KoK64MscDUyhP4y9enuGgKi02nCI5g\r\nLlbaqryXJtPlVEfThvX3kw7XXAPzJDOij01LGtszyX8/OObHl0j+NsA0yglr\r\nwnuuoXO3oT4Xw8Qwv//vG9fXOPZtaDMkcLHwLLJcBIjLljFTYcz7SMJ53cVt\r\n9g3N6hn4IHDGyfSrbjb45MYvt+ugAvxUfPJJJhAGIn0XaD/ArgXmVIgUmK+t\r\ne8Ip9nRtAFiyvxarYiKrRIxrxVzFSOP8jiE=\r\n=1jaB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"f85874d84cb9bed031b578379c25eaebe5fa5539","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.0","dependencies":{"@babel/core":"^7.19.1","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"next":"^12.3.0","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0","eslint-plugin-playwright":"^0.11.1"},"peerDependenciesMeta":{"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true},"eslint-plugin-playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.4_1663820444181_0.4048991655109593","host":"s3://npm-registry-packages"}},"4.0.0-canary.5":{"name":"@vercel/style-guide","version":"4.0.0-canary.5","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.5","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"6efdf75db88849277bfda5109b80b647e2c58550","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.5.tgz","fileCount":31,"integrity":"sha512-5HZBqN6MwGyAmb1P6nW1uclLUA89fSGXD7j+aeU4gIYDDCBnRG3Ke2xMW1jc2QXnSvuy6f+U8eGJ24GTArWRvg==","signatures":[{"sig":"MEUCIBTLcmVcrzyRDQkaKftm4lKNWWE0EHFYSUX9zdjV3l/2AiEArZOQGBdVCs/zItwpsF6hSjYqQp9XUX0tC7C/q3//JPU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjK+hkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBDhAAo//vSngZH50d0zwJhvHGsn++VwJpa57M0lzwKB+OgrkYIeYp\r\ndXHzeehiB4KGbvXQRAw9I/Bbn5JwoQsbka8IUbC/lLQjfQMIW3N+j4Ivhh07\r\nCHQ4Fa2bWeOgwBhT7Udey88ptLakqvHzsDpgLVjZ766mPY0C6WqZAIu7Gznk\r\nxS2fVE1Y9t29GEkM857pZN+wBJbAlFvvKFyoXto//G4XcTB8dXtiDgMw4YBf\r\nzHL3wpnP/zSec3naIPYjxpH6MOyE3AhiqP5B6aSLYdt5oBWFVQswbkCWq3Jp\r\nnS2uCWNSbjgjkdtvAJWC7VnY/zeV6/263MJyRXoMWva2YaD52w36VpDQssf8\r\ndX1rUJ3m35kCrcoHRsAhcfBMKHFKEIYsmxulcP8i0MRQRDLBdWBu0lBcU+Qw\r\nTtCWzR+BDbi02l6TCxIwAc4UJzzzFE67KXaZmlseFH+3NC6LiBeqXe6hUEIh\r\nE/9UOnT5J0Z61mHYBTV7FHY36IyrL9dT5O/G+bFB6PqyHQbDszx9s0Ri/ANc\r\nCo+7wgNiMHn33wq6tQHXkaJgbhQ7r8LIpkHKVbZdPBa5qTVNp4PYDiyiQO2I\r\nFb6tLOiXuDvO9I5Sov3Qm8xB8N3zDgmt61WuwCAPZMIVxJbzY0jKVBcSGX7x\r\nsKDkyTornUJLCoCnvk4tgwc71TiSZa47+C0=\r\n=FeMI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"84952b51c3f51ac5c77ed8b63b0ae5ce2dd66104","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.0","dependencies":{"@babel/core":"^7.19.1","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"next":"^12.3.0","eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0","eslint-plugin-playwright":"^0.11.1"},"peerDependenciesMeta":{"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true},"eslint-plugin-playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.5_1663821924055_0.17431589761960553","host":"s3://npm-registry-packages"}},"4.0.0-canary.6":{"name":"@vercel/style-guide","version":"4.0.0-canary.6","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.6","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"c0b3e626d98c1afb9e1d165d51fe6ffdd5102653","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.6.tgz","fileCount":31,"integrity":"sha512-MU/OM9oT5XDJeFJkc7VDrrnBc86x9JM6fYaBTrKmcK5B7vQ1yNi4Kj4OeNZQh9zOStq8oIDKbYhgSLcY06c8Cw==","signatures":[{"sig":"MEUCIQCMJ7YpZzSh9EV+oF51vyRN3SLLjtmWE0cnxn811dw7FAIgXz7+NyipF4GZzdzhBzkz6yUX/Ha7jZWQJhh/hUA9kZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM8nGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDVQ/9FFoxE5xiqo9IWR/ujypOgKNgMy/MzPuVn2oWu8SA3dvsaDKY\r\nbyj8P2P929OjLr9TOeDHOhFMOBfzou2QFgbdceCY5YSd/8P2gzLbC5MSIkfy\r\nCm0hwc2l7lFUcSKeuVOANMR/R7NyK5HTZZ1RSr0N4b7g/gPngouo45KnUd79\r\nDzakyqvJdtSVlBPDkpwlw5rsWiI3rlAvHu7o/gSzouy8+1bOWOo9onGPBW6U\r\nog/7M2u8rCYeiRQ/ocHCAKnLk+U8Y/DpS85dMWKG0Nw4IaeJKtGZ5cPppNbH\r\nJx/W8eJVDECDximT/MQtWuIDn6EWcJzzoUeVpeGS4R4otp19m9d+DOXLBXNI\r\nfyhlxOLg+bH3X5XxEj0VTFvLvGHHMNxja/DcoBghArH156l3oVi97F+/vwhH\r\nyVtRm0azW1JjqyVngHOIMnw0ESaep+rllbVgrvLKt59xjJa/hdht9/c+q22Z\r\nKjXY3oHqA4AaZNrDTRcvarc9r6+ryuVwOrDbb4Nkg43bawslGMWz0Zq43ssL\r\nOdM6j/8uRvbaqzUeT9+VhSrOrSAtAEf8FtXpzBSOTmiOIV7YN9q9xbDmKOU+\r\nqF3KTxd0pecB4M0Kx5e90LM/oQmtTyDllU5JQTWaorsr2wpXf+hTkwQEbgCb\r\nTFkC5j8FoPfDXO7FgvdV4DM1qOvulcwN6M4=\r\n=aPPQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"e30eb30d3a5853f51a80ea6eb7a5c374084c3c92","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.1","dependencies":{"@babel/core":"^7.19.1","pretty-quick":"^3.1.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.1","@typescript-eslint/parser":"^5.38.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.6.4","@typescript-eslint/eslint-plugin":"^5.38.0","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.23.1","prettier":"^2.7.1","typescript":"^4.8.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.12.0","prettier":"^2.6.1","typescript":"^4.8.3","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.6_1664338374345_0.3152618535184035","host":"s3://npm-registry-packages"}},"4.0.0-canary.7":{"name":"@vercel/style-guide","version":"4.0.0-canary.7","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0-canary.7","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"7adc1012be495eb72a38f20093d180c5bb9a9e74","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0-canary.7.tgz","fileCount":31,"integrity":"sha512-NLEpIQP7s7cZ+G3EOWNQLZRn0I8Qka2Cy9NKH8WRVw1oAyMfI9wvO0eErtQuvjpmSGrcKeOU/kY5a+SUAO6Z8A==","signatures":[{"sig":"MEQCIHVowXupFgZdA37REZ1Owi0m0rN0yEXqZeovw3Ynf9iLAiAeBJGL1JMsil3igUi0vGFZ3br0KWbMrUWopRCR3p8lAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNS6dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFZg/+MoEUZs1yZ8U9vY2UTC5R1IURL4IrmcxSo2ahwY0MOD1iTfPc\r\nNwpUJ2EvM+kRGA3QQRIGc3+PooRPdZ4KtbIXn/pXjA536xZtGVi0AmI3l9D3\r\neXYpC0l3qLFLcDz7oeNEurscAklu8AdtwGaVQgSEViUAMIGT9i4kpDvqCIGa\r\nr6oPkNiglb7EhKurN60H7i9i9aWHrfsDqujc8ZNJJTVXLd0A//ex0AdNEXhy\r\nGYkiiNLKusgwTkEhfRQnbYaqtKfRsAGl7JjEx3hBicFEQKSUPB3IZyal999x\r\nRojYlAI7azD5/pTn8A6XVgXDFkP5dz2JVgjsg2kFr4+GbEr5TSPmGBoy3Y7m\r\ndrUDf5KHo5WA54sa5ghSamM+2HR5aG12gxFRSNlkKqx+lUoFqdJ14PRVhJXv\r\n1ty3/q/J/Rz3YOmAUtYcKoiTs7pszm0iH++TeiryELs9uHjQmZ3UiFpa7LHx\r\nB0x/j/3ZeYZRSlDPHzYzZr8zRMvf8UI0HYTjydpVEfgi1yR10SDFonesnx6K\r\nYr8lKhyQqYzGRRaYu+cLFxnokj2GiVl1h778w1QxC0tKUCPEZOEXtYJgkswt\r\n3WNr+1tih5oCE5trHvCme8Kwue4UIIoiScvNhgPA6rDy39OckmaU5u46jAXt\r\nNZnQ2HKpvu2K7rAnEtyYIp3TPk7OWGB1xZA=\r\n=NKhI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/node`\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"16c96e013cafd72189d63ddce0baf0a8c178e931","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.1","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.9.1","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0-canary.7_1664429725074_0.3593309846687751","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@vercel/style-guide","version":"4.0.0","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.0","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"c2b85838f53b209b99447bda008bb7f45b12ea72","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.0.tgz","fileCount":31,"integrity":"sha512-k7YrKHug34BbBRoMvkWtNTWULSckwNj4wPLTeumHNCCQIJEXDVyNKlhXehKWqp4ahww2qg9w2tTO1uIU58Dlyw==","signatures":[{"sig":"MEUCIEiBYd/3I9N02JHvScdyishNxR5C8eYd3+Ooh5Gkq3d0AiEA2fBFospOSiK32rukj4+9YXYokx2XVJk7LZOWIPWWLwg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNTpHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpmSA//WstiaGZb5RnoFEGg8VoUKGfoy1jJObN6BaKsuaxGDU8WVBTA\r\nbGsZO2Gf8Z7Gb0vVW5SS04mEZrMoE+BqPV9e5ilw7LfYjPt+9qRwdfuxdzLC\r\nKJ+eUWUQAdz7GR6hSM7FgEnPgxbmmnXJQOlgkb3b6EqGSurrtM3eUAAATPIL\r\n1lr7eKDye7681sgg3pGv0dQccI6Ogv9iztODKjuJkXz5a4CxKb32WIa+wjEf\r\nUd2hOYB6rXQ+w8ab8H/hVG2EQmEQCApWlMXNTB+ckhzUl5jSs5ZslJbK11Pu\r\nO3AM3dz9FkimwdOPxr0iI+N5pQEtClsAMhUool8m+J/S0YConq5qYK/TlIlz\r\nfMubtNfqdA2x8STLd6Ie6Mc7I4rRhxi161NTTtBJ2YJCJFmBkT0BrC+O4n45\r\nZYjboh3E9iFqGcyTjtgh/ivgFlR3oxgBycoVa9IigUiSItsGrWIH4NRe+OmV\r\nXsRev0/c3WcrwRkyFCbHS5t7BU3/s2LYgp+XF4ra+x+yOHZRA8Pt1BTPQwYz\r\nAMkYJCq3arecFJRL5h6ss28W/K3e9zHV8xH7qfuW3I+rHVsk3czIrgxNcbBr\r\n7nyDat7NxMGv5XhvJd5Um3rxQ8Pspv1D2rR/QmhNJfXXoDZZsX2jijhbP0s8\r\nq/sAeAiknefbTU0K/7egOCjYkkKgXg/FyYM=\r\n=aXQZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=16"},"gitHead":"f63adeefd1823670ed9e3ca8c5569c754c3e9fbf","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.2","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.10.0","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.0_1664432711363_0.2391492265723818","host":"s3://npm-registry-packages"}},"4.0.1-canary.1":{"name":"@vercel/style-guide","version":"4.0.1-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.1-canary.1","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"9db5e566110b34d04813ba8caa1c2f9c5e05c85e","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.1-canary.1.tgz","fileCount":31,"integrity":"sha512-Ug+Va8eMOsDW7+kQiRHWJJrcDVYXWS/ujgLk4v9feZu9TUHNjS+oDpcQsLLHZczHj2pKu+xZ2HX3xewwhdzLpQ==","signatures":[{"sig":"MEUCID0Os57+Ajsrc/e49o+DZft2L2L83MEEbviTvzyRQkhYAiEAtJFnrkbOfIYXEVnGB24JGrFgcmpx2sxt8SX0wA13/GU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNU1WACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSBQ//QpFqjWYYbkrEuUUMrDloRZcu+0542E9a7BgQYO9NdS14PpZG\r\nFelbcY/nkvB3Ku+3Do1b6PJ2rGFnfnuoq8QfvqRJeInEQZryySjjLoYAPnJT\r\nY/Yuq5F8A/6aNSBq9P8SBSSoRYdOUURp76qYzbGi/KAhDXyTmn7OnKued7E3\r\n+VQTlKjaIwjuEqcUq3UQ8v+YQ73PTbA8z7IVCdf6ttp26JAECbwWJtlXh1gU\r\ngeb0iL3BvDBkcGQCy8ctRXbXdEx7h60TJWkJTfa2o4sgmGbkGv9B5koJTnJX\r\nWuVng5CgGCLBwEJ8eCyA1SdsWy+ywsJPWCU7BvEOLLZyFFDH++R2fr/AP9ap\r\nf+NuDiCSWDcF7hHd/jyedRv4VJQHAB3fuF0gGXq43J7dYTdxMQFK/KH9GIVV\r\nXbdcX2PJZ4g9eFckjrG9D2S2c2pcEDRQPaxVsk/9RW4bQNkqwwRuylWO3gK7\r\nFMZGit/qL51c75Nr5lYOVBlaK/VhLdPotrb7M+j70Sp0xlB9fpm1bDUpamQI\r\nZBskq2DwFz4xOcf6HaCsUwyTKde+yARiveIcqqkK7PO5QtqcRo28gmXnfCyr\r\nmtmIIELPfQBPU3Z3edCPZk7W9dJ3zxTq4QpMXmjZSKMfTUpHp7KCvQ6qdrTE\r\ntDI7FEgXTjUGdjHjCT+XAYq3QsUEQ2HbNnI=\r\n=uISY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable. The base configs,\n`@vercel/style-guide/eslint/node` or `@vercel/style-guide/eslint/browser`, set\nup a project for JavaScript and should always be first in `extends`.\n\nThe following optional configs are available:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@vercel/style-guide/eslint/react`)\n- `@vercel/style-guide/eslint/node`\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" to places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"99771aca650a64da80a8a2bb1c425611ebf4b637","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.2","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.10.0","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.1-canary.1_1664437590770_0.6946708579458867","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@vercel/style-guide","version":"4.0.1","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.1","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"19b8dc5d1b6e582b9293ba5cc88f05cae3ab739a","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.1.tgz","fileCount":31,"integrity":"sha512-MP5YRLNxbNUkk3mxukYSBpo2APnNBlcK9xPI4PVqNhl3YbXw54IsfA5wRmg0y25UfqzAbR88fMSx7j3cd4Fyow==","signatures":[{"sig":"MEUCIHMe7T9JjPffqZVfFDzJdqB1+z+cAfEwR8kTvGpFvwyJAiEA7VCE8CP1Ah5oUPrsn43DKanMosdCCQQMqX7nJN3vM18=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNVGSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwrA/+O0QbbHp1hh/Z7QC5AARuKs9RVBL0gUI58KqiR9AoPQkEM61s\r\nVAbgTJ9Ike9q/HKeMHATrepeV/D3Gs/l0Q7GaKUS4bPgnBfdp71m2VoFqoHu\r\ndU5zzMseUG+PRPhEPo66vMu3aHpqkN4ksMvYofyZekjq2yCxrp9EjR26wtJ1\r\nx+o1XxaE3ijyWh13huWSVTR0kzjotI0IeSiNkwDD4KWDS17ADMrKsrSfG1CT\r\ne8iLPz9uyMkolKmatvU+fcywmnjSh4sWYRtTmQB0dXbauBme+1QgzOG89SNX\r\nAoAf2JfKU/9hWzVpY8vt/7/8xmQjdDCwKnqVJABRJ2GVM6MANKSf4Hd/y52S\r\n2l3Dw/JIrSo5zfmJCXHP0glATk97s0guDRIJSypNHidCY/i2xl1q4u0y4Ql4\r\nRDOizhd3jTnZMirEmrwhorFMoC77yFDJjpgLZa88k3wEYO1qIwEhIYEjstsD\r\nmNj0u9ux4HeWJUw+KiKZ/8yKUUc2MgciJh4X1SzY3y0/6c48fLgGtgKoakop\r\nlgiiVC5iigJDpB+RMzWOadQXrNf76wizzoPm37WioYKM3ygjPcmqaTsuMWhZ\r\n4J9CjOppa3D4jIjiLQKiOZNWdR3OGHcMW5xb3kLFXxWcaK7BCJK89WAyt0lX\r\nJyAtIAY2thNgiVspT4h3nQoFu91Tja3jUhI=\r\n=WFLP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=16"},"gitHead":"389382f7e00b8b7307967385c99e64cfde43fef9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.2","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.10.0","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.2.18","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.1","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.1_1664438673955_0.23431791973881477","host":"s3://npm-registry-packages"}},"4.0.2-canary.1":{"name":"@vercel/style-guide","version":"4.0.2-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.2-canary.1","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"8002016cdffe4a559eb599b12cf1306d47ecdf38","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.2-canary.1.tgz","fileCount":31,"integrity":"sha512-ss42Bv46obaOtwk7ow0q558tsSnoc0b2mrUPHsRZRlb4Y+ch0lGGiNy4VmfPI9LqLMgXhguwJPtzWp40cwLxSg==","signatures":[{"sig":"MEUCIQD7DTVHB3AbP3D6yvPN9Ynx9LxHkkFb9X4kZLDYr9zaUQIgaW5XrOSWC+TZ6665UUjP2RVfHnxplEF8X0jDSCbIbyE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNl2LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqgrg//S2GawSpFOdjQA7eakGE5fepEauSY5W/zYd2NJFmagY2SlMlS\r\nAi1JgMv6adzXrlLD7BnJ4+4sRSR73Ryo+B+UA05m/ponEVwm8VDbkkQS6buS\r\n8WrXSNIIFY1Y/TUE9FNcY3y5nPVwcz6NAanMWQvS4EaV8b0TZlLXO8sCRlsA\r\nh6NjKImtnR5y2EB16YfKa2Za1NGjFP093yhM3H0GPyycIOpcnktXIVIroqZd\r\nJOlCNiJr1apVhLTifGzFbM/+YltmgB6XRvXwjt6g8Nx/0mGOH3XidxQ+1STV\r\nQAxfzFFd/QXGKl0ncRyyn7+74oeRG6XtxA091xPsujFIP0jnu+xT2x5i4ZEq\r\nVMd9SNl+Zvu6HI2mllEKnCrevVO9oT+fZ1oFmo6ihBi7ARKgDIFnAlLzHrbZ\r\nHAztmhPganV4/qIGdOlUIEMW6rH1M4J3BdHgo7C9nVu/BsBO4eDHeyXpZ6OG\r\nuzMBwxJKWSaIGKzUN2+d1oRvJapzjGQa4/pcKQuuwTpsvy+oK8xs9DRiTHD7\r\nvnFQPpSTpAFlniP67wn8LUV6yFMePC4Be3QUUXDFgPR4Wfmn3L1PI0C6bjj5\r\ndA34o1I4oC4pFP4dsy3Yb4B2gmFxsj3VW9OXQTUBwcIEN6mTmcQ1TIYN5b1l\r\nbKMI/MmRN5hw1Xl1TDRqZIiB9MflJS916Io=\r\n=FxQr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI Status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush\">\n  <img alt=\"\" src=\"https://img.shields.io/github/workflow/status/vercel/style-guide/Quality?event=push&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i @vercel/style-guide\n\n# If you use pmpm\npnpm i @vercel/style-guide\n\n# If you use Yarn\nyarn add @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"88ba06536ceefad7a196702f0e7a76e71966037b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.2","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.10.0","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.3.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.2","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.2-canary.1_1664507275681_0.2584917427035096","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@vercel/style-guide","version":"4.0.2","license":"MPL-2.0","_id":"@vercel/style-guide@4.0.2","maintainers":[{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"1007bba746a5e9a15436164d184e6c9912961835","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-4.0.2.tgz","fileCount":31,"integrity":"sha512-FroL+oOePzhw7n/I+f7zr4WNroGHT/+2TlW6WH9+CVSjMNsEyu7Qstj2mI5gWIBjT1Y2ZImKPppCzI2cIYmNZw==","signatures":[{"sig":"MEYCIQDQwdqtzRKyzhxPQnlRRcc28eq8OynUCBzhKbT75/XPagIhAN6pNahkBXkGd99p7eh2kg1dhK5wHdkSbYNiQ1vWyfd9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNmGVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/tA/9HZS/UP/OeiXef0DR7quctwHCgaoQXqrpSCaYQ9H0E5Ft8tq5\r\ni6rpv1wvmzxTAZus9pPZJtrC09XxJTGYoFIIxf6bb01WoJVtuuvXy+l+WWz2\r\nk1wwq9h37Sj9/s7qo/w9l9WQ0+BNhbkbWyANlQfMuxGeL4QG4sMdOTjkEBXC\r\nQi+qcW6xbAk/VREODHtVq7W8PoIu6dhHmqCmOSs2HqVChRi3+x0rKvObj5mb\r\nK7379bKrhaXI5ttwPcT8kUv7QdAGhDiGM7KAARpcNlatOC6aiWkUtYqW6Hf+\r\n0KpHIDQphYzV9d7wnWQguXdRj9hq0I19wYkHn+3vewR3BgvYLSJzatpr9d1h\r\nGDnKEXmApTj8EPWr5zfXEFP13w5+aKG4E42SeZrrXbZD/DZYUWTXgJC6aqp1\r\nqQiCkSnS+XWowI7/UhbfiIwRtVUpQMHst/Mef5vdM9/j0kJNnPAYV47htkx8\r\nDTWMUX7Gu5JmE/AQXhDYPJpaEax6aylUc0fM/uCJN1TJT9Z5T4jzyIXGg3hm\r\n1NRyiaTMgXidw9kePK/0pr5aOBi6/wFkR8fumsEbW3YQOkQl/c7l2Se6e+5o\r\nfuJDXfB3SuNUVIE76pqQWx5SdqTSRVWZIGDP5wlA2wu4VlicyP8wwAJ9Wjcb\r\ngnYRFKwLBPKdheUTYNVGesKZ3ySTwJgFqG4=\r\n=ExN2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=16"},"gitHead":"2ce10de1092ca91cdaa3b9d8724b6a3f8f7482e3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"8.19.2","description":"Vercel's engineering style guide","directories":{},"_nodeVersion":"18.10.0","dependencies":{"@babel/core":"^7.19.3","eslint-plugin-jest":"^27.0.4","eslint-plugin-react":"^7.31.8","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.19.1","eslint-plugin-import":"^2.26.0","eslint-plugin-unicorn":"^43.0.2","eslint-config-prettier":"^8.5.0","eslint-plugin-jsx-a11y":"^6.6.1","@rushstack/eslint-patch":"^1.2.0","eslint-plugin-playwright":"^0.11.2","@typescript-eslint/parser":"^5.38.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.3.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^5.7.0","@typescript-eslint/eslint-plugin":"^5.38.1","eslint-import-resolver-typescript":"^3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@7.12.2","devDependencies":{"husky":"^8.0.1","eslint":"^8.24.0","prettier":"^2.7.1","typescript":"^4.8.4","pretty-quick":"^3.1.3","@commitlint/cli":"^17.1.2","semantic-release":"^19.0.5","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.1.0"},"peerDependencies":{"eslint":"^8.24.0","prettier":"^2.7.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_4.0.2_1664508308840_0.35224413830506407","host":"s3://npm-registry-packages"}},"5.0.0-canary.1":{"name":"@vercel/style-guide","version":"5.0.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.0.0-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"0d57f202e3835787c67c880e9e62cc77f9bc6111","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.0.0-canary.1.tgz","fileCount":34,"integrity":"sha512-2/FZTWzyCDKLrm8jdRoQ1VT4eskBWKOfX0qb7CTX8NITy5mwt/AT9DvMS42P5ki3geWOM/8+fQVyO6qp1XRfHA==","signatures":[{"sig":"MEQCIDzg7AvYI7KO1VSCHYKnSdnh45zNfgpLEMbLO+uRq+jsAiB/uuzjwYKTnVex50gQFwiihNo/Qjz0EtH085hnQFjgVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59269},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI Status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush\">\n  <img alt=\"\" src=\"https://img.shields.io/github/workflow/status/vercel/style-guide/Quality?event=push&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"c5d0ccb79d7987644935ccd8b60b3e2e9da411fb","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.6.7","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.17.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":"^8.48.0","prettier":"^3.0.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.0.0-canary.1_1693287844748_0.60087050721338","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@vercel/style-guide","version":"5.0.0","license":"MPL-2.0","_id":"@vercel/style-guide@5.0.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"41285baa3021b0189e0750a3f89e3816ad30e2ba","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.0.0.tgz","fileCount":34,"integrity":"sha512-z8EbEyZm5Zn6AOa+XJ7dOja94m5Hm6cgCuTRK74qxKFWi7qQYUJoEkU27wYgOplZSAYVLB8mHfe51RGZMyqiUw==","signatures":[{"sig":"MEYCIQD0vxn4PJZHnPgBg0K4oON+zOzGg9kZQiwxBXZ583crzAIhAJkYYDxro1F3jUVg9VsauMkHrLtkEzaQLLHNZQ7III0o","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59298},"main":"index.js","engines":{"node":">=16"},"gitHead":"f2407aa052300574173a382908586d9e2beb994d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.6.7","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.17.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":"^8.48.0","prettier":"^3.0.0","typescript":"^4.8.0","@next/eslint-plugin-next":"^12.3.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.0.0_1693293608073_0.9228753868406885","host":"s3://npm-registry-packages"}},"5.0.1-canary.1":{"name":"@vercel/style-guide","version":"5.0.1-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.0.1-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"dd6367d6e7f5b7186448a06aa8d7cd84f0a417eb","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.0.1-canary.1.tgz","fileCount":34,"integrity":"sha512-7T2S7+HdDoluRkblN8W655lZ1uPu+mwFzZsb7QEWr23IqsCpyIGoQf7kWFEFFp5Ca9reGxflawOB7PiZ4Ymc3w==","signatures":[{"sig":"MEUCIQD7VMG27mco7/bZSwntK/TUhtOG3qhTsZtqFZW5ycHr3AIgTjwhotrhcVXKoCmNvF0EiQLsGpseWscBMHE9HSkDY0k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59324},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"9371fede6cbbb5d4defd95072d4cdc60f2cd2d9f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.6.7","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.17.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <14"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.0.1-canary.1_1693436152291_0.530363391656409","host":"s3://npm-registry-packages"}},"5.0.1":{"name":"@vercel/style-guide","version":"5.0.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.0.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"8cee7395878cfba75b49284a5776723a7c991be2","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.0.1.tgz","fileCount":34,"integrity":"sha512-3J/5xpwJ2Wk+cKB3EGY2KCdVQycaThLKhjBmgXPfIKb+E74lPpXVIDfaQE0D2JoAyIzGsqdH7Lbmr+DojwofxQ==","signatures":[{"sig":"MEQCIDY/KcLMgNd9TgPgmSiFXanU54quRuFpFTCvkGH4ywWqAiAvSNX6BNnH0jwpAcC26PZbyXb0KrDq3DjVGndTnsQEUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59315},"main":"index.js","engines":{"node":">=16"},"gitHead":"8ef6fc54e91092ab4288dee9588c2e70d8087322","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.6.7","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.17.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <14"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.0.1_1693449359590_0.6376820025986945","host":"s3://npm-registry-packages"}},"5.0.2-canary.1":{"name":"@vercel/style-guide","version":"5.0.2-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.0.2-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"928e4ec75bb098b2605c4526c2202c8cda73c547","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.0.2-canary.1.tgz","fileCount":34,"integrity":"sha512-pHHBUqZuFjuPng+MaS8VHDPKAqELXiaue33VcqbX6IcbyCFlI3E/wFDpJx/uMDZbhjxH7fxKxZFBnyF5+rPvEg==","signatures":[{"sig":"MEUCIG8fClVUHzjSWctyOzAehSnzzQu0fYvoMLTj7QjbwjULAiEAnBWbmDrfMRK4TpIgOqltsRpDjsZ0prDOrHfsdkh+WGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59282},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"546f35acbfea13a49572fa08b503537bb3353b93","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.6.7","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.17.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <14"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.0.2-canary.1_1695354856657_0.2438956011347042","host":"s3://npm-registry-packages"}},"5.1.0-canary.1":{"name":"@vercel/style-guide","version":"5.1.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.1.0-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"1bfc839e31e99235afe02c938f8be6c7ebd3d6e6","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.1.0-canary.1.tgz","fileCount":34,"integrity":"sha512-YRLxYPH6REbUVtsYWhlKPY++/UZAjbPRXvRcXvr1Rt3thwEpul3/TbkadB+cDxM51C0/2rKBlP839trJuHGH0g==","signatures":[{"sig":"MEYCIQCGFkzkawABFvvezyUhHA2/dXPHu4mEDGuF+O4BCAa1jgIhANhv4+X5sSzUj0asul9G6LBJ/4dC4TtL8zbNW1yTZilI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59282},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript\"\n}\n```\n","engines":{"node":">=16"},"gitHead":"87516d99b5f5a897b2b086a585e414c4b4e61d85","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.8.1","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.18.2","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.1.0-canary.1_1698973326593_0.37616467353958405","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"@vercel/style-guide","version":"5.1.0","license":"MPL-2.0","_id":"@vercel/style-guide@5.1.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"93489c46184abf0389a40a674ec38e6cba5d43bf","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.1.0.tgz","fileCount":34,"integrity":"sha512-L9lWYePIycm7vIOjDLj+mmMdmmPkW3/brHjgq+nJdvMOrL7Hdk/19w8X583HYSk0vWsq494o5Qkh6x5+uW7ljg==","signatures":[{"sig":"MEQCIE1A0b/P78NgQIWv6xR8wGqNtN3U+l2RXc1H40xsguz4AiBgQurfO8N7xb1zwMwX2fv+hibZW5UuflE+Rz2pa1RlwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59273},"main":"index.js","engines":{"node":">=16"},"gitHead":"75286d0a2e5cfb47af81fd8256cb987f3d6c6664","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.8.1","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.18.2","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.1.0_1699591391343_0.45881758815676243","host":"s3://npm-registry-packages"}},"5.2.0-canary.1":{"name":"@vercel/style-guide","version":"5.2.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.2.0-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"882f66f15cdbe6035917ebe4a6f2ae1e01c69ad6","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.2.0-canary.1.tgz","fileCount":37,"integrity":"sha512-ZXGs00JmWlg1E8PDvtJ47P4CSJBKBf6chFJ/OpHIV2BFmO8EFV9civI0AJl6m9yd7k5JtgkM5PhTUkNqlXp9ug==","signatures":[{"sig":"MEYCIQC5N6I7fBVJOub2zSgDBMRV03phW7vhwby++Et5HYEtUQIhAKgbDqmga/+WMPffK4657r25X6CE4SyWiVM9pg7YypsS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61465},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"a54f6ff019114286643eff683625780d287fb0fe","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"9.8.1","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.18.2","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.2.0-canary.1_1700621021573_0.26821735740967334","host":"s3://npm-registry-packages"}},"5.2.0-canary.2":{"name":"@vercel/style-guide","version":"5.2.0-canary.2","license":"MPL-2.0","_id":"@vercel/style-guide@5.2.0-canary.2","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"2c918d203fb9184885bbaa50df7b2313dacc48ba","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.2.0-canary.2.tgz","fileCount":37,"integrity":"sha512-t9iEfsqkb2rpzJFdevobr0J61ZmaMDESspSElqqDrDl2HuuFNM/WM2bNwtLvjLun0wTCVenEUpKRRRPU74r9Lg==","signatures":[{"sig":"MEYCIQCBjS9QM2C4eEAxVr176MyKf6iS5n7fT1biOurPTnIwPAIhALqo5HkHqzM1zGfFygSJjnknCLRS0RfCruST4DDrq4kF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61470},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"d6ccd35125379a173de32b31d6b4cf66cbdeac0f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.3","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.0","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.2.0-canary.2_1706837333047_0.41918681794171864","host":"s3://npm-registry-packages"}},"5.2.0":{"name":"@vercel/style-guide","version":"5.2.0","license":"MPL-2.0","_id":"@vercel/style-guide@5.2.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"8e09fb48065bc6133add67ff2bc7a219d228fb46","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.2.0.tgz","fileCount":37,"integrity":"sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==","signatures":[{"sig":"MEUCIQDLugSYiDqCK2RwDamyE0dsk8N8SpgY+9SOIwNfFFjBfQIgWESr7NkvvaeWxDi9v6Ak3ECQAXCdloj7hj3ILRTWCl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61461},"main":"index.js","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"6d428bfeaa9cd6ed4fbeee7d87e65559c1ebcfbd","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.3","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.0","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.2.0_1706841641377_0.2004078037946082","host":"s3://npm-registry-packages"}},"5.3.0-canary.1":{"name":"@vercel/style-guide","version":"5.3.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"aa7309a93b4b10837c6effc75d8de94f4c6456bc","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.1.tgz","fileCount":37,"integrity":"sha512-LzBA/DE6Tsv+UINkWpL11LDPuSUHGWrTwEyEGlsaHH+LR5VJXHUcbqBOP/aTzO/3696hdpFFxEHombhzmK+XVg==","signatures":[{"sig":"MEUCIQC9gU+iRH0plIGATU5EPr5xcCsSR258vmmmlnI4utzj4gIgS4vLtRAWBtbHIFJ1bwUiwqkFlWqsEAnX22HdrTutFko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61476},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pmpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"e99e5c68be3d73bd522976f1740d7dfeda3f8e44","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.1_1709522706811_0.3808912661896502","host":"s3://npm-registry-packages"}},"5.3.0-canary.2":{"name":"@vercel/style-guide","version":"5.3.0-canary.2","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.2","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"1b414ce9ad23d03926751415df586ca96f6feed1","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.2.tgz","fileCount":37,"integrity":"sha512-OFlJaEYfXB1WDCghEv9x25oh0Bxx1PT87Qs2N/Ld1yuKvDyhcg9AWwyGd8q0b8KMIwkY5nYrWS6Twl2meyIivQ==","signatures":[{"sig":"MEUCICMz3/1KunkolHe6dBqoTahHugHSkD5B9RLfry+FTkR/AiEAonuXAfjwtoSVW9qCU14+WHGTOBeWILeji2omgx4f45U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61254},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"9b1b2b0ab65859c1e207181e570a767dadb95f62","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.2_1709549303160_0.7126532198398601","host":"s3://npm-registry-packages"}},"5.3.0-canary.3":{"name":"@vercel/style-guide","version":"5.3.0-canary.3","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.3","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"47a1a58cf8d1d6f137ef09284bbc0100b8e6dd3b","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.3.tgz","fileCount":37,"integrity":"sha512-LpEaUBmE5gg8ToF7CZ8Lz2Uh7MgFDhYxnjuunoK67WXUYPE/cyD6HZj5lJ920YVlUnF5EMn3vrUq6kqm1j/t/Q==","signatures":[{"sig":"MEUCIQDl7Mew0k7naTie6TVh7gStlhL4i3s1CiKY+6rFqkQp3QIgE2xpAeFVQruSG8wvPbHGaaB30mpHNN5QWfLhX37RQrg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61069},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"47080313ee91b4e39be10e192b4559f73615c69b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.3_1709593574842_0.47763672792202816","host":"s3://npm-registry-packages"}},"5.3.0-canary.4":{"name":"@vercel/style-guide","version":"5.3.0-canary.4","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.4","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"ece032e7f944535929e56c40d5da02dd7b3b91ef","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.4.tgz","fileCount":37,"integrity":"sha512-8ZOoKPfkP31L7t+qlTioYmDCb0g3BKbwHf6/jiFR2kFAZq757fGdUIOWsJW7hzy6LSljvrbCX9F4A00/1tBExg==","signatures":[{"sig":"MEUCIQDQH4EUDtYCxUkRrsOk/aCIYLwaGIqBsmLicdtQGO2rNQIgIdRE5v7liL06b4/3ddzMFDqFUwjzO8pTXfpWjFaU+YQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60799},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"79bc431a830dcbd4cc15dbeda39153d0cb5ce22f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.4_1709593659536_0.3618180650939262","host":"s3://npm-registry-packages"}},"5.3.0-canary.5":{"name":"@vercel/style-guide","version":"5.3.0-canary.5","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.5","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"cce743a1f07617ab630ce80ad90862c41a3ed856","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.5.tgz","fileCount":37,"integrity":"sha512-y0nR5YVNxLGH9FpgrvnXXlQw0wULp6rrZCxU+TJOWgLFz8xfbGPZCVQInW9VsmzqAFpUELOhSxz8P67MFeuCqA==","signatures":[{"sig":"MEQCIApsY6fhUmsbwfjVYtnRjuIfrbF8X/x6JJ6Q3jyfXIhnAiA0JFCsb/fkoNi36gGDHmOH4nO+xiYpz2G44P4EeVHy0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60627},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"dc392a1eb04f9c3c2e3e6371c9ec4ef4aacf9fd5","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^0.16.0","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.5_1709598016873_0.3425225638617797","host":"s3://npm-registry-packages"}},"5.3.0-canary.6":{"name":"@vercel/style-guide","version":"5.3.0-canary.6","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.6","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"b8f63292f10d286105499f3f2c4363ed96b60b2c","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.6.tgz","fileCount":37,"integrity":"sha512-9qXiplftvG55ftI88FtuGPTuGCWS1DH7cg7OeHGBny/NFzz7zGZeGKj3HtRPXkr7Dtjlt65YkSzxk/6SYKU/DQ==","signatures":[{"sig":"MEUCIQCcu8eOKqX8fiB57PGEBfwi0SrG5f9YYzseofynIElxBQIgLADmxXkl2RxsEpowOJJiKMcukWPR7DtfSnEsvN0mrnI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60691},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"d39b95fff1ce494311bb4cb20d688683de2650cf","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^1.5.1","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.6_1709598116465_0.6017589076765353","host":"s3://npm-registry-packages"}},"5.3.0-canary.7":{"name":"@vercel/style-guide","version":"5.3.0-canary.7","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.7","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"6a662d670d735e604679937c085360061049ac69","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.7.tgz","fileCount":39,"integrity":"sha512-6LYfsE1mCz3CoHnZTRYWsLQBsi/74Sd9hzwaADY9Iu3oPgu3c+570NKhcopzk07rI2gP0h0pqYmamXPNMYLsIg==","signatures":[{"sig":"MEUCIQCRvn8SzLiflErJlpm3neTHnlBRD/TfWzWKR/VJXV3tDgIgDlVJStJdUyd2GYXRnYAKh8l9q0uwmerlaRzlwAc05G4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61361},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n- `@vercel/style-guide/eslint/vitest`\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=16"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"efd1b85540576a6a983d1e11cf28f7d515d06253","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.2.4","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"18.19.1","dependencies":{"@babel/core":"^7.22.11","eslint-plugin-jest":"^27.2.3","eslint-plugin-react":"^7.33.2","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.22.11","eslint-plugin-import":"^2.28.1","eslint-plugin-vitest":"^0.3.22","eslint-plugin-unicorn":"^48.0.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","@rushstack/eslint-patch":"^1.3.3","eslint-plugin-playwright":"^1.5.1","@typescript-eslint/parser":"^6.5.0","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.5","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.0.1","@typescript-eslint/eslint-plugin":"^6.5.0","eslint-import-resolver-typescript":"^3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.7.0","readmeFilename":"README.md","devDependencies":{"husky":"^8.0.3","eslint":"^8.48.0","prettier":"^3.0.2","typescript":"^5.2.2","lint-staged":"^14.0.1","@commitlint/cli":"^17.7.1","semantic-release":"^21.1.1","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^17.7.0"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.7_1709598191456_0.8219691441992105","host":"s3://npm-registry-packages"}},"5.3.0-canary.8":{"name":"@vercel/style-guide","version":"5.3.0-canary.8","license":"MPL-2.0","_id":"@vercel/style-guide@5.3.0-canary.8","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"1c6c73d64870e81a897ff5838dbb29f5ada986ba","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-5.3.0-canary.8.tgz","fileCount":38,"integrity":"sha512-jm+hnTf1Y+HkM2fnIESrK0G7vljupCLjzzM5gd7WsPEUPUbY5rDwU6XJbbmXE48jmChXAr4jmceZDmUqvtkAPg==","signatures":[{"sig":"MEQCIDVJZqZSNjyEGZAhb03hwtDCYN11ZTjbWa8YWwpHYu5JAiBxG3tL2jzWdYWRP+BjJOIt49IBqoU3El/wratS7BzZAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60967},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n- `@vercel/style-guide/eslint/vitest`\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=18.18"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"ba372ab5207d99bd5c4cd74500eee9a2cdd50fac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.1.0","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"20.9.0","dependencies":{"@babel/core":"^7.24.0","eslint-plugin-jest":"^27.9.0","eslint-plugin-react":"^7.34.0","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.23.10","eslint-plugin-import":"^2.29.1","eslint-plugin-vitest":"^0.3.22","eslint-plugin-unicorn":"^51.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-jsx-a11y":"^6.8.0","@rushstack/eslint-patch":"^1.7.2","eslint-plugin-playwright":"^1.5.2","@typescript-eslint/parser":"^7.1.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.12","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.2.0","@typescript-eslint/eslint-plugin":"^7.1.1","eslint-import-resolver-typescript":"^3.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.15.4","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","eslint":"^8.57.0","prettier":"^3.2.5","typescript":"^5.3.3","lint-staged":"^15.2.2","@commitlint/cli":"^19.0.3","semantic-release":"^23.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^19.0.3"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_5.3.0-canary.8_1709599406020_0.1831997908008196","host":"s3://npm-registry-packages"}},"6.0.0-canary.1":{"name":"@vercel/style-guide","version":"6.0.0-canary.1","license":"MPL-2.0","_id":"@vercel/style-guide@6.0.0-canary.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"36798f4ed04ea51af2d8d10eeae502f239b7bdfe","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-6.0.0-canary.1.tgz","fileCount":38,"integrity":"sha512-V+0wwJO+HuqsQR8xWQWGykwGH7X6LDbohcXoqT6dFBnJSbneTMNhipcK5G6B86GPaT1IKdrlgfWaJd7rgT5fYQ==","signatures":[{"sig":"MEQCIBME//sudsY/pcv8BMhIAjEEAg8YEtk3QGpRPmxkqmY1AiAZD+rLkmrr3HfeySb+dEEWN8MY3lEY964RWbszz+9Ryg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60967},"main":"index.js","readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n- `@vercel/style-guide/eslint/vitest`\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","engines":{"node":">=18.18"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"4571defdbc29355ba215d5a84bdc4543e5b48f9e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.1.0","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"20.9.0","dependencies":{"@babel/core":"^7.24.0","eslint-plugin-jest":"^27.9.0","eslint-plugin-react":"^7.34.0","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.23.10","eslint-plugin-import":"^2.29.1","eslint-plugin-vitest":"^0.3.22","eslint-plugin-unicorn":"^51.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-jsx-a11y":"^6.8.0","@rushstack/eslint-patch":"^1.7.2","eslint-plugin-playwright":"^1.5.2","@typescript-eslint/parser":"^7.1.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.12","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.2.0","@typescript-eslint/eslint-plugin":"^7.1.1","eslint-import-resolver-typescript":"^3.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.15.4","readmeFilename":"README.md","devDependencies":{"husky":"^9.0.11","eslint":"^8.57.0","prettier":"^3.2.5","typescript":"^5.3.3","lint-staged":"^15.2.2","@commitlint/cli":"^19.0.3","semantic-release":"^23.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^19.0.3"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_6.0.0-canary.1_1709600618391_0.1276055310224229","host":"s3://npm-registry-packages"}},"6.0.0":{"name":"@vercel/style-guide","version":"6.0.0","license":"MPL-2.0","_id":"@vercel/style-guide@6.0.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"ijjk","email":"jj@jjsweb.site"},{"name":"quietshu","email":"g@shud.in"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"nick.tracey","email":"nick.tracey@vercel.com"},{"name":"matheuss","email":"matheus.frndes@gmail.com"},{"name":"chriswdmr","email":"github.wolle404@gmail.com"},{"name":"snokohn","email":"snokohn@yahoo.com"},{"name":"zeit-bot","email":"team@zeit.co"}],"homepage":"https://github.com/vercel/style-guide#readme","bugs":{"url":"https://github.com/vercel/style-guide/issues"},"dist":{"shasum":"00b5a01b64e5e42420cd704470c22acbca9757fe","tarball":"https://registry.npmjs.org/@vercel/style-guide/-/style-guide-6.0.0.tgz","fileCount":38,"integrity":"sha512-tu0wFINGz91EPwaT5VjSqUwbvCY9pvLach7SPG4XyfJKPU9Vku2TFa6+AyzJ4oroGbo9fK+TQhIFHrnFl0nCdg==","signatures":[{"sig":"MEUCIEqqvLgW1tZeM7dtuxwWk+jdHZAsfBC0lZ+Xmc7uO6KwAiEAqU935dOmHAxMDyQ5G7UrxjwlNmch9X+b1d63Lj+31sI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60958},"main":"index.js","engines":{"node":">=18.18"},"exports":{"./eslint/*":"./eslint/*.js","./prettier":"./prettier/index.js","./typescript":"./typescript/tsconfig.base.json","./typescript/node16":"./typescript/tsconfig.node16.json","./typescript/node18":"./typescript/tsconfig.node18.json","./typescript/node20":"./typescript/tsconfig.node20.json"},"gitHead":"1377fa3bedafe60954d20f80a455e3a0597bb354","scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"husky install","eslint-check":"eslint --max-warnings=0 .","prettier-check":"prettier --check .","semantic-release":"semantic-release"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"prettier":"./prettier","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"_npmVersion":"10.1.0","description":"Vercel's engineering style guide","directories":{},"lint-staged":{"*":"prettier -w --ignore-unknown"},"_nodeVersion":"20.9.0","dependencies":{"@babel/core":"^7.24.0","eslint-plugin-jest":"^27.9.0","eslint-plugin-react":"^7.34.0","eslint-plugin-tsdoc":"^0.2.17","@babel/eslint-parser":"^7.23.10","eslint-plugin-import":"^2.29.1","eslint-plugin-vitest":"^0.3.22","eslint-plugin-unicorn":"^51.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-jsx-a11y":"^6.8.0","@rushstack/eslint-patch":"^1.7.2","eslint-plugin-playwright":"^1.5.2","@typescript-eslint/parser":"^7.1.1","eslint-plugin-react-hooks":"^4.6.0","prettier-plugin-packagejson":"^2.4.12","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-testing-library":"^6.2.0","@typescript-eslint/eslint-plugin":"^7.1.1","eslint-import-resolver-typescript":"^3.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@8.15.4","devDependencies":{"husky":"^9.0.11","eslint":"^8.57.0","prettier":"^3.2.5","typescript":"^5.3.3","lint-staged":"^15.2.2","@commitlint/cli":"^19.0.3","semantic-release":"^23.0.2","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^19.0.3"},"peerDependencies":{"eslint":">=8.48.0 <9","prettier":">=3.0.0 <4","typescript":">=4.8.0 <6","@next/eslint-plugin-next":">=12.3.0 <15.0.0-0"},"peerDependenciesMeta":{"eslint":{"optional":true},"prettier":{"optional":true},"typescript":{"optional":true},"@next/eslint-plugin-next":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/style-guide_6.0.0_1709601216220_0.8847158555138976","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-06-25T11:17:21.916Z","modified":"2026-01-23T18:19:32.034Z","0.1.0":"2021-06-25T11:17:22.167Z","0.2.0-beta.0":"2021-07-23T11:46:18.876Z","0.2.0-beta.1":"2021-07-23T11:57:33.671Z","0.2.0":"2021-07-23T12:54:52.220Z","0.2.1":"2021-07-23T13:22:34.916Z","0.2.2":"2021-07-23T13:43:57.826Z","0.2.3":"2021-07-23T13:49:49.152Z","0.3.0":"2021-08-06T12:26:26.382Z","0.4.0":"2021-08-06T13:08:13.040Z","0.5.0-beta.0":"2021-08-17T12:51:05.122Z","0.5.0-beta.1":"2021-08-17T13:08:19.153Z","0.5.0-beta.2":"2021-08-17T13:27:31.597Z","0.5.0":"2021-08-17T13:49:48.364Z","0.6.0":"2021-09-28T14:08:15.296Z","0.7.0":"2021-11-05T15:41:47.385Z","0.8.0":"2021-11-29T23:02:24.773Z","1.0.0-canary-test-1.1":"2021-12-01T09:45:29.247Z","1.0.0":"2021-12-01T09:51:56.346Z","1.0.1":"2021-12-07T22:26:19.319Z","2.0.0-canary.1":"2022-02-01T08:05:13.881Z","2.0.0-7c88dbc.1":"2022-02-02T00:01:48.166Z","2.0.0":"2022-02-02T00:17:09.358Z","2.1.0-canary.1":"2022-02-28T16:09:53.845Z","2.1.0-canary.2":"2022-03-27T15:21:46.642Z","3.0.0-canary.1":"2022-03-28T08:41:45.108Z","3.0.0-canary.2":"2022-03-29T06:08:16.552Z","3.0.0":"2022-03-29T08:20:25.709Z","4.0.0-canary.1":"2022-09-21T10:34:39.773Z","4.0.0-canary.2":"2022-09-22T02:51:28.889Z","4.0.0-canary.3":"2022-09-22T03:19:44.095Z","4.0.0-canary.4":"2022-09-22T04:20:44.452Z","4.0.0-canary.5":"2022-09-22T04:45:24.225Z","4.0.0-canary.6":"2022-09-28T04:12:54.530Z","4.0.0-canary.7":"2022-09-29T05:35:25.306Z","4.0.0":"2022-09-29T06:25:11.594Z","4.0.1-canary.1":"2022-09-29T07:46:30.950Z","4.0.1":"2022-09-29T08:04:34.184Z","4.0.2-canary.1":"2022-09-30T03:07:55.926Z","4.0.2":"2022-09-30T03:25:09.028Z","5.0.0-canary.1":"2023-08-29T05:44:05.015Z","5.0.0":"2023-08-29T07:20:08.351Z","5.0.1-canary.1":"2023-08-30T22:55:52.477Z","5.0.1":"2023-08-31T02:35:59.776Z","5.0.2-canary.1":"2023-09-22T03:54:16.871Z","5.1.0-canary.1":"2023-11-03T01:02:06.922Z","5.1.0":"2023-11-10T04:43:11.540Z","5.2.0-canary.1":"2023-11-22T02:43:41.744Z","5.2.0-canary.2":"2024-02-02T01:28:53.228Z","5.2.0":"2024-02-02T02:40:41.577Z","5.3.0-canary.1":"2024-03-04T03:25:06.961Z","5.3.0-canary.2":"2024-03-04T10:48:23.325Z","5.3.0-canary.3":"2024-03-04T23:06:15.011Z","5.3.0-canary.4":"2024-03-04T23:07:39.752Z","5.3.0-canary.5":"2024-03-05T00:20:17.046Z","5.3.0-canary.6":"2024-03-05T00:21:56.617Z","5.3.0-canary.7":"2024-03-05T00:23:11.632Z","5.3.0-canary.8":"2024-03-05T00:43:26.233Z","6.0.0-canary.1":"2024-03-05T01:03:38.583Z","6.0.0":"2024-03-05T01:13:36.364Z"},"bugs":{"url":"https://github.com/vercel/style-guide/issues"},"license":"MPL-2.0","homepage":"https://github.com/vercel/style-guide#readme","repository":{"url":"git+https://github.com/vercel/style-guide.git","type":"git"},"description":"Vercel's engineering style guide","maintainers":[{"email":"infra+release@vercel.com","name":"vercel-release-bot"},{"email":"team@zeit.co","name":"zeit-bot"}],"readme":"# The Vercel Style Guide\n\n<a aria-label=\"Vercel logo\" href=\"https://vercel.com\">\n  <img alt=\"\" src=\"https://img.shields.io/badge/Made%20by%20Vercel-000000.svg?style=flat-square&logo=Vercel&labelColor=000\">\n</a>\n<a aria-label=\"NPM version\" href=\"https://www.npmjs.com/package/@vercel/style-guide\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/v/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"License\" href=\"https://github.com/vercel/style-guide/blob/canary/LICENSE.md\">\n  <img alt=\"\" src=\"https://img.shields.io/npm/l/@vercel/style-guide.svg?style=flat-square&labelColor=000000\">\n</a>\n<a aria-label=\"CI status\" href=\"https://github.com/vercel/style-guide/actions/workflows/quality.yml?query=event%3Apush+branch%3Amain\">\n  <img alt=\"\" src=\"https://img.shields.io/github/actions/workflow/status/vercel/style-guide/quality.yml?event=push&branch=main&style=flat-square&labelColor=000000\">\n</a>\n\n## Introduction\n\nThis repository is the home of Vercel's style guide, which includes configs for\npopular linting and styling tools.\n\nThe following configs are available, and are designed to be used together.\n\n- [Prettier](#prettier)\n- [ESLint](#eslint)\n- [TypeScript](#typescript)\n\n## Contributing\n\nPlease read our [contributing](https://github.com/vercel/style-guide/blob/main/CONTRIBUTING.md)\nguide before creating a pull request.\n\n## Installation\n\nAll of our configs are contained in one package, `@vercel/style-guide`. To install:\n\n```sh\n# If you use npm\nnpm i --save-dev @vercel/style-guide\n\n# If you use pnpm\npnpm i --save-dev @vercel/style-guide\n\n# If you use Yarn\nyarn add --dev @vercel/style-guide\n```\n\nSome of our ESLint configs require peer dependencies. We'll note those\nalongside the available configs in the [ESLint](#eslint) section.\n\n## Prettier\n\n> Note: Prettier is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://prettier.io/docs/en/install.html\n\nTo use the shared Prettier config, set the following in `package.json`.\n\n```json\n{\n  \"prettier\": \"@vercel/style-guide/prettier\"\n}\n```\n\n## ESLint\n\n> Note: ESLint is a peer-dependency of this package, and should be installed\n> at the root of your project.\n>\n> See: https://eslint.org/docs/user-guide/getting-started#installation-and-usage\n\nThis ESLint config is designed to be composable.\n\nThe following base configs are available. You can use one or both of these\nconfigs, but they should always be first in `extends`:\n\n- `@vercel/style-guide/eslint/browser`\n- `@vercel/style-guide/eslint/node`\n\nNote that you can scope configs, so that configs only target specific files.\nFor more information, see: [Scoped configuration with `overrides`](#scoped-configuration-with-overrides).\n\nThe following additional configs are available:\n\n- `@vercel/style-guide/eslint/jest`\n- `@vercel/style-guide/eslint/jest-react` (includes rules for `@testing-library/react`)\n- `@vercel/style-guide/eslint/next` (requires `@next/eslint-plugin-next` to be installed at the same version as `next`)\n- `@vercel/style-guide/eslint/playwright-test`\n- `@vercel/style-guide/eslint/react`\n- `@vercel/style-guide/eslint/typescript` (requires `typescript` to be installed and [additional configuration](#configuring-eslint-for-typescript))\n- `@vercel/style-guide/eslint/vitest`\n\n> You'll need to use `require.resolve` to provide ESLint with absolute paths,\n> due to an issue around ESLint config resolution (see\n> [eslint/eslint#9188](https://github.com/eslint/eslint/issues/9188)).\n\nFor example, use the shared ESLint config(s) in a Next.js project, set the\nfollowing in `.eslintrc.js`.\n\n```js\nmodule.exports = {\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/browser'),\n    require.resolve('@vercel/style-guide/eslint/react'),\n    require.resolve('@vercel/style-guide/eslint/next'),\n  ],\n};\n```\n\n### Configuring ESLint for TypeScript\n\nSome of the rules enabled in the TypeScript config require additional type\ninformation, you'll need to provide the path to your `tsconfig.json`.\n\nFor more information, see: https://typescript-eslint.io/docs/linting/type-linting\n\n```js\nconst { resolve } = require('node:path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n};\n```\n\n### Configuring custom components for `jsx-a11y`\n\nIt's common practice for React apps to have shared components like `Button`,\nwhich wrap native elements. You can pass this information along to `jsx-a11y`\nvia the `components` setting.\n\nThe below list is not exhaustive.\n\n```js\nmodule.exports = {\n  root: true,\n  extends: [require.resolve('@vercel/style-guide/eslint/react')],\n  settings: {\n    'jsx-a11y': {\n      components: {\n        Article: 'article',\n        Button: 'button',\n        Image: 'img',\n        Input: 'input',\n        Link: 'a',\n        Video: 'video',\n      },\n    },\n  },\n};\n```\n\n### Scoped configuration with `overrides`\n\nESLint configs can be scoped to include/exclude specific paths. This ensures\nthat rules don't \"leak\" into places where those rules don't apply.\n\nIn this example, Jest rules are only being applied to files matching Jest's\ndefault test match pattern.\n\n```js\nmodule.exports = {\n  extends: [require.resolve('@vercel/style-guide/eslint/node')],\n  overrides: [\n    {\n      files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],\n      extends: [require.resolve('@vercel/style-guide/eslint/jest')],\n    },\n  ],\n};\n```\n\n#### A note on file extensions\n\nBy default, all TypeScript rules are scoped to files ending with `.ts` and\n`.tsx`.\n\nHowever, when using overrides, file extensions must be included or ESLint will\nonly include `.js` files.\n\n```js\nmodule.exports = {\n  overrides: [\n    { files: [`directory/**/*.[jt]s?(x)`], rules: { 'my-rule': 'off' } },\n  ],\n};\n```\n\n## TypeScript\n\nThis style guide provides multiple TypeScript configs. These configs correlate to the LTS Node.js versions, providing the appropriate `lib`, `module`, `target`, and `moduleResolution` settings for each version. The following configs are available:\n\n| Node.js Version | TypeScript Config                       |\n| --------------- | --------------------------------------- |\n| v16             | `@vercel/style-guide/typescript/node16` |\n| v18             | `@vercel/style-guide/typescript/node18` |\n| v20             | `@vercel/style-guide/typescript/node20` |\n\nTo use the shared TypeScript config, set the following in `tsconfig.json`.\n\n```json\n{\n  \"extends\": \"@vercel/style-guide/typescript/node16\"\n}\n```\n\nThe base TypeScript config is also available as [`@vercel/style-guide/typescript`](./typescript/tsconfig.base.json) which only specifies a set of general rules. You should inherit from this file when setting custom `lib`, `module`, `target`, and `moduleResolution` settings.\n","readmeFilename":"README.md","users":{"flumpus-dev":true}}