{"_id":"eslint-plugin-ft-flow","_rev":"25-7e7ff679bcab1cad2864d43677c94f9d","name":"eslint-plugin-ft-flow","dist-tags":{"latest":"3.0.11"},"versions":{"0.1.0":{"name":"eslint-plugin-ft-flow","version":"0.1.0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-type","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@0.1.0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-flow-type#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-flow-type/issues"},"dist":{"shasum":"5257972eb25b862858451f4f24e4b73ff25e83da","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-0.1.0.tgz","fileCount":83,"integrity":"sha512-EzaFW2aY5oNjbmSCeI9klnjHtxydxvBw0D5QFcTRPAX9Vyt3F8DbTlE34oVJ/sn2GKZou7U7/9KY1bo85exZRA==","signatures":[{"sig":"MEUCIF1OeyxVw7yyIg8jcW3Wv+GEV5ymkpqg/+DjrsA3jqseAiEA2oKgzGKopGwnTikLNaSAkg7SDCqnzHERTVQmKE2Bx/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":332047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtDx/CRA9TVsSAnZWagAAr7kP/0LargcsOhSaGf6Yhqsg\n2vc0TE8vqJc80EB7F0J07AoM5lNevUNlK3ZHAZZ37+cj+da/xuLizvYLVr4d\n6YY5RNamSFCfEpKAtECLjSzu47HICG+3vc7/rVkajP/6IIFwSv1N1T7iUPo7\netZy+PyWxqEmjS26UHKEqij5Z9pVQBy6x49MnJJsJQD6/2h7f8Emw6e/KLJs\njkJLW0vrNOowUBfYdPRdJ7egl+03ZLTbX230lU0ZdgLTsUT2tpgueuPecYMq\nV8k9JL6Ifxef7AEZw+G3wJ43DTAHZTIsk0100irjFdfSHB2Xb+nwO3QeX+oA\na0O/LQaTRtL6DxOj0n3sTVIVBSGTqlx1AI0/y4PIQKFfb8twMILyYUuhSNy1\nK0Wo4treAiUVyyh+5/YYTcYlHu2gOp/IqT0/yJiOxb6x6EC50EaS4t2SoJj7\nUeyVozrUqSS6QItIwTWnv4RN7cvdKLdvkZeBcGhzjSA8hk3DpL8yqUINYZYz\nYEnoFaJsnQK+SPsrXPJJ+oiv24sExWKoXZAMZsmIv4ef65iPqc6dc7Vb0TWd\nhrHEiTFMyLz6XaXQYGvH2hC8kZQR835B/S+/nM6JgeOZoalJheXH9/Pff3rA\ntzCJ6OBhO/ELyMA+pqGzAHt2rbD4Jbqb2VIinwa7unpYnmlIWtbr/uPImu4V\nSJwj\r\n=P1QS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.0.0"},"gitHead":"32a5b636bcd068cb5e262cdc6d156755c8e13ff7","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./src/bin/checkDocs","check-tests":"babel-node ./src/bin/checkTests","format-json":"jsonlint --sort-keys --in-place --indent \"  \" ./src/configs/recommended.json","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./src/bin/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-flow-type.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","@babel/cli":"^7.15.7","@babel/core":"^7.16.0","@babel/node":"^7.15.8","lint-staged":"^12.1.2","jsonlint-mod":"^1.7.6","@babel/register":"^7.15.3","@babel/preset-env":"^7.15.8","eslint-config-bzc":"^1.0.2","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.3","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-flowtype":"^8.0.3","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.0"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_0.1.0_1639201919324_0.6179356567114271","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"eslint-plugin-ft-flow","version":"0.1.1","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@0.1.1","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"5e76160495f4b8e31cfb9a3b44ed8c7f12cfe549","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-0.1.1.tgz","fileCount":83,"integrity":"sha512-pidqQxJdN9jBinyFJh2pgWdId03CPhbcLCYP7OHo5DwCsLKRwlF03NTLy2VEHkf/vWz6wLmoCvTdampObXDA8Q==","signatures":[{"sig":"MEUCIQDbzZj8x5vNsW9A/EqoxFXA0FmQWEaRLT5imGLEKBWC0QIgMw3jc/2jY8cRe9yV4i7C9WQHYjgfdwcg7RRtZMA9b80=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":330446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtEEoCRA9TVsSAnZWagAAg+AP/inEA//Sd7Bb0yJ+AyVz\nMtDe+BNFTvMC2j1EDMi/VqVlWxPOChT7XFK37pEVOET4xo08hIgqauhIFVaW\nURINWhYmJERHzIurY2jHmk/ZIvoN2h62NSSlutC+QngqXNM42QL3KR//P9Th\n0YBK6PFPNeFR1bq3O++Wz8OWf2zQUQJNI4fdGN2lgQYopPQIbEQPCuuy5KLK\nc6P+9qp0vpkiWhvBRuDVEvF6XGJW8BpTowxOWVeAUJw3Xu5X87K1pEtLDzkj\nU/JO/iMBrPbe0gA8mBcpWo8/BUOoa/ohGq6sIcfpctqgNHV0U2HsXvMpZjfs\nkbGM6Lf99RMXSDJgMJdDsAi1+OFGXx0EmtOHop5XB44C+K/HjkPEFgJEeXAx\n3K3egifMsUAnd8OX6sG/QWIlxniKESPKE/HW0IMzI0CtXLiJGYMrH9u2qxl5\nfHW1f/FLwUUQvFBCA8zc8XczkEeyG2GPfMoCJkcRcVAl+O16narMOX148gJc\nbPmewhCXANYjawjLZ27AFFUkiJ1owFmIEtiBbG119fCOTTR45Y88MxMKioRx\nFL3VNZSC4OleZyacYjfVWLZ9uXkf600wRHeUxUBYhl5aBXkha3dxSbMbiVsK\nHTezWy0IRB80TYXu9PzH9WmHwyPpdMbuPnkniQuqD6rXDdzR21471uXS7lZV\nYwvm\r\n=eEMO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.0.0"},"gitHead":"e05842f04447710f47642b9bfa77af864517b134","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./src/bin/checkDocs","check-tests":"babel-node ./src/bin/checkTests","format-json":"jsonlint --sort-keys --in-place --indent \"  \" ./src/configs/recommended.json","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./src/bin/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","@babel/cli":"^7.15.7","@babel/core":"^7.16.0","@babel/node":"^7.15.8","lint-staged":"^12.1.2","jsonlint-mod":"^1.7.6","@babel/register":"^7.15.3","@babel/preset-env":"^7.15.8","eslint-config-bzc":"^1.0.2","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.3","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-flowtype":"^8.0.3","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.0"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_0.1.1_1639203112232_0.10338215360721081","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"eslint-plugin-ft-flow","version":"0.1.2","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@0.1.2","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"8b07d37d0a2a043180acaf4631c05abec5284924","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-0.1.2.tgz","fileCount":83,"integrity":"sha512-bD0jlrffPwNTZnHpZebuLvd+2dDqIDuIvAzMaiBrzVG7MKTZNpEoF8sSIfg5Ed4ZN5iq3snLJJXEGB51qFXhxA==","signatures":[{"sig":"MEQCIBl515vOl5J+9aKjYgDJ80gyvF4ZJusFQB6hjGgHTNsLAiB/nKWvFXiCGfeIDZ2zBVVMGvPaIFJFL6e2S9SLJ/y9PQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":329256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtEMnCRA9TVsSAnZWagAAT1UP/iImVAenNZsFw41cKhiP\nhFoVg8WCGJB6USy5VQEeJLI3Y5tldVDj0eQxy3Ea/HCV5HgDNtyUN16LhZsY\nclYwfYeCy3p5gndOhYjLlv8hPhJQvaCyrF7MrJdEte8do482pCDp+CQlEMGi\nBdLK6OBA9iUyzXs7FuCe2b2A0QHGl249Udlkrazb1DtegcZqZCfVkaOdbBMJ\nFWNp1GxZlmPyZsq1tWtvUfsI2NYIOMsJ3fDA4BsyYb6ofMaTOGb7JZCjKyNv\nFkrEM8LCY8FCXjUKBfGqE91Mk/+i/45V2hxQQgu4wtUomdfKlp/ITknqeRIM\nNQccopkp3srBQBTGoW/q+EmfnjLgWMkAXwVWrlaG36TznFxqXgedQUZg6Lnv\nm/cYBeqGQo3bcKT+8bfOHbLQBkZTDKzQY3vIxv1oqVpdzQJYqyV+wtBD15y2\n18d3BqQpyYD2Q6CmA7A8n7Nz3elNQu1Vxo8aEybcm0OYzUU4FP3+Pusn69OG\no2dXaEikABEdXCwmXnMsiGak8Vi+SsyqR3/JZlQbESXtZHCJTKwgZjNqNzrv\nzW+OKl54aiqlhdbh+1brJSRpvnSLbG6s1gaDg07NTvdwgHIHO5GnCLNAa3yq\n4V2jKqlFkCy0OvZkReRV1dIT3mrDsoZ1muT5Fm5FhIbEVkYCvgQuXOkOH1rK\nYM2o\r\n=I8JE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.0.0"},"gitHead":"7cef4f88caa89b25367baaeb8d5f1809e6b6e776","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./src/bin/checkDocs","check-tests":"babel-node ./src/bin/checkTests","format-json":"jsonlint --sort-keys --in-place --indent \"  \" ./src/configs/recommended.json","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./src/bin/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","@babel/cli":"^7.15.7","@babel/core":"^7.16.0","@babel/node":"^7.15.8","lint-staged":"^12.1.2","jsonlint-mod":"^1.7.6","@babel/register":"^7.15.3","@babel/preset-env":"^7.15.8","eslint-config-bzc":"^1.0.2","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.3","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-flowtype":"^8.0.3","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.0"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_0.1.2_1639203623665_0.4226020671349222","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"eslint-plugin-ft-flow","version":"1.0.0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@1.0.0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"d118386be32f985587e5e1ba6e0d9196fac90722","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.0.0.tgz","fileCount":86,"integrity":"sha512-UfoPUZYHiLlYJAadeTM5yiPwYu78Oin0x9nLV6lOqzjxmy0Y6nG+Nc69RSsY8WyzUCbgx4o2YZz7+kdemUqgGg==","signatures":[{"sig":"MEQCIFyioHVF7Vw+1TtrVYsDhtfWGu6UhQzYTRj5LulAJOeHAiBGJJr9NpCmRG2wW0McSqMNCRdGdMzd4EKsmcIOt8UEJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":336763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht6zmCRA9TVsSAnZWagAAi54QAKKnoPjI8wJPwKM6G5Dt\n3nLWr2a3aeUtyYZ2QPANka7PE6hSP39V6MK2y2Muy44M66VCXUVMLXybLIy2\nA80LLghK9DILupIQvENPXAO7+0KZUf+4p5X8jlQugej9zGNeBjQQitvhfcH6\nhaCJ5tFDjSkKGGgErKuZ3enO/2Qvx3ny6MEtTcZPlZVkHH2ahvFnaN150H9/\n9tK3JYvQBWwtGHrIzmWA8zxYZwxIBpSRDbDffnu8Wc3kkDw679vjZz+ksEdG\nck9BmRmfmuhqFhBks3zaZYGiTkvAuuDsYWwcEt0d84W518+UoBQAv1zuwaji\nGLsxWr7di5QEFlpSdoy92bOfjKSzqg5LoNCfsuKl2cluTXGgscAwMnSvrSya\n88KwDyzE9R47Hrh+k+iOCdpvl01BSmW+VsSsHnI49onRWB58GwaPtlqJXyJ4\nWMGDOmAjepRJvF259NJiNs9J5WwpsVpdAHbfMT+xipmVhFUHzmmFLfjtT9fi\nD3uuX5RP3x5xqRmru9Bi7rYYxI4THfS2gmAb+q8DRyzWbeV9HlsDU/+SFP0b\nI1K9cT5y2z3GT885t91o8qtZUjpGx3X/mpIrsKEMycVcBEg9IE3CTrn4uJrr\nI0U3sc/y+BRLlTdnz3fvFHMH5sdyEIloDKwbgzYn8dRmA7CPvISUQrJUBcHJ\nTZzW\r\n=CDTB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.0.0"},"gitHead":"a4c1c04e3ba21c88e9087927a5b5a303be7d38d2","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./src/bin/checkDocs","check-tests":"babel-node ./src/bin/checkTests","format-json":"jsonlint --sort-keys --in-place --indent \"  \" ./src/configs/recommended.json","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./src/bin/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","@babel/cli":"^7.15.7","@babel/core":"^7.16.0","@babel/node":"^7.15.8","lint-staged":"^12.1.2","jsonlint-mod":"^1.7.6","@babel/register":"^7.15.3","@babel/preset-env":"^7.15.8","eslint-config-bzc":"^1.0.2","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.3","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-flowtype":"^8.0.3","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.0"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_1.0.0_1639427302570_0.23365050323605385","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"eslint-plugin-ft-flow","version":"1.0.1","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@1.0.1","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"9188c01396b1cbf91f3e80c40fac619d6d8f8ca9","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.0.1.tgz","fileCount":86,"integrity":"sha512-iRMHqeUph+uxBCyKeUhGa63t12U/ID6JWul//DdyuFkjXbYvC+NRiP9kiQnPflInFcO+kze+pgMOcBik9uTUig==","signatures":[{"sig":"MEUCIQCz4Hk+OphvDjuGHs7Ch5D+w7hzHk821ifhKvu4pWQJAAIgMGcT0Dord5b9lWKG11bdmshNQCeWXUTelB9hxeDOHks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":337773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht6+YCRA9TVsSAnZWagAAXyoQAJN/ghwa7dYLN5ptuaXk\n92OQV0XePrpZn7Ue194uH5ZCyMNjhob0OjdyMxEZfoFnzvtSkg65KMnGBINT\nrYgmBix2tJZjmMUEBB4TfKD75NfptG9TE5QljXqT2Exh+aC+8tFXb8P1LzB0\nb8vQaUZCw2AMuoK9jr0YtM0W6DjBLAwiPB5EwUZaKKbTkKO+kCjCKkBXZL3J\nxNXBRD+VbxBoBRO8I2c5qZMdDtoA+Jp7q/g/2EBEcc/sXCq+KWJ1UV30XFIK\nnX3LRwAn49BjHpaNJZDxA/U58H1jDql6T48AHpRNSKTVyR2D5RAhy7XOrQfg\nofhb+izfMBKN8wgVf/jOQWBgBN362t7XKfC3h3i527mofk81cDAcEhfwHC8s\n0lkt7lqACYtBnExWQzyH5MZCoqAeL2fBw3Udqc7psqNLLbazo//712M4FAKB\nIcLiyl4Zh5S4jv+nptNlVsEjQxMfUoLgYMUzKFeqhJUBT5dFbzqHsL4pV2DA\nQ5VX14uo9wXBtGXJVXgwhB2snaKYbGN8zvW9OYVS2wPYk/XwGWtimc/yIAcc\ncDe9jz1l60dWXOmM9UPpI8u0LWHX4b69JfMPHu+4IHst5+8GepA5l9j1nMlA\nS/HrnjHBAhN2vMoD6z3GJM9fe9C7bw9d0FogaMKLxYPxdtThjJoRzuN2On6X\nJS/m\r\n=Dvow\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"b6d2aa1003eb62710ceb59b0d14cd2b965660478","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./src/bin/checkDocs","check-tests":"babel-node ./src/bin/checkTests","format-json":"jsonlint --sort-keys --in-place --indent \"  \" ./src/configs/recommended.json","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./src/bin/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","@babel/cli":"^7.15.7","@babel/core":"^7.16.0","@babel/node":"^7.15.8","lint-staged":"^12.1.2","jsonlint-mod":"^1.7.6","@babel/register":"^7.15.3","@babel/preset-env":"^7.15.8","eslint-config-bzc":"^1.0.2","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.3","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-flowtype":"^8.0.3","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.0","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_1.0.1_1639427992538_0.08064791197766841","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"eslint-plugin-ft-flow","version":"1.0.2","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@1.0.2","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"3d67298cc7c36f1df9f1b7e19371d795b1a7af76","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.0.2.tgz","fileCount":119,"integrity":"sha512-zEhoVn/Q9uNfLuWD1IZvasX1gr0HXMbtn9wN6veiO8Qf/HrXG9kLEr0cvtQUGKjQNFciDTEDP6Sh20qWkr2dXw==","signatures":[{"sig":"MEUCIQCI1bL6AfHfSf0fUIWYf5aNcSov5Tazixa8IegpvWsEaQIgTM13idCMYXWiaE7zjCJoFLqsZB1zG27+6Ee60oxdaQ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":859442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhujYlCRA9TVsSAnZWagAAcOIP/0wEI/GmXPEXnZoDgmo1\nBjxraYTcbav897+c7O+0HHzwRqqWYI2ZGjZd5AaxIIvGKMtlS5hftSejOwOT\n1K5t5z0QF/NtAiSHXCzlO41oWW/zkxB19v82f7QctyDsiSaYDlVVa2KFbW+g\nkR6kel4OQ4qzXZpbrxIZaGQR/DZAdqKnUdwJX4j1Qeoh3/mpHMgSXEeLnw4v\n2gI56DEa9Rik6RVHb0wPBkd376X9wjBiaXSw8QpPBmUYothYr84ue2bz0M0j\nKNdhmDePa7QSmya7urKZ1tYoM8BzB8TcAtybBszcetZkmiaqLLd4vdn1ERNQ\nsDr6Rd4UKPT5ViUgpLOd+NWDqlEcc1mj75b9f0j9Qxh7WaTZaZx2HHDODeN2\n2yxdTgG9WL6wEQcEArU/WWuuEcm7WXlZyiBvpj/5EcqjUGU/UxscG2cLWFoM\n20JD5q54aeQTYvr4PUsXREl142Rd9K00lnxGg5av7pRBtznI2KkqjVqNMctv\nDKhVK9XNhw3HuEnpas3PdoiAeEQnpQYsi/KpiK0xY+uQDvVA0cXUwp6uvADh\nXoYxFg7KnYbsLc26cFgPDTye/rTxiHzl9fLSmC+I8l6cGdyl0xVKxkcs/b+J\n16PcQjAxu78oldr6xS2FWvZ9dMItxahKORuWrECyCHM2FJPvpz2DGlbzdcCm\nXrWb\r\n=Ppyh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"4fb7838b76887b0d40b413b84a5b31775c1c2db8","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./scripts/checkDocs","check-tests":"babel-node ./scripts/checkTests","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./scripts/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.0.1","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_1.0.2_1639593509215_0.9338152127553907","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"eslint-plugin-ft-flow","version":"1.1.0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@1.1.0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"bc41e242b26e542c9eb23280eacae933a43f7447","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.1.0.tgz","fileCount":82,"integrity":"sha512-Z1MVInDFYHV66Ok0dA+jR7fiHLCYY8eDl0z8yiQ/wAXkmfOJ8fEuHeFvx+z5Ykt3IojhWrmLKkDbC/KDj7FCQw==","signatures":[{"sig":"MEQCIBFE1abteusA3Ap1fuDl3S/akJXzkLPYC3CqihIYHfbGAiBilKEAa7RzGXEWTIJlnRwFb0Kv9wYzh+3gJcq+FNeo/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":326384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvmKFCRA9TVsSAnZWagAAUGQP/1D/G0ix/scHL9Igrads\ngR+ubd+e/hDw1CVFy4rjEMCqcd3KiLLawCvyStbUicXcQ2ywJt3JdlCHicsG\n9H2y5X5UvsC9X7UdeZG0gIayCuvWykvzCZAMHvldXbzZIzi72QmhZqre2ILW\nXfdTO+24VaXDB3qPTfDdudCTungqUEn5WGNCS8CDFe4sRcw23xFXmWGoxysS\n3+J2ux74kwCFjnXlOR8csSwWmTNbjx/J5QlarltoJcFVUzOqekU5WmYq4Mcd\ngE2L2uPEE9GkdpjOyC2IPSKdR9UhK+WQXa4hfH3JJi0MicBWsoQYzvFlPqVJ\nANsfZvk6rsi9afM5pVAa/OjOaBYmQCW9jjJSH3FeKvbVetI9fN37ToQLqB8Y\nTLF5B+J/xco1MF8oFmFU8rv/lpslbd25Y5vGgm79Cb3NKZv/Xitv6LNLDRZi\neoyzobNfsn4Ss3yE7rtqDsT/AdcMV4ZCbBp35MKnOe9TBvlz3un53KB+LSpy\nyHGLmxltLWRe3xdWBab1IYft1jOd1m9vOukZ62zikJxKabYZ1ZMfmgEdU3OR\nOOmvc7vCIrd82LWMZzgO2+XQqzhoB2wVl7/jg7QZuSo9jMiYBW0F2bAiuJbl\nw5JBiLGNQBITlmrcuHuqtWTLGd6lNfw6fS69+pCZb6fswqTERnpTLxgNf2yD\nLXY1\r\n=qlH/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"7db092660d2f67de38b8dd4cb8fd8b900c95b4ab","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./scripts/checkDocs","check-tests":"babel-node ./scripts/checkTests","create-readme":"gitdown ./.README/README.md --output-file ./README.md && npm run documentation-add-assertions","prepublishOnly":"yarn documentation-add-assertions && yarn build","documentation-add-assertions":"babel-node ./scripts/addAssertions"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","gitdown":"^3.1.4","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.0","eslint-plugin-react":"^7.27.1","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.0.1","eslint-plugin-jsx-a11y":"^6.5.1","eslint-config-canonical":"^32.15.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-eslint-plugin":"^4.0.2","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_1.1.0_1639867013087_0.9314591613311272","host":"s3://npm-registry-packages"}},"1.1.1-alpha-0":{"name":"eslint-plugin-ft-flow","version":"1.1.1-alpha-0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@1.1.1-alpha-0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"8b9374c8c4a8268408878664bcbeff3653da429d","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.1.1-alpha-0.tgz","fileCount":82,"integrity":"sha512-oTgz2MI5IbU85KhfoqXIIK+PHAe4LWg0oMwfEvnQwh5Xtp2MYBAIYffsQS2JQhxsfeqkxgLf+Pv+J586N3UU6g==","signatures":[{"sig":"MEUCIQDqWaxSa5S84IPK52XplzmnHXc+Z0U6zhkNsklZVh7uEwIgeJ8FysE8XcP4wnd2C2MqUlZzEwLhcAK2aIvmuplRn34=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":325041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhy/LICRA9TVsSAnZWagAANIMP/3EfGcRSiD9pL8y6eIJm\nMzKCi15WlYDEdLtJPr9CVPxymFNqkZ1Zn9xChTjLWn/SeJirr3Hq9Y+fAVfL\nGuDUMCY9f3FJz7KKVfPPBgZkzXJTJbnT7HvAQE+Jzug+0ZjSKvasPyzwSTXR\nYBymWuN9C9Mqa6g89aNEYwmDXmQ96xX11N8bgJilpphVfx8Gexoe0CWUl/wk\nlTfVUcT7bjd1FuwlDMxEuyE3zKBrc8fIBY6/4lYLacHGHpssL31VUxSLfPkv\nE/8jzsIZ6zcc9izjNjMSSB5KMlEG+izioDY7pJvDJMg4auAckqJs+VCQN8C9\nrNNKIiQLdSybXYhXeth736eRNFoMyvLabJZf0IHco07BQUeojy1iNHaQCpG2\nEYq+dU8BXN96sR+EowsFtQqvxyvZMDB90qpU8SKhA7HyPVmCSgTLg1FlaAXe\n79qaS74mfaXQ1t3A81uhdNqVO14+N9qgFpHteSCVSlU0LSM2/AnybtBmKhSb\nYsnHVqz8wntjDeSAitfoBzc5AMFLsexjQbx9jXsRZTlgvrrHRR9+ePN6TZ7D\nxMRj2umsv736Qf/xRsgF0LvQarAUNv8UfFXJ2fSTP1SRmYnhcDS+TLGsN337\nNpODlVbNFtmwW2XzzSMZ1gTh3IXrcq8JFD82e/Db5lElHubDbRqKgggUx6mK\nQ3Tr\r\n=8xF5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"ecb3ef1b7ea50a473a78b58fef77e7bab390aeaf","scripts":{"lint":"eslint ./src ./tests","test":"mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./scripts/checkDocs","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-jsx":"^7.16.5","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_1.1.1-alpha-0_1640755912823_0.7768287204948512","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"eslint-plugin-ft-flow","version":"2.0.0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@2.0.0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"c74016ef0840c7ff9d57ffdba3b353f9daa9711f","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.0.tgz","fileCount":83,"integrity":"sha512-W9/PDbph5xImmrarHPiUYO3GqDeCPegdrONjJqr9Qrdy7UeTOEetcfy6yaFputvvUrchFsSMNV2BM2hiKaEJ8w==","signatures":[{"sig":"MEUCIGW3NnJCn/UBjuJ3uHhluG2Hxh+USM4UrnLfCKJQERRRAiEAwpXdybjIQQK+6xtGMddMqpulXUubAfBrCydfs+3OO1s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":325265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzKiUCRA9TVsSAnZWagAA3vwP/j6tWJZuWhXMya756mKF\nxczXTpepUHQ7kO30rVkoqRN3dJuNKi7EBhzVMvW59EQS7ZnbPTFso2Z00TEI\nvmVXUKZcv2f+6Ypruy0Yu6/cRHH/4/XThzTFQlLH7aT1IB3FDoITeQJoXRaL\ndCpenkQSfbsUK/KRvUFNNPEhbBrZogM+gigg6MSgLRXBLvqSJzhOxWT2QQFx\nZ+mLNFmeG9BsrcLzShx5CEE4XHyirXelQGPz2MfkhzykdRu/UONECiheWnTS\nkCGZ1TaPkJ0/XjLq9Mfvm2vSGYhyHuQGyDwoDhbybZzq5H6girSygUwq2CC1\n6K6zLD6FONtX6+7b72mj9KomV30NkyDrJ4E5Bgy229VWc3nAkRsbQBMTF4Km\nTZWE5fhkFSxbem4smncfo9AJxN9ycSV7NQ8rw4h6w6UrCoxW7ewQWZEhJSrQ\ndiJFfTf34QW8WBIFp+wO3dDomUWyopnrenHxH79+o/Tw6BoNyyVEt1rlyVu6\n+DoIG5dli6r5HjoRX6qhfRcBTETHIvFZKFX7t5t6L+dnM8vvgKyW+w1HHKsC\nPuyXgdA/j9Yd2DL1P/a5mmiJ8fc1r5t9jB9BafCfsezDAwuLvizfAc+Ufx3R\nLit5IQiDkN89QsY4cyg4XhdTB8bCy9abWg6+/rFqfyhUqKQzkrXNZLqMJ5iD\nQ+nO\r\n=B6Mm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"7786e3b9828b92896481c038d508d0aa11aadc04","scripts":{"lint":"eslint ./src ./tests","test":"yarn jest && mocha --require @babel/register ./tests/rules/index.js","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./scripts/checkDocs","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-jsx":"^7.16.5","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0","@babel/plugin-syntax-jsx":"^7.16.0","@babel/plugin-syntax-flow":"^7.14.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_2.0.0_1640802452608_0.45771910466344323","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"eslint-plugin-ft-flow","version":"2.0.1","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@2.0.1","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"57d9a12ef02b7af8f9bd6ccd6bd8fa4034809716","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.1.tgz","fileCount":83,"integrity":"sha512-dGBnCo+ok6H9p6Vw2oPFEM4vA9IEclRXQQAA/Zws51/L5zr3FDl9FxQiWGfaw0WaTIX5biiAxp/q1W5bGXjlVA==","signatures":[{"sig":"MEQCIF1xFbLWSCg0sGAh56lOgg7spNA7DZaq6pyjAW7qvldtAiBYcY+Hnv6Zqs7MGLBs8LKQ4CPO5z9dCvAuVn9kUvj+SA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":325236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2MOgCRA9TVsSAnZWagAAf3AP/iDuHTtkdOaznED0M4tM\n+tOs4TA2otUaGig5N6+vQHafBFvlOmmWQMqrw+EZeCIEuzfkh8HEROoCNdsR\nIhWg0d3PmQDStMvcUL7KSGJdPtxqow5EKVWUrIpwZFr76fTNOBTK9Yueq0xd\nKxbn2roHiSN2Jknf9fcM8Puq7DK40/RzGclFQn3QZxXEz3o80dIafJTozUfr\nQLttVQyYqXaSfGi/Nry4C2Px0d8v1VxLAGptUgvIKddBJpOXxdOtLYWSlA3O\n8OIAyEanP+Ir6rvldEUj++YIdwD4OGxI8QUXINc9xGM1Q0STrbkLKq6NhA0S\nuWUPj5x3OARvkbJxqw+3sPMjJSVNsKt711HWRspKhO8W5VoKuXFSHBuhUPWH\nnh4d0/c70S0qCPbrALKyLy7fPc8b8vpEylzVjoo48oFJuPDMX6y7vH9vyD7G\n2tTH75bGRuJ0m6s3PYNwSGDH3Z/yOU9DrvrCx57RfG9jQsnWziHE6VkTFnfu\n/bS8J69dDaGYFNQIXVrdvQ6NoawQFULdNwSL/KZr0hmiV3hoWIHOtXvbrAwj\nCPBSbPrSbo9XUitelV2DwRgpor5dDbVaq7GgzE4/+zwxNwCVcNOwTS10yVqX\nMV4f+PDJm5W05PNiLcCqKf3uLXxxGukTrRbb4+fpge0IWER8Le8VJoiTdFhG\nSGIo\r\n=GS21\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"a0c758094d2c388330239a798fee26b04534a8c8","scripts":{"lint":"eslint ./src ./tests","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.1.2","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.13.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^9.1.3","eslint":"^8.4.1","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_2.0.1_1641595808759_0.7909528949302651","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"eslint-plugin-ft-flow","version":"2.0.2","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@2.0.2","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"1d2fe83f782ecf2c370a6e2a4c8b1c26279f4b42","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.2.tgz","fileCount":161,"integrity":"sha512-C257b0PROV3SU+AJmMzeTRV0MNrtPgpHQPKFg+msZxeYLd6zGjctn/raR4JxY0YXr8eC42m/qoL+65RKaZ+ujw==","signatures":[{"sig":"MEUCIQCHhmvz/vGwwIC53Ikh/CCsV75NeCERPU99Rnzk+x2izAIgdMfkYF5ps5qn56uBnMsg3Ajb60dJrh63Tz6wiKdZlqk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":505466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcpEEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqbJQ//fpaobmU08yoaOy5YMb4QYTz4iaPYTSXdMoRqk+N2lS+XikIz\r\n/vM5Wcq8+ZglVdvrFZoKTPRRbNxfr9X7RIyoRMM+bUXWhoO7LSird0PEhoKX\r\nq/Bg9n8kVykCp2mVCPYD1DfGIMlulSGBdv+j2JO4kwW1OSsOrJrkZe/Fuyje\r\nFy9ydNZ+lrvJF+Oa0bq/TsAgvYRnkMaIRj6q3L+Az7r/6FFm9cQlPhnUl8yG\r\nLsSQQZMSvcynnKFdrd2IfQV9IqPtDBztaGRIXerLGmTLAyjP6hp8m1UAeWdl\r\nGevvMdpR0Qb5IVVh48KH5mm+huc2mbtoyd58perkCifs3OzqpEFLpEF9rOof\r\nQeLX5+I4JuY4Ob5jkJSpHtb0XVlcJyZvGbKf3LDGFuGXOVBdOfRzqsS331FL\r\nYljeGm+DQyDKOctdAM9kJnvDiYzyFLjQQdTUi+NnOx5ewN6brnUIbNt/v6sF\r\n2mtGaecE1F/0KAdS43F7ZgfxpbVhJyzWI8CwzCLkTKIszI5Extat53Qbat64\r\nZz5e3s9DrtfIl0iDM4eRnQkj0s9wU5rjjsmRE/QhgY1MHoxA+DbdAPWl/F+C\r\n8iMoIo4+LoZtdNZ1rNdMQspOeyz6g4ulwmIQubw2415irD5gw+Mdl4QCmT23\r\nRRmYy5CLHaCQVSEQqu3VWvYpxRw/ANNs34w=\r\n=xAxI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"ed04627c402c56936b1b884195d63e1f9fe0b6ac","scripts":{"lint":"eslint ./src ./tests","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.4.1","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_2.0.2_1668452612135_0.8837720618528468","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"eslint-plugin-ft-flow","version":"2.0.3","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@2.0.3","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"3b3c113c41902bcbacf0e22b536debcfc3c819e8","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz","fileCount":161,"integrity":"sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==","signatures":[{"sig":"MEUCIBcxrsUK5sJKAN7TS86nPpv3O3XdpN8fm+Uo0akazYiUAiEA3hZcxc7YaEklIqELDcBsqRO8vWR9dJqAziD1YjdhJAk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":505466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcpGIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoaVBAAm4XnqglGDIgDouamK6xdA70B7Da+iOKmULsAnbWfGwESvWhf\r\nZxsrkSKVWNbpI4vKA4wZIfqTmB9+BqD79hVKNXY5rcZWITHbij/idShMMBlG\r\nwkPcS5cZumjomi99auZO0Is9xqqXRKKK065wLTTfbCjjLj4GWp/QF3IYKTnG\r\nwMYeZljQjB7gb68ZWqo68RAB0XHC3UVy72Piq8QfWCQ9cR8HRg1XtN5YVqmd\r\ncdU0jUFrpoDmKbY4zNAMF46hngIKYMRk4j2bOOH283CcfXTI2IafY18rQFWL\r\nbRSU02kFGeQFDYy5y0JtUHphN1ieW36+PXsbSlL/Pm42sNNH5pzvvsjHCcsy\r\nCOGICrGWa7WQRwqMFbSvz761scFo2utUPlDqQYr5NQtMaknQOMWQTTjITCc9\r\nuDp0Et3CqYkBjIWPeMO0ScZhixMtjWU8HM2fqMVRFSWbWL3KAmEoVojYqP4r\r\nHfMsLUhV4qlSXwgjGXLc7CpsmoYTDv4us0g0hOA8OCbykhNUT7lEW77ZbG8/\r\n/2B3A6LGPGArpIMidSu15AYgXsapcjlqnA6T2yS3HEcYVctpvfRHRooRPON9\r\n38MzGu3e8yk6gwKlfZ6D5WbHi+DMFI0/x9JB2/j35oiufh15SawLhapBNES7\r\n39zbvygk0TlhIxLJ2FsTPpe1yhwyz0WPUfc=\r\n=FBpm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"1452f5ba8794bfa8711c37a2e895eec8f1c11984","scripts":{"lint":"eslint ./src ./tests","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"6.14.15","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"14.18.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.4.1","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","@babel/eslint-parser":"^7.12.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_2.0.3_1668452744239_0.17794845817043936","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"eslint-plugin-ft-flow","version":"3.0.0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"e9cbe4531089c2a85726928baa2d30d24d9af3b5","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.0.tgz","fileCount":162,"integrity":"sha512-fz5ep5V2jh5aNBHoCKOdq+xxGenxYMfmOq8F6MUnFGyeEncJgV91O7mOWyKTZN0h/ofP+yW1CS7fZq8iEglNxw==","signatures":[{"sig":"MEUCICPDKtEgmHQab4wwCDwexclHBL3ICqmGaVhYyw5Q+KbSAiEAoanVlwgaPj4+w3Sn9Scq3KyrURrkqAKB7Wgafl/HYD8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":508282},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"159088ad77743892418147ecde8955126487d0d8","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.1","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.46.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.15.0","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","hermes-eslint":"^0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.0_1690627351259_0.97470358650641","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"eslint-plugin-ft-flow","version":"3.0.1","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.1","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"a0f39cc35efff1a369829e5ba1b528ba0524b371","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.1.tgz","fileCount":162,"integrity":"sha512-SB6gWDisy2hdYFWimK3fXOKOmi16pIC06R9mCGozHFs6jyr5yi9RDMSGiNuZdBJh1mw2YSF+l7a5hd8ykRQ/Gg==","signatures":[{"sig":"MEUCIQDHub3nbVQgRL3/CWGQB3uFv9bchyu5JELqL0i6tenwRgIgPkAHDnPlrgCG6QNtlcijhMg9usr/D6L+ifjB8gnuW8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":508293},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"fe34ad60cfce837b7fe1ffbeb9196a55994d3c0f","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.46.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.15.0","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","hermes-eslint":"^0.15.0 || ^0.16.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.1_1696963954749_0.6258349023089878","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"eslint-plugin-ft-flow","version":"3.0.2","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.2","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"740f7a08836d112497fe2566a25de6c6ad0233a1","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.2.tgz","fileCount":162,"integrity":"sha512-Dr/RT5FZuxi5sd39vWaUXZj2GrOCHFwfB9zILSZmZ8PFS2C9M2fr7ReJjdB7wlpHEjartL7PYpmoI2c7Q0csMQ==","signatures":[{"sig":"MEUCICZeTocWd3L4vqtqhIrpEr85t4ZKGyCrwCd9Daq7yghdAiEAkmYj3HLbCIvl8LN+NPdGTTnTir2A/TUHjMl6t4FTm4Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":508758},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"904a3cfad4db5478d151a8147990fbaf023a7a76","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.46.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.15.0","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.1.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.2_1702976348900_0.29533222792373737","host":"s3://npm-registry-packages"}},"3.0.3":{"name":"eslint-plugin-ft-flow","version":"3.0.3","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.3","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"6d8f41b5f06c00bb1b59b3a09d902799b7ae3ccd","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.3.tgz","fileCount":162,"integrity":"sha512-dym24KLcyCZWMv3bKvDRFJeqs4cijIyp9Ld3Ip8/hM8dQUgEU8SKaVhYllO9EvNqF2eWiK1Bb84ts3mE1lr3ug==","signatures":[{"sig":"MEUCIQCdVNdf8l7Z7D5lfPo+8UEqt93eoI99gYKsxS8UqJ17VAIgZ/0W3dBYmK2YZMhiOVz+YBSbRNDhsxurAbEmSw1WmAA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":508136},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"aea92e5b242faf7d5e77a7d486fdcec9169993b4","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.3_1706398202278_0.08552434941513587","host":"s3://npm-registry-packages"}},"3.0.4-alpha-0":{"name":"eslint-plugin-ft-flow","version":"3.0.4-alpha-0","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.4-alpha-0","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"72616b7ee59c9e6b8dfef56a491b9e85baaf4d3b","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.4-alpha-0.tgz","fileCount":162,"integrity":"sha512-GsWyrUQQ1So0pzRnZOV2pfAp0FLsCABnID7a8Kd3sJWr+Py2AubMR+Jx6mF97Dg2PGq48eCQjUaaT84wGN1dNA==","signatures":[{"sig":"MEUCIElJnghlo4q6FHchjOH9kbEN76VQ3p5Xz7YJYXqXWz1BAiEAq54zLfSet+osO322IZT/1mXSeFpspMlBvlcdeKUw/w8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":515532},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"7f4e9a0768570fa04de752937f44d0699c132496","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.4-alpha-0_1707081516855_0.7444827028383527","host":"s3://npm-registry-packages"}},"3.0.4":{"name":"eslint-plugin-ft-flow","version":"3.0.4","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.4","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"cd19ead98c03e39aff186382edc5bca3215d359d","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.4.tgz","fileCount":162,"integrity":"sha512-afH0HSk5BPbnNFE8G7aNzTK+DQNgAA3/xZ6wSxYexmERo3iBFiYtWpd8QoPa4xwxnC2Us5bJTA1AGSlkJfkHBg==","signatures":[{"sig":"MEQCIHcZP/aG939JvQ1cFgY+yqpSpGztAZ+pehWiR9vZ3CXMAiAA7BabGPYd3lQIOKM23og6lBQIdTJEP0HZnM0c61w7RQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":507799},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"edf6c2e6d47ea08aa002bb39d3102d9de4abe3f4","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.4_1707614320940_0.0409956890605534","host":"s3://npm-registry-packages"}},"3.0.5":{"name":"eslint-plugin-ft-flow","version":"3.0.5","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.5","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"388dbe89466b862f60940aaef3847531f88c13bf","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.5.tgz","fileCount":162,"integrity":"sha512-owZMmncrI6m4+ypPoGRAFZY3SGcJ+9tFSxeR/aTHTXm14/BWVRqVVeg8fc+k8Ljbfv7dhe+FY4ZVBjgLBV/Ndg==","signatures":[{"sig":"MEUCIQD5xgKcGHrTrfhZEXeopi/NJShYeWad9ZN4+rp/zW8sHQIgTIo8kUgy27OGIkWtcidy9Pr7oxx1I5LlioANxifhKvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":507845},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"74bc4947f9503e44c1b62455153b3ec42b158901","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.5_1708032755326_0.3879804845569945","host":"s3://npm-registry-packages"}},"3.0.6":{"name":"eslint-plugin-ft-flow","version":"3.0.6","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.6","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"0ed968e675e0cf849198ce2a2d1c6346b312a528","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.6.tgz","fileCount":162,"integrity":"sha512-+MSoUgOOUTiabz5WVCuQw0A0sIGatpSzJBdSC2dTaTNQ5TKN6leq5SdoQeiAYkbtKbHag3KuQeoRLueqLmkCQQ==","signatures":[{"sig":"MEQCIHMBEJ/ztJkVtn5+z7qLcmzpxXKFaPOIFHsUeKqfvHd+AiBBp/I4/xvCIQVp038JMTeIzRTnUzQIMJ5LK3UQm8j0xw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":509981},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"df0d78ce3260a43aae5aa5dd0e2bd3dbcaeebed6","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.6_1709327431307_0.9063842402628073","host":"s3://npm-registry-packages"}},"3.0.7":{"name":"eslint-plugin-ft-flow","version":"3.0.7","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.7","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"be0f53d5bc3a39bdd10e99a02936275f469d6936","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.7.tgz","fileCount":162,"integrity":"sha512-XeoddFsrqhEnp6vp+7ndQVPH8qTRiflgcDaQujv7WjVgGAdBbG8osWhRFcg2u9aQhz6Y+egBUL4+oTS0n6IfUQ==","signatures":[{"sig":"MEUCIHYOef76ccaP6cTHZFEoQi8WGgjCmdXD/q4Vp5hJXaXcAiEAwiTd13Q0tizxnWR2VtsCXX99Q+PCTHDBUaNC3x09zdQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":510634},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"9b699fd3d8e17f315652692a50486ceaa68d566a","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.56.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.7_1709420337473_0.23876603949405828","host":"s3://npm-registry-packages"}},"3.0.8":{"name":"eslint-plugin-ft-flow","version":"3.0.8","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.8","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"0b66b97957413277530d455e63f2e4e2c5151f29","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.8.tgz","fileCount":162,"integrity":"sha512-snPVyIL/3Ck3mqqOtexwu+rsmNdeSaYFZXT2nlwCDQXJ/LHtkYzsWvoEF06WdQiLPRvqDgia8LG5RNFYeTn7yg==","signatures":[{"sig":"MEUCIQC+HCPD4qJBJ2udrNaEhGKuvBtjPGcDhWKp+qj0QKv9YwIgDmW1bITGW9F0I0sEOCtIaoCgum2ZWaXqMVxNjb69blk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":510738},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"b9def791f888019dfa2204a55a2890dc780135bf","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"8.19.4","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"16.20.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.57.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.8_1715114300438_0.3736277763274267","host":"s3://npm-registry-packages"}},"3.0.9":{"name":"eslint-plugin-ft-flow","version":"3.0.9","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.9","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"d93ae2c8ee4716ff8a54989efa73cee81f40964d","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.9.tgz","fileCount":162,"integrity":"sha512-m3ZL33yntMILOA5jRxVtUROJxmvGQcIgUJnWqjC7QsQbU+KtntRLaBKaDb7NeUmRioDq+QgI1fdaAEFpOKitgA==","signatures":[{"sig":"MEUCIQD0Skg9SIZ3x1wI09P83UZ9IAa+3tCZwIxHvP+t3g7s5wIgO7AIf0bt2pOHDNWfjOYHPcRctuST+zPCCuPYZcBpiLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":512216},"main":"./dist/index.js","engines":{"node":">=12.22.0"},"gitHead":"2c40812b931f56195d8b20877c2eeabf2e2d479b","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"10.5.0","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"20.12.2","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.57.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.9_1715116802103_0.8914053372205188","host":"s3://npm-registry-packages"}},"3.0.10":{"name":"eslint-plugin-ft-flow","version":"3.0.10","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"license":"MIT","_id":"eslint-plugin-ft-flow@3.0.10","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"dist":{"shasum":"28556f826db97a275991eb456a14b1cb4bbe02fb","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.10.tgz","fileCount":162,"integrity":"sha512-DLILrcr6PiQ0TyxksTPezxrmYZAF5idKmSwNE0bF9qrf0mPT9fbzj0E4BXidB/QKnOmFn5TRq6cXoJjxqb+cIQ==","signatures":[{"sig":"MEUCIDoEKtO0d9b3MDgYvrjFsH4hweW5inHs9SzQJ/ZJi424AiEAn/aeh9hrJDVNHc7nRGd6QA3HolTGYe80fJKuSwFb6J8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":512217},"main":"./dist/index.js","gitHead":"331d394adbe072fbdae0497fa8545e3e9037d648","scripts":{"lint":"eslint .","test":"yarn jest && yarn test:rules","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","build:flow":"flow-copy-source --ignore '*.spec.*' src dist","check-docs":"babel-node ./scripts/checkDocs","test:rules":"mocha --require @babel/register ./tests/rules/index.js","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","prepublishOnly":"yarn create-readme && yarn build"},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"repository":{"url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git","type":"git"},"_npmVersion":"10.7.0","description":"Flowtype linting rules for ESLint by flow-typed","directories":{},"lint-staged":{"**/*.js":"eslint"},"_nodeVersion":"20.14.0","dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.6.3","glob":"^7.2.0","jest":"^27.4.5","husky":"^7.0.4","mocha":"^10.1.0","eslint":"^8.57.0","rimraf":"^3.0.2","flow-bin":"^0.167.1","@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/node":"^7.15.8","lint-staged":"^12.1.2","hermes-eslint":"^0.18.2","@babel/register":"^7.15.3","flow-copy-source":"^2.0.9","@babel/preset-env":"^7.16.5","eslint-config-bzc":"^1.0.5","@babel/preset-flow":"^7.16.0","eslint-plugin-jest":"^25.3.2","@babel/preset-react":"^7.16.7","eslint-plugin-react":"^7.28.0","@babel/eslint-parser":"^7.16.5","eslint-config-airbnb":"^19.0.2","eslint-plugin-import":"^2.25.3","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-jsx-a11y":"^6.5.1","@babel/plugin-syntax-flow":"^7.16.5","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","babel-plugin-add-module-exports":"^1.0.4","@babel/plugin-transform-react-jsx":"^7.16.5","babel-plugin-transform-flow-enums":"^0.0.2"},"peerDependencies":{"eslint":"^8.56.0 | ^9.0.0","hermes-eslint":">=0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-ft-flow_3.0.10_1718499605132_0.616097966396363","host":"s3://npm-registry-packages"}},"3.0.11":{"name":"eslint-plugin-ft-flow","description":"Flowtype linting rules for ESLint by flow-typed","version":"3.0.11","license":"MIT","main":"./dist/index.js","repository":{"type":"git","url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git"},"scripts":{"build:flow":"flow-copy-source --ignore '*.spec.*' src dist","build":"rimraf ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files && yarn build:flow","check-docs":"babel-node ./scripts/checkDocs","check-tests":"babel-node ./scripts/checkTests","create-readme":"node ./scripts/genReadme && babel-node ./scripts/addAssertions","lint":"eslint .","test:rules":"mocha --require @babel/register ./tests/rules/index.js","test":"yarn jest && yarn test:rules","prepublishOnly":"yarn create-readme && yarn build"},"dependencies":{"lodash":"^4.17.21","string-natural-compare":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.15.7","@babel/core":"^7.16.5","@babel/eslint-parser":"^7.16.5","@babel/node":"^7.15.8","@babel/plugin-syntax-flow":"^7.16.5","@babel/plugin-transform-react-jsx":"^7.16.5","@babel/preset-env":"^7.16.5","@babel/preset-flow":"^7.16.0","@babel/preset-react":"^7.16.7","@babel/register":"^7.15.3","ajv":"^8.6.3","babel-plugin-add-module-exports":"^1.0.4","babel-plugin-transform-flow-enums":"^0.0.2","eslint":"^8.57.0","eslint-config-airbnb":"^19.0.2","eslint-config-bzc":"^1.0.5","eslint-plugin-fb-flow":"^0.0.4","eslint-plugin-ft-flow":"^1.1.0","eslint-plugin-import":"^2.25.3","eslint-plugin-jest":"^25.3.2","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-testing-library":"^5.0.1","flow-bin":"^0.167.1","flow-copy-source":"^2.0.9","glob":"^7.2.0","hermes-eslint":"^0.18.2","husky":"^7.0.4","jest":"^27.4.5","lint-staged":"^12.1.2","mocha":"^10.1.0","rimraf":"^3.0.2"},"peerDependencies":{"eslint":"^8.56.0 || ^9.0.0","hermes-eslint":">=0.15.0"},"keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"lint-staged":{"**/*.js":"eslint"},"_id":"eslint-plugin-ft-flow@3.0.11","gitHead":"3f9c5e15c21659fe661a8d05e0320a6f975a821a","bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-6ZJ4KYGYjIosCcU883zBBT1nFsKP58xrTOwguiw3/HRq0EpYAyhrF1nCGbK7V23cmKtPXMpDfl8qPupt5s5W8w==","shasum":"64654dad277104fc45aef8d009c4a51057ea1250","tarball":"https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-3.0.11.tgz","fileCount":162,"unpackedSize":512218,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaISXms3DREqIXz/MIGnb/i334Kt28pa5sx+ECLUYuPQIgZmQGPGEvlsHlgOtKOuh7dzQtebFUH9zPMP6rLaKWQFI="}]},"_npmUser":{"name":"brianzchen","email":"bzchen93@gmail.com"},"directories":{},"maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eslint-plugin-ft-flow_3.0.11_1720779171439_0.6566507436264832"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-11T05:51:59.253Z","modified":"2024-07-12T10:12:51.958Z","0.1.0":"2021-12-11T05:51:59.552Z","0.1.1":"2021-12-11T06:11:52.410Z","0.1.2":"2021-12-11T06:20:23.848Z","1.0.0":"2021-12-13T20:28:22.732Z","1.0.1":"2021-12-13T20:39:52.904Z","1.0.2":"2021-12-15T18:38:29.388Z","1.1.0":"2021-12-18T22:36:53.267Z","1.1.1-alpha-0":"2021-12-29T05:31:52.975Z","2.0.0":"2021-12-29T18:27:32.784Z","2.0.1":"2022-01-07T22:50:08.978Z","2.0.2":"2022-11-14T19:03:32.311Z","2.0.3":"2022-11-14T19:05:44.424Z","3.0.0":"2023-07-29T10:42:31.455Z","3.0.1":"2023-10-10T18:52:35.027Z","3.0.2":"2023-12-19T08:59:09.094Z","3.0.3":"2024-01-27T23:30:02.475Z","3.0.4-alpha-0":"2024-02-04T21:18:37.061Z","3.0.4":"2024-02-11T01:18:41.110Z","3.0.5":"2024-02-15T21:32:35.627Z","3.0.6":"2024-03-01T21:10:31.585Z","3.0.7":"2024-03-02T22:58:57.716Z","3.0.8":"2024-05-07T20:38:20.633Z","3.0.9":"2024-05-07T21:20:02.306Z","3.0.10":"2024-06-16T01:00:05.312Z","3.0.11":"2024-07-12T10:12:51.802Z"},"bugs":{"url":"https://github.com/flow-typed/eslint-plugin-ft-flow/issues"},"license":"MIT","homepage":"https://github.com/flow-typed/eslint-plugin-ft-flow#readme","keywords":["eslint","eslintplugin","plugin","flow","flow-bin","flowtype","flow-typed"],"repository":{"type":"git","url":"git+https://github.com/flow-typed/eslint-plugin-ft-flow.git"},"description":"Flowtype linting rules for ESLint by flow-typed","maintainers":[{"name":"brianzchen","email":"bzchen93@gmail.com"}],"readme":"<div align=\"center\">\n  <a href=\"https://eslint.org/\">\n    <img width=\"150\" height=\"150\" src=\"https://eslint.org/icon-512.png\">\n  </a>\n  <a href=\"https://flow-typed.github.io/flow-typed/#/\">\n    <img width=\"150\" height=\"150\" src=\"https://raw.githubusercontent.com/flow-typed/flow-typed/master/docs/_media/flow.svg\">\n  </a>\n  <h1>eslint-plugin-ft-flow</h1>\n  <p><a href=\"http://flow.org/\">Flowtype</a> linting rules for ESLint.</p>\n</div>\n\n<p align=\"center\">\n  <a href=\"https://github.com/flow-typed/eslint-plugin-ft-flow/actions/workflows/build.yml\">\n    <img src=\"https://github.com/flow-typed/eslint-plugin-ft-flow/workflows/build/badge.svg\" alt=\"ci status\">\n  </a>\n  <a href=\"https://www.npmjs.com/package/eslint-plugin-ft-flow\"><img src=\"https://img.shields.io/npm/v/eslint-plugin-ft-flow.svg\" alt=\"npm package\"></a>\n  <a href=\"https://discordapp.com/invite/8ezwRUK\">\n    <img src=\"https://img.shields.io/discord/539606376339734558.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=555555&cacheSeconds=60\" alt=\"discord\">\n  </a>\n</p>\n\n> This project was heavily based off the original [flowtype eslint plugin](https://github.com/gajus/eslint-plugin-flowtype), all credits go to the original maintainers. We duplicated the project with the intention of providing the flowtype community support and maintenance for people that continue to use flowtype.\n\n---\n\n* [Installation](#installation)\n* [Configuration](#configuration)\n  * [Shareable configurations](#shareable-configurations)\n* [Settings](#settings)\n  * [`onlyFilesWithFlowAnnotation`](#onlyfileswithflowannotation)\n* [Rules](#rules)\n  * [`array-style-complex-type`](#array-style-complex-type)\n  * [`array-style-simple-type`](#array-style-simple-type)\n  * [`arrow-parens`](#arrow-parens)\n  * [`boolean-style`](#boolean-style)\n  * [`define-flow-type`](#define-flow-type)\n  * [`delimiter-dangle`](#delimiter-dangle)\n  * [`enforce-line-break`](#enforce-line-break)\n  * [`enforce-suppression-code`](#enforce-suppression-code)\n  * [`generic-spacing`](#generic-spacing)\n  * [`interface-id-match`](#interface-id-match)\n  * [`newline-after-flow-annotation`](#newline-after-flow-annotation)\n  * [`no-dupe-keys`](#no-dupe-keys)\n  * [`no-duplicate-type-union-intersection-members`](#no-duplicate-type-union-intersection-members)\n  * [`no-existential-type`](#no-existential-type)\n  * [`no-flow-fix-me-comments`](#no-flow-fix-me-comments)\n  * [`no-flow-suppressions-in-strict-files`](#no-flow-suppressions-in-strict-files)\n  * [`no-internal-flow-type`](#no-internal-flow-type)\n  * [`no-mixed`](#no-mixed)\n  * [`no-mutable-array`](#no-mutable-array)\n  * [`no-primitive-constructor-types`](#no-primitive-constructor-types)\n  * [`no-types-missing-file-annotation`](#no-types-missing-file-annotation)\n  * [`no-unused-expressions`](#no-unused-expressions)\n  * [`no-weak-types`](#no-weak-types)\n  * [`object-type-curly-spacing`](#object-type-curly-spacing)\n  * [`object-type-delimiter`](#object-type-delimiter)\n  * [`quotes`](#quotes)\n  * [`require-compound-type-alias`](#require-compound-type-alias)\n  * [`require-exact-type`](#require-exact-type)\n  * [`require-indexer-name`](#require-indexer-name)\n  * [`require-inexact-type`](#require-inexact-type)\n  * [`require-parameter-type`](#require-parameter-type)\n  * [`require-readonly-react-props`](#require-readonly-react-props)\n  * [`require-return-type`](#require-return-type)\n  * [`require-types-at-top`](#require-types-at-top)\n  * [`require-valid-file-annotation`](#require-valid-file-annotation)\n  * [`require-variable-type`](#require-variable-type)\n  * [`semi`](#semi)\n  * [`sort-keys`](#sort-keys)\n  * [`sort-type-union-intersection-members`](#sort-type-union-intersection-members)\n  * [`space-after-type-colon`](#space-after-type-colon)\n  * [`space-before-generic-bracket`](#space-before-generic-bracket)\n  * [`space-before-type-colon`](#space-before-type-colon)\n  * [`spread-exact-type`](#spread-exact-type)\n  * [`type-id-match`](#type-id-match)\n  * [`type-import-style`](#type-import-style)\n  * [`union-intersection-spacing`](#union-intersection-spacing)\n  * [`use-flow-type`](#use-flow-type)\n  * [`use-read-only-spread`](#use-read-only-spread)\n  * [`valid-syntax`](#valid-syntax)\n\n\n<a name=\"installation\"></a>\n## Installation\n\n```bash\nnpm install eslint-plugin-ft-flow eslint hermes-eslint --save-dev\n\n# or with yarn\nyarn add -D eslint-plugin-ft-flow eslint hermes-eslint\n\n# or with pnpm\npnpm add -D eslint-plugin-ft-flow eslint hermes-eslint\n```\n\n<a name=\"configuration\"></a>\n## Configuration\n\n1. Set `parser` property to `hermes-eslint`.\n2. Add `plugins` section and specify `ft-flow` as a plugin.\n3. Enable rules.\n\n<!-- -->\n\n```json\n{\n  \"parser\": \"hermes-eslint\",\n  \"plugins\": [\"ft-flow\"],\n  \"rules\": {\n    \"ft-flow/boolean-style\": [2, \"boolean\"]\n    // ... more rules\n  },\n  \"settings\": {\n    \"ft-flow\": {\n      \"onlyFilesWithFlowAnnotation\": false\n    }\n  }\n}\n```\n\n<a name=\"shareable-configurations\"></a>\n### Shareable configurations\n\n<a name=\"recommended\"></a>\n#### Recommended\n\nThis plugin exports a [recommended configuration](./src/configs/recommended.json) that enforces Flowtype best practices.\n\nTo enable this configuration use the `extends` property in your `.eslintrc` config file in place of the above suggested properties:\n\n```json\n{\n  \"extends\": [\"plugin:ft-flow/recommended\"]\n}\n```\n\n<a name=\"babel-parser\"></a>\n#### Babel parser\n\nAlternatively, if you can't yet use `hermes-eslint`, prior to version 3.0.0 ft-flow shipped a recommended config that used `@babel/eslint-parser` which is still available under the `\"plugin:ft-flow/babel-parser\"` extension.\n\nThough it's recommended to switch to the recommended extension when possible as `babel-parser` may be removed in a future version.\n\n> By default this config also comes preloaded with `@babel/eslint-parser` which means for eslint to analyze your flow code it relies your babel config (`babel.config.js`, `.babelrc`, `.babelrc.js`). You should already have this setup as part of running/testing your code but if you don't you can learn more [here](https://flow.org/en/docs/tools/babel/)\n\n---\n\nSee [ESLint documentation](http://eslint.org/docs/user-guide/configuring#extending-configuration-files) for more information about extending configuration files.\n\n<a name=\"settings\"></a>\n## Settings\n\n<a name=\"onlyfileswithflowannotation\"></a>\n### `onlyFilesWithFlowAnnotation`\n\nWhen `true`, only checks files with a [`@flow` annotation](http://flow.org/docs/about-flow.html#gradual) in the first comment.\n\n```js\n{\n  \"settings\": {\n    \"ft-flow\": {\n      \"onlyFilesWithFlowAnnotation\": true\n    }\n  }\n}\n```\n\n<a name=\"rules\"></a>\n## Rules\n\n<!-- Rules are sorted alphabetically. -->\n\n<a name=\"array-style-complex-type\"></a>\n### `array-style-complex-type`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces a particular annotation style of complex types.\n\nType is considered complex in these cases:\n\n* [Maybe type](https://flow.org/en/docs/types/maybe/)\n* [Function type](https://flow.org/en/docs/types/functions/)\n* [Object type](https://flow.org/en/docs/types/objects/)\n* [Tuple type](https://flow.org/en/docs/types/tuples/)\n* [Union type](https://flow.org/en/docs/types/unions/)\n* [Intersection type](https://flow.org/en/docs/types/intersections/)\n\nThis rule takes one argument.\n\nIf it is `'verbose'` then a problem is raised when using `Type[]` instead of `Array<Type>`.\n\nIf it is `'shorthand'` then a problem is raised when using `Array<Type>` instead of `Type[]`.\n\nThe default value is `'verbose'`.\n\nThe following patterns are considered problems:\n\n```js\ntype X = (?string)[]\n// Message: Use \"Array<?string>\", not \"(?string)[]\"\n\n// Options: [\"verbose\"]\ntype X = (?string)[]\n// Message: Use \"Array<?string>\", not \"(?string)[]\"\n\n// Options: [\"shorthand\"]\ntype X = Array<?string>\n// Message: Use \"(?string)[]\", not \"Array<?string>\"\n\n// Options: [\"shorthand\"]\ntype X = Array<{foo: string}>\n// Message: Use \"{foo: string}[]\", not \"Array<{foo: string}>\"\n\ntype X = (string | number)[]\n// Message: Use \"Array<string | number>\", not \"(string | number)[]\"\n\ntype X = (string & number)[]\n// Message: Use \"Array<string & number>\", not \"(string & number)[]\"\n\ntype X = [string, number][]\n// Message: Use \"Array<[string, number]>\", not \"[string, number][]\"\n\ntype X = {foo: string}[]\n// Message: Use \"Array<{foo: string}>\", not \"{foo: string}[]\"\n\ntype X = (string => number)[]\n// Message: Use \"Array<string => number>\", not \"(string => number)[]\"\n\ntype X = {\n    foo: string,\n    bar: number\n}[]\n// Message: Use \"Array<{ foo: string, bar: number }>\", not \"{ foo: string, bar: number }[]\"\n\ntype X = {\n    foo: string,\n    bar: number,\n    quo: boolean,\n    hey: Date\n}[]\n// Message: Use \"Array<Type>\", not \"Type[]\"\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = Array<?string>\n\n// Options: [\"verbose\"]\ntype X = Array<?string>\n\n// Options: [\"shorthand\"]\ntype X = (?string)[]\n\n// Options: [\"shorthand\"]\ntype X = Array<string>\n\n// Options: [\"shorthand\"]\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\ntype X = Array<?string>\n```\n\n\n\n<a name=\"array-style-simple-type\"></a>\n### `array-style-simple-type`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces a particular array type annotation style of simple types.\n\nType is considered simple in these cases:\n\n* [Primitive types](https://flow.org/en/docs/types/primitives/)\n* [Literal types](https://flow.org/en/docs/types/literals/)\n* [Mixed type](https://flow.org/en/docs/types/mixed/)\n* [Any type](https://flow.org/en/docs/types/any/)\n* [Class type](https://flow.org/en/docs/types/classes/)\n* [Generic type](https://flow.org/en/docs/types/generics/)\n* Array type [shorthand notation](https://flow.org/en/docs/types/arrays/#toc-array-type-shorthand-syntax)\n\nThis rule takes one argument.\n\nIf it is `'verbose'` then a problem is raised when using `Type[]` instead of `Array<Type>`.\n\nIf it is `'shorthand'` then a problem is raised when using `Array<Type>` instead of `Type[]`.\n\nThe default value is `'verbose'`.\n\nThe following patterns are considered problems:\n\n```js\ntype X = string[]\n// Message: Use \"Array<string>\", not \"string[]\"\n\n// Options: [\"verbose\"]\ntype X = string[]\n// Message: Use \"Array<string>\", not \"string[]\"\n\n// Options: [\"shorthand\"]\ntype X = Array<string>\n// Message: Use \"string[]\", not \"Array<string>\"\n\ntype X = Date[]\n// Message: Use \"Array<Date>\", not \"Date[]\"\n\ntype X = Promise<string>[]\n// Message: Use \"Array<Promise<string>>\", not \"Promise<string>[]\"\n\ntype X = $Keys<{foo: string}>[]\n// Message: Use \"Array<$Keys<{foo: string}>>\", not \"$Keys<{foo: string}>[]\"\n\ntype X = any[]\n// Message: Use \"Array<any>\", not \"any[]\"\n\ntype X = mixed[]\n// Message: Use \"Array<mixed>\", not \"mixed[]\"\n\ntype X = void[]\n// Message: Use \"Array<void>\", not \"void[]\"\n\ntype X = null[]\n// Message: Use \"Array<null>\", not \"null[]\"\n\ntype X = Promise<{\n    foo: string,\n    bar: number\n}>[]\n// Message: Use \"Array<Promise<{ foo: string, bar: number }>>\", not \"Promise<{ foo: string, bar: number }>[]\"\n\ntype X = Promise<{\n    foo: string,\n    bar: number,\n    quo: boolean\n}>[]\n// Message: Use \"Array<Type>\", not \"Type[]\"\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = Array<string>\n\n// Options: [\"verbose\"]\ntype X = Array<string>\n\n// Options: [\"shorthand\"]\ntype X = string[]\n\ntype X = Array<Array<string>>\n\n// Options: [\"verbose\"]\ntype X = (?string)[]\n\n// Options: [\"verbose\"]\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\ntype X = string[]\n\ntype X = Array\n\ntype X = typeof Array\n```\n\n\n\n<a name=\"arrow-parens\"></a>\n### `arrow-parens`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces the consistent use of parentheses in arrow functions.\n\nThis rule has a string option and an object one.\n\nString options are:\n\n- `\"always\"` (default) requires parens around arguments in all cases.\n- `\"as-needed\"` enforces no braces where they can be omitted.\n\nObject properties for variants of the `\"as-needed\"` option:\n\n- `\"requireForBlockBody\": true` modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).\n\nThe following patterns are considered problems:\n\n```js\na => {}\n// Message: undefined\n\na => a\n// Message: undefined\n\na => {\n}\n// Message: undefined\n\na.then(foo => {});\n// Message: undefined\n\na.then(foo => a);\n// Message: undefined\n\na(foo => { if (true) {}; });\n// Message: undefined\n\na(async foo => { if (true) {}; });\n// Message: undefined\n\n// Options: [\"as-needed\"]\n(a) => a\n// Message: undefined\n\n// Options: [\"as-needed\"]\n(a,) => a\n// Message: undefined\n\n// Options: [\"as-needed\"]\nasync (a) => a\n// Message: undefined\n\n// Options: [\"as-needed\"]\nasync(a) => a\n// Message: undefined\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\na => {}\n// Message: undefined\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a) => a\n// Message: undefined\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\nasync a => {}\n// Message: undefined\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\nasync (a) => a\n// Message: undefined\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\nasync(a) => a\n// Message: undefined\n```\n\nThe following patterns are not considered problems:\n\n```js\n() => {}\n\n(a) => {}\n\n(a) => a\n\n(a) => {\n}\n\na.then((foo) => {});\n\na.then((foo) => { if (true) {}; });\n\na.then(async (foo) => { if (true) {}; });\n\n// Options: [\"always\"]\n() => {}\n\n// Options: [\"always\"]\n(a) => {}\n\n// Options: [\"always\"]\n(a) => a\n\n// Options: [\"always\"]\n(a) => {\n}\n\n// Options: [\"always\"]\na.then((foo) => {});\n\n// Options: [\"always\"]\na.then((foo) => { if (true) {}; });\n\n// Options: [\"always\"]\na.then(async (foo) => { if (true) {}; });\n\n// Options: [\"as-needed\"]\n() => {}\n\n// Options: [\"as-needed\"]\na => {}\n\n// Options: [\"as-needed\"]\na => a\n\n// Options: [\"as-needed\"]\n([a, b]) => {}\n\n// Options: [\"as-needed\"]\n({ a, b }) => {}\n\n// Options: [\"as-needed\"]\n(a = 10) => {}\n\n// Options: [\"as-needed\"]\n(...a) => a[0]\n\n// Options: [\"as-needed\"]\n(a, b) => {}\n\n// Options: [\"as-needed\"]\nasync ([a, b]) => {}\n\n// Options: [\"as-needed\"]\nasync (a, b) => {}\n\n// Options: [\"as-needed\"]\n(a: T) => a\n\n// Options: [\"as-needed\"]\n(a): T => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n() => {}\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\na => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n([a, b]) => {}\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n([a, b]) => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n({ a, b }) => {}\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n({ a, b }) => a + b\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a = 10) => {}\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(...a) => a[0]\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a, b) => {}\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\na => ({})\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\nasync a => ({})\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\nasync a => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a: T) => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a): T => a\n\n// Options: [\"always\",{\"requireForBlockBody\":true}]\n<T>(a: T) => a\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":false}]\n<T>(a: T) => { return a; }\n\n// Options: [\"always\",{\"requireForBlockBody\":true}]\n<T>(a: T) => { return a; }\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n<T>(a: T) => { return a; }\n\n// Options: [\"as-needed\",{\"requireForBlockBody\":true}]\n(a): %checks => typeof a === \"number\"\n```\n\n\n\n<a name=\"boolean-style\"></a>\n### `boolean-style`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces a particular style for boolean type annotations. This rule takes one argument.\n\nIf it is `'boolean'` then a problem is raised when using `bool` instead of `boolean`.\n\nIf it is `'bool'` then a problem is raised when using `boolean` instead of `bool`.\n\nThe default value is `'boolean'`.\n\nThe following patterns are considered problems:\n\n```js\ntype X = bool\n// Message: Use \"boolean\", not \"bool\"\n\n// Options: [\"boolean\"]\ntype X = bool\n// Message: Use \"boolean\", not \"bool\"\n\n// Options: [\"bool\"]\ntype X = boolean\n// Message: Use \"bool\", not \"boolean\"\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = boolean\n\n// Options: [\"boolean\"]\ntype X = boolean\n\n// Options: [\"bool\"]\ntype X = bool\n\n// Options: [\"boolean\"]\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\ntype X = bool\n```\n\n\n\n<a name=\"define-flow-type\"></a>\n### `define-flow-type`\n\n> @deprecated rule that is no longer needed with the current recommended config but kept around in case people want to continue using it with `@babel/eslint-parser` such as the `babel-parser` extension.\n\nMarks Flow type identifiers as defined.\n\nUsed to suppress [`no-undef`](http://eslint.org/docs/rules/no-undef) reporting of type identifiers.\n\nThe following patterns are not considered problems:\n\n```js\nvar a: AType\n// Additional rules: {\"no-undef\":2}\n\nvar a: AType; var b: AType\n// Additional rules: {\"no-undef\":2}\n\nvar a; (a: AType)\n// Additional rules: {\"no-undef\":2}\n\nvar a: AType<BType>\n// Additional rules: {\"no-undef\":2}\n\ntype A = AType\n// Additional rules: {\"no-undef\":2}\n\ndeclare type A = number\n// Additional rules: {\"no-undef\":2}\n\nopaque type A = AType\n// Additional rules: {\"no-undef\":2}\n\nfunction f(a: AType) {}\n// Additional rules: {\"no-undef\":2}\n\nfunction f(a: AType.a) {}\n// Additional rules: {\"no-undef\":2}\n\nfunction f(a: AType.a.b) {}\n// Additional rules: {\"no-undef\":2}\n\nfunction f(a): AType {}; var a: AType\n// Additional rules: {\"no-undef\":2}\n\nfunction f(a): AType {}\n// Additional rules: {\"no-undef\":2}\n\nclass C { a: AType }\n// Additional rules: {\"no-undef\":2}\n\nclass C { a: AType.a }\n// Additional rules: {\"no-undef\":2}\n\nclass C { a: AType.a.b }\n// Additional rules: {\"no-undef\":2}\n\nclass C implements AType {}\n// Additional rules: {\"no-undef\":2}\n\ndeclare interface A {}\n// Additional rules: {\"no-undef\":2}\n\n({ a: ({b() {}}: AType) })\n// Additional rules: {\"no-undef\":2}\n\ntype X = {Y<AType>(): BType}\n// Additional rules: {\"no-undef\":2}\n\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\n\n/**\n* Copyright 2019 no corp\n* @flow\n*/\ntype Foo = $ReadOnly<{}>\n// Additional rules: {\"no-undef\":2}\n\nenum Status { Active, Paused }\n// Additional rules: {\"no-undef\":2}\n\nenum Status { Active = 'active', Paused = 'paused' }\n// Additional rules: {\"no-undef\":2}\n\nenum Status { Active = 1, Paused = 2 }\n// Additional rules: {\"no-undef\":2}\n\nvar a: AType\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nvar a: AType; var b: AType\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nvar a; (a: AType)\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nvar a: AType<BType>\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\ntype A = AType\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\ndeclare type A = number\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nopaque type A = AType\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nfunction f(a: AType) {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nfunction f(a: AType.a) {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nfunction f(a: AType.a.b) {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nfunction f(a): AType {}; var a: AType\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nfunction f(a): AType {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nclass C { a: AType }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nclass C { a: AType.a }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nclass C { a: AType.a.b }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nclass C implements AType {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\ndeclare interface A {}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\n({ a: ({b() {}}: AType) })\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\ntype X = {Y<AType>(): BType}\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\n\n/**\n* Copyright 2019 no corp\n* @flow\n*/\ntype Foo = $ReadOnly<{}>\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nenum Status { Active, Paused }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nenum Status { Active = 'active', Paused = 'paused' }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n\nenum Status { Active = 1, Paused = 2 }\n// Additional rules: {\"no-undef\":2,\"no-use-before-define\":[2,\"nofunc\"]}\n```\n\n\n\n<a name=\"delimiter-dangle\"></a>\n### `delimiter-dangle`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces consistent use of trailing commas in Object and Tuple annotations.\n\nThis rule takes three arguments where the possible values are the same as ESLint's default `comma-dangle` rule:\n\n1. The first argument is for Object and Tuple annotations. The default value is `'never'`.\n2. The second argument is used for Interface annotations. This defaults to the value of the first argument.\n3. The third argument is used for inexact object notation (trailing `...`). The default value is `'never'`.\n\nIf it is `'never'` then a problem is raised when there is a trailing comma.\n\nIf it is `'always'` then a problem is raised when there is no trailing comma.\n\nIf it is `'always-multiline'` then a problem is raised when there is no trailing comma on a multi-line definition, or there _is_ a trailing comma on a single-line definition.\n\nIf it is `'only-multiline'` then a problem is raised when there is a trailing comma on a single-line definition. It allows, but does not enforce, trailing commas on multi-line definitions.\n\nThe following patterns are considered problems:\n\n```js\ntype X = { foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = { foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = { foo: string; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = {\nfoo: string,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\"]\ntype X = { foo: string }\n// Message: Missing trailing delimiter\n\n// Options: [\"always\"]\ntype X = {\nfoo: string\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = { foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = {\nfoo: string\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"only-multiline\"]\ntype X = { foo: string; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\",\"never\"]\ninterface X { foo: string; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = { [key: string]: number, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\"]\ntype X = { [key: string]: number }\n// Message: Missing trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = { [key: string]: number, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = {\n[key: string]: number\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"only-multiline\"]\ntype X = { [key: string]: number; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = { [key: string]: number, foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = {\n[key: string]: number,\nfoo: string,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = {\n[key: string]: number,\naReallyLongPropertyNameHere: string,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\"]\ntype X = { [key: string]: number, foo: string }\n// Message: Missing trailing delimiter\n\n// Options: [\"always\"]\ntype X = {\n[key: string]: number;\nfoo: string\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = { [key: string]: number, foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = {\n[key: string]: number,\nfoo: string\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"only-multiline\"]\ntype X = { [key: string]: number, foo: string, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = { foo: string, [key: string]: number, }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = {\nfoo: string,\n[key: string]: number,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = {\naReallyLongPropertyNameHere: string,\n[key: string]: number,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\"]\ntype X = { foo: string, [key: string]: number }\n// Message: Missing trailing delimiter\n\n// Options: [\"always\"]\ntype X = { foo: string; [key: string]: number }\n// Message: Missing trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = { foo: string, [key: string]: number; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = {\nfoo: string,\n[key: string]: number\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"only-multiline\"]\ntype X = { foo: string, [key: string]: number; }\n// Message: Unexpected trailing delimiter\n\ntype X = { ..., }\n// Message: Unexpected trailing delimiter\n\ntype X = { ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { ... }\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { ...; }\n// Message: Unexpected trailing delimiter\n\ntype X = {\n...,\n}\n// Message: Unexpected trailing delimiter\n\ntype X = {\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n...,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n...\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n...\n}\n// Message: Missing trailing delimiter\n\ntype X = { foo: string, ..., }\n// Message: Unexpected trailing delimiter\n\ntype X = { foo: string; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { foo: string, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { foo: string; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { foo: string, ... }\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { foo: string, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { foo: string; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { foo: string, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { foo: string; ...; }\n// Message: Unexpected trailing delimiter\n\ntype X = {\nfoo: string,\n...,\n}\n// Message: Unexpected trailing delimiter\n\ntype X = {\nfoo: string;\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\nfoo: string,\n...,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\nfoo: string;\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\nfoo: string,\n...\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\nfoo: string,\n...\n}\n// Message: Missing trailing delimiter\n\ntype X = { [key: string]: number, ..., }\n// Message: Unexpected trailing delimiter\n\ntype X = { [key: string]: number; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { [key: string]: number, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { [key: string]: number; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { [key: string]: number, ... }\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { [key: string]: number, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { [key: string]: number; ...; }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { [key: string]: number, ..., }\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { [key: string]: number; ...; }\n// Message: Unexpected trailing delimiter\n\ntype X = {\n[key: string]: number,\n...,\n}\n// Message: Unexpected trailing delimiter\n\ntype X = {\n[key: string]: number;\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n[key: string]: number,\n...,\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n[key: string]: number;\n...;\n}\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n[key: string]: number,\n...\n}\n// Message: Missing trailing delimiter\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n[key: string]: number,\n...\n}\n// Message: Missing trailing delimiter\n\ntype X = [string, number,]\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = [string, number,]\n// Message: Unexpected trailing delimiter\n\n// Options: [\"never\"]\ntype X = [\nstring,\nnumber,\n]\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always\"]\ntype X = [string, number]\n// Message: Missing trailing delimiter\n\n// Options: [\"always\"]\ntype X = [\nstring,\nnumber\n]\n// Message: Missing trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = [string, number,]\n// Message: Unexpected trailing delimiter\n\n// Options: [\"always-multiline\"]\ntype X = [\nfoo, string\n]\n// Message: Missing trailing delimiter\n\n// Options: [\"only-multiline\"]\ntype X = [ number, string, ]\n// Message: Unexpected trailing delimiter\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = { foo: string }\n\n// Options: [\"never\"]\ntype X = { foo: string }\n\n// Options: [\"always\"]\ntype X = { foo: string, }\n\n// Options: [\"always\"]\ntype X = { foo: string; }\n\n// Options: [\"never\"]\ntype X = {\nfoo: string\n}\n\n// Options: [\"always\"]\ntype X = {\nfoo: string,\n}\n\n// Options: [\"always-multiline\"]\ntype X = { foo: string }\n\n// Options: [\"always-multiline\"]\ntype X = {\nfoo: string,\n}\n\n// Options: [\"always-multiline\"]\ntype X = {\nfoo: string;\n}\n\n// Options: [\"only-multiline\"]\ntype X = { foo: string }\n\n// Options: [\"only-multiline\"]\ntype X = {\nfoo: string\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\nfoo: string,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\nfoo: string;\n}\n\n// Options: [\"never\",\"always\"]\ninterface X { foo: string; }\n\n// Options: [\"never\"]\ntype X = {}\n\n// Options: [\"always\"]\ntype X = {}\n\n// Options: [\"always-multiline\"]\ntype X = {}\n\n// Options: [\"only-multiline\"]\ntype X = {}\n\n// Options: [\"never\"]\ntype X = { [key: string]: number }\n\n// Options: [\"always\"]\ntype X = { [key: string]: number, }\n\n// Options: [\"always\"]\ntype X = { [key: string]: number; }\n\n// Options: [\"always-multiline\"]\ntype X = { [key: string]: number }\n\n// Options: [\"always-multiline\"]\ntype X = {\n[key: string]: number,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\n[key: string]: number,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\n[key: string]: number\n}\n\n// Options: [\"only-multiline\"]\ntype X = { [key: string]: number }\n\n// Options: [\"never\"]\ntype X = { [key: string]: number, foo: string }\n\n// Options: [\"always\"]\ntype X = { [key: string]: number, foo: string, }\n\n// Options: [\"always\"]\ntype X = { [key: string]: number; foo: string; }\n\n// Options: [\"always-multiline\"]\ntype X = { [key: string]: number, foo: string }\n\n// Options: [\"always-multiline\"]\ntype X = {\n[key: string]: number,\nfoo: string,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\n[key: string]: number,\nfoo: string,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\n[key: string]: number;\nfoo: string\n}\n\n// Options: [\"only-multiline\"]\ntype X = { [key: string]: number, foo: string }\n\n// Options: [\"never\"]\ntype X = { foo: string, [key: string]: number }\n\n// Options: [\"always\"]\ntype X = { foo: string, [key: string]: number, }\n\n// Options: [\"always\"]\ntype X = { foo: string; [key: string]: number; }\n\n// Options: [\"always-multiline\"]\ntype X = { foo: string, [key: string]: number }\n\n// Options: [\"always-multiline\"]\ntype X = {\nfoo: string,\n[key: string]: number,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\nfoo: string,\n[key: string]: number,\n}\n\n// Options: [\"only-multiline\"]\ntype X = {\nfoo: string;\n[key: string]: number\n}\n\n// Options: [\"only-multiline\"]\ntype X = { foo: string, [key: string]: number }\n\ntype X = { ... }\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { ... }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { ..., }\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { ... }\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { ... }\n\ntype X = {\n...\n}\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n...\n}\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n...,\n }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n...;\n }\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n...,\n}\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n...;\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n...\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n...,\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n...;\n}\n\ntype X = { foo: string, ... }\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { foo: string, ... }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { foo: string, ..., }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { foo: string; ...; }\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { foo: string, ... }\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { foo: string, ... }\n\ntype X = {\nfoo: string,\n...\n}\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\nfoo: string,\n...\n}\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\nfoo: string,\n...,\n}\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\nfoo: string;\n...;\n}\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\nfoo: string,\n...,\n}\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\nfoo: string;\n...;\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\nfoo: string,\n...\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\nfoo: string,\n...,\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\nfoo: string,\n...;\n}\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = { [key: string]: number, ... }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { [key: string]: number, ..., }\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = { [key: string]: number; ...; }\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = { [key: string]: number, ... }\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = { [key: string]: number, ... }\n\n// Options: [\"never\",\"never\",\"never\"]\ntype X = {\n[key: string]: number,\n...\n}\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n[key: string]: number,\n...,\n}\n\n// Options: [\"never\",\"never\",\"always\"]\ntype X = {\n[key: string]: number;\n...;\n}\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n[key: string]: number,\n...,\n}\n\n// Options: [\"never\",\"never\",\"always-multiline\"]\ntype X = {\n[key: string]: number;\n...;\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n[key: string]: number,\n...\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n[key: string]: number,\n...,\n}\n\n// Options: [\"never\",\"never\",\"only-multiline\"]\ntype X = {\n[key: string]: number;\n...;\n}\n\ntype X = [string, number]\n\n// Options: [\"never\"]\ntype X = [string, number]\n\n// Options: [\"never\"]\ntype X = [\nstring,\nnumber\n]\n\n// Options: [\"always\"]\ntype X = [string, number,]\n\n// Options: [\"always\"]\ntype X = [\nstring,\nnumber,\n]\n\n// Options: [\"always-multiline\"]\ntype X = [ foo, string ]\n\n// Options: [\"always-multiline\"]\ntype X = [\nfoo, string,\n]\n\n// Options: [\"only-multiline\"]\ntype X = [ number, string ]\n\n// Options: [\"only-multiline\"]\ntype X = [\nnumber,\nstring\n]\n\n// Options: [\"only-multiline\"]\ntype X = [\nnumber,\nstring,\n]\n\n// Options: [\"never\"]\ntype X = []\n\n// Options: [\"always\"]\ntype X = []\n\n// Options: [\"always-multiline\"]\ntype X = []\n\n// Options: [\"only-multiline\"]\ntype X = []\n```\n\n\n\n<a name=\"enforce-line-break\"></a>\n### `enforce-line-break`\n\nThis rule enforces line breaks between type definitions.\n\nThe following patterns are considered problems:\n\n```js\ntype baz = 6;\nconst hi = 2;\n// Message: New line required below type declaration\n\nconst foo = 6;\ntype hi = 2;\n\n// Message: New line required above type declaration\n\nconst som = \"jes\";\n// a comment\ntype fed = \"hed\";\n\n// Message: New line required above type declaration\n\ntype som = \"jes\";\n// a comment\nconst fed = \"hed\";\n\n// Message: New line required below type declaration\n\ntype hello = 34;\nconst som = \"jes\";\ntype fed = \"hed\";\n\n// Message: New line required below type declaration\n// Message: New line required above type declaration\n\nconst a = 5;\nexport type hello = 34;\n\n// Message: New line required above type declaration\n\nconst a = 5;\n// a comment\nexport type hello = 34;\n\n// Message: New line required above type declaration\n\nconst a = 5;\n/**\n * a jsdoc block\n */\ntype hello = 34;\n// Message: New line required above type declaration\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype gjs = 6;\n\ntype gjs = 6;\n\ntype hi = 2;\n\n\ntype X = 4;\n\nconst red = \"serpent\";\nconsole.log(\"hello\");\n\n// number or string\ntype Y = string | number;\n\n// resting + sleep\ntype snooze = \"dreaming\" | \"\";\n\ntype Props = {\n  accountBalance: string | number,\n  accountNumber: string | number,\n};\n\nconst x = 4;\nconst y = 489;\n\n// Some Comment\ntype Props = {\n  accountBalance: string | number,\n  accountNumber: string | number,\n};\n\ntype RoadT = \"grass\" | \"gravel\" | \"cement\";\n\n// @flow\ntype A = string\n```\n\n\n\n<a name=\"enforce-suppression-code\"></a>\n### `enforce-suppression-code`\n\nThis rule enforces a suppression code on flow suppression comments such as `$FlowFixMe` and `$FlowExpectedError`.\n\nThe following patterns are considered problems:\n\n```js\n// $FlowFixMe I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is missing a suppression error code. Please update this suppression to use an error code: $FlowFixMe[…]\n\n// $FlowExpectedError I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowExpectedError is missing a suppression error code. Please update this suppression to use an error code: $FlowExpectedError[…]\n\n// $FlowIssue I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowIssue is missing a suppression error code. Please update this suppression to use an error code: $FlowIssue[…]\n\n// $FlowIgnore I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowIgnore is missing a suppression error code. Please update this suppression to use an error code: $FlowIgnore[…]\n\n/* $FlowIgnore I am doing something evil here */\n// Message: $FlowIgnore is missing a suppression error code. Please update this suppression to use an error code: $FlowIgnore[…]\n\n{ /* $FlowIgnore I am doing something evil here */ }\n// Message: $FlowIgnore is missing a suppression error code. Please update this suppression to use an error code: $FlowIgnore[…]\n\n/**\n  * $FlowIgnore I am doing something evil here\n  */\n// Message: $FlowIgnore is missing a suppression error code. Please update this suppression to use an error code: $FlowIgnore[…]\n```\n\nThe following patterns are not considered problems:\n\n```js\n// Just a random comment\n//\nconst text = 'HELLO';\n\n// $FlowFixMe[incompatible-call] TODO 48\nconst text = 'HELLO';\n\n// $FlowExpectedError[incompatible-call] TODO 48\nconst text = 'HELLO';\n\n// $FlowIssue[incompatible-call] TODO 48\nconst text = 'HELLO';\n\n// $FlowIgnore[incompatible-call] TODO 48\nconst text = 'HELLO';\n\n/* $FlowIgnore[incompatible-call] TODO 48 */\n\n/**\n * $FlowIgnore[incompatible-call] TODO 48\n */\n\n/* $FlowIgnore[incompatible-call] TODO 48 */\n```\n\n\n\n<a name=\"generic-spacing\"></a>\n### `generic-spacing`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nEnforces consistent spacing within generic type annotation parameters.\n\nThis rule takes one argument. If it is `'never'` then a problem is raised when there is a space surrounding the generic type parameters. If it is `'always'` then a problem is raised when there is no space surrounding the generic type parameters.\n\nThe default value is `'never'`.\n\nThe following patterns are considered problems:\n\n```js\ntype X = Promise< string>\n// Message: There must be no space at start of \"Promise\" generic type annotation\n\n// Options: [\"never\"]\ntype X = Promise<  string>\n// Message: There must be no space at start of \"Promise\" generic type annotation\n\ntype X = FooBar<string >\n// Message: There must be no space at end of \"FooBar\" generic type annotation\n\ntype X = Promise< string >\n// Message: There must be no space at start of \"Promise\" generic type annotation\n// Message: There must be no space at end of \"Promise\" generic type annotation\n\ntype X = Promise< (foo), bar, (((baz))) >\n// Message: There must be no space at start of \"Promise\" generic type annotation\n// Message: There must be no space at end of \"Promise\" generic type annotation\n\n// Options: [\"always\"]\ntype X = Promise<string >\n// Message: There must be a space at start of \"Promise\" generic type annotation\n\n// Options: [\"always\"]\ntype X = FooBar< string>\n// Message: There must be a space at end of \"FooBar\" generic type annotation\n\n// Options: [\"always\"]\ntype X = Promise<string>\n// Message: There must be a space at start of \"Promise\" generic type annotation\n// Message: There must be a space at end of \"Promise\" generic type annotation\n\n// Options: [\"always\"]\ntype X = Promise<(foo), bar, (((baz)))>\n// Message: There must be a space at start of \"Promise\" generic type annotation\n// Message: There must be a space at end of \"Promise\" generic type annotation\n\n// Options: [\"always\"]\ntype X = FooBar<  string >\n// Message: There must be one space at start of \"FooBar\" generic type annotation\n\n// Options: [\"always\"]\ntype X = FooBar< string  >\n// Message: There must be one space at end of \"FooBar\" generic type annotation\n\n// Options: [\"always\"]\ntype X = Promise<  (foo), bar, (((baz)))  >\n// Message: There must be one space at start of \"Promise\" generic type annotation\n// Message: There must be one space at end of \"Promise\" generic type annotation\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = Promise<string>\n\ntype X = Promise<(string)>\n\ntype X = Promise<(foo), bar, (((baz)))>\n\ntype X = Promise<\n  (foo),\n  bar,\n  (((baz)))\n>\n\ntype X =  Promise<\r\n    (foo),\r\n    bar,\r\n    (((baz)))\r\n>\n\n// Options: [\"always\"]\ntype X = Promise< string >\n\n// Options: [\"always\"]\ntype X = Promise< (string) >\n\n// Options: [\"always\"]\ntype X = Promise< (foo), bar, (((baz))) >\n```\n\n\n\n<a name=\"interface-id-match\"></a>\n### `interface-id-match`\n\nEnforces a consistent naming pattern for interfaces.\n\n<a name=\"options\"></a>\n#### Options\n\nThis rule requires a text RegExp:\n\n```js\n{\n    \"rules\": {\n        \"ft-flow/interface-id-match\": [\n            2,\n            \"^([A-Z][a-z0-9]*)+Type$\"\n        ]\n    }\n}\n```\n\n`'^([A-Z][a-z0-9]*)+Type$'` is the default pattern.\n\nThe following patterns are considered problems:\n\n```js\ninterface foo{};\n// Message: Interface identifier 'foo' does not match pattern '/^([A-Z][a-z0-9]*)+Type$/u'.\n\n// Options: [\"^foo$\"]\ninterface FooType{};\n// Message: Interface identifier 'FooType' does not match pattern '/^foo$/u'.\n```\n\nThe following patterns are not considered problems:\n\n```js\ninterface FooType {};\n\n// Options: [\"^foo$\"]\ninterface foo {};\n\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\ninterface foo {};\n```\n\n\n\n<a name=\"newline-after-flow-annotation\"></a>\n### `newline-after-flow-annotation`\n\nThis rule requires an empty line after the Flow annotation.\n\n<a name=\"options\"></a>\n#### Options\n\nThe rule has a string option:\n\n* `\"always\"` (default): Enforces that `@flow` annotations be followed by an empty line, separated by newline (LF)\n* `\"always-windows\"`: Identical to \"always\", but will use a CRLF when autofixing\n* `\"never\"`: Enforces that `@flow` annotations are not followed by empty lines\n\n```js\n{\n  \"rules\": {\n    \"ft-flow/newline-after-flow-annotation\": [\n      2,\n      \"always\"\n    ]\n  }\n}\n```\n\n\nThe following patterns are considered problems:\n\n```js\n// @flow\nimport Foo from './foo';\n// Message: Expected newline after flow annotation\n\n// Options: [\"always\"]\n// @flow\nimport Foo from './foo';\n// Message: Expected newline after flow annotation\n\n// Options: [\"always-windows\"]\n// @flow\r\nimport Foo from './foo';\n// Message: Expected newline after flow annotation\n\n// Options: [\"never\"]\n// @flow\n\n\n// Message: Expected no newline after flow annotation\n\n/*\n* @flow\n*\n* something multi lined\n*/\nconst text: string = 42;\n// Message: Expected newline after flow annotation\n```\n\nThe following patterns are not considered problems:\n\n```js\n// Options: [\"always\"]\n// @flow\n\nimport Foo from './foo';\n\n// Options: [\"always-windows\"]\n// @flow\r\n\r\nimport Foo from './foo';\n\n// Options: [\"never\"]\n// @flow\nimport Foo from './foo';\n\n// Options: [\"always\"]\n/*\n* @flow\n*\n* something multi lined\n*/\n\nconst text: string = 42;\n```\n\n\n\n<a name=\"no-dupe-keys\"></a>\n### `no-dupe-keys`\n\nChecks for duplicate properties in Object annotations.\n\nThis rule mirrors ESLint's [no-dupe-keys](http://eslint.org/docs/rules/no-dupe-keys) rule.\n\n```js\n{\n    \"rules\": {\n        \"ft-flow/no-dupe-keys\": 2\n    }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\ntype f = { a: number, b: string, a: number }\n// Message: Duplicate property.\n\ntype f = { a: number, b: string, a: string }\n// Message: Duplicate property.\n\ntype f = { get(key: \"a\"): string, get(key: \"a\"): string }\n// Message: Duplicate property.\n\ntype f = { get(key: 1): string, get(key: 1): string }\n// Message: Duplicate property.\n\ntype f = { get(key: 1.1): string, get(key: 1.1): string }\n// Message: Duplicate property.\n\ntype f = { get(key: true): string, get(key: true): string }\n// Message: Duplicate property.\n\ntype f = { get(key: {a: 1}): string, get(key: {a: 1}):string }\n// Message: Duplicate property.\n\nvar a = \"a\"; type f = { get(key: a): string, get(key: a): string }\n// Message: Duplicate property.\n\nvar b = 1; type f = { get(key: b): string, get(key: b): string }\n// Message: Duplicate property.\n\nvar c = true; type f = { get(key: c): string, get(key: c): string }\n// Message: Duplicate property.\n\nvar d = {}; type f = { get(key: d): string, get(key: d): string }\n// Message: Duplicate property.\n\nvar e = []; type f = { get(key: e): string, get(key: e): string }\n// Message: Duplicate property.\n\nvar e = [1, \"a\"]; type f = { get(key: e): string, get(key: e): string }\n// Message: Duplicate property.\n\nfunction fn() {}; type f = { get(key: fn): string, get(key: fn): string }\n// Message: Duplicate property.\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype FooType = { a: number, b: string, c: number }\n\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\ntype FooType = { a: number, b: string, a: number }\n\ntype f = { get(key: \"a\"): string, get(key: \"b\"): string }\n\ntype f = { get(key: 1): string, get(key: 2): string }\n\ntype f = { get(key: 1.1): string, get(key: 1.2): string }\n\ntype f = { get(key: true): string, get(key: false): string }\n\ntype f = { get(key: [\"a\", 1]): string, get(key: [\"a\", 2]): string }\n\ntype f = { get(key: [\"a\", [\"b\", 1]]): string, get(key: [\"a\", [\"b\", 2]]): string }\n\ntype f = { a: number, b: string, c: number }\n\ntype f = { get(key: \"a\"): string, get(key: \"b\"): string }\n\ntype f = { get(key: \"a\"): string, get(key: \"a\", key2: \"b\"): string }\n\ntype f = { get(key: \"a\"): string, get(key: 1): string }\n\ntype f = { get(key: { a: 1 }): string, get(key: { a: 2 }): string}\n\nvar a = {}; var b = {}; type f = { get(key: a): string, get(key: b): string }\n\nvar a = 1; var b = 1; type f = { get(key: a): string, get(key: b): string }\n\ntype a = { b: <C>(config: { ...C, key: string}) => C }\n\nexport interface Foo { get foo(): boolean; get bar(): string; }\n```\n\n\n\n<a name=\"no-duplicate-type-union-intersection-members\"></a>\n### `no-duplicate-type-union-intersection-members`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nChecks for duplicate members of a type union/intersection.\n\n<a name=\"options\"></a>\n#### Options\n\nYou can disable checking intersection types using `checkIntersections`.\n\n* `true` (default) - check for duplicate members of intersection members.\n* `false` - do not check for duplicate members of intersection members.\n\n```js\n{\n  \"rules\": {\n    \"ft-flow/no-duplicate-type-union-intersection-members\": [\n      2,\n      {\n        \"checkIntersections\": true\n      }\n    ]\n  }\n}\n```\n\nYou can disable checking union types using `checkUnions`.\n\n* `true` (default) - check for duplicate members of union members.\n* `false` - do not check for duplicate members of union members.\n\n```js\n{\n  \"rules\": {\n    \"ft-flow/no-duplicate-type-union-intersection-members\": [\n      2,\n      {\n        \"checkUnions\": true\n      }\n    ]\n  }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\ntype A = 1 | 2 | 3 | 1;\n// Message: Duplicate union member found \"1\".\n\ntype B = 'foo' | 'bar' | 'foo';\n// Message: Duplicate union member found \"'foo'\".\n\ntype C = A | B | A | B;\n// Message: Duplicate union member found \"A\".\n// Message: Duplicate union member found \"B\".\n\ntype C = A & B & A & B;\n// Message: Duplicate intersection member found \"A\".\n// Message: Duplicate intersection member found \"B\".\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype A = 1 | 2 | 3;\n\ntype B = 'foo' | 'bar';\n\ntype C = A | B;\n\ntype C = A & B;\n```\n\n\n\n<a name=\"no-existential-type\"></a>\n### `no-existential-type`\n\nDisallows use of the existential type (*). [See more](https://flow.org/en/docs/types/utilities/#toc-existential-type)\n\n```js\n{\n  \"rules\": {\n    \"ft-flow/no-existential-type\": 2\n  }\n}\n```\n\n\nThe following patterns are considered problems:\n\n```js\ntype T = *;\n// Message: Unexpected use of existential type (*).\n\ntype T = U<*, *>;\n// Message: Unexpected use of existential type (*).\n// Message: Unexpected use of existential type (*).\n\nconst f: (*) => null = () => null;\n// Message: Unexpected use of existential type (*).\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype T = string | null\n```\n\n\n\n<a name=\"no-flow-fix-me-comments\"></a>\n### `no-flow-fix-me-comments`\n\nDisallows `$FlowFixMe` comment suppressions.\n\nThis is especially useful as a warning to ensure instances of `$FlowFixMe` in your codebase get fixed over time.\n\n<a name=\"options\"></a>\n#### Options\n\nThis rule takes an optional RegExp that comments a text RegExp that makes the supression valid.\n\n```js\n{\n    \"rules\": {\n        \"ft-flow/no-flow-fix-me-comments\": [\n            1,\n            \"TODO\\s+[0-9]+\"\n        ]\n    }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\n// $FlowFixMe I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is treated as 'any' and must be fixed.\n\n// Options: [\"TODO [0-9]+\"]\n// $FlowFixMe I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is treated as 'any' and must be fixed. Fix it or match '/TODO [0-9]+/u'.\n\n// Options: [\"TODO [0-9]+\"]\n// $FlowFixMe TODO abc 47 I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is treated as 'any' and must be fixed. Fix it or match '/TODO [0-9]+/u'.\n\n// $$FlowFixMeProps I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is treated as 'any' and must be fixed.\n\n// Options: [\"TODO [0-9]+\"]\n// $FlowFixMeProps I am doing something evil here\nconst text = 'HELLO';\n// Message: $FlowFixMe is treated as 'any' and must be fixed. Fix it or match '/TODO [0-9]+/u'.\n```\n\nThe following patterns are not considered problems:\n\n```js\nconst text = 'HELLO';\n\n// Options: [\"TODO [0-9]+\"]\n// $FlowFixMe TODO 48\nconst text = 'HELLO';\n```\n\n\n\n<a name=\"no-flow-suppressions-in-strict-files\"></a>\n### `no-flow-suppressions-in-strict-files`\n\nThis rule validates that no error suppression comments (e.g. `$FlowFixMe`) are used in `// @flow strict` (or `// @flow strict-local`) files.\n\nThis codifies the best practices [as documented here](https://flow.org/en/docs/strict/#toc-adoption):\n\n> _\"Do not add `$FlowFixMe` to suppress the new errors as they appear; just add `@flow strict` once all issues have been resolved.\"_\n<a name=\"options\"></a>\n#### Options\n\nThis rule accepts 1 option as an object to disable errors being thrown on specific suppression error types. For example, you don't want `$FlowFixMe` but `$FlowExpectedError` you want to allow because they are expected issues that can't be solved.\n\n```js\n{\n  \"rules\": {\n    \"ft-flow/no-flow-suppressions-in-strict-files\": [2, {\n      \"$FlowExpectedError\": false\n    }]\n  }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\n// Options: [{}]\n// @flow strict\n\n// $FlowFixMe\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{}]\n// @flow strict-local\n\n// $FlowFixMe\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{}]\n// @flow strict\n\n// $FlowExpectedError[xxx]\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{}]\n/* @flow strict */\n\n// $FlowExpectedError[xxx]\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{}]\n/*\n* @flow strict\n*\n* something multi lined\n*/\n\n// $FlowExpectedError[xxx]\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{}]\n/*\n* @flow strict\n*\n* something multi lined\n*/\n\n/* $FlowIgnore[xxx] */\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n\n// Options: [{\"$FlowExpectedError\":false}]\n// @flow strict\n\n// $FlowFixMe\nconst text: string = 42;\n// Message: No suppression comments are allowed in \"strict\" Flow files. Either remove the error suppression, or lower the strictness of this module.\n```\n\nThe following patterns are not considered problems:\n\n```js\n// Options: [{}]\n// @flow\n\n// Error suppressions are fine in \"normal\" Flow files\n// $FlowFixMe\nconst text: string = 42;\n\n// Options: [{}]\n// @flow strict\n\n// Definitely nothing to suppress here\n// ...\n\n// Options: [{}]\n// @flow strict-local\n\n// Definitely nothing to suppress here\n// ...\n\n// Options: [{\"$FlowExpectedError\":false}]\n// @flow strict\n\n// $FlowExpectedError\nconst text: string = 42;\n\n// Options: [{\"$FlowExpectedError\":false}]\n// @flow strict-local\n\n// $FlowExpectedError\nconst text: string = 42;\n```\n\n\n\n<a name=\"no-internal-flow-type\"></a>\n### `no-internal-flow-type`\n\nWarns against using internal Flow types such as `React$Node`, `React$Ref` and others and suggests using public alternatives instead (`React.Node`, `React.Ref`, …).\n\nThe following patterns are considered problems:\n\n```js\ntype X = React$AbstractComponent<Config, Instance>\n// Message: Type identifier 'React$AbstractComponent' is not allowed. Use 'React.AbstractComponent' instead.\n\ntype X = React$ChildrenArray<string>\n// Message: Type identifier 'React$ChildrenArray' is not allowed. Use 'React.ChildrenArray' instead.\n\ntype X = React$ComponentType<Props>\n// Message: Type identifier 'React$ComponentType' is not allowed. Use 'React.ComponentType' instead.\n\ntype X = React$Config<Prosp, DefaultProps>\n// Message: Type identifier 'React$Config' is not allowed. Use 'React.Config' instead.\n\ntype X = React$Element<typeof Component>\n// Message: Type identifier 'React$Element' is not allowed. Use 'React.Element' instead.\n\ntype X = React$ElementConfig<typeof Component>\n// Message: Type identifier 'React$ElementConfig' is not allowed. Use 'React.ElementConfig' instead.\n\ntype X = React$ElementProps<typeof Component>\n// Message: Type identifier 'React$ElementProps' is not allowed. Use 'React.ElementProps' instead.\n\ntype X = React$ElementRef<typeof Component>\n// Message: Type identifier 'React$ElementRef' is not allowed. Use 'React.ElementRef' instead.\n\ntype X = React$ElementType\n// Message: Type identifier 'React$ElementType' is not allowed. Use 'React.ElementType' instead.\n\ntype X = React$Key\n// Message: Type identifier 'React$Key' is not allowed. Use 'React.Key' instead.\n\ntype X = React$Node\n// Message: Type identifier 'React$Node' is not allowed. Use 'React.Node' instead.\n\ntype X = React$Ref<typeof Component>\n// Message: Type identifier 'React$Ref' is not allowed. Use 'React.Ref' instead.\n\ntype X = React$StatelessFunctionalComponent<Props>\n// Message: Type identifier 'React$StatelessFunctionalComponent' is not allowed. Use 'React.StatelessFunctionalComponent' instead.\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = React.AbstractComponent<Config, Instance>\n\ntype X = React.ChildrenArray<string>\n\ntype X = React.ComponentType<Props>\n\ntype X = React.Config<Props, DefaultProps>\n\ntype X = React.Element<typeof Component>\n\ntype X = React.ElementConfig<typeof Component>\n\ntype X = React.ElementProps<typeof Component>\n\ntype X = React.ElementRef<typeof Component>\n\ntype X = React.ElementType\n\ntype X = React.Key\n\ntype X = React.Node\n\ntype X = React.Ref<typeof Component>\n\ntype X = React.StatelessFunctionalComponent<Props>\n\ntype X = React$Rocks\n```\n\n\n\n<a name=\"no-mixed\"></a>\n### `no-mixed`\n\nWarns against \"mixed\" type annotations.\nThese types are not strict enough and could often be made more specific.\n\nThe following patterns are considered problems:\n\nThe following patterns are considered problems:\n\n```js\nfunction foo(thing): mixed {}\n// Message: Unexpected use of mixed type\n\nfunction foo(thing): Promise<mixed> {}\n// Message: Unexpected use of mixed type\n\nfunction foo(thing): Promise<Promise<mixed>> {}\n// Message: Unexpected use of mixed type\n```\n\nThe following patterns are not considered problems:\n\n```js\nfunction foo(thing): string {}\n\nfunction foo(thing): Promise<string> {}\n\nfunction foo(thing): Promise<Promise<string>> {}\n\n(foo?: string) => {}\n\n(foo: ?string) => {}\n\n(foo: { a: string }) => {}\n\n(foo: { a: ?string }) => {}\n\n(foo: string[]) => {}\n\ntype Foo = string\n\ntype Foo = { a: string }\n\ntype Foo = { (a: string): string }\n\nfunction foo(thing: string) {}\n\nvar foo: string\n\nclass Foo { props: string }\n```\n\n\n\n<a name=\"no-mutable-array\"></a>\n### `no-mutable-array`\n\n_The `--fix` option on the command line automatically fixes problems reported by this rule._\n\nRequires use of [`$ReadOnlyArray`](https://github.com/facebook/flow/blob/v0.46.0/lib/core.js#L185) instead of just `Array` or array [shorthand notation](https://flow.org/en/docs/types/arrays/#toc-array-type-shorthand-syntax). `$ReadOnlyArray` is immutable array collection type and the superclass of Array and tuple types in Flow. Use of `$ReadOnlyArray` instead of `Array` can solve some \"problems\" in typing with Flow (e.g., [1](https://github.com/facebook/flow/issues/3425), [2](https://github.com/facebook/flow/issues/4251)).\n\nGeneral reasons for using immutable data structures:\n\n* They are simpler to construct, test, and use\n* They help to avoid temporal coupling\n* Their usage is side-effect free (no defensive copies)\n* Identity mutability problem is avoided\n* They always have failure atomicity\n* They are much easier to cache\n\nNote that initialization of a variable with an empty array is considered valid (e.g., `const values: Array<string> = [];`). This behavior resembles the behavior of Flow's [unsealed objects](https://flow.org/en/docs/types/objects/#toc-unsealed-objects), as it is assumed that empty array is intended to be mutated.\n\nThe following patterns are considered problems:\n\n```js\ntype X = Array<string>\n// Message: Use \"$ReadOnlyArray\" instead of \"Array\"\n\ntype X = string[]\n// Message: Use \"$ReadOnlyArray\" instead of array shorthand notation\n\nconst values: Array<Array<string>> = [];\n// Message: Use \"$ReadOnlyArray\" instead of \"Array\"\n\nlet values: Array<Array<string>>;\n// Message: Use \"$ReadOnlyArray\" instead of \"Array\"\n// Message: Use \"$ReadOnlyArray\" instead of \"Array\"\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype X = $ReadOnlyArray<string>\n\nconst values: Array<$ReadOnlyArray<string>> = [];\n\nconst values: $ReadOnlyArray<string>[] = [];\n\nconst values: Array<$ReadOnlyArray<string>> = new Array();\n\nconst values: Array<$ReadOnlyArray<string>> = Array();\n```\n\n\n\n<a name=\"no-primitive-constructor-types\"></a>\n### `no-primitive-constructor-types`\n\nDisallows use of primitive constructors as types, such as `Boolean`, `Number` and `String`. [See more](https://flow.org/en/docs/types/primitives/).\n\n```js\n{\n    \"rules\": {\n        \"ft-flow/no-primitive-constructor-types\": 2\n    }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\ntype x = Number\n// Message: Unexpected use of Number constructor type.\n\ntype x = String\n// Message: Unexpected use of String constructor type.\n\ntype x = Boolean\n// Message: Unexpected use of Boolean constructor type.\n\ntype x = { a: Number }\n// Message: Unexpected use of Number constructor type.\n\ntype x = { a: String }\n// Message: Unexpected use of String constructor type.\n\ntype x = { a: Boolean }\n// Message: Unexpected use of Boolean constructor type.\n\n(x: Number) => {}\n// Message: Unexpected use of Number constructor type.\n\n(x: String) => {}\n// Message: Unexpected use of String constructor type.\n\n(x: Boolean) => {}\n// Message: Unexpected use of Boolean constructor type.\n```\n\nThe following patterns are not considered problems:\n\n```js\ntype x = number\n\ntype x = string\n\ntype x = boolean\n\ntype x = { a: number }\n\ntype x = { a: string }\n\ntype x = { a: boolean }\n\n(x: number) => {}\n\n(x: string) => {}\n\n(x: boolean) => {}\n\ntype x = MyNumber\n\ntype x = MyString\n\ntype x = MyBoolean\n```\n\n\n\n<a name=\"no-types-missing-file-annotation\"></a>\n### `no-types-missing-file-annotation`\n\nDisallows Flow type imports, aliases, and annotations in files missing a valid Flow file declaration (or a @noflow annotation).\n\n```js\n{\n    \"rules\": {\n        \"ft-flow/no-types-missing-file-annotation\": 2\n    }\n}\n```\n\nThe following patterns are considered problems:\n\n```js\nconst x: number = 42;\n// Message: Type annotations require valid Flow declaration.\n\ntype FooType = number;\n// Message: Type aliases require valid Flow declaration.\n\nimport type A from \"a\"\n// Message: Type imports require valid Flow declaration.\n\nimport type {A} from \"a\"\n// Message: Type imports require valid Flow declaration.\n\nimport {type A} from \"a\"\n// Message: Type imports require valid Flow declaration.\n\nexport type {A} from \"a\"\n// Message: Type exports require valid Flow declaration.\n\nfunction t<T>(): T{}\n// Message: Type annotations require valid Flow declaration.\n\n// Settings: {\"ft-flow\":{\"onlyFilesWithFlowAnnotation\":true}}\nconst x: number = 42;\n// Message: Type annotations require valid Flow declaration.\n```\n\nThe following patterns are not considered problems:\n\n```js\n// @flow\nconst x: number = 42;\n\n/* @flow weak */\ntype FooType = number;\n\n/* @noflow */\ntype FooType = number;\n\n/* @noflow */\nimport type A from \"a\"\n\n/* @noflow */\nimport {type A} from \"a\"\n\n/* @noflow */\nexport type {A} from \"a\"\n\n// an unrelated comment\n// @flow\nexport type {A} from \"a\"\n```\n\n\n\n<a name=\"no-unused-expressions\"></a>\n### `no-unused-expressions`\n\nAn extension of [ESLint's `no-unused-expressions`](https://eslint.org/docs/rules/no-unused-expressions).\nThis rule ignores type cast expressions and optional call expressions, but otherwise behaves the same as ESLint's\n`no-unused-expressions`.\n\nBare type casts are useful, for example to assert the exhaustiveness of a `switch`:\n\n```js\ntype Action\n  = { type: 'FOO', doFoo: (_: number) => void }\n  | { type: 'BAR', doBar: (_: string) => void };\n\ntype State = { foo: number, bar: string };\n\nfunction runFooBar(action: Action, state: State): void {\n  switch (action.type) {\n    case 'FOO':\n      doFoo(state.foo);\n      break;\n    c","readmeFilename":"README.md"}