[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\"@babel/preset-env\"],\n  \"plugins\": [\n    \"@babel/plugin-syntax-flow\",\n    \"@babel/transform-flow-strip-types\",\n    \"@babel/plugin-proposal-export-default-from\"\n  ],\n  \"sourceMaps\": \"inline\"\n}\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"parser\": \"@babel/eslint-parser\",\n  \"extends\": [\n    \"standard\",\n    \"plugin:import/errors\",\n    \"plugin:import/warnings\",\n    \"plugin:mocha/recommended\"\n  ],\n  \"env\": {\n    \"es6\": true,\n    \"node\": true\n  },\n  \"rules\": {\n    \"semi\": [1, \"always\"],\n    \"camelcase\": 0,\n    \"comma-dangle\": 0\n  }\n}\n"
  },
  {
    "path": ".flowconfig",
    "content": "[ignore]\nbuild/\n\n[include]\nlib/\n\n[version]\n^0.36.0\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n.DS_Store\n\nbuild\nnpm-debug.log\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - 4\n  - 6\n"
  },
  {
    "path": "README.md",
    "content": "# eslint-plugin-css-modules\n\n[![Build Status](https://travis-ci.org/atfzl/eslint-plugin-css-modules.svg?branch=master)](https://travis-ci.org/atfzl/eslint-plugin-css-modules)\n\nThis plugin intends to help you in tracking down problems when you are using css-modules. It tells if you are using a non-existent css/scss/less class in js or if you forgot to use some classes which you declared in css/scss/less.\n\n## Rules\n\n* `css-modules/no-unused-class`: You must use all the classes defined in css/scss/less file.\n\n>If you still want to mark a class as used, then use this comment on top of your file\n```js\n/* eslint css-modules/no-unused-class: [2, { markAsUsed: ['container'] }] */\n```\nwhere container is the css class that you want to mark as used.\nAdd all such classes in the array.\n\n>If you use the `camelCase` option of `css-loader`, you must also enabled it for this plugin\n```js\n/* eslint css-modules/no-unused-class: [2, { camelCase: true }] */\n```\n\n* `css-modules/no-undef-class`: You must not use a non existing class, or a property that hasn't been exported using the [:export keyword](https://github.com/css-modules/icss#export).\n\n>If you use the `camelCase` option of `css-loader`, you must also enabled it for this plugin\n```js\n/* eslint css-modules/no-undef-class: [2, { camelCase: true }] */\n```\n\n## Installation\n\n```\nnpm i --save-dev eslint-plugin-css-modules\n```\n\n## Usage:\n\n.eslintrc\n```json\n{\n  \"plugins\": [\n    \"css-modules\"\n  ],\n  \"extends\": [\n    \"plugin:css-modules/recommended\"\n  ]\n}\n```\n\nYou may also tweak the rules individually. For instance, if you use the [camelCase](https://github.com/webpack-contrib/css-loader#camelcase) option of webpack's css-loader:\n\n```json\n{\n  \"plugins\": [\n    \"css-modules\"\n  ],\n  \"extends\": [\n    \"plugin:css-modules/recommended\"\n  ],\n  \"rules\": {\n    \"css-modules/no-unused-class\": [2, { \"camelCase\": true }],\n    \"css-modules/no-undef-class\": [2, { \"camelCase\": true }]\n  }\n}\n```\n\nThe camelCase option has 4 possible values, see [css-loader#camelCase](https://github.com/webpack-contrib/css-loader#camelcase) for description:\n```js\ntrue | \"dashes\" | \"only\" | \"dashes-only\"\n```\n\n## Specifying base path\n\nYou can specify path for the base directory via plugin settings in .eslintrc. This is used by the plugin to resolve absolute (S)CSS paths:\n\n```json\n{\n  \"settings\": {\n    \"css-modules\": {\n      \"basePath\": \"app/scripts/...\"\n    }\n  }\n}\n```\n\n## Screen Shot\n\n![ScreenShot](https://raw.githubusercontent.com/atfzl/eslint-plugin-css-modules/master/screenshots/screenshot3.png)\n\n```\n   1:8   error  Unused classes found: container  css-modules/no-unused-class\n   5:17  error  Class 'containr' not found       css-modules/no-undef-class\n  10:26  error  Class 'foo' not found            css-modules/no-undef-class\n```\n\nscss:\n\n```scss\n/* .head is global, will not be used in js */\n:global(.head) {\n  color: green;\n}\n\n.container {\n  width: 116px;\n\n  i {\n    font-size: 2.2rem;\n  }\n\n  .button {\n    padding: 7px 0 0 5px;\n  }\n}\n\n.footer {\n  color: cyan;\n}\n```\n"
  },
  {
    "path": "example/.eslintrc",
    "content": "{\n  \"plugins\": [\n    \"css-modules\"\n  ],\n  \"extends\": [\n    \"plugin:css-modules/recommended\"\n  ]\n}\n"
  },
  {
    "path": "example/foo.scss",
    "content": "/* .head is global, will not be used in js */\n:global(.head) {\n  color: green;\n}\n\n.container {\n  width: 116px;\n\n  i {\n    font-size: 2.2rem;\n  }\n\n  .button {\n    padding: 7px 0 0 5px;\n  }\n}\n\n.footer {\n  color: cyan;\n}\n"
  },
  {
    "path": "example/index.js",
    "content": "/* eslint css-modules/no-unused-class: [2, { markAsUsed: ['container'] }] */\n\nimport s from './foo.scss';\n\nconst component = () => {\n  const cls = s['containr'];\n\n  s[cls];\n\n  s._getCss();\n\n  return (\n    <div className={`${s.foo}`}>\n      text\n      <div className={`${cls} ${s.button}`}>\n      </div>\n      <div className={s.footer}>\n        Footer\n      </div>\n    </div>\n  );\n};\n\nexport default component;\n"
  },
  {
    "path": "example/tester.js",
    "content": "/*\n   ignore this file. This just for checking logs\n */\n\nimport { RuleTester } from 'eslint';\n\nimport rule from '../lib/rules/no-undef-class';\n\nimport { test } from '../test/utils';\n\nconst ruleTester = new RuleTester();\n\nruleTester.run('no-undef-class', rule, {\n  valid: [\n    { code: '' },\n  ],\n  invalid: [\n    test({\n      code: `\n        import s from './gonzalesFail1.css';\n\n        export default Foo = () => (\n           <div className={s.foo}></div>\n        );\n      `,\n      errors: ['foo'],\n    }),\n  ]\n});\n"
  },
  {
    "path": "flow-typed/npm/babel-cli_vx.x.x.js",
    "content": "// flow-typed signature: 670228b673fbf5d953585356d4345691\n// flow-typed version: <<STUB>>/babel-cli_v^6.18.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-cli'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-cli' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-cli/bin/babel-doctor' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/bin/babel-external-helpers' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/bin/babel-node' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/bin/babel' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/_babel-node' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel-external-helpers' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel-node' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel/dir' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel/file' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-cli/lib/babel/util' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-cli/bin/babel-doctor.js' {\n  declare module.exports: $Exports<'babel-cli/bin/babel-doctor'>;\n}\ndeclare module 'babel-cli/bin/babel-external-helpers.js' {\n  declare module.exports: $Exports<'babel-cli/bin/babel-external-helpers'>;\n}\ndeclare module 'babel-cli/bin/babel-node.js' {\n  declare module.exports: $Exports<'babel-cli/bin/babel-node'>;\n}\ndeclare module 'babel-cli/bin/babel.js' {\n  declare module.exports: $Exports<'babel-cli/bin/babel'>;\n}\ndeclare module 'babel-cli/index' {\n  declare module.exports: $Exports<'babel-cli'>;\n}\ndeclare module 'babel-cli/index.js' {\n  declare module.exports: $Exports<'babel-cli'>;\n}\ndeclare module 'babel-cli/lib/_babel-node.js' {\n  declare module.exports: $Exports<'babel-cli/lib/_babel-node'>;\n}\ndeclare module 'babel-cli/lib/babel-external-helpers.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel-external-helpers'>;\n}\ndeclare module 'babel-cli/lib/babel-node.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel-node'>;\n}\ndeclare module 'babel-cli/lib/babel/dir.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel/dir'>;\n}\ndeclare module 'babel-cli/lib/babel/file.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel/file'>;\n}\ndeclare module 'babel-cli/lib/babel/index.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel/index'>;\n}\ndeclare module 'babel-cli/lib/babel/util.js' {\n  declare module.exports: $Exports<'babel-cli/lib/babel/util'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-eslint_vx.x.x.js",
    "content": "// flow-typed signature: c629444c86e11ef6fd2f3f7bc4c49632\n// flow-typed version: <<STUB>>/babel-eslint_v^7.1.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-eslint'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-eslint' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-eslint/babylon-to-espree/attachComments' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-eslint/babylon-to-espree/convertTemplateType' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-eslint/babylon-to-espree/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-eslint/babylon-to-espree/toAST' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-eslint/babylon-to-espree/toToken' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-eslint/babylon-to-espree/toTokens' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-eslint/babylon-to-espree/attachComments.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/attachComments'>;\n}\ndeclare module 'babel-eslint/babylon-to-espree/convertTemplateType.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/convertTemplateType'>;\n}\ndeclare module 'babel-eslint/babylon-to-espree/index.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/index'>;\n}\ndeclare module 'babel-eslint/babylon-to-espree/toAST.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toAST'>;\n}\ndeclare module 'babel-eslint/babylon-to-espree/toToken.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toToken'>;\n}\ndeclare module 'babel-eslint/babylon-to-espree/toTokens.js' {\n  declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toTokens'>;\n}\ndeclare module 'babel-eslint/index' {\n  declare module.exports: $Exports<'babel-eslint'>;\n}\ndeclare module 'babel-eslint/index.js' {\n  declare module.exports: $Exports<'babel-eslint'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-plugin-syntax-flow_vx.x.x.js",
    "content": "// flow-typed signature: 5d7c2096f6bc30ca468313001f450834\n// flow-typed version: <<STUB>>/babel-plugin-syntax-flow_v^6.18.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-plugin-syntax-flow'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-plugin-syntax-flow' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-plugin-syntax-flow/lib/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-plugin-syntax-flow/lib/index.js' {\n  declare module.exports: $Exports<'babel-plugin-syntax-flow/lib/index'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js",
    "content": "// flow-typed signature: 855ea31ab2c7db08a247b6cee0c102cd\n// flow-typed version: <<STUB>>/babel-plugin-transform-flow-strip-types_v^6.18.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-plugin-transform-flow-strip-types'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-plugin-transform-flow-strip-types' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-plugin-transform-flow-strip-types/lib/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-plugin-transform-flow-strip-types/lib/index.js' {\n  declare module.exports: $Exports<'babel-plugin-transform-flow-strip-types/lib/index'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-preset-es2015_vx.x.x.js",
    "content": "// flow-typed signature: bf7573d40f6e30c6231567a9e265e245\n// flow-typed version: <<STUB>>/babel-preset-es2015_v^6.18.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-preset-es2015'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-preset-es2015' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-preset-es2015/lib/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-preset-es2015/lib/index.js' {\n  declare module.exports: $Exports<'babel-preset-es2015/lib/index'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-preset-stage-1_vx.x.x.js",
    "content": "// flow-typed signature: 1e58255aa40e674d103a1075688c9846\n// flow-typed version: <<STUB>>/babel-preset-stage-1_v^6.16.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-preset-stage-1'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-preset-stage-1' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-preset-stage-1/lib/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-preset-stage-1/lib/index.js' {\n  declare module.exports: $Exports<'babel-preset-stage-1/lib/index'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/babel-watch_vx.x.x.js",
    "content": "// flow-typed signature: 1a65215b23bad8b23f7a002ddcac8dd9\n// flow-typed version: <<STUB>>/babel-watch_v^2.0.6/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'babel-watch'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'babel-watch' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'babel-watch/babel-watch' {\n  declare module.exports: any;\n}\n\ndeclare module 'babel-watch/runner' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'babel-watch/babel-watch.js' {\n  declare module.exports: $Exports<'babel-watch/babel-watch'>;\n}\ndeclare module 'babel-watch/runner.js' {\n  declare module.exports: $Exports<'babel-watch/runner'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint-config-standard_vx.x.x.js",
    "content": "// flow-typed signature: ca8fe33f0bf67720fe5e0b904410b0ae\n// flow-typed version: <<STUB>>/eslint-config-standard_v^6.2.1/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint-config-standard'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint-config-standard' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint-config-standard/test/basic' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-config-standard/test/validate-config' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint-config-standard/index' {\n  declare module.exports: $Exports<'eslint-config-standard'>;\n}\ndeclare module 'eslint-config-standard/index.js' {\n  declare module.exports: $Exports<'eslint-config-standard'>;\n}\ndeclare module 'eslint-config-standard/test/basic.js' {\n  declare module.exports: $Exports<'eslint-config-standard/test/basic'>;\n}\ndeclare module 'eslint-config-standard/test/validate-config.js' {\n  declare module.exports: $Exports<'eslint-config-standard/test/validate-config'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js",
    "content": "// flow-typed signature: 4cafa5d0a40ca126758232e98e85e341\n// flow-typed version: <<STUB>>/eslint-plugin-flowtype_v^2.25.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint-plugin-flowtype'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint-plugin-flowtype' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint-plugin-flowtype/bin/readmeAssertions' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/booleanStyle' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/defineFlowType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/genericSpacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireParameterType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireReturnType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireVariableType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/semi' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/sortKeys' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/useFlowType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/rules/validSyntax' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getParameterName' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/quoteName' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint-plugin-flowtype/bin/readmeAssertions.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/bin/readmeAssertions'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/index'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/booleanStyle.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/booleanStyle'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/defineFlowType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/defineFlowType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/delimiterDangle'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/genericSpacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/genericSpacing'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noDupeKeys'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noWeakTypes'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireParameterType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireParameterType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireReturnType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireReturnType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/requireVariableType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireVariableType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/semi.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/semi'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/sortKeys.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/sortKeys'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeIdMatch'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/useFlowType.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/useFlowType'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/rules/validSyntax.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/validSyntax'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getParameterName.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getParameterName'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/index'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFile'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/quoteName.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/quoteName'>;\n}\ndeclare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers.js' {\n  declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/spacingFixers'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint-plugin-import_vx.x.x.js",
    "content": "// flow-typed signature: ed95a0dbf4ede73fb2995e80197fc3e2\n// flow-typed version: <<STUB>>/eslint-plugin-import_v^2.0.1/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint-plugin-import'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint-plugin-import' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint-plugin-import/config/electron' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/errors' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/react-native' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/react' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/recommended' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/stage-0' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/config/warnings' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/core/importType' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/core/staticRequire' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/ExportMap' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/importDeclaration' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/default' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/export' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/extensions' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/first' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/imports-first' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/max-dependencies' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/named' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/namespace' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/newline-after-import' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-absolute-path' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-amd' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-commonjs' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-deprecated' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-duplicates' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-dynamic-require' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-extraneous-dependencies' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-internal-modules' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-mutable-exports' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-named-as-default-member' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-named-as-default' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-named-default' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-namespace' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-nodejs-modules' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-restricted-paths' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-unassigned-import' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-unresolved' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/no-webpack-loader-syntax' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/order' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/prefer-default-export' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/lib/rules/unambiguous' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-import/memo-parser/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint-plugin-import/config/electron.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/electron'>;\n}\ndeclare module 'eslint-plugin-import/config/errors.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/errors'>;\n}\ndeclare module 'eslint-plugin-import/config/react-native.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/react-native'>;\n}\ndeclare module 'eslint-plugin-import/config/react.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/react'>;\n}\ndeclare module 'eslint-plugin-import/config/recommended.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/recommended'>;\n}\ndeclare module 'eslint-plugin-import/config/stage-0.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/stage-0'>;\n}\ndeclare module 'eslint-plugin-import/config/warnings.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/config/warnings'>;\n}\ndeclare module 'eslint-plugin-import/lib/core/importType.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/core/importType'>;\n}\ndeclare module 'eslint-plugin-import/lib/core/staticRequire.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/core/staticRequire'>;\n}\ndeclare module 'eslint-plugin-import/lib/ExportMap.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/ExportMap'>;\n}\ndeclare module 'eslint-plugin-import/lib/importDeclaration.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/importDeclaration'>;\n}\ndeclare module 'eslint-plugin-import/lib/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/index'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/default.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/default'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/export.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/export'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/extensions.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/extensions'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/first.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/first'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/imports-first.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/imports-first'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/max-dependencies.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/max-dependencies'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/named.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/named'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/namespace.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/namespace'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/newline-after-import.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/newline-after-import'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-absolute-path.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-absolute-path'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-amd.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-amd'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-commonjs.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-commonjs'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-deprecated.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-deprecated'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-duplicates.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-duplicates'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-dynamic-require.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-dynamic-require'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-extraneous-dependencies.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-extraneous-dependencies'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-internal-modules.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-internal-modules'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-mutable-exports.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-mutable-exports'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-named-as-default-member.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-named-as-default-member'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-named-as-default.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-named-as-default'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-named-default.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-named-default'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-namespace.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-namespace'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-nodejs-modules.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-nodejs-modules'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-restricted-paths.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-restricted-paths'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-unassigned-import.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-unassigned-import'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-unresolved.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-unresolved'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/no-webpack-loader-syntax.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/no-webpack-loader-syntax'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/order.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/order'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/prefer-default-export.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/prefer-default-export'>;\n}\ndeclare module 'eslint-plugin-import/lib/rules/unambiguous.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/lib/rules/unambiguous'>;\n}\ndeclare module 'eslint-plugin-import/memo-parser/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-import/memo-parser/index'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint-plugin-promise_vx.x.x.js",
    "content": "// flow-typed signature: 5fd6942ecac535ed44e1bdbc2d708b19\n// flow-typed version: <<STUB>>/eslint-plugin-promise_v^3.3.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint-plugin-promise'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint-plugin-promise' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint-plugin-promise/rules/always-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/avoid-new' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/catch-or-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/has-promise-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/is-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/is-inside-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/is-inside-promise' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/is-named-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/lib/is-promise' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/no-callback-in-promise' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/no-native' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/no-nesting' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/no-promise-in-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/no-return-wrap' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/param-names' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/prefer-await-to-callbacks' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-promise/rules/prefer-await-to-then' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint-plugin-promise/index' {\n  declare module.exports: $Exports<'eslint-plugin-promise'>;\n}\ndeclare module 'eslint-plugin-promise/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise'>;\n}\ndeclare module 'eslint-plugin-promise/rules/always-return.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/always-return'>;\n}\ndeclare module 'eslint-plugin-promise/rules/avoid-new.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/avoid-new'>;\n}\ndeclare module 'eslint-plugin-promise/rules/catch-or-return.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/catch-or-return'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/has-promise-callback.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/has-promise-callback'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/is-callback.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/is-callback'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/is-inside-callback.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/is-inside-callback'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/is-inside-promise.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/is-inside-promise'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/is-named-callback.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/is-named-callback'>;\n}\ndeclare module 'eslint-plugin-promise/rules/lib/is-promise.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/lib/is-promise'>;\n}\ndeclare module 'eslint-plugin-promise/rules/no-callback-in-promise.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/no-callback-in-promise'>;\n}\ndeclare module 'eslint-plugin-promise/rules/no-native.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/no-native'>;\n}\ndeclare module 'eslint-plugin-promise/rules/no-nesting.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/no-nesting'>;\n}\ndeclare module 'eslint-plugin-promise/rules/no-promise-in-callback.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/no-promise-in-callback'>;\n}\ndeclare module 'eslint-plugin-promise/rules/no-return-wrap.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/no-return-wrap'>;\n}\ndeclare module 'eslint-plugin-promise/rules/param-names.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/param-names'>;\n}\ndeclare module 'eslint-plugin-promise/rules/prefer-await-to-callbacks.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/prefer-await-to-callbacks'>;\n}\ndeclare module 'eslint-plugin-promise/rules/prefer-await-to-then.js' {\n  declare module.exports: $Exports<'eslint-plugin-promise/rules/prefer-await-to-then'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint-plugin-standard_vx.x.x.js",
    "content": "// flow-typed signature: 6327ffe504a28c2a1c05f1c46aa1ec71\n// flow-typed version: <<STUB>>/eslint-plugin-standard_v^2.0.1/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint-plugin-standard'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint-plugin-standard' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint-plugin-standard/rules/array-bracket-even-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-standard/rules/computed-property-even-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-standard/rules/object-curly-even-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-standard/tests/array-bracket-even-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-standard/tests/computed-property-even-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint-plugin-standard/tests/object-curly-even-spacing' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint-plugin-standard/index' {\n  declare module.exports: $Exports<'eslint-plugin-standard'>;\n}\ndeclare module 'eslint-plugin-standard/index.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard'>;\n}\ndeclare module 'eslint-plugin-standard/rules/array-bracket-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/rules/array-bracket-even-spacing'>;\n}\ndeclare module 'eslint-plugin-standard/rules/computed-property-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/rules/computed-property-even-spacing'>;\n}\ndeclare module 'eslint-plugin-standard/rules/object-curly-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/rules/object-curly-even-spacing'>;\n}\ndeclare module 'eslint-plugin-standard/tests/array-bracket-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/tests/array-bracket-even-spacing'>;\n}\ndeclare module 'eslint-plugin-standard/tests/computed-property-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/tests/computed-property-even-spacing'>;\n}\ndeclare module 'eslint-plugin-standard/tests/object-curly-even-spacing.js' {\n  declare module.exports: $Exports<'eslint-plugin-standard/tests/object-curly-even-spacing'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/eslint_vx.x.x.js",
    "content": "// flow-typed signature: 5f87357a0ad855387da13a010a5c9c1e\n// flow-typed version: <<STUB>>/eslint_v^3.8.1/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'eslint'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'eslint' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'eslint/bin/eslint' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/conf/cli-options' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/conf/environments' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/conf/eslint-all' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/conf/eslint-recommended' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/api' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/ast-utils' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/cli-engine' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/cli' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/code-path-analyzer' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/code-path-segment' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/code-path-state' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/code-path' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/debug-helpers' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/fork-context' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/code-path-analysis/id-generator' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/autoconfig' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/config-file' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/config-initializer' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/config-ops' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/config-rule' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/config-validator' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/environments' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/config/plugins' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/eslint' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/file-finder' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/checkstyle' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/codeframe' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/compact' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/html' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/jslint-xml' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/json' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/junit' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/stylish' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/table' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/tap' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/unix' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/formatters/visualstudio' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/ignored-paths' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/internal-rules/internal-consistent-docs-description' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/internal-rules/internal-no-invalid-meta' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/load-rules' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/logging' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/options' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rule-context' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/accessor-pairs' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/array-bracket-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/array-callback-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/arrow-body-style' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/arrow-parens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/arrow-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/block-scoped-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/block-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/brace-style' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/callback-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/camelcase' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/capitalized-comments' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/class-methods-use-this' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/comma-dangle' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/comma-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/comma-style' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/complexity' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/computed-property-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/consistent-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/consistent-this' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/constructor-super' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/curly' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/default-case' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/dot-location' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/dot-notation' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/eol-last' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/eqeqeq' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/func-call-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/func-name-matching' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/func-names' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/func-style' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/generator-star-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/global-require' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/guard-for-in' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/handle-callback-err' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/id-blacklist' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/id-length' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/id-match' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/indent' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/init-declarations' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/jsx-quotes' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/key-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/keyword-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/line-comment-position' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/linebreak-style' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/lines-around-comment' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/lines-around-directive' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-depth' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-len' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-lines' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-nested-callbacks' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-params' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-statements-per-line' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/max-statements' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/multiline-ternary' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/new-cap' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/new-parens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/newline-after-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/newline-before-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/newline-per-chained-call' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-alert' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-array-constructor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-await-in-loop' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-bitwise' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-caller' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-case-declarations' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-catch-shadow' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-class-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-cond-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-confusing-arrow' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-console' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-const-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-constant-condition' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-continue' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-control-regex' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-debugger' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-delete-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-div-regex' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-dupe-args' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-dupe-class-members' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-dupe-keys' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-duplicate-case' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-duplicate-imports' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-else-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-empty-character-class' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-empty-function' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-empty-pattern' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-empty' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-eq-null' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-eval' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-ex-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extend-native' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extra-bind' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extra-boolean-cast' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extra-label' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extra-parens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-extra-semi' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-fallthrough' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-floating-decimal' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-func-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-global-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-implicit-coercion' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-implicit-globals' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-implied-eval' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-inline-comments' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-inner-declarations' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-invalid-regexp' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-invalid-this' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-irregular-whitespace' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-iterator' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-label-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-labels' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-lone-blocks' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-lonely-if' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-loop-func' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-magic-numbers' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-mixed-operators' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-mixed-requires' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-mixed-spaces-and-tabs' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-multi-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-multi-spaces' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-multi-str' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-multiple-empty-lines' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-native-reassign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-negated-condition' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-negated-in-lhs' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-nested-ternary' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new-func' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new-object' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new-require' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new-symbol' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new-wrappers' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-new' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-obj-calls' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-octal-escape' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-octal' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-param-reassign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-path-concat' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-plusplus' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-process-env' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-process-exit' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-proto' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-prototype-builtins' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-redeclare' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-regex-spaces' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-restricted-globals' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-restricted-imports' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-restricted-modules' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-restricted-properties' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-restricted-syntax' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-return-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-return-await' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-script-url' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-self-assign' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-self-compare' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-sequences' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-shadow-restricted-names' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-shadow' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-spaced-func' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-sparse-arrays' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-sync' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-tabs' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-template-curly-in-string' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-ternary' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-this-before-super' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-throw-literal' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-trailing-spaces' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-undef-init' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-undef' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-undefined' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-underscore-dangle' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unexpected-multiline' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unmodified-loop-condition' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unneeded-ternary' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unreachable' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unsafe-finally' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unsafe-negation' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unused-expressions' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unused-labels' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-unused-vars' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-use-before-define' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-call' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-computed-key' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-concat' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-constructor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-escape' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-rename' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-useless-return' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-void' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-warning-comments' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-whitespace-before-property' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/no-with' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/object-curly-newline' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/object-curly-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/object-property-newline' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/object-shorthand' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/one-var-declaration-per-line' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/one-var' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/operator-assignment' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/operator-linebreak' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/padded-blocks' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-arrow-callback' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-const' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-destructuring' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-numeric-literals' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-promise-reject-errors' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-reflect' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-rest-params' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-spread' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/prefer-template' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/quote-props' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/quotes' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/radix' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/require-await' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/require-jsdoc' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/require-yield' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/rest-spread-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/semi-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/semi' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/sort-imports' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/sort-keys' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/sort-vars' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/space-before-blocks' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/space-before-function-paren' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/space-in-parens' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/space-infix-ops' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/space-unary-ops' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/spaced-comment' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/strict' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/symbol-description' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/template-curly-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/template-tag-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/unicode-bom' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/use-isnan' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/valid-jsdoc' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/valid-typeof' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/vars-on-top' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/wrap-iife' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/wrap-regex' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/yield-star-spacing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/rules/yoda' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/testers/event-generator-tester' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/testers/rule-tester' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/timing' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/backward-token-comment-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/backward-token-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/cursors' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/decorative-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/filter-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/forward-token-comment-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/forward-token-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/limit-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/padded-token-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/skip-cursor' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/token-store/utils' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/comment-event-generator' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/glob-util' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/glob' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/hash' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/keywords' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/module-resolver' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/node-event-generator' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/npm-util' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/path-util' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/patterns/letters' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/rule-fixer' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/source-code-fixer' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/source-code-util' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/source-code' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/traverser' {\n  declare module.exports: any;\n}\n\ndeclare module 'eslint/lib/util/xml-escape' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'eslint/bin/eslint.js' {\n  declare module.exports: $Exports<'eslint/bin/eslint'>;\n}\ndeclare module 'eslint/conf/cli-options.js' {\n  declare module.exports: $Exports<'eslint/conf/cli-options'>;\n}\ndeclare module 'eslint/conf/environments.js' {\n  declare module.exports: $Exports<'eslint/conf/environments'>;\n}\ndeclare module 'eslint/conf/eslint-all.js' {\n  declare module.exports: $Exports<'eslint/conf/eslint-all'>;\n}\ndeclare module 'eslint/conf/eslint-recommended.js' {\n  declare module.exports: $Exports<'eslint/conf/eslint-recommended'>;\n}\ndeclare module 'eslint/lib/api.js' {\n  declare module.exports: $Exports<'eslint/lib/api'>;\n}\ndeclare module 'eslint/lib/ast-utils.js' {\n  declare module.exports: $Exports<'eslint/lib/ast-utils'>;\n}\ndeclare module 'eslint/lib/cli-engine.js' {\n  declare module.exports: $Exports<'eslint/lib/cli-engine'>;\n}\ndeclare module 'eslint/lib/cli.js' {\n  declare module.exports: $Exports<'eslint/lib/cli'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/code-path-analyzer.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-analyzer'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/code-path-segment.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-segment'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/code-path-state.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-state'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/code-path.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/debug-helpers.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/debug-helpers'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/fork-context.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/fork-context'>;\n}\ndeclare module 'eslint/lib/code-path-analysis/id-generator.js' {\n  declare module.exports: $Exports<'eslint/lib/code-path-analysis/id-generator'>;\n}\ndeclare module 'eslint/lib/config.js' {\n  declare module.exports: $Exports<'eslint/lib/config'>;\n}\ndeclare module 'eslint/lib/config/autoconfig.js' {\n  declare module.exports: $Exports<'eslint/lib/config/autoconfig'>;\n}\ndeclare module 'eslint/lib/config/config-file.js' {\n  declare module.exports: $Exports<'eslint/lib/config/config-file'>;\n}\ndeclare module 'eslint/lib/config/config-initializer.js' {\n  declare module.exports: $Exports<'eslint/lib/config/config-initializer'>;\n}\ndeclare module 'eslint/lib/config/config-ops.js' {\n  declare module.exports: $Exports<'eslint/lib/config/config-ops'>;\n}\ndeclare module 'eslint/lib/config/config-rule.js' {\n  declare module.exports: $Exports<'eslint/lib/config/config-rule'>;\n}\ndeclare module 'eslint/lib/config/config-validator.js' {\n  declare module.exports: $Exports<'eslint/lib/config/config-validator'>;\n}\ndeclare module 'eslint/lib/config/environments.js' {\n  declare module.exports: $Exports<'eslint/lib/config/environments'>;\n}\ndeclare module 'eslint/lib/config/plugins.js' {\n  declare module.exports: $Exports<'eslint/lib/config/plugins'>;\n}\ndeclare module 'eslint/lib/eslint.js' {\n  declare module.exports: $Exports<'eslint/lib/eslint'>;\n}\ndeclare module 'eslint/lib/file-finder.js' {\n  declare module.exports: $Exports<'eslint/lib/file-finder'>;\n}\ndeclare module 'eslint/lib/formatters/checkstyle.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/checkstyle'>;\n}\ndeclare module 'eslint/lib/formatters/codeframe.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/codeframe'>;\n}\ndeclare module 'eslint/lib/formatters/compact.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/compact'>;\n}\ndeclare module 'eslint/lib/formatters/html.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/html'>;\n}\ndeclare module 'eslint/lib/formatters/jslint-xml.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/jslint-xml'>;\n}\ndeclare module 'eslint/lib/formatters/json.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/json'>;\n}\ndeclare module 'eslint/lib/formatters/junit.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/junit'>;\n}\ndeclare module 'eslint/lib/formatters/stylish.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/stylish'>;\n}\ndeclare module 'eslint/lib/formatters/table.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/table'>;\n}\ndeclare module 'eslint/lib/formatters/tap.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/tap'>;\n}\ndeclare module 'eslint/lib/formatters/unix.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/unix'>;\n}\ndeclare module 'eslint/lib/formatters/visualstudio.js' {\n  declare module.exports: $Exports<'eslint/lib/formatters/visualstudio'>;\n}\ndeclare module 'eslint/lib/ignored-paths.js' {\n  declare module.exports: $Exports<'eslint/lib/ignored-paths'>;\n}\ndeclare module 'eslint/lib/internal-rules/internal-consistent-docs-description.js' {\n  declare module.exports: $Exports<'eslint/lib/internal-rules/internal-consistent-docs-description'>;\n}\ndeclare module 'eslint/lib/internal-rules/internal-no-invalid-meta.js' {\n  declare module.exports: $Exports<'eslint/lib/internal-rules/internal-no-invalid-meta'>;\n}\ndeclare module 'eslint/lib/load-rules.js' {\n  declare module.exports: $Exports<'eslint/lib/load-rules'>;\n}\ndeclare module 'eslint/lib/logging.js' {\n  declare module.exports: $Exports<'eslint/lib/logging'>;\n}\ndeclare module 'eslint/lib/options.js' {\n  declare module.exports: $Exports<'eslint/lib/options'>;\n}\ndeclare module 'eslint/lib/rule-context.js' {\n  declare module.exports: $Exports<'eslint/lib/rule-context'>;\n}\ndeclare module 'eslint/lib/rules.js' {\n  declare module.exports: $Exports<'eslint/lib/rules'>;\n}\ndeclare module 'eslint/lib/rules/accessor-pairs.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/accessor-pairs'>;\n}\ndeclare module 'eslint/lib/rules/array-bracket-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/array-bracket-spacing'>;\n}\ndeclare module 'eslint/lib/rules/array-callback-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/array-callback-return'>;\n}\ndeclare module 'eslint/lib/rules/arrow-body-style.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/arrow-body-style'>;\n}\ndeclare module 'eslint/lib/rules/arrow-parens.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/arrow-parens'>;\n}\ndeclare module 'eslint/lib/rules/arrow-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/arrow-spacing'>;\n}\ndeclare module 'eslint/lib/rules/block-scoped-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/block-scoped-var'>;\n}\ndeclare module 'eslint/lib/rules/block-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/block-spacing'>;\n}\ndeclare module 'eslint/lib/rules/brace-style.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/brace-style'>;\n}\ndeclare module 'eslint/lib/rules/callback-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/callback-return'>;\n}\ndeclare module 'eslint/lib/rules/camelcase.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/camelcase'>;\n}\ndeclare module 'eslint/lib/rules/capitalized-comments.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/capitalized-comments'>;\n}\ndeclare module 'eslint/lib/rules/class-methods-use-this.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/class-methods-use-this'>;\n}\ndeclare module 'eslint/lib/rules/comma-dangle.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/comma-dangle'>;\n}\ndeclare module 'eslint/lib/rules/comma-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/comma-spacing'>;\n}\ndeclare module 'eslint/lib/rules/comma-style.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/comma-style'>;\n}\ndeclare module 'eslint/lib/rules/complexity.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/complexity'>;\n}\ndeclare module 'eslint/lib/rules/computed-property-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/computed-property-spacing'>;\n}\ndeclare module 'eslint/lib/rules/consistent-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/consistent-return'>;\n}\ndeclare module 'eslint/lib/rules/consistent-this.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/consistent-this'>;\n}\ndeclare module 'eslint/lib/rules/constructor-super.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/constructor-super'>;\n}\ndeclare module 'eslint/lib/rules/curly.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/curly'>;\n}\ndeclare module 'eslint/lib/rules/default-case.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/default-case'>;\n}\ndeclare module 'eslint/lib/rules/dot-location.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/dot-location'>;\n}\ndeclare module 'eslint/lib/rules/dot-notation.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/dot-notation'>;\n}\ndeclare module 'eslint/lib/rules/eol-last.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/eol-last'>;\n}\ndeclare module 'eslint/lib/rules/eqeqeq.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/eqeqeq'>;\n}\ndeclare module 'eslint/lib/rules/func-call-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/func-call-spacing'>;\n}\ndeclare module 'eslint/lib/rules/func-name-matching.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/func-name-matching'>;\n}\ndeclare module 'eslint/lib/rules/func-names.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/func-names'>;\n}\ndeclare module 'eslint/lib/rules/func-style.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/func-style'>;\n}\ndeclare module 'eslint/lib/rules/generator-star-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/generator-star-spacing'>;\n}\ndeclare module 'eslint/lib/rules/global-require.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/global-require'>;\n}\ndeclare module 'eslint/lib/rules/guard-for-in.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/guard-for-in'>;\n}\ndeclare module 'eslint/lib/rules/handle-callback-err.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/handle-callback-err'>;\n}\ndeclare module 'eslint/lib/rules/id-blacklist.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/id-blacklist'>;\n}\ndeclare module 'eslint/lib/rules/id-length.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/id-length'>;\n}\ndeclare module 'eslint/lib/rules/id-match.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/id-match'>;\n}\ndeclare module 'eslint/lib/rules/indent.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/indent'>;\n}\ndeclare module 'eslint/lib/rules/init-declarations.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/init-declarations'>;\n}\ndeclare module 'eslint/lib/rules/jsx-quotes.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/jsx-quotes'>;\n}\ndeclare module 'eslint/lib/rules/key-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/key-spacing'>;\n}\ndeclare module 'eslint/lib/rules/keyword-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/keyword-spacing'>;\n}\ndeclare module 'eslint/lib/rules/line-comment-position.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/line-comment-position'>;\n}\ndeclare module 'eslint/lib/rules/linebreak-style.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/linebreak-style'>;\n}\ndeclare module 'eslint/lib/rules/lines-around-comment.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/lines-around-comment'>;\n}\ndeclare module 'eslint/lib/rules/lines-around-directive.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/lines-around-directive'>;\n}\ndeclare module 'eslint/lib/rules/max-depth.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-depth'>;\n}\ndeclare module 'eslint/lib/rules/max-len.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-len'>;\n}\ndeclare module 'eslint/lib/rules/max-lines.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-lines'>;\n}\ndeclare module 'eslint/lib/rules/max-nested-callbacks.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-nested-callbacks'>;\n}\ndeclare module 'eslint/lib/rules/max-params.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-params'>;\n}\ndeclare module 'eslint/lib/rules/max-statements-per-line.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-statements-per-line'>;\n}\ndeclare module 'eslint/lib/rules/max-statements.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/max-statements'>;\n}\ndeclare module 'eslint/lib/rules/multiline-ternary.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/multiline-ternary'>;\n}\ndeclare module 'eslint/lib/rules/new-cap.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/new-cap'>;\n}\ndeclare module 'eslint/lib/rules/new-parens.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/new-parens'>;\n}\ndeclare module 'eslint/lib/rules/newline-after-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/newline-after-var'>;\n}\ndeclare module 'eslint/lib/rules/newline-before-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/newline-before-return'>;\n}\ndeclare module 'eslint/lib/rules/newline-per-chained-call.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/newline-per-chained-call'>;\n}\ndeclare module 'eslint/lib/rules/no-alert.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-alert'>;\n}\ndeclare module 'eslint/lib/rules/no-array-constructor.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-array-constructor'>;\n}\ndeclare module 'eslint/lib/rules/no-await-in-loop.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-await-in-loop'>;\n}\ndeclare module 'eslint/lib/rules/no-bitwise.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-bitwise'>;\n}\ndeclare module 'eslint/lib/rules/no-caller.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-caller'>;\n}\ndeclare module 'eslint/lib/rules/no-case-declarations.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-case-declarations'>;\n}\ndeclare module 'eslint/lib/rules/no-catch-shadow.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-catch-shadow'>;\n}\ndeclare module 'eslint/lib/rules/no-class-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-class-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-cond-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-cond-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-confusing-arrow.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-confusing-arrow'>;\n}\ndeclare module 'eslint/lib/rules/no-console.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-console'>;\n}\ndeclare module 'eslint/lib/rules/no-const-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-const-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-constant-condition.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-constant-condition'>;\n}\ndeclare module 'eslint/lib/rules/no-continue.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-continue'>;\n}\ndeclare module 'eslint/lib/rules/no-control-regex.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-control-regex'>;\n}\ndeclare module 'eslint/lib/rules/no-debugger.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-debugger'>;\n}\ndeclare module 'eslint/lib/rules/no-delete-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-delete-var'>;\n}\ndeclare module 'eslint/lib/rules/no-div-regex.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-div-regex'>;\n}\ndeclare module 'eslint/lib/rules/no-dupe-args.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-dupe-args'>;\n}\ndeclare module 'eslint/lib/rules/no-dupe-class-members.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-dupe-class-members'>;\n}\ndeclare module 'eslint/lib/rules/no-dupe-keys.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-dupe-keys'>;\n}\ndeclare module 'eslint/lib/rules/no-duplicate-case.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-case'>;\n}\ndeclare module 'eslint/lib/rules/no-duplicate-imports.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-imports'>;\n}\ndeclare module 'eslint/lib/rules/no-else-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-else-return'>;\n}\ndeclare module 'eslint/lib/rules/no-empty-character-class.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-empty-character-class'>;\n}\ndeclare module 'eslint/lib/rules/no-empty-function.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-empty-function'>;\n}\ndeclare module 'eslint/lib/rules/no-empty-pattern.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-empty-pattern'>;\n}\ndeclare module 'eslint/lib/rules/no-empty.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-empty'>;\n}\ndeclare module 'eslint/lib/rules/no-eq-null.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-eq-null'>;\n}\ndeclare module 'eslint/lib/rules/no-eval.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-eval'>;\n}\ndeclare module 'eslint/lib/rules/no-ex-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-ex-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-extend-native.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extend-native'>;\n}\ndeclare module 'eslint/lib/rules/no-extra-bind.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extra-bind'>;\n}\ndeclare module 'eslint/lib/rules/no-extra-boolean-cast.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extra-boolean-cast'>;\n}\ndeclare module 'eslint/lib/rules/no-extra-label.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extra-label'>;\n}\ndeclare module 'eslint/lib/rules/no-extra-parens.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extra-parens'>;\n}\ndeclare module 'eslint/lib/rules/no-extra-semi.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-extra-semi'>;\n}\ndeclare module 'eslint/lib/rules/no-fallthrough.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-fallthrough'>;\n}\ndeclare module 'eslint/lib/rules/no-floating-decimal.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-floating-decimal'>;\n}\ndeclare module 'eslint/lib/rules/no-func-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-func-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-global-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-global-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-implicit-coercion.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-implicit-coercion'>;\n}\ndeclare module 'eslint/lib/rules/no-implicit-globals.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-implicit-globals'>;\n}\ndeclare module 'eslint/lib/rules/no-implied-eval.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-implied-eval'>;\n}\ndeclare module 'eslint/lib/rules/no-inline-comments.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-inline-comments'>;\n}\ndeclare module 'eslint/lib/rules/no-inner-declarations.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-inner-declarations'>;\n}\ndeclare module 'eslint/lib/rules/no-invalid-regexp.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-invalid-regexp'>;\n}\ndeclare module 'eslint/lib/rules/no-invalid-this.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-invalid-this'>;\n}\ndeclare module 'eslint/lib/rules/no-irregular-whitespace.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-irregular-whitespace'>;\n}\ndeclare module 'eslint/lib/rules/no-iterator.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-iterator'>;\n}\ndeclare module 'eslint/lib/rules/no-label-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-label-var'>;\n}\ndeclare module 'eslint/lib/rules/no-labels.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-labels'>;\n}\ndeclare module 'eslint/lib/rules/no-lone-blocks.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-lone-blocks'>;\n}\ndeclare module 'eslint/lib/rules/no-lonely-if.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-lonely-if'>;\n}\ndeclare module 'eslint/lib/rules/no-loop-func.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-loop-func'>;\n}\ndeclare module 'eslint/lib/rules/no-magic-numbers.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-magic-numbers'>;\n}\ndeclare module 'eslint/lib/rules/no-mixed-operators.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-mixed-operators'>;\n}\ndeclare module 'eslint/lib/rules/no-mixed-requires.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-mixed-requires'>;\n}\ndeclare module 'eslint/lib/rules/no-mixed-spaces-and-tabs.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-mixed-spaces-and-tabs'>;\n}\ndeclare module 'eslint/lib/rules/no-multi-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-multi-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-multi-spaces.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-multi-spaces'>;\n}\ndeclare module 'eslint/lib/rules/no-multi-str.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-multi-str'>;\n}\ndeclare module 'eslint/lib/rules/no-multiple-empty-lines.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-multiple-empty-lines'>;\n}\ndeclare module 'eslint/lib/rules/no-native-reassign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-native-reassign'>;\n}\ndeclare module 'eslint/lib/rules/no-negated-condition.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-negated-condition'>;\n}\ndeclare module 'eslint/lib/rules/no-negated-in-lhs.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-negated-in-lhs'>;\n}\ndeclare module 'eslint/lib/rules/no-nested-ternary.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-nested-ternary'>;\n}\ndeclare module 'eslint/lib/rules/no-new-func.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new-func'>;\n}\ndeclare module 'eslint/lib/rules/no-new-object.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new-object'>;\n}\ndeclare module 'eslint/lib/rules/no-new-require.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new-require'>;\n}\ndeclare module 'eslint/lib/rules/no-new-symbol.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new-symbol'>;\n}\ndeclare module 'eslint/lib/rules/no-new-wrappers.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new-wrappers'>;\n}\ndeclare module 'eslint/lib/rules/no-new.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-new'>;\n}\ndeclare module 'eslint/lib/rules/no-obj-calls.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-obj-calls'>;\n}\ndeclare module 'eslint/lib/rules/no-octal-escape.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-octal-escape'>;\n}\ndeclare module 'eslint/lib/rules/no-octal.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-octal'>;\n}\ndeclare module 'eslint/lib/rules/no-param-reassign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-param-reassign'>;\n}\ndeclare module 'eslint/lib/rules/no-path-concat.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-path-concat'>;\n}\ndeclare module 'eslint/lib/rules/no-plusplus.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-plusplus'>;\n}\ndeclare module 'eslint/lib/rules/no-process-env.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-process-env'>;\n}\ndeclare module 'eslint/lib/rules/no-process-exit.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-process-exit'>;\n}\ndeclare module 'eslint/lib/rules/no-proto.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-proto'>;\n}\ndeclare module 'eslint/lib/rules/no-prototype-builtins.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-prototype-builtins'>;\n}\ndeclare module 'eslint/lib/rules/no-redeclare.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-redeclare'>;\n}\ndeclare module 'eslint/lib/rules/no-regex-spaces.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-regex-spaces'>;\n}\ndeclare module 'eslint/lib/rules/no-restricted-globals.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-restricted-globals'>;\n}\ndeclare module 'eslint/lib/rules/no-restricted-imports.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-restricted-imports'>;\n}\ndeclare module 'eslint/lib/rules/no-restricted-modules.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-restricted-modules'>;\n}\ndeclare module 'eslint/lib/rules/no-restricted-properties.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-restricted-properties'>;\n}\ndeclare module 'eslint/lib/rules/no-restricted-syntax.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-restricted-syntax'>;\n}\ndeclare module 'eslint/lib/rules/no-return-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-return-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-return-await.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-return-await'>;\n}\ndeclare module 'eslint/lib/rules/no-script-url.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-script-url'>;\n}\ndeclare module 'eslint/lib/rules/no-self-assign.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-self-assign'>;\n}\ndeclare module 'eslint/lib/rules/no-self-compare.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-self-compare'>;\n}\ndeclare module 'eslint/lib/rules/no-sequences.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-sequences'>;\n}\ndeclare module 'eslint/lib/rules/no-shadow-restricted-names.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-shadow-restricted-names'>;\n}\ndeclare module 'eslint/lib/rules/no-shadow.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-shadow'>;\n}\ndeclare module 'eslint/lib/rules/no-spaced-func.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-spaced-func'>;\n}\ndeclare module 'eslint/lib/rules/no-sparse-arrays.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-sparse-arrays'>;\n}\ndeclare module 'eslint/lib/rules/no-sync.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-sync'>;\n}\ndeclare module 'eslint/lib/rules/no-tabs.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-tabs'>;\n}\ndeclare module 'eslint/lib/rules/no-template-curly-in-string.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-template-curly-in-string'>;\n}\ndeclare module 'eslint/lib/rules/no-ternary.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-ternary'>;\n}\ndeclare module 'eslint/lib/rules/no-this-before-super.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-this-before-super'>;\n}\ndeclare module 'eslint/lib/rules/no-throw-literal.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-throw-literal'>;\n}\ndeclare module 'eslint/lib/rules/no-trailing-spaces.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-trailing-spaces'>;\n}\ndeclare module 'eslint/lib/rules/no-undef-init.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-undef-init'>;\n}\ndeclare module 'eslint/lib/rules/no-undef.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-undef'>;\n}\ndeclare module 'eslint/lib/rules/no-undefined.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-undefined'>;\n}\ndeclare module 'eslint/lib/rules/no-underscore-dangle.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-underscore-dangle'>;\n}\ndeclare module 'eslint/lib/rules/no-unexpected-multiline.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unexpected-multiline'>;\n}\ndeclare module 'eslint/lib/rules/no-unmodified-loop-condition.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unmodified-loop-condition'>;\n}\ndeclare module 'eslint/lib/rules/no-unneeded-ternary.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unneeded-ternary'>;\n}\ndeclare module 'eslint/lib/rules/no-unreachable.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unreachable'>;\n}\ndeclare module 'eslint/lib/rules/no-unsafe-finally.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-finally'>;\n}\ndeclare module 'eslint/lib/rules/no-unsafe-negation.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-negation'>;\n}\ndeclare module 'eslint/lib/rules/no-unused-expressions.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unused-expressions'>;\n}\ndeclare module 'eslint/lib/rules/no-unused-labels.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unused-labels'>;\n}\ndeclare module 'eslint/lib/rules/no-unused-vars.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-unused-vars'>;\n}\ndeclare module 'eslint/lib/rules/no-use-before-define.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-use-before-define'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-call.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-call'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-computed-key.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-computed-key'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-concat.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-concat'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-constructor.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-constructor'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-escape.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-escape'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-rename.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-rename'>;\n}\ndeclare module 'eslint/lib/rules/no-useless-return.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-useless-return'>;\n}\ndeclare module 'eslint/lib/rules/no-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-var'>;\n}\ndeclare module 'eslint/lib/rules/no-void.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-void'>;\n}\ndeclare module 'eslint/lib/rules/no-warning-comments.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-warning-comments'>;\n}\ndeclare module 'eslint/lib/rules/no-whitespace-before-property.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-whitespace-before-property'>;\n}\ndeclare module 'eslint/lib/rules/no-with.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/no-with'>;\n}\ndeclare module 'eslint/lib/rules/object-curly-newline.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/object-curly-newline'>;\n}\ndeclare module 'eslint/lib/rules/object-curly-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/object-curly-spacing'>;\n}\ndeclare module 'eslint/lib/rules/object-property-newline.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/object-property-newline'>;\n}\ndeclare module 'eslint/lib/rules/object-shorthand.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/object-shorthand'>;\n}\ndeclare module 'eslint/lib/rules/one-var-declaration-per-line.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/one-var-declaration-per-line'>;\n}\ndeclare module 'eslint/lib/rules/one-var.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/one-var'>;\n}\ndeclare module 'eslint/lib/rules/operator-assignment.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/operator-assignment'>;\n}\ndeclare module 'eslint/lib/rules/operator-linebreak.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/operator-linebreak'>;\n}\ndeclare module 'eslint/lib/rules/padded-blocks.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/padded-blocks'>;\n}\ndeclare module 'eslint/lib/rules/prefer-arrow-callback.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-arrow-callback'>;\n}\ndeclare module 'eslint/lib/rules/prefer-const.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-const'>;\n}\ndeclare module 'eslint/lib/rules/prefer-destructuring.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-destructuring'>;\n}\ndeclare module 'eslint/lib/rules/prefer-numeric-literals.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-numeric-literals'>;\n}\ndeclare module 'eslint/lib/rules/prefer-promise-reject-errors.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-promise-reject-errors'>;\n}\ndeclare module 'eslint/lib/rules/prefer-reflect.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-reflect'>;\n}\ndeclare module 'eslint/lib/rules/prefer-rest-params.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-rest-params'>;\n}\ndeclare module 'eslint/lib/rules/prefer-spread.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-spread'>;\n}\ndeclare module 'eslint/lib/rules/prefer-template.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/prefer-template'>;\n}\ndeclare module 'eslint/lib/rules/quote-props.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/quote-props'>;\n}\ndeclare module 'eslint/lib/rules/quotes.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/quotes'>;\n}\ndeclare module 'eslint/lib/rules/radix.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/radix'>;\n}\ndeclare module 'eslint/lib/rules/require-await.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/require-await'>;\n}\ndeclare module 'eslint/lib/rules/require-jsdoc.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/require-jsdoc'>;\n}\ndeclare module 'eslint/lib/rules/require-yield.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/require-yield'>;\n}\ndeclare module 'eslint/lib/rules/rest-spread-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/rest-spread-spacing'>;\n}\ndeclare module 'eslint/lib/rules/semi-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/semi-spacing'>;\n}\ndeclare module 'eslint/lib/rules/semi.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/semi'>;\n}\ndeclare module 'eslint/lib/rules/sort-imports.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/sort-imports'>;\n}\ndeclare module 'eslint/lib/rules/sort-keys.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/sort-keys'>;\n}\ndeclare module 'eslint/lib/rules/sort-vars.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/sort-vars'>;\n}\ndeclare module 'eslint/lib/rules/space-before-blocks.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/space-before-blocks'>;\n}\ndeclare module 'eslint/lib/rules/space-before-function-paren.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/space-before-function-paren'>;\n}\ndeclare module 'eslint/lib/rules/space-in-parens.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/space-in-parens'>;\n}\ndeclare module 'eslint/lib/rules/space-infix-ops.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/space-infix-ops'>;\n}\ndeclare module 'eslint/lib/rules/space-unary-ops.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/space-unary-ops'>;\n}\ndeclare module 'eslint/lib/rules/spaced-comment.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/spaced-comment'>;\n}\ndeclare module 'eslint/lib/rules/strict.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/strict'>;\n}\ndeclare module 'eslint/lib/rules/symbol-description.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/symbol-description'>;\n}\ndeclare module 'eslint/lib/rules/template-curly-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/template-curly-spacing'>;\n}\ndeclare module 'eslint/lib/rules/template-tag-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/template-tag-spacing'>;\n}\ndeclare module 'eslint/lib/rules/unicode-bom.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/unicode-bom'>;\n}\ndeclare module 'eslint/lib/rules/use-isnan.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/use-isnan'>;\n}\ndeclare module 'eslint/lib/rules/valid-jsdoc.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/valid-jsdoc'>;\n}\ndeclare module 'eslint/lib/rules/valid-typeof.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/valid-typeof'>;\n}\ndeclare module 'eslint/lib/rules/vars-on-top.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/vars-on-top'>;\n}\ndeclare module 'eslint/lib/rules/wrap-iife.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/wrap-iife'>;\n}\ndeclare module 'eslint/lib/rules/wrap-regex.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/wrap-regex'>;\n}\ndeclare module 'eslint/lib/rules/yield-star-spacing.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/yield-star-spacing'>;\n}\ndeclare module 'eslint/lib/rules/yoda.js' {\n  declare module.exports: $Exports<'eslint/lib/rules/yoda'>;\n}\ndeclare module 'eslint/lib/testers/event-generator-tester.js' {\n  declare module.exports: $Exports<'eslint/lib/testers/event-generator-tester'>;\n}\ndeclare module 'eslint/lib/testers/rule-tester.js' {\n  declare module.exports: $Exports<'eslint/lib/testers/rule-tester'>;\n}\ndeclare module 'eslint/lib/timing.js' {\n  declare module.exports: $Exports<'eslint/lib/timing'>;\n}\ndeclare module 'eslint/lib/token-store/backward-token-comment-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/backward-token-comment-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/backward-token-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/backward-token-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/cursor'>;\n}\ndeclare module 'eslint/lib/token-store/cursors.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/cursors'>;\n}\ndeclare module 'eslint/lib/token-store/decorative-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/decorative-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/filter-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/filter-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/forward-token-comment-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/forward-token-comment-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/forward-token-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/forward-token-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/index.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/index'>;\n}\ndeclare module 'eslint/lib/token-store/limit-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/limit-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/padded-token-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/padded-token-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/skip-cursor.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/skip-cursor'>;\n}\ndeclare module 'eslint/lib/token-store/utils.js' {\n  declare module.exports: $Exports<'eslint/lib/token-store/utils'>;\n}\ndeclare module 'eslint/lib/util/comment-event-generator.js' {\n  declare module.exports: $Exports<'eslint/lib/util/comment-event-generator'>;\n}\ndeclare module 'eslint/lib/util/glob-util.js' {\n  declare module.exports: $Exports<'eslint/lib/util/glob-util'>;\n}\ndeclare module 'eslint/lib/util/glob.js' {\n  declare module.exports: $Exports<'eslint/lib/util/glob'>;\n}\ndeclare module 'eslint/lib/util/hash.js' {\n  declare module.exports: $Exports<'eslint/lib/util/hash'>;\n}\ndeclare module 'eslint/lib/util/keywords.js' {\n  declare module.exports: $Exports<'eslint/lib/util/keywords'>;\n}\ndeclare module 'eslint/lib/util/module-resolver.js' {\n  declare module.exports: $Exports<'eslint/lib/util/module-resolver'>;\n}\ndeclare module 'eslint/lib/util/node-event-generator.js' {\n  declare module.exports: $Exports<'eslint/lib/util/node-event-generator'>;\n}\ndeclare module 'eslint/lib/util/npm-util.js' {\n  declare module.exports: $Exports<'eslint/lib/util/npm-util'>;\n}\ndeclare module 'eslint/lib/util/path-util.js' {\n  declare module.exports: $Exports<'eslint/lib/util/path-util'>;\n}\ndeclare module 'eslint/lib/util/patterns/letters.js' {\n  declare module.exports: $Exports<'eslint/lib/util/patterns/letters'>;\n}\ndeclare module 'eslint/lib/util/rule-fixer.js' {\n  declare module.exports: $Exports<'eslint/lib/util/rule-fixer'>;\n}\ndeclare module 'eslint/lib/util/source-code-fixer.js' {\n  declare module.exports: $Exports<'eslint/lib/util/source-code-fixer'>;\n}\ndeclare module 'eslint/lib/util/source-code-util.js' {\n  declare module.exports: $Exports<'eslint/lib/util/source-code-util'>;\n}\ndeclare module 'eslint/lib/util/source-code.js' {\n  declare module.exports: $Exports<'eslint/lib/util/source-code'>;\n}\ndeclare module 'eslint/lib/util/traverser.js' {\n  declare module.exports: $Exports<'eslint/lib/util/traverser'>;\n}\ndeclare module 'eslint/lib/util/xml-escape.js' {\n  declare module.exports: $Exports<'eslint/lib/util/xml-escape'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/flow-bin_v0.x.x.js",
    "content": "// flow-typed signature: 6a5610678d4b01e13bbfbbc62bdaf583\n// flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x\n\ndeclare module \"flow-bin\" {\n  declare module.exports: string;\n}\n"
  },
  {
    "path": "flow-typed/npm/gonzales-pe_vx.x.x.js",
    "content": "// flow-typed signature: 750b2d64f194658ee7d5900e8c71c6dd\n// flow-typed version: <<STUB>>/gonzales-pe_v^4.0.3/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'gonzales-pe'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'gonzales-pe' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'gonzales-pe/bin/gonzales' {\n  declare module.exports: any;\n}\n\ndeclare module 'gonzales-pe/lib/gonzales' {\n  declare module.exports: any;\n}\n\ndeclare module 'gonzales-pe/webpack.config' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'gonzales-pe/bin/gonzales.js' {\n  declare module.exports: $Exports<'gonzales-pe/bin/gonzales'>;\n}\ndeclare module 'gonzales-pe/lib/gonzales.js' {\n  declare module.exports: $Exports<'gonzales-pe/lib/gonzales'>;\n}\ndeclare module 'gonzales-pe/webpack.config.js' {\n  declare module.exports: $Exports<'gonzales-pe/webpack.config'>;\n}\n"
  },
  {
    "path": "flow-typed/npm/lodash_v4.x.x.js",
    "content": "// flow-typed signature: f0ca92a5557e6def26ab8132bc2ae10f\n// flow-typed version: 12af8270f6/lodash_v4.x.x/flow_>=v0.28.x_<=v0.37.x\n\ndeclare module 'lodash' {\n  declare type TemplateSettings = {\n    escape?: RegExp,\n    evaluate?: RegExp,\n    imports?: Object,\n    interpolate?: RegExp,\n    variable?: string,\n  };\n\n  declare type TruncateOptions = {\n    length?: number,\n    omission?: string,\n    separator?: RegExp|string,\n  };\n\n  declare type DebounceOptions = {\n    leading?: bool,\n    maxWait?: number,\n    trailing?: bool,\n  };\n\n  declare type ThrottleOptions = {\n    leading?: bool,\n    trailing?: bool,\n  };\n\n  declare type NestedArray<T> = Array<Array<T>>;\n\n  declare type matchesIterateeShorthand = Object;\n  declare type matchesPropertyIterateeShorthand = [string, any];\n  declare type propertyIterateeShorthand = string;\n\n  declare type OPredicate<A, O> =\n    | ((value: A, key: string, object: O) => any)\n    | matchesIterateeShorthand\n    | matchesPropertyIterateeShorthand\n    | propertyIterateeShorthand;\n\n  declare type OIterateeWithResult<V, O, R> = Object|string|((value: V, key: string, object: O) => R);\n  declare type OIteratee<O> = OIterateeWithResult<any, O, any>;\n  declare type OFlatMapIteratee<T, U> = OIterateeWithResult<any, T, Array<U>>;\n\n  declare type Predicate<T> =\n    | ((value: T, index: number, array: Array<T>) => any)\n    | matchesIterateeShorthand\n    | matchesPropertyIterateeShorthand\n    | propertyIterateeShorthand;\n\n  declare type _Iteratee<T> = (item: T, index: number, array: ?Array<T>) => mixed;\n  declare type Iteratee<T> = _Iteratee<T>|Object|string;\n  declare type Iteratee2<T, U> = ((item: T, index: number, array: ?Array<T>) => U)|Object|string;\n  declare type FlatMapIteratee<T, U> = ((item: T, index: number, array: ?Array<T>) => Array<U>)|Object|string;\n  declare type Comparator<T> = (item: T, item2: T) => bool;\n\n  declare type MapIterator<T,U> =\n    | ((item: T, index: number, array: Array<T>) => U)\n    | propertyIterateeShorthand;\n\n  declare type OMapIterator<T,O,U> =\n    | ((item: T, key: string, object: O) => U)\n    | propertyIterateeShorthand;\n\n  declare class Lodash {\n    // Array\n    chunk<T>(array: ?Array<T>, size?: number): Array<Array<T>>;\n    compact<T,N:?T>(array: Array<N>): Array<T>;\n    concat<T>(base: Array<T>, ...elements: Array<any>): Array<T|any>;\n    difference<T>(array: ?Array<T>, values?: Array<T>): Array<T>;\n    differenceBy<T>(array: ?Array<T>, values: Array<T>, iteratee: Iteratee<T>): T[];\n    differenceWith<T>(array: T[], values: T[], comparator?: Comparator<T>): T[];\n    drop<T>(array: ?Array<T>, n?: number): Array<T>;\n    dropRight<T>(array: ?Array<T>, n?: number): Array<T>;\n    dropRightWhile<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    dropWhile<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    fill<T, U>(array: ?Array<T>, value: U, start?: number, end?: number): Array<T|U>;\n    findIndex<T>(array: ?Array<T>, predicate?: Predicate<T>): number;\n    findLastIndex<T>(array: ?Array<T>, predicate?: Predicate<T>): number;\n    // alias of _.head\n    first<T>(array: ?Array<T>): T;\n    flatten<T,X>(array: Array<Array<T>|X>): Array<T|X>;\n    flattenDeep<T>(array: any[]): Array<T>;\n    flattenDepth(array: any[], depth?: number): any[];\n    fromPairs<T>(pairs: Array<T>): Object;\n    head<T>(array: ?Array<T>): T;\n    indexOf<T>(array: ?Array<T>, value: T, fromIndex?: number): number;\n    initial<T>(array: ?Array<T>): Array<T>;\n    intersection<T>(...arrays: Array<Array<T>>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    intersectionBy<T>(a1: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    intersectionBy<T>(a1: Array<T>, a2: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    intersectionBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    intersectionBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    intersectionWith<T>(a1: Array<T>, comparator: Comparator<T>): Array<T>;\n    intersectionWith<T>(a1: Array<T>, a2: Array<T>, comparator: Comparator<T>): Array<T>;\n    intersectionWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, comparator: Comparator<T>): Array<T>;\n    intersectionWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, comparator: Comparator<T>): Array<T>;\n    join<T>(array: ?Array<T>, separator?: string): string;\n    last<T>(array: ?Array<T>): T;\n    lastIndexOf<T>(array: ?Array<T>, value: T, fromIndex?: number): number;\n    nth<T>(array: T[], n?: number): T;\n    pull<T>(array: ?Array<T>, ...values?: Array<T>): Array<T>;\n    pullAll<T>(array: ?Array<T>, values: Array<T>): Array<T>;\n    pullAllBy<T>(array: ?Array<T>, values: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    pullAllWith<T>(array?: T[], values: T[], comparator?: Function): T[];\n    pullAt<T>(array: ?Array<T>, ...indexed?: Array<number>): Array<T>;\n    pullAt<T>(array: ?Array<T>, indexed?: Array<number>): Array<T>;\n    remove<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    reverse<T>(array: ?Array<T>): Array<T>;\n    slice<T>(array: ?Array<T>, start?: number, end?: number): Array<T>;\n    sortedIndex<T>(array: ?Array<T>, value: T): number;\n    sortedIndexBy<T>(array: ?Array<T>, value: T, iteratee?: Iteratee<T>): number;\n    sortedIndexOf<T>(array: ?Array<T>, value: T): number;\n    sortedLastIndex<T>(array: ?Array<T>, value: T): number;\n    sortedLastIndexBy<T>(array: ?Array<T>, value: T, iteratee?: Iteratee<T>): number;\n    sortedLastIndexOf<T>(array: ?Array<T>, value: T): number;\n    sortedUniq<T>(array: ?Array<T>): Array<T>;\n    sortedUniqBy<T>(array: ?Array<T>, iteratee?: (value: T) => mixed): Array<T>;\n    tail<T>(array: ?Array<T>): Array<T>;\n    take<T>(array: ?Array<T>, n?: number): Array<T>;\n    takeRight<T>(array: ?Array<T>, n?: number): Array<T>;\n    takeRightWhile<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    takeWhile<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    union<T>(...arrays?: Array<Array<T>>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    unionBy<T>(a1: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    unionBy<T>(a1: Array<T>, a2: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    unionBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    unionBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    unionWith<T>(a1: Array<T>, comparator?: Comparator<T>): Array<T>;\n    unionWith<T>(a1: Array<T>, a2: Array<T>, comparator?: Comparator<T>): Array<T>;\n    unionWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, comparator?: Comparator<T>): Array<T>;\n    unionWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, comparator?: Comparator<T>): Array<T>;\n    uniq<T>(array: ?Array<T>): Array<T>;\n    uniqBy<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    uniqWith<T>(array: ?Array<T>, comparator?: Comparator<T>): Array<T>;\n    unzip<T>(array: ?Array<T>): Array<T>;\n    unzipWith<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    without<T>(array: ?Array<T>, ...values?: Array<T>): Array<T>;\n    xor<T>(...array: Array<Array<T>>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    xorBy<T>(a1: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    xorBy<T>(a1: Array<T>, a2: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    xorBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    xorBy<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    //Workaround until (...parameter: T, parameter2: U) works\n    xorWith<T>(a1: Array<T>, comparator?: Comparator<T>): Array<T>;\n    xorWith<T>(a1: Array<T>, a2: Array<T>, comparator?: Comparator<T>): Array<T>;\n    xorWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, comparator?: Comparator<T>): Array<T>;\n    xorWith<T>(a1: Array<T>, a2: Array<T>, a3: Array<T>, a4: Array<T>, comparator?: Comparator<T>): Array<T>;\n    zip<A, B>(a1: A[], a2: B[]): Array<[A, B]>;\n    zip<A, B, C>(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>;\n    zip<A, B, C, D>(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>;\n    zip<A, B, C, D, E>(a1: A[], a2: B[], a3: C[], a4: D[], a5: E[]): Array<[A, B, C, D, E]>;\n\n    zipObject(props?: Array<any>, values?: Array<any>): Object;\n    zipObjectDeep(props?: any[], values?: any): Object;\n    //Workaround until (...parameter: T, parameter2: U) works\n    zipWith<T>(a1: NestedArray<T>, iteratee?: Iteratee<T>): Array<T>;\n    zipWith<T>(a1: NestedArray<T>, a2: NestedArray<T>, iteratee?: Iteratee<T>): Array<T>;\n    zipWith<T>(a1: NestedArray<T>, a2: NestedArray<T>, a3: NestedArray<T>, iteratee?: Iteratee<T>): Array<T>;\n    zipWith<T>(a1: NestedArray<T>, a2: NestedArray<T>, a3: NestedArray<T>, a4: NestedArray<T>, iteratee?: Iteratee<T>): Array<T>;\n\n    // Collection\n    countBy<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Object;\n    countBy<T: Object>(object: T, iteratee?: OIteratee<T>): Object;\n    // alias of _.forEach\n    each<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    each<T: Object>(object: T, iteratee?: OIteratee<T>): T;\n    // alias of _.forEachRight\n    eachRight<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    eachRight<T: Object>(object: T, iteratee?: OIteratee<T>): T;\n    every<T>(array: ?Array<T>, iteratee?: Iteratee<T>): bool;\n    every<T: Object>(object: T, iteratee?: OIteratee<T>): bool;\n    filter<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    filter<A, T: {[id: string]: A}>(object: T, predicate?: OPredicate<A, T>): Array<A>;\n    find<T>(array: ?Array<T>, predicate?: Predicate<T>): T;\n    find<V, A, T: {[id: string]: A}>(object: T, predicate?: OPredicate<A, T>): V;\n    findLast<T>(array: ?Array<T>, predicate?: Predicate<T>): T;\n    findLast<V, A, T: {[id: string]: A}>(object: T, predicate?: OPredicate<A, T>): V;\n    flatMap<T, U>(array: ?Array<T>, iteratee?: FlatMapIteratee<T, U>): Array<U>;\n    flatMap<T: Object, U>(object: T, iteratee?: OFlatMapIteratee<T, U>): Array<U>;\n    flatMapDeep<T, U>(array: ?Array<T>, iteratee?: FlatMapIteratee<T, U>): Array<U>;\n    flatMapDeep<T: Object, U>(object: T, iteratee?: OFlatMapIteratee<T, U>): Array<U>;\n    flatMapDepth<T, U>(array: ?Array<T>, iteratee?: FlatMapIteratee<T, U>, depth?: number): Array<U>;\n    flatMapDepth<T: Object, U>(object: T, iteratee?: OFlatMapIteratee<T, U>, depth?: number): Array<U>;\n    forEach<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    forEach<T: Object>(object: T, iteratee?: OIteratee<T>): T;\n    forEachRight<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Array<T>;\n    forEachRight<T: Object>(object: T, iteratee?: OIteratee<T>): T;\n    groupBy<T>(array: ?Array<T>, iteratee?: Iteratee<T>): Object;\n    groupBy<T: Object>(object: T, iteratee?: OIteratee<T>): Object;\n    includes<T>(array: ?Array<T>, value: T, fromIndex?: number): bool;\n    includes<T: Object>(object: T, value: any, fromIndex?: number): bool;\n    includes(str: string, value: string, fromIndex?: number): bool;\n    invokeMap<T>(array: ?Array<T>, path: ((value: T) => Array<string>|string)|Array<string>|string, ...args?: Array<any>): Array<any>;\n    invokeMap<T: Object>(object: T, path: ((value: any) => Array<string>|string)|Array<string>|string, ...args?: Array<any>): Array<any>;\n    keyBy<T, V>(array: ?Array<T>, iteratee?: Iteratee2<T, V>): {[key: V]: T};\n    keyBy<V, T: Object>(object: T, iteratee?: OIteratee<T>): Object;\n    map<T, U>(array: ?Array<T>, iteratee?: MapIterator<T, U>): Array<U>;\n    map<V, T: Object, U>(object: ?T, iteratee?: OMapIterator<V, T, U>): Array<U>;\n    map(str: ?string, iteratee?: (char: string, index: number, str: string) => any): string;\n    orderBy<T>(array: ?Array<T>, iteratees?: Array<Iteratee<T>>|string, orders?: Array<'asc'|'desc'>|string): Array<T>;\n    orderBy<V, T: Object>(object: T, iteratees?: Array<OIteratee<*>>|string, orders?: Array<'asc'|'desc'>|string): Array<V>;\n    partition<T>(array: ?Array<T>, predicate?: Predicate<T>): NestedArray<T>;\n    partition<V, A, T: {[id: string]: A}>(object: T, predicate?: OPredicate<A, T>): NestedArray<V>;\n    reduce<T, U>(array: ?Array<T>, iteratee?: (accumulator: U, value: T, index: number, array: ?Array<T>) => U, accumulator?: U): U;\n    reduce<T: Object, U>(object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U): U;\n    reduceRight<T, U>(array: ?Array<T>, iteratee?: (accumulator: U, value: T, index: number, array: ?Array<T>) => U, accumulator?: U): U;\n    reduceRight<T: Object, U>(object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U): U;\n    reject<T>(array: ?Array<T>, predicate?: Predicate<T>): Array<T>;\n    reject<V: Object, A, T: {[id: string]: A}>(object: T, predicate?: OPredicate<A, T>): Array<V>;\n    sample<T>(array: ?Array<T>): T;\n    sample<V, T: Object>(object: T): V;\n    sampleSize<T>(array: ?Array<T>, n?: number): Array<T>;\n    sampleSize<V, T: Object>(object: T, n?: number): Array<V>;\n    shuffle<T>(array: ?Array<T>): Array<T>;\n    shuffle<V, T: Object>(object: T): Array<V>;\n    size(collection: Array<any>|Object): number;\n    some<T>(array: ?Array<T>, predicate?: Predicate<T>): bool;\n    some<A, T: {[id: string]: A}>(object?: ?T, predicate?: OPredicate<A, T>): bool;\n    sortBy<T>(array: ?Array<T>, ...iteratees?: Array<Iteratee<T>>): Array<T>;\n    sortBy<T>(array: ?Array<T>, iteratees?: Array<Iteratee<T>>): Array<T>;\n    sortBy<V, T: Object>(object: T, ...iteratees?: Array<OIteratee<T>>): Array<V>;\n    sortBy<V, T: Object>(object: T, iteratees?: Array<OIteratee<T>>): Array<V>;\n\n    // Date\n    now(): number;\n\n    // Function\n    after(n: number, fn: Function): Function;\n    ary(func: Function, n?: number): Function;\n    before(n: number, fn: Function): Function;\n    bind(func: Function, thisArg: any, ...partials: Array<any>): Function;\n    bindKey(obj: Object, key: string, ...partials: Array<any>): Function;\n    curry(func: Function, arity?: number): Function;\n    curryRight(func: Function, arity?: number): Function;\n    debounce(func: Function, wait?: number, options?: DebounceOptions): Function;\n    defer(func: Function, ...args?: Array<any>): number;\n    delay(func: Function, wait: number, ...args?: Array<any>): number;\n    flip(func: Function): Function;\n    memoize(func: Function, resolver?: Function): Function;\n    negate(predicate: Function): Function;\n    once(func: Function): Function;\n    overArgs(func: Function, ...transforms: Array<Function>): Function;\n    overArgs(func: Function, transforms: Array<Function>): Function;\n    partial(func: Function, ...partials: any[]): Function;\n    partialRight(func: Function, ...partials: Array<any>): Function;\n    partialRight(func: Function, partials: Array<any>): Function;\n    rearg(func: Function, ...indexes: Array<number>): Function;\n    rearg(func: Function, indexes: Array<number>): Function;\n    rest(func: Function, start?: number): Function;\n    spread(func: Function): Function;\n    throttle(func: Function, wait?: number, options?: ThrottleOptions): Function;\n    unary(func: Function): Function;\n    wrap(value: any, wrapper: Function): Function;\n\n    // Lang\n    castArray(value: *): any[];\n    clone<T>(value: T): T;\n    cloneDeep<T>(value: T): T;\n    cloneDeepWith<T, U>(value: T, customizer?: ?(value: T, key: number|string, object: T, stack: any) => U): U;\n    cloneWith<T, U>(value: T, customizer?: ?(value: T, key: number|string, object: T, stack: any) => U): U;\n    conformsTo<T:{[key:string]:mixed}>(source: T, predicates: T&{[key:string]:(x:any)=>boolean}): boolean;\n    eq(value: any, other: any): bool;\n    gt(value: any, other: any): bool;\n    gte(value: any, other: any): bool;\n    isArguments(value: any): bool;\n    isArray(value: any): bool;\n    isArrayBuffer(value: any): bool;\n    isArrayLike(value: any): bool;\n    isArrayLikeObject(value: any): bool;\n    isBoolean(value: any): bool;\n    isBuffer(value: any): bool;\n    isDate(value: any): bool;\n    isElement(value: any): bool;\n    isEmpty(value: any): bool;\n    isEqual(value: any, other: any): bool;\n    isEqualWith<T, U>(value: T, other: U, customizer?: (objValue: any, otherValue: any, key: number|string, object: T, other: U, stack: any) => bool|void): bool;\n    isError(value: any): bool;\n    isFinite(value: any): bool;\n    isFunction(value: Function): true;\n    isFunction(value: number|string|void|null|Object): false;\n    isInteger(value: any): bool;\n    isLength(value: any): bool;\n    isMap(value: any): bool;\n    isMatch(object?: ?Object, source: Object): bool;\n    isMatchWith<T: Object, U: Object>(object: T, source: U, customizer?: (objValue: any, srcValue: any, key: number|string, object: T, source: U) => bool|void): bool;\n    isNaN(value: any): bool;\n    isNative(value: any): bool;\n    isNil(value: any): bool;\n    isNull(value: any): bool;\n    isNumber(value: any): bool;\n    isObject(value: any): bool;\n    isObjectLike(value: any): bool;\n    isPlainObject(value: any): bool;\n    isRegExp(value: any): bool;\n    isSafeInteger(value: any): bool;\n    isSet(value: any): bool;\n    isString(value: string): true;\n    isString(value: number|Function|void|null|Object|Array<any>): false;\n    isSymbol(value: any): bool;\n    isTypedArray(value: any): bool;\n    isUndefined(value: any): bool;\n    isWeakMap(value: any): bool;\n    isWeakSet(value: any): bool;\n    lt(value: any, other: any): bool;\n    lte(value: any, other: any): bool;\n    toArray(value: any): Array<any>;\n    toFinite(value: any): number;\n    toInteger(value: any): number;\n    toLength(value: any): number;\n    toNumber(value: any): number;\n    toPlainObject(value: any): Object;\n    toSafeInteger(value: any): number;\n    toString(value: any): string;\n\n    // Math\n    add(augend: number, addend: number): number;\n    ceil(number: number, precision?: number): number;\n    divide(dividend: number, divisor: number): number;\n    floor(number: number, precision?: number): number;\n    max<T>(array: ?Array<T>): T;\n    maxBy<T>(array: ?Array<T>, iteratee?: Iteratee<T>): T;\n    mean(array: Array<*>): number;\n    meanBy<T>(array: Array<T>, iteratee?: Iteratee<T>): number;\n    min<T>(array: ?Array<T>): T;\n    minBy<T>(array: ?Array<T>, iteratee?: Iteratee<T>): T;\n    multiply(multiplier: number, multiplicand: number): number;\n    round(number: number, precision?: number): number;\n    subtract(minuend: number, subtrahend: number): number;\n    sum(array: Array<*>): number;\n    sumBy<T>(array: Array<T>, iteratee?: Iteratee<T>): number;\n\n    // number\n    clamp(number: number, lower?: number, upper: number): number;\n    inRange(number: number, start?: number, end: number): bool;\n    random(lower?: number, upper?: number, floating?: bool): number;\n\n    // Object\n    assign(object?: ?Object, ...sources?: Array<Object>): Object;\n    assignIn<A, B>(a: A, b: B): A & B;\n    assignIn<A, B, C>(a: A, b: B, c: C): A & B & C;\n    assignIn<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\n    assignIn<A, B, C, D, E>(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E;\n    assignInWith<T: Object, A: Object>(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object;\n    assignInWith<T: Object, A: Object, B: Object>(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object;\n    assignInWith<T: Object, A: Object, B: Object, C: Object>(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object;\n    assignInWith<T: Object, A: Object, B: Object, C: Object, D: Object>(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object;\n    assignWith<T: Object, A: Object>(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object;\n    assignWith<T: Object, A: Object, B: Object>(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object;\n    assignWith<T: Object, A: Object, B: Object, C: Object>(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object;\n    assignWith<T: Object, A: Object, B: Object, C: Object, D: Object>(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object;\n    at(object?: ?Object, ...paths: Array<string>): Array<any>;\n    at(object?: ?Object, paths: Array<string>): Array<any>;\n    create<T>(prototype: T, properties?: Object): $Supertype<T>;\n    defaults(object?: ?Object, ...sources?: Array<Object>): Object;\n    defaultsDeep(object?: ?Object, ...sources?: Array<Object>): Object;\n    // alias for _.toPairs\n    entries(object?: ?Object): NestedArray<any>;\n    // alias for _.toPairsIn\n    entriesIn(object?: ?Object): NestedArray<any>;\n    // alias for _.assignIn\n    extend<A, B>(a: A, b: B): A & B;\n    extend<A, B, C>(a: A, b: B, c: C): A & B & C;\n    extend<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\n    extend<A, B, C, D, E>(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E;\n    // alias for _.assignInWith\n    extendWith<T: Object, A: Object>(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object;\n    extendWith<T: Object, A: Object, B: Object>(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object;\n    extendWith<T: Object, A: Object, B: Object, C: Object>(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object;\n    extendWith<T: Object, A: Object, B: Object, C: Object, D: Object>(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object;\n    findKey<A, T: {[id: string]: A}>(object?: ?T, predicate?: OPredicate<A, T>): string|void;\n    findLastKey<A, T: {[id: string]: A}>(object?: ?T, predicate?: OPredicate<A, T>): string|void;\n    forIn(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    forInRight(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    forOwn(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    forOwnRight(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    functions(object?: ?Object): Array<string>;\n    functionsIn(object?: ?Object): Array<string>;\n    get(object?: ?Object, path?: ?Array<string>|string, defaultValue?: any): any;\n    has(object?: ?Object, path?: ?Array<string>|string): bool;\n    hasIn(object?: ?Object, path?: ?Array<string>|string): bool;\n    invert(object?: ?Object, multiVal?: bool): Object;\n    invertBy(object: ?Object, iteratee?: Function): Object;\n    invoke(object?: ?Object, path?: ?Array<string>|string, ...args?: Array<any>): any;\n    keys(object?: ?Object): Array<string>;\n    keysIn(object?: ?Object): Array<string>;\n    mapKeys(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    mapValues(object?: ?Object, iteratee?: OIteratee<*>): Object;\n    merge(object?: ?Object, ...sources?: Array<?Object>): Object;\n    mergeWith<T: Object, A: Object>(object: T, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object;\n    mergeWith<T: Object, A: Object, B: Object>(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object;\n    mergeWith<T: Object, A: Object, B: Object, C: Object>(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object;\n    mergeWith<T: Object, A: Object, B: Object, C: Object, D: Object>(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object;\n    omit(object?: ?Object, ...props: Array<string>): Object;\n    omit(object?: ?Object, props: Array<string>): Object;\n    omitBy<A, T: {[id: string]: A}>(object?: ?T, predicate?: OPredicate<A, T>): Object;\n    pick(object?: ?Object, ...props: Array<string>): Object;\n    pick(object?: ?Object, props: Array<string>): Object;\n    pickBy<A, T: {[id: string]: A}>(object?: ?T, predicate?: OPredicate<A, T>): Object;\n    result(object?: ?Object, path?: ?Array<string>|string, defaultValue?: any): any;\n    set(object?: ?Object, path?: ?Array<string>|string, value: any): Object;\n    setWith<T>(object: T, path?: ?Array<string>|string, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): Object;\n    toPairs(object?: ?Object|Array<*>): NestedArray<any>;\n    toPairsIn(object?: ?Object): NestedArray<any>;\n    transform(collection: Object|Array<any>, iteratee?: OIteratee<*>, accumulator?: any): any;\n    unset(object?: ?Object, path?: ?Array<string>|string): bool;\n    update(object: Object, path: string[]|string, updater: Function): Object;\n    updateWith(object: Object, path: string[]|string, updater: Function, customizer?: Function): Object;\n    values(object?: ?Object): Array<any>;\n    valuesIn(object?: ?Object): Array<any>;\n\n    // Seq\n    // harder to read, but this is _()\n    (value: any): any;\n    chain<T>(value: T): any;\n    tap<T>(value: T, interceptor: (value:T)=>any): T;\n    thru<T1,T2>(value: T1, interceptor: (value:T1)=>T2): T2;\n    // TODO: _.prototype.*\n\n    // String\n    camelCase(string?: ?string): string;\n    capitalize(string?: string): string;\n    deburr(string?: string): string;\n    endsWith(string?: string, target?: string, position?: number): bool;\n    escape(string?: string): string;\n    escapeRegExp(string?: string): string;\n    kebabCase(string?: string): string;\n    lowerCase(string?: string): string;\n    lowerFirst(string?: string): string;\n    pad(string?: string, length?: number, chars?: string): string;\n    padEnd(string?: string, length?: number, chars?: string): string;\n    padStart(string?: string, length?: number, chars?: string): string;\n    parseInt(string: string, radix?: number): number;\n    repeat(string?: string, n?: number): string;\n    replace(string?: string, pattern: RegExp|string, replacement: ((string: string) => string)|string): string;\n    snakeCase(string?: string): string;\n    split(string?: string, separator: RegExp|string, limit?: number): Array<string>;\n    startCase(string?: string): string;\n    startsWith(string?: string, target?: string, position?: number): bool;\n    template(string?: string, options?: TemplateSettings): Function;\n    toLower(string?: string): string;\n    toUpper(string?: string): string;\n    trim(string?: string, chars?: string): string;\n    trimEnd(string?: string, chars?: string): string;\n    trimStart(string?: string, chars?: string): string;\n    truncate(string?: string, options?: TruncateOptions): string;\n    unescape(string?: string): string;\n    upperCase(string?: string): string;\n    upperFirst(string?: string): string;\n    words(string?: string, pattern?: RegExp|string): Array<string>;\n\n    // Util\n    attempt(func: Function): any;\n    bindAll(object?: ?Object, methodNames: Array<string>): Object;\n    bindAll(object?: ?Object, ...methodNames: Array<string>): Object;\n    cond(pairs: NestedArray<Function>): Function;\n    conforms(source: Object): Function;\n    constant<T>(value: T): () => T;\n    defaultTo<T1:string|boolean|Object,T2>(value: T1, default: T2): T1;\n    // NaN is a number instead of its own type, otherwise it would behave like null/void\n    defaultTo<T1:number,T2>(value: T1, default: T2): T1|T2;\n    defaultTo<T1:void|null,T2>(value: T1, default: T2): T2;\n    flow(...funcs?: Array<Function>): Function;\n    flow(funcs?: Array<Function>): Function;\n    flowRight(...funcs?: Array<Function>): Function;\n    flowRight(funcs?: Array<Function>): Function;\n    identity<T>(value: T): T;\n    iteratee(func?: any): Function;\n    matches(source: Object): Function;\n    matchesProperty(path?: ?Array<string>|string, srcValue: any): Function;\n    method(path?: ?Array<string>|string, ...args?: Array<any>): Function;\n    methodOf(object?: ?Object, ...args?: Array<any>): Function;\n    mixin<T: Function|Object>(object?: T, source: Object, options?: { chain: bool }): T;\n    noConflict(): Lodash;\n    noop(): void;\n    nthArg(n?: number): Function;\n    over(...iteratees: Array<Function>): Function;\n    over(iteratees: Array<Function>): Function;\n    overEvery(...predicates: Array<Function>): Function;\n    overEvery(predicates: Array<Function>): Function;\n    overSome(...predicates: Array<Function>): Function;\n    overSome(predicates: Array<Function>): Function;\n    property(path?: ?Array<string>|string): Function;\n    propertyOf(object?: ?Object): Function;\n    range(start: number, end: number, step?: number): Array<number>;\n    range(end: number, step?: number): Array<number>;\n    rangeRight(start: number, end: number, step?: number): Array<number>;\n    rangeRight(end: number, step?: number): Array<number>;\n    runInContext(context?: Object): Function;\n\n    stubArray(): Array<*>;\n    stubFalse(): false;\n    stubObject(): {};\n    stubString(): '';\n    stubTrue(): true;\n    times(n: number, ...rest: Array<void>): Array<number>;\n    times<T>(n: number, iteratee: ((i: number) => T)): Array<T>;\n    toPath(value: any): Array<string>;\n    uniqueId(prefix?: string): string;\n\n    // Properties\n    VERSION: string;\n    templateSettings: TemplateSettings;\n  }\n\n  declare var exports: Lodash;\n}\n"
  },
  {
    "path": "flow-typed/npm/mocha_v3.1.x.js",
    "content": "// flow-typed signature: 6b82cf8c1da27b4f0fa7a58e5ed5babf\n// flow-typed version: edf70dde46/mocha_v3.1.x/flow_>=v0.22.x\n\ntype TestFunction = ((done: () => void) => void | Promise<mixed>);\n\ndeclare var describe : {\n    (name:string, spec:() => void): void;\n    only(description:string, spec:() => void): void;\n    skip(description:string, spec:() => void): void;\n    timeout(ms:number): void;\n};\n\ndeclare var context : typeof describe;\n\ndeclare var it : {\n    (name:string, spec?:TestFunction): void;\n    only(description:string, spec:TestFunction): void;\n    skip(description:string, spec:TestFunction): void;\n    timeout(ms:number): void;\n};\n\ndeclare function before(method : TestFunction):void;\ndeclare function beforeEach(method : TestFunction):void;\ndeclare function after(method : TestFunction):void;\ndeclare function afterEach(method : TestFunction):void;\n"
  },
  {
    "path": "flow-typed/npm/nodemon_vx.x.x.js",
    "content": "// flow-typed signature: ecc82da093280a7b0eef229e40c481bc\n// flow-typed version: <<STUB>>/nodemon_v^1.11.0/flow_v0.36.0\n\n/**\n * This is an autogenerated libdef stub for:\n *\n *   'nodemon'\n *\n * Fill this stub out by replacing all the `any` types.\n *\n * Once filled out, we encourage you to share your work with the \n * community by sending a pull request to: \n * https://github.com/flowtype/flow-typed\n */\n\ndeclare module 'nodemon' {\n  declare module.exports: any;\n}\n\n/**\n * We include stubs for each file inside this npm package in case you need to\n * require those files directly. Feel free to delete any files that aren't\n * needed.\n */\ndeclare module 'nodemon/bin/nodemon' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/cli/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/cli/parse' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/config/command' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/config/defaults' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/config/exec' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/config/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/config/load' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/help/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/monitor/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/monitor/match' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/monitor/run' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/monitor/watch' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/nodemon' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/rules/add' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/rules/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/rules/parse' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/spawn' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/bus' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/clone' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/colour' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/index' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/log' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/utils/merge' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/lib/version' {\n  declare module.exports: any;\n}\n\ndeclare module 'nodemon/web/index' {\n  declare module.exports: any;\n}\n\n// Filename aliases\ndeclare module 'nodemon/bin/nodemon.js' {\n  declare module.exports: $Exports<'nodemon/bin/nodemon'>;\n}\ndeclare module 'nodemon/lib/cli/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/cli/index'>;\n}\ndeclare module 'nodemon/lib/cli/parse.js' {\n  declare module.exports: $Exports<'nodemon/lib/cli/parse'>;\n}\ndeclare module 'nodemon/lib/config/command.js' {\n  declare module.exports: $Exports<'nodemon/lib/config/command'>;\n}\ndeclare module 'nodemon/lib/config/defaults.js' {\n  declare module.exports: $Exports<'nodemon/lib/config/defaults'>;\n}\ndeclare module 'nodemon/lib/config/exec.js' {\n  declare module.exports: $Exports<'nodemon/lib/config/exec'>;\n}\ndeclare module 'nodemon/lib/config/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/config/index'>;\n}\ndeclare module 'nodemon/lib/config/load.js' {\n  declare module.exports: $Exports<'nodemon/lib/config/load'>;\n}\ndeclare module 'nodemon/lib/help/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/help/index'>;\n}\ndeclare module 'nodemon/lib/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/index'>;\n}\ndeclare module 'nodemon/lib/monitor/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/monitor/index'>;\n}\ndeclare module 'nodemon/lib/monitor/match.js' {\n  declare module.exports: $Exports<'nodemon/lib/monitor/match'>;\n}\ndeclare module 'nodemon/lib/monitor/run.js' {\n  declare module.exports: $Exports<'nodemon/lib/monitor/run'>;\n}\ndeclare module 'nodemon/lib/monitor/watch.js' {\n  declare module.exports: $Exports<'nodemon/lib/monitor/watch'>;\n}\ndeclare module 'nodemon/lib/nodemon.js' {\n  declare module.exports: $Exports<'nodemon/lib/nodemon'>;\n}\ndeclare module 'nodemon/lib/rules/add.js' {\n  declare module.exports: $Exports<'nodemon/lib/rules/add'>;\n}\ndeclare module 'nodemon/lib/rules/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/rules/index'>;\n}\ndeclare module 'nodemon/lib/rules/parse.js' {\n  declare module.exports: $Exports<'nodemon/lib/rules/parse'>;\n}\ndeclare module 'nodemon/lib/spawn.js' {\n  declare module.exports: $Exports<'nodemon/lib/spawn'>;\n}\ndeclare module 'nodemon/lib/utils/bus.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/bus'>;\n}\ndeclare module 'nodemon/lib/utils/clone.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/clone'>;\n}\ndeclare module 'nodemon/lib/utils/colour.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/colour'>;\n}\ndeclare module 'nodemon/lib/utils/index.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/index'>;\n}\ndeclare module 'nodemon/lib/utils/log.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/log'>;\n}\ndeclare module 'nodemon/lib/utils/merge.js' {\n  declare module.exports: $Exports<'nodemon/lib/utils/merge'>;\n}\ndeclare module 'nodemon/lib/version.js' {\n  declare module.exports: $Exports<'nodemon/lib/version'>;\n}\ndeclare module 'nodemon/web/index.js' {\n  declare module.exports: $Exports<'nodemon/web/index'>;\n}\n"
  },
  {
    "path": "lib/core/index.js",
    "content": "// @flow\n\nimport fs from 'fs';\nimport path from 'path';\nimport fp from 'lodash/fp';\nimport _ from 'lodash';\nimport gonzales from 'gonzales-pe';\n\nimport type { JsNode, gASTNode } from '../types';\n\nimport {\n  getRegularClassesMap,\n  getComposesClassesMap,\n  getExtendClassesMap,\n  getParentSelectorClassesMap,\n  getICSSExportPropsMap,\n  eliminateGlobals,\n} from './traversalUtils';\n\nconst styleExtensionRegex = /\\.(s?css|less)$/;\n\nfunction dashesCamelCase (str: string) {\n  return str.replace(/-+(\\w)/g, function (match, firstLetter) {\n    return firstLetter.toUpperCase();\n  });\n}\n\nexport const getFilePath = (context, styleFilePath) => {\n  const settings = context.settings['css-modules'];\n\n  const dirName = path.dirname(context.getFilename());\n  const basePath = (settings && settings.basePath) ? settings.basePath : '';\n\n  return styleFilePath.startsWith('.')\n    ? path.resolve(dirName, styleFilePath)\n    : path.resolve(basePath, styleFilePath);\n};\n\nexport const getPropertyName = (node: JsNode): ?string => {\n  const propertyName = node.computed\n    /*\n       square braces eg s['header']\n       we won't use node.property.name because it is for cases like\n       s[abc] where abc is a variable\n     */\n    ? node.property.value\n    /* dot notation, eg s.header */\n    : node.property.name;\n\n  /*\n     skip property names starting with _\n     eg. special functions provided\n     by css modules like _getCss()\n\n     Tried to just skip function calls, but the parser\n     thinks of normal property access like s._getCss and\n     function calls like s._getCss() as same.\n   */\n  if (!propertyName || _.startsWith(propertyName, '_')) {\n    return null;\n  }\n\n  return propertyName;\n};\n\nexport const getClassesMap = (classes: Object, camelCase: string|boolean): Object => {\n  const classesMap = {};\n\n  // Unroll the loop because of performance!\n  // Remember that this function will run on every lint (e.g.: on file save)\n  switch (camelCase) {\n    case true:\n      _.forIn(classes, (value, className) => {\n        classesMap[className] = className;\n        classesMap[_.camelCase(className)] = className;\n      });\n      break;\n    case 'dashes':\n      _.forIn(classes, (value, className) => {\n        classesMap[className] = className;\n        classesMap[dashesCamelCase(className)] = className;\n      });\n      break;\n    case 'only':\n      _.forIn(classes, (value, className) => {\n        classesMap[_.camelCase(className)] = className;\n      });\n      break;\n    case 'dashes-only':\n      _.forIn(classes, (value, className) => {\n        classesMap[dashesCamelCase(className)] = className;\n      });\n      break;\n    default:\n      _.forIn(classes, (value, className) => {\n        classesMap[className] = className;\n      });\n  }\n\n  return classesMap;\n};\n\nexport const getStyleImportNodeData = (node: JsNode): ?Object => {\n  // path from which it was imported\n  const styleFilePath = fp.get('source.value')(node);\n\n  if (styleFilePath && styleExtensionRegex.test(styleFilePath)) {\n    const importNode = fp.compose(\n      fp.find({ type: 'ImportDefaultSpecifier' }),\n      fp.get('specifiers'),\n    )(node);\n\n    // the default imported name\n    const importName = fp.get('local.name')(importNode);\n\n    if (importName) { // it had a default import\n      return { importName, styleFilePath, importNode };\n    }\n  }\n};\n\nexport const fileExists = (filePath: string): boolean => {\n  try {\n    // check if file exists\n    fs.statSync(filePath);\n    return true;\n  } catch (e) {\n    return false;\n  }\n};\n\n/**\n * @returns AST of the parsed file or null if parse failed\n */\nexport const getAST = (filePath: string): gASTNode | null => {\n  const fileContent = fs.readFileSync(filePath);\n\n  const syntax = path.extname(filePath).slice(1); // remove leading .\n\n  try {\n    return gonzales.parse(fileContent.toString(), { syntax });\n  } catch (e) {\n    return null;\n  }\n};\n\nexport const getStyleClasses = (ast: gASTNode): ?Object => {\n  /*\n     mutates ast by removing :global scopes\n   */\n  eliminateGlobals(ast);\n\n  const classesMap = getRegularClassesMap(ast);\n  const composedClassesMap = getComposesClassesMap(ast);\n  const extendClassesMap = getExtendClassesMap(ast);\n  const parentSelectorClassesMap = getParentSelectorClassesMap(ast);\n\n  return {\n    ...classesMap,\n    ...composedClassesMap,\n    ...extendClassesMap,\n    ...parentSelectorClassesMap\n  };\n};\n\nexport const getExportPropsMap = (ast: gASTNode): ?Object => {\n  const exportPropsMap = getICSSExportPropsMap(ast);\n  return {\n    ...exportPropsMap\n  };\n};\n"
  },
  {
    "path": "lib/core/traversalUtils.js",
    "content": "// @flow\n/* eslint-disable no-param-reassign */\nimport fp from 'lodash/fp';\n\nimport type { gASTNode } from '../types';\n\ntype classMapType = {\n  [key: string]: boolean,\n}\n\nexport const getICSSExportPropsMap = (ast: gASTNode): classMapType => {\n  const ruleSets: Array<gASTNode> = [];\n  ast.traverseByType('ruleset', node => ruleSets.push(node));\n\n  return fp.compose(\n    fp.reduce((result, key) => {\n      const prop = fp.compose(fp.nth(0), fp.map('content'))(key);\n      result[prop] = prop; // e.g. { myProp: 'myProp' }\n      return result;\n    }, {}),\n    fp.map('content'),\n    fp.filter({ type: 'property' }),\n    fp.flatMap('content'),\n    fp.filter({ type: 'declaration' }),\n    fp.flatMap('content'),\n    fp.filter({ type: 'block' }),\n    fp.flatMap('content'),\n    fp.filter({\n      content: [{\n        type: 'selector',\n        content: [{\n          type: 'pseudoClass',\n          content: [{\n            type: 'ident', content: 'export'\n          }]\n        }]\n      }]\n    })\n  )(ruleSets);\n};\n\nexport const getRegularClassesMap = (ast: gASTNode): classMapType => {\n  const ruleSets: Array<gASTNode> = [];\n  ast.traverseByType('ruleset', node => ruleSets.push(node));\n\n  return fp.compose(\n    fp.reduce((result, key) => {\n      result[key] = false; // classes haven't been used\n      return result;\n    }, {}),\n    fp.map('content'),\n    fp.filter({ type: 'ident' }),\n    fp.flatMap('content'),\n    fp.filter({ type: 'class' }),\n    fp.flatMap('content'),\n    fp.filter({ type: 'selector' }),\n    fp.flatMap('content'),\n  )(ruleSets);\n};\n\nexport const getComposesClassesMap = (ast: gASTNode): classMapType => {\n  const declarations = [];\n  ast.traverseByType('declaration', node => declarations.push(node));\n\n  return fp.compose(\n    fp.reduce((result, key) => {\n      result[key] = true; // mark composed classes as true\n      return result;\n    }, {}),\n    fp.flatMap(fp.compose(\n      fp.map(fp.get('content')),\n      fp.filter({ type: 'ident' }),\n      fp.get('content'),\n      fp.find({ type: 'value' }),\n      fp.get('content'),\n    )),\n    /*\n       reject classes composing from other files\n       eg.\n       .foo {\n       composes: .bar from './otherFile';\n       }\n     */\n    fp.reject(fp.compose(\n      fp.find({ type: 'ident', content: 'from' }),\n      fp.get('content'),\n      fp.find({ type: 'value' }),\n      fp.get('content'),\n    )),\n    fp.filter(fp.compose(\n      fp.find({ type: 'ident', content: 'composes' }),\n      fp.get('content'),\n      fp.find({ type: 'property' }),\n      fp.get('content'),\n    )),\n  )(declarations);\n};\n\nexport const getExtendClassesMap = (ast: gASTNode): classMapType => {\n  const extendNodes = [];\n  ast.traverseByType('extend', node => extendNodes.push(node));\n\n  return fp.compose(\n    fp.reduce((result, key) => {\n      result[key] = true; // mark extend classes as true\n      return result;\n    }, {}),\n    fp.map(fp.compose(\n      fp.get('content'),\n      fp.find({ type: 'ident' }),\n      fp.get('content'),\n      fp.find({ type: 'class' }),\n      fp.get('content'),\n      fp.find({ type: 'selector' }),\n      fp.get('content'),\n    )),\n  )(extendNodes);\n};\n\n/**\n * Resolves parent selectors to their full class names.\n *\n * E.g. `.foo { &_bar {color: blue } }` to `.foo_bar`.\n */\nexport const getParentSelectorClassesMap = (ast: gASTNode): classMapType => {\n  const classesMap: classMapType = {};\n\n  // Recursively traverses down the tree looking for parent selector\n  // extensions. Recursion is necessary as these selectors can be nested.\n  const getExtensions = nodeContent => {\n    const blockContent = fp.compose(\n      fp.flatMap('content'),\n      fp.filter({ type: 'block' })\n    )(nodeContent);\n\n    const rulesetsContent = fp.flatMap('content', fp.concat(\n      // `ruleset` children\n      fp.filter({ type: 'ruleset' }, blockContent),\n\n      // `ruleset` descendants nested in `include` nodes\n      fp.compose(\n        fp.filter({ type: 'ruleset' }),\n        fp.flatMap('content'),\n        fp.filter({ type: 'block' }),\n        fp.flatMap('content'),\n        fp.filter({ type: 'include' })\n      )(blockContent)\n    ));\n\n    const extensions = fp.compose(\n      fp.map('content'),\n      fp.filter({ type: 'ident' }),\n      fp.flatMap('content'),\n      fp.filter({ type: 'parentSelectorExtension' }),\n      fp.flatMap('content'),\n      fp.filter({ type: 'selector' })\n    )(rulesetsContent);\n\n    if (!extensions.length) return [];\n\n    const nestedExtensions = getExtensions(rulesetsContent);\n    const result = extensions;\n    if (nestedExtensions.length) {\n      nestedExtensions.forEach(nestedExt => {\n        extensions.forEach(ext => {\n          result.push(ext + nestedExt);\n        });\n      });\n    }\n\n    return result;\n  };\n\n  ast.traverseByType('ruleset', node => {\n    const classNames = fp.compose(\n      fp.map('content'),\n      fp.filter({ type: 'ident' }),\n      fp.flatMap('content'),\n      fp.filter({ type: 'class' }),\n      fp.flatMap('content'),\n      fp.filter({ type: 'selector' })\n    )(node.content);\n\n    if (!classNames.length) return;\n\n    const extensions = getExtensions(node.content);\n    if (!extensions.length) return;\n\n    classNames.forEach(className => {\n      extensions.forEach(ext => {\n        classesMap[className + ext] = false;\n      });\n\n      // Ignore the base class if it only exists for nesting parent selectors\n      const hasDeclarations = fp.compose(\n        fp.filter({ type: 'declaration' }),\n        fp.flatMap('content'),\n        fp.filter({ type: 'block' })\n      )(node.content).length > 0;\n      if (!hasDeclarations) classesMap[className] = true;\n    });\n  });\n\n  return classesMap;\n};\n\n/**\n * Mutates the AST by removing `:global` instances.\n *\n * For the AST structure:\n * @see https://github.com/css/gonzales/blob/master/doc/AST.CSSP.en.md\n */\nexport const eliminateGlobals = (ast: gASTNode) => {\n  // Remove all :global/:global(...) in selectors\n  ast.traverseByType('selector', (selectorNode) => {\n    const selectorContent = selectorNode.content;\n    let hasGlobalWithNoArgs = false;\n    let i = 0;\n    let currNode = selectorContent[i];\n    while (currNode) {\n      if (currNode.is('pseudoClass')) {\n        // Remove all :global/:global(...) and trailing space\n        const identifierNode = currNode.content[0];\n        if (identifierNode && identifierNode.content === 'global') {\n          if (currNode.content.length === 1) hasGlobalWithNoArgs = true;\n          selectorNode.removeChild(i);\n          if (selectorContent[i] && selectorContent[i].is('space')) {\n            selectorNode.removeChild(i);\n          }\n        } else {\n          i++;\n        }\n      } else if (currNode.is('class') && hasGlobalWithNoArgs) {\n        // Remove all class after :global and their trailing space\n        selectorNode.removeChild(i);\n        if (selectorContent[i] && selectorContent[i].is('space')) {\n          selectorNode.removeChild(i);\n        }\n      } else {\n        i++;\n      }\n\n      currNode = selectorContent[i];\n    }\n  });\n\n  // Remove all ruleset with no selectors\n  ast.traverseByType('ruleset', (node, index, parent) => {\n    const rulesetContent = node.content;\n\n    // Remove empty selectors and trailing deliminator and space\n    let i = 0;\n    let currNode = rulesetContent[i];\n    while (currNode) {\n      if (currNode.is('selector') && currNode.content.length === 0) {\n        node.removeChild(i);\n        if (rulesetContent[i].is('delimiter')) node.removeChild(i);\n        if (rulesetContent[i].is('space')) node.removeChild(i);\n      } else {\n        i++;\n      }\n      currNode = rulesetContent[i];\n    }\n\n    // Remove the ruleset if no selectors\n    if (rulesetContent.filter((node) => node.is('selector')).length === 0) {\n      parent.removeChild(index);\n    }\n  });\n};\n"
  },
  {
    "path": "lib/index.js",
    "content": "export rules from './rules';\n\nexport const configs = {\n  recommended: {\n    rules: {\n      'css-modules/no-unused-class': 2, // error\n      'css-modules/no-undef-class': 2, // error\n    }\n  }\n};\n"
  },
  {
    "path": "lib/rules/index.js",
    "content": "import noUnusedClass from './no-unused-class';\nimport noUndefClass from './no-undef-class';\n\nexport default {\n  'no-unused-class': noUnusedClass,\n  'no-undef-class': noUndefClass,\n};\n"
  },
  {
    "path": "lib/rules/no-undef-class.js",
    "content": "/* @flow */\nimport _ from 'lodash';\n\nimport {\n  getStyleImportNodeData,\n  getAST,\n  fileExists,\n  getStyleClasses,\n  getPropertyName,\n  getClassesMap,\n  getExportPropsMap,\n  getFilePath,\n} from '../core';\n\nimport type { JsNode } from '../types';\n\nexport default {\n  meta: {\n    docs: {\n      description: 'Checks that you are using the existent css/scss/less classes',\n      recommended: true,\n    },\n    schema: [\n      {\n        type: 'object',\n        properties: {\n          camelCase: { enum: [true, 'dashes', 'only', 'dashes-only'] }\n        },\n      }\n    ],\n  },\n  create (context: Object) {\n    const camelCase = _.get(context, 'options[0].camelCase');\n\n    /*\n       maps variable name to property Object\n       map = {\n         [variableName]: {\n           classesMap: { foo: 'foo', fooBar: 'foo-bar', 'foo-bar': 'foo-bar' },\n           node: {...}\n         }\n       }\n\n       example:\n       import s from './foo.scss';\n       s is variable name\n\n       property Object has two keys\n       1. classesMap: an object with propertyName as key and its className as value\n       2. node: node that correspond to s (see example above)\n     */\n    const map = {};\n\n    return {\n      ImportDeclaration (node: JsNode) {\n        const styleImportNodeData = getStyleImportNodeData(node);\n\n        if (!styleImportNodeData) {\n          return;\n        }\n\n        const {\n          importName,\n          styleFilePath,\n          importNode,\n        } = styleImportNodeData;\n\n        const styleFileAbsolutePath = getFilePath(context, styleFilePath);\n        let classesMap = {};\n        let exportPropsMap = {};\n\n        if (fileExists(styleFileAbsolutePath)) {\n          const ast = getAST(styleFileAbsolutePath);\n          const classes = ast && getStyleClasses(ast);\n\n          classesMap = classes && getClassesMap(classes, camelCase);\n          exportPropsMap = ast && getExportPropsMap(ast);\n        }\n\n        // this will be used to check if classes are defined\n        _.set(map, `${importName}.classesMap`, classesMap);\n\n        // this will be used to check if :export properties are defined\n        _.set(map, `${importName}.exportPropsMap`, exportPropsMap);\n\n        // save node for reporting unused styles\n        _.set(map, `${importName}.node`, importNode);\n      },\n      MemberExpression: (node: JsNode) => {\n        /*\n           Check if property exists in css/scss file as class\n         */\n\n        const objectName = node.object.name;\n\n        const propertyName = getPropertyName(node, camelCase);\n\n        if (!propertyName) {\n          return;\n        }\n\n        const classesMap = _.get(map, `${objectName}.classesMap`);\n        const exportPropsMap = _.get(map, `${objectName}.exportPropsMap`);\n\n        if (classesMap && classesMap[propertyName] == null &&\n            exportPropsMap && exportPropsMap[propertyName] == null) {\n          context.report(node.property, `Class or exported property '${propertyName}' not found`);\n        }\n      }\n    };\n  }\n};\n"
  },
  {
    "path": "lib/rules/no-unused-class.js",
    "content": "/* @flow */\nimport fp from 'lodash/fp';\nimport _ from 'lodash';\nimport path from 'path';\n\nimport {\n  getStyleImportNodeData,\n  getStyleClasses,\n  getPropertyName,\n  getClassesMap,\n  getFilePath,\n  getAST,\n  fileExists,\n} from '../core';\n\nimport type { JsNode } from '../types';\n\nexport default {\n  meta: {\n    docs: {\n      description: 'Checks that you are using all css/scss/less classes',\n      recommended: true,\n    },\n    schema: [\n      {\n        type: 'object',\n        properties: {\n          camelCase: { enum: [true, 'dashes', 'only', 'dashes-only'] },\n          markAsUsed: { type: 'array' },\n        },\n      }\n    ],\n  },\n  create (context: Object) {\n    const markAsUsed = _.get(context, 'options[0].markAsUsed');\n    const camelCase = _.get(context, 'options[0].camelCase');\n\n    /*\n       maps variable name to property Object\n       map = {\n         [variableName]: {\n           classes: { foo: false, 'foo-bar': false },\n           classesMap: { foo: 'foo', fooBar: 'foo-bar', 'foo-bar': 'foo-bar' },\n           node: {...}\n         }\n       }\n\n       example:\n       import s from './foo.scss';\n       s is variable name\n\n       property Object has two keys\n       1. classes: an object with className as key and a boolean as value. The boolean is marked if it is used in file\n       2. classesMap: an object with propertyName as key and its className as value\n       3. node: node that correspond to s (see example above)\n     */\n    const map = {};\n\n    return {\n      ImportDeclaration (node: JsNode) {\n        const styleImportNodeData = getStyleImportNodeData(node);\n\n        if (!styleImportNodeData) {\n          return;\n        }\n\n        const {\n          importName,\n          styleFilePath,\n          importNode,\n        } = styleImportNodeData;\n\n        const styleFileAbsolutePath = getFilePath(context, styleFilePath);\n\n        let classes = {};\n        let classesMap = {};\n\n        if (fileExists(styleFileAbsolutePath)) {\n          // this will be used to mark s.foo as used in MemberExpression\n          const ast = getAST(styleFileAbsolutePath);\n          classes = ast && getStyleClasses(ast);\n          classesMap = classes && getClassesMap(classes, camelCase);\n        }\n\n        _.set(map, `${importName}.classes`, classes);\n        _.set(map, `${importName}.classesMap`, classesMap);\n\n        // save node for reporting unused styles\n        _.set(map, `${importName}.node`, importNode);\n\n        // save file path for reporting unused styles\n        _.set(map, `${importName}.filePath`, styleFilePath);\n      },\n      MemberExpression: (node: JsNode) => {\n        /*\n           Check if property exists in css/scss file as class\n         */\n\n        const objectName = node.object.name;\n        const propertyName = getPropertyName(node, camelCase);\n\n        if (!propertyName) {\n          return;\n        }\n\n        const className = _.get(map, `${objectName}.classesMap.${propertyName}`);\n\n        if (className == null) {\n          return;\n        }\n\n        // mark this property has used\n        _.set(map, `${objectName}.classes.${className}`, true);\n      },\n      'Program:exit' () {\n        /*\n           Check if all classes defined in css/scss file are used\n         */\n\n        /*\n           we are looping over each import style node in program\n           example:\n           ```\n             import s from './foo.css';\n             import x from './bar.scss';\n           ```\n           then the loop will be run 2 times\n         */\n        _.forIn(map, (o) => {\n          const { classes, node, filePath } = o;\n\n          /*\n             if option is passed to mark a class as used, example:\n             eslint css-modules/no-unused-class: [2, { markAsUsed: ['container'] }]\n           */\n          _.forEach(markAsUsed, (usedClass) => {\n            classes[usedClass] = true;\n          });\n\n          // classNames not marked as true are unused\n          const unusedClasses = fp.compose(\n            fp.keys,\n            fp.omitBy(fp.identity), // omit truthy values\n          )(classes);\n\n          if (!_.isEmpty(unusedClasses)) {\n            context.report(node, `Unused classes found in ${path.basename(filePath)}: ${unusedClasses.join(', ')}`);\n          }\n        });\n      }\n    };\n  }\n};\n"
  },
  {
    "path": "lib/types/index.js",
    "content": "// js Node\nexport type Position = {\n  line: number, // 1 indexed\n  column: number, // 0 indexed\n};\n\nexport type SourceLocation = {\n  start: Position,\n  end: Position,\n  identifierName?: string,\n};\n\nexport type JsNode = {\n  type: 'ImportDeclaration' | 'ImportDefaultSpecifier',\n  start: number,\n  end: number,\n  loc: JsNode,\n  local?: JsNode,\n  name?: string,\n  value?: string,\n  specifiers?: Array<JsNode>,\n  importKind?: 'value',\n  extra?: {\n    rawValue: string,\n    raw: string,\n  },\n  source: JsNode,\n  range: Array<number>, // most probably array of 2 numbers ?,\n  _babelType: string,\n  parent: JsNode,\n};\n\n// gonzales AST Node Type\nexport type gASTNode = {\n  traverseByType: Function,\n\n  type: 'stylesheet'\n      | 'ident'\n      | 'class'\n      | 'selector'\n      | 'value'\n      | 'property'\n      | 'ruleset'\n      | 'extend'\n      | 'declaration',\n  content: string | Array<gASTNode>,\n  syntax: 'css' | 'scss' | 'less',\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"eslint-plugin-css-modules\",\n  \"version\": \"2.12.0\",\n  \"description\": \"Checks that you are using the existent css/scss/less classes, no more no less\",\n  \"main\": \"build/index.js\",\n  \"files\": [\n    \"build\",\n    \"packages\"\n  ],\n  \"scripts\": {\n    \"watch\": \"babel lib -d build --watch\",\n    \"build\": \"rm -rf build && babel lib -d build\",\n    \"lint\": \"eslint lib test\",\n    \"test\": \"mocha 'test/**/*.test.js' --compilers js:@babel/register\",\n    \"my-pre-publish\": \"npm run test && npm run build\",\n    \"my-publish\": \"npm run my-pre-publish && yarn publish\"\n  },\n  \"engines\": {\n    \"node\": \">=4.0.0\"\n  },\n  \"keywords\": [\n    \"eslint\",\n    \"eslintplugin\",\n    \"eslint-plugin\",\n    \"css-modules\"\n  ],\n  \"author\": {\n    \"name\": \"Atif Afzal\",\n    \"email\": \"atif5801@gmail.com\",\n    \"url\": \"http://atfzl.me\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/atfzl/eslint-plugin-css-modules.git\"\n  },\n  \"license\": \"MIT\",\n  \"peerDependencies\": {\n    \"eslint\": \">=2.0.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.23.0\",\n    \"@babel/core\": \"^7.23.0\",\n    \"@babel/eslint-parser\": \"^7.22.15\",\n    \"@babel/plugin-proposal-export-default-from\": \"^7.22.17\",\n    \"@babel/plugin-syntax-flow\": \"^7.22.5\",\n    \"@babel/plugin-transform-flow-strip-types\": \"^7.22.5\",\n    \"@babel/preset-env\": \"^7.22.20\",\n    \"@babel/register\": \"^7.22.15\",\n    \"chai\": \"^4.3.9\",\n    \"eslint\": \"^8.50.0\",\n    \"eslint-config-standard\": \"^17.1.0\",\n    \"eslint-plugin-import\": \"^2.28.1\",\n    \"eslint-plugin-mocha\": \"^10.2.0\",\n    \"eslint-plugin-n\": \"^16.1.0\",\n    \"eslint-plugin-promise\": \"^6.1.1\",\n    \"flow-bin\": \"^0.36.0\",\n    \"mocha\": \"^3.2.0\",\n    \"nodemon\": \"^3.0.1\"\n  },\n  \"dependencies\": {\n    \"gonzales-pe\": \"^4.3.0\",\n    \"lodash\": \"^4.17.2\"\n  }\n}\n"
  },
  {
    "path": "test/files/composes1.scss",
    "content": ".foo {\n  font-weight: 300;\n}\n\n.bar {\n  color: red;\n  composes: foo;\n}\n\n.baz {\n  composes: other from './otherfile';\n  color: blue;\n}\n"
  },
  {
    "path": "test/files/composesMultiple1.scss",
    "content": ".foo {\n  font-weight: 300;\n}\n\n.tar {\n  color: black;\n}\n\n.bar {\n  color: red;\n  composes: foo tar;\n}\n\n.baz {\n  composes: other from './otherfile';\n  color: blue;\n}\n"
  },
  {
    "path": "test/files/export1.scss",
    "content": ".bar {\n  color: blue;\n}\n\n:export {\n  myProp: something;\n}\n"
  },
  {
    "path": "test/files/export2.scss",
    "content": ".bar {\n  color: blue;\n}\n\n:export {\n  otherProp: something;\n}\n"
  },
  {
    "path": "test/files/extend1.scss",
    "content": ".foo {\n  font-weight: 300;\n}\n\n.bar {\n  @extend .foo;\n  color: red;\n}\n\n.baz {\n  width: 100px;\n}\n"
  },
  {
    "path": "test/files/foo.js",
    "content": "/*\n   nothing to see here\n   this file will be provided as filename parameter for RuleTester.\n   This file is referred in utils.js\n */\n"
  },
  {
    "path": "test/files/global1.scss",
    "content": ".local1 {}\n\n.local2 {\n  :global(.global1) {}\n}\n\n:global .global1 {}\n\n:global(.global2) {}\n\n:global {\n  .global1 {\n\n  }\n}\n\n.local3 {\n  :global {\n    .global2 {}\n  }\n}\n\n.local4 :global .global1 .global2 {}\n\n.local5 :global(.global1, .global2) .local6 {}"
  },
  {
    "path": "test/files/noUndefClass1.less",
    "content": ":global(.bold) {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "test/files/noUndefClass1.scss",
    "content": ".container {\n  min-width: 1024px;\n}\n"
  },
  {
    "path": "test/files/noUndefClass3.scss",
    "content": ".foo-bar {\n  display: flex;\n}\n\n.bar-foo {\n  display: flex;\n}\n\n.alreadyCamelCased {\n    display: flex;\n}\n\n.snake_cased {\n    display: flex;\n}\n\n:global(.bar) {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "test/files/noUnusedClass1.less",
    "content": ".foo {\n  display: flex;\n}\n\n:global(.bar) {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "test/files/noUnusedClass1.scss",
    "content": ".foo {\n  width: 100px;\n}\n\n.bar {\n  height: 100%;\n\n  .bold {\n    font-weight: bold;\n  }\n}\n"
  },
  {
    "path": "test/files/noUnusedClass2.scss",
    "content": ".foo {\n  display: flex;\n}\n\n:global(.bar) {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "test/files/noUnusedClass3.scss",
    "content": ".foo-bar {\n  display: flex;\n}\n\n.bar-foo {\n  display: flex;\n}\n\n.alreadyCamelCased {\n    display: flex;\n}\n\n.snake_cased {\n    display: flex;\n}\n\n:global(.bar) {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "test/files/parentSelector1.scss",
    "content": ".foo {\n  font-weight: 300;\n\n  &_bar {\n    width: 100px;\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector2.scss",
    "content": ".foo {\n  font-weight: 300;\n\n  .bar {\n    &_baz {\n      width: 100px;\n    }\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector3.scss",
    "content": ".foo {\n  font-weight: 300;\n\n  &_baz {\n    width: 100px;\n  }\n\n  &_bar {\n    width: 100px;\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector4.scss",
    "content": ".foo {\n  font-weight: 300;\n\n  &_baz, &_bar {\n    width: 100px;\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector5.scss",
    "content": ".foo, .bar {\n  font-weight: 300;\n\n  &_baz {\n    font-weight: 300;\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector6.scss",
    "content": ".foo {\n  font-weight: 300;\n\n  &_bar {\n    font-weight: 300;\n\n    &_baz {\n      font-weight: 300;\n    }\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector7.scss",
    "content": ".foo {\n  &_bar {\n    font-weight: 300;\n  }\n\n  &_baz {\n    font-weight: 300;\n  }\n}\n"
  },
  {
    "path": "test/files/parentSelector8.scss",
    "content": "@import \"~styles/media-queries\";\n\n.foo {\n  @include match-medium {\n    &_bar {\n      font-weight: 300;\n    }\n  };\n}\n"
  },
  {
    "path": "test/files/root1.scss",
    "content": ":root {\n  --color: red;\n}\n\n.foo {}\n"
  },
  {
    "path": "test/files/unparsable.scss",
    "content": "safslf f sf\n"
  },
  {
    "path": "test/lib/core/traversalUtils.test.js",
    "content": "/* eslint-env mocha */\n\nimport { expect } from 'chai';\nimport gonzales from 'gonzales-pe';\n\nimport { eliminateGlobals } from '../../../lib/core/traversalUtils';\n\ndescribe('eliminateGlobals()', function () {\n  describe('resolving :global pseudo class', function () {\n    it('should remove :global operator and the global class', function () {\n      const content = `\n      :global .global {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal('');\n    });\n\n    it('should remove :global operator and the global classes', function () {\n      const content = `\n      :global .global1 .global2 .global3.global4 {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal('');\n    });\n\n    it('should only remove :global operator and the global classes', function () {\n      const content = `\n      .local1 :global .global1 :local(.local2) .global2 :local(.local3), .local4 {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal(\n        '.local1 :local(.local2) :local(.local3), .local4 {}'\n      );\n    });\n  });\n\n  describe('resolving :global() pseudo class', function () {\n    it('should remove :global() pseudo class and its argument class', function () {\n      const content = `\n      :global(.global1) {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal('');\n    });\n\n    it('should remove :global() pseudo class and its argument classes', function () {\n      const content = `\n      :global(.global1) :global(.global2, .global3), :global(.global4.global5) {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal('');\n    });\n\n    it('should only remove :global() pseudo class and its argument classes', function () {\n      const content = `\n      .local1 :global(.global1) .local2, .local3 :global(.global2, .global3) :local(.local4) {}\n      `;\n\n      const ast = gonzales.parse(content, { syntax: 'scss' });\n\n      eliminateGlobals(ast);\n\n      expect(ast.toString().trim()).to.be.equal(\n        '.local1 .local2, .local3 :local(.local4) {}'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "test/lib/rules/no-undef-class.test.js",
    "content": "/* eslint-disable mocha/no-setup-in-describe */\nimport rule from '../../../lib/rules/no-undef-class';\nimport { RuleTester, addFilenameOption } from '../../utils';\n\nconst ruleTester = new RuleTester();\n\n/**\n * ESLint ruleTester uses its own `describe` and `it` functions. This Mocha\n * `describe` is used merely for test output formatting. Disabling the\n * `mocha/no-setup-in-describe` rule to allow running rule tester in it.\n */\ndescribe('no-undef-class', function () {\n  ruleTester.run('no-undef-class', rule, {\n    valid: [\n      {\n        name: \"absolute import eg: 'foo/bar.scss'\",\n        code: `\n          import s from 'test/files/noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div className={s.container}></div>\n          );\n        `,\n      },\n      {\n        name: 'dot notation eg: s.container',\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div className={s.container}></div>\n          );\n        `,\n      },\n      {\n        name: \"square bracket string key eg: s['container']\",\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div className={s['container']}></div>\n          );\n        `,\n      },\n      {\n        name: 'does not check for dynamic properties eg: s[dynamicValue]',\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = (props) => (\n            <div className={s[props.primary]}></div>\n          );\n        `,\n      },\n      {\n        name: 'names starting with _ will be ignored',\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div>\n              {s._getCss()}\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'using composes',\n        code: `\n          import s from './composes1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'composing with multiple classes',\n        code: `\n          import s from './composesMultiple1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'using @extend',\n        code: `\n          import s from './extend1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'using parent selector (`&`)',\n        code: `\n          import s from './parentSelector1.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Add support for parent selectors (&).',\n        code: `\n          import s from './parentSelector2.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.bar}></div>\n              <div className={s.bar_baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Add support for parent selectors (&).',\n        code: `\n          import s from './parentSelector3.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n              <div className={s.foo_baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Add support for parent selectors (&).',\n        code: `\n          import s from './parentSelector4.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n              <div className={s.foo_baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Add support for parent selectors (&).',\n        code: `\n          import s from './parentSelector5.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_baz}></div>\n              <div className={s.bar_baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Add support for parent selectors (&).',\n        code: `\n          import s from './parentSelector6.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n              <div className={s.foo_bar_baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'Support parent selectors in include blocks (aka mixins).',\n        code: `\n          import s from './parentSelector8.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: \"file that can't be parsed should not give any error\",\n        code: `\n          import s from './unparsable.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.baz}></div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'global is ignored',\n        code: `\n          import s from './global1.scss';\n\n          export default Foo = () => (\n            <div className={s.local1, s.local2, s.local3, s.local4, s.local5, s.local6}>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'ICSS :export pseudo-selector with a correct prop name should not give error',\n        code: `\n          import s from './export1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.myProp}>\n              </div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'check if camelCase=true classes work as expected',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n      },\n      {\n        name: 'Add support for all variants of the camelCase options.',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s['bar-foo']}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n      },\n      {\n        name: 'check if camelCase=dashes classes work as expected',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n      },\n      {\n        name: 'Add camelCase option',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s['bar-foo']}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n      },\n      {\n        name: 'check if camelCase=only classes work as expected',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'only' }],\n      },\n      {\n        name: 'check if camelCase=dashes-only classes work as expected',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes-only' }],\n      },\n    ].map((testCase) => addFilenameOption(testCase)),\n    invalid: [\n      {\n        name: 'dot notation',\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div className={s.containr}></div>\n          );\n        `,\n        errors: [\"Class or exported property 'containr' not found\"],\n      },\n      {\n        name: 'square bracket',\n        code: `\n          import s from './noUndefClass1.scss';\n\n          export default Foo = () => (\n            <div className={s['containr']}></div>\n          );\n        `,\n        errors: [\"Class or exported property 'containr' not found\"],\n      },\n      {\n        name: 'classes with global scope for selector are ignored eg. :global(.bold) { font-weight: bold; }',\n        code: `\n          import s from './global1.scss';\n\n          export default Foo = () => (\n            <div className={s.global1, s.global2, s.global3}></div>\n          );\n        `,\n        errors: [\n          \"Class or exported property 'global1' not found\",\n          \"Class or exported property 'global2' not found\",\n          \"Class or exported property 'global3' not found\",\n        ],\n      },\n      {\n        name: 'ICSS :export pseudo-selector with wrong prop name https://github.com/css-modules/icss#export',\n        code: `\n          import s from './export2.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.myProp}>\n              </div>\n            </div>\n          );\n        `,\n        errors: [\"Class or exported property 'myProp' not found\"],\n      },\n      {\n        name: 'check less support',\n        code: `\n          import s from './noUndefClass1.less';\n\n          export default Foo = () => (\n            <div className={s.bold}></div>\n          );\n        `,\n        errors: [\"Class or exported property 'bold' not found\"],\n      },\n      {\n        name: 'using composes',\n        code: `\n          import s from './composes1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.bazz}></div>\n            </div>\n          );\n        `,\n        errors: [\"Class or exported property 'bazz' not found\"],\n      },\n      {\n        name: 'composing multiple classes',\n        code: `\n          import s from './composesMultiple1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.bazz} />\n              <div className={s.foo} />\n            </div>\n          );\n        `,\n        errors: [\"Class or exported property 'bazz' not found\"],\n      },\n      {\n        name: 'using @extend',\n        code: `\n          import s from './extend1.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.bazz}></div>\n            </div>\n          );\n        `,\n        errors: [\"Class or exported property 'bazz' not found\"],\n      },\n      {\n        name: 'using parent selector (`&`)',\n        code: `\n          import s from './parentSelector1.scss';\n\n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_bar}></div>\n              <div className={s.foo_baz}></div>\n            </div>\n          );\n        `,\n        errors: [\"Class or exported property 'foo_baz' not found\"],\n      },\n      {\n        name: 'should show errors for file that does not exist',\n        code: `\n          import s from './fileThatDoesNotExist.scss';\n\n          export default Foo = () => (\n            <div className={s.bar}>\n              <div className={s.baz}></div>\n            </div>\n          );\n        `,\n        errors: [\n          \"Class or exported property 'bar' not found\",\n          \"Class or exported property 'baz' not found\",\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT defined when camelCase=true',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.fooBaz}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n        errors: [\"Class or exported property 'fooBaz' not found\"],\n      },\n      {\n        name: 'Add support for all variants of the camelCase options.',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n              <div className={s['foo-baz']}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n        errors: [\"Class or exported property 'foo-baz' not found\"],\n      },\n      {\n        name: 'should detect if camel case properties are NOT defined when camelCase=dashes',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div>\n              <div className={s.fooBar}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.fooBaz}></div>\n\n              <div className={s['foo-bar']}></div>\n              <div className={s['already-camel-cased']}></div>\n              <div className={s.snake_cased}></div>\n              <div className={s['foo-baz']}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n        errors: [\n          \"Class or exported property 'snakeCased' not found\",\n          \"Class or exported property 'fooBaz' not found\",\n          \"Class or exported property 'already-camel-cased' not found\",\n          \"Class or exported property 'foo-baz' not found\",\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT defined when camelCase=only',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div>\n              <div className={s.fooBar}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.fooBaz}></div>\n\n              <div className={s['foo-bar']}></div>\n              <div className={s['already-camel-cased']}></div>\n              <div className={s.snake_cased}></div>\n              <div className={s['foo-baz']}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'only' }],\n        errors: [\n          \"Class or exported property 'fooBaz' not found\",\n          \"Class or exported property 'foo-bar' not found\",\n          \"Class or exported property 'already-camel-cased' not found\",\n          \"Class or exported property 'snake_cased' not found\",\n          \"Class or exported property 'foo-baz' not found\",\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT defined when camelCase=dashes-only',\n        code: `\n          import s from './noUndefClass3.scss';\n\n          export default Foo = () => (\n            <div>\n              <div className={s.fooBar}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.fooBaz}></div>\n\n              <div className={s['foo-bar']}></div>\n              <div className={s['already-camel-cased']}></div>\n              <div className={s.snake_cased}></div>\n              <div className={s['foo-baz']}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes-only' }],\n        errors: [\n          \"Class or exported property 'snakeCased' not found\",\n          \"Class or exported property 'fooBaz' not found\",\n          \"Class or exported property 'foo-bar' not found\",\n          \"Class or exported property 'already-camel-cased' not found\",\n          \"Class or exported property 'foo-baz' not found\",\n        ],\n      },\n    ].map((testCase) => addFilenameOption(testCase)),\n  });\n});\n"
  },
  {
    "path": "test/lib/rules/no-unused-class.test.js",
    "content": "/* eslint-disable mocha/no-setup-in-describe */\nimport rule from '../../../lib/rules/no-unused-class';\nimport { RuleTester, addFilenameOption } from '../../utils';\n\nconst ruleTester = new RuleTester();\n\n/**\n * ESLint ruleTester uses its own `describe` and `it` functions. This Mocha\n * `describe` is used merely for test output formatting. Disabling the\n * `mocha/no-setup-in-describe` rule to allow running rule tester in it.\n */\ndescribe('no-unused-class', function () {\n  ruleTester.run('no-unused-class', rule, {\n    valid: [\n      {\n        name: \"absolute import eg: 'foo/bar.scss'\",\n        code: `\n          import s from 'test/files/noUndefClass1.scss';\n  \n          export default Foo = () => (\n            <div className={s.container}></div>\n          );\n        `,\n      },\n      {\n        name: \"dot notation and square brackets eg: s.foo and s['bar']\",\n        code: `\n          import s from './noUnusedClass1.scss';\n  \n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s['bar']}>\n                <span className={s.bold}></span>\n              </div>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'ignore global scope selector',\n        code: `\n          import s from './noUnusedClass2.scss';\n  \n          export default Foo = () => (\n            <div className={s.foo}>\n              <span className=\"bar\"></span>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'ignore props exported by ICSS :export pseudo-selector https://github.com/css-modules/icss#export',\n        code: `\n          import s from './export1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}></div>\n          );\n        `,\n      },\n      {\n        name: 'check if composes classes are ignored',\n        code: `\n          import s from './composes1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}>\n              <span className={s.baz}></span>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'composes with multiple classes',\n        code: `\n          import s from './composesMultiple1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}>\n              <span className={s.baz}></span>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'check if @extend classes are ignored',\n        code: `\n          import s from './extend1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}>\n              <span className={s.baz}></span>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'check if classes are ignored if they only exist for nesting parent selectors (`&`)',\n        code: `\n          import s from './parentSelector7.scss';\n  \n          export default Foo = () => (\n            <div>\n              <span className={s.foo_bar}></span>\n              <span className={s.foo_baz}></span>\n            </div>\n          );\n        `,\n      },\n      {\n        name: 'check if camelCase=true classes work as expected',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n      },\n      {\n        name: 'Add camelCase option',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s['bar-foo']}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: true }],\n      },\n      {\n        name: 'check if camelCase=dashes classes work as expected',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n      },\n      {\n        name: 'Add support for all variants of the camelCase options',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s['bar-foo']}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n      },\n      {\n        name: 'check if camelCase=only classes work as expected',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snakeCased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'only' }],\n      },\n      {\n        name: 'check if camelCase=dashes-only classes work as expected',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s.fooBar}>\n              <div className={s.barFoo}></div>\n              <div className={s.alreadyCamelCased}></div>\n              <div className={s.snake_cased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes-only' }],\n      },\n    ].map((testCase) => addFilenameOption(testCase)),\n    invalid: [\n      {\n        name: 'Unused class error',\n        code: `\n          import s from './noUnusedClass1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}></div>\n          );\n        `,\n        errors: ['Unused classes found in noUnusedClass1.scss: foo, bold'],\n      },\n      {\n        name: 'ignored global scope selector class',\n        code: `\n          import s from './noUnusedClass2.scss';\n  \n          export default Foo = () => (\n            <div>\n            </div>\n          );\n        `,\n        errors: ['Unused classes found in noUnusedClass2.scss: foo'],\n      },\n      {\n        name: 'check less support',\n        code: `\n          import s from './noUnusedClass1.less';\n  \n          export default Foo = () => (\n            <div>\n            </div>\n          );\n        `,\n        errors: ['Unused classes found in noUnusedClass1.less: foo'],\n      },\n      {\n        name: 'check composes support',\n        code: `\n          import s from './composes1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}></div>\n          );\n        `,\n        errors: ['Unused classes found in composes1.scss: baz'],\n      },\n      {\n        name: 'check multiple composes support',\n        code: `\n          import s from './composesMultiple1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}></div>\n          );\n        `,\n        errors: ['Unused classes found in composesMultiple1.scss: baz'],\n      },\n      {\n        name: 'check @extend support',\n        code: `\n          import s from './extend1.scss';\n  \n          export default Foo = () => (\n            <div className={s.bar}></div>\n          );\n        `,\n        errors: ['Unused classes found in extend1.scss: baz'],\n      },\n      {\n        name: 'using parent selector (`&`)',\n        code: `\n          import s from './parentSelector4.scss';\n  \n          export default Foo = () => (\n            <div className={s.foo}>\n              <div className={s.foo_baz}></div>\n            </div>\n          );\n        `,\n        errors: ['Unused classes found in parentSelector4.scss: foo_bar'],\n      },\n      {\n        name: 'snake_case',\n        code: `\n          import s from './parentSelector8.scss';\n  \n          export default Foo = () => (\n            <div className={s.foo} />\n          );\n        `,\n        errors: ['Unused classes found in parentSelector8.scss: foo_bar'],\n      },\n      {\n        name: 'should detect if camel case properties are NOT used when camelCase=true',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={ s.fooBar } />\n          );\n        `,\n        options: [{ camelCase: true }],\n        errors: [\n          'Unused classes found in noUnusedClass3.scss: bar-foo, alreadyCamelCased, snake_cased',\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT used when camelCase=dashes',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={ s.fooBar }>\n              <div className={s.snakeCased}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes' }],\n        errors: [\n          'Unused classes found in noUnusedClass3.scss: bar-foo, alreadyCamelCased, snake_cased',\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT used when camelCase=only',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s.barFoo}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.bar}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'only' }],\n        errors: [\n          'Unused classes found in noUnusedClass3.scss: foo-bar, alreadyCamelCased',\n        ],\n      },\n      {\n        name: 'should detect if camel case properties are NOT used when camelCase=dashes-only',\n        code: `\n          import s from './noUnusedClass3.scss';\n  \n          export default Foo = () => (\n            <div className={s['foo-bar']}>\n              <div className={s.barFoo}></div>\n              <div className={s.snakeCased}></div>\n              <div className={s.bar}></div>\n            </div>\n          );\n        `,\n        options: [{ camelCase: 'dashes-only' }],\n        errors: [\n          'Unused classes found in noUnusedClass3.scss: foo-bar, alreadyCamelCased, snake_cased',\n        ],\n      },\n    ].map((testCase) => addFilenameOption(testCase)),\n  });\n});\n"
  },
  {
    "path": "test/utils.js",
    "content": "import path from 'path';\nimport { RuleTester as EslintRuleTester } from 'eslint';\nimport { test } from 'mocha';\n\n/* pattern taken from eslint-plugin-import */\nexport function addFilenameOption (testCase) {\n  return {\n    ...testCase,\n    // TODO:  Find a way to remove this.\n    filename: path.resolve(__dirname, './files/foo.js'),\n  };\n}\n\n/**\n * Customizing ESLint rule tester to be run by Mocha.\n * @see https://eslint.org/docs/latest/integrate/nodejs-api#customizing-ruletester\n */\nEslintRuleTester.describe = (text, method) => {\n  EslintRuleTester.it.title = text;\n  return method.call(this);\n};\n\nEslintRuleTester.it = (text, method) => {\n  test(EslintRuleTester.it.title + ': ' + text, method);\n};\n\nexport const RuleTester = () => {\n  return new EslintRuleTester({\n    parserOptions: {\n      sourceType: 'module',\n      ecmaVersion: 6,\n      ecmaFeatures: { jsx: true },\n    },\n  });\n};\n"
  }
]