Showing preview only (223K chars total). Download the full file or copy to clipboard to get everything.
Repository: atfzl/eslint-plugin-css-modules
Branch: master
Commit: e8ad74448054
Files: 64
Total size: 206.1 KB
Directory structure:
gitextract_5yr9mmz_/
├── .babelrc
├── .eslintrc
├── .flowconfig
├── .gitignore
├── .travis.yml
├── README.md
├── example/
│ ├── .eslintrc
│ ├── foo.scss
│ ├── index.js
│ └── tester.js
├── flow-typed/
│ └── npm/
│ ├── babel-cli_vx.x.x.js
│ ├── babel-eslint_vx.x.x.js
│ ├── babel-plugin-syntax-flow_vx.x.x.js
│ ├── babel-plugin-transform-flow-strip-types_vx.x.x.js
│ ├── babel-preset-es2015_vx.x.x.js
│ ├── babel-preset-stage-1_vx.x.x.js
│ ├── babel-watch_vx.x.x.js
│ ├── eslint-config-standard_vx.x.x.js
│ ├── eslint-plugin-flowtype_vx.x.x.js
│ ├── eslint-plugin-import_vx.x.x.js
│ ├── eslint-plugin-promise_vx.x.x.js
│ ├── eslint-plugin-standard_vx.x.x.js
│ ├── eslint_vx.x.x.js
│ ├── flow-bin_v0.x.x.js
│ ├── gonzales-pe_vx.x.x.js
│ ├── lodash_v4.x.x.js
│ ├── mocha_v3.1.x.js
│ └── nodemon_vx.x.x.js
├── lib/
│ ├── core/
│ │ ├── index.js
│ │ └── traversalUtils.js
│ ├── index.js
│ ├── rules/
│ │ ├── index.js
│ │ ├── no-undef-class.js
│ │ └── no-unused-class.js
│ └── types/
│ └── index.js
├── package.json
└── test/
├── files/
│ ├── composes1.scss
│ ├── composesMultiple1.scss
│ ├── export1.scss
│ ├── export2.scss
│ ├── extend1.scss
│ ├── foo.js
│ ├── global1.scss
│ ├── noUndefClass1.less
│ ├── noUndefClass1.scss
│ ├── noUndefClass3.scss
│ ├── noUnusedClass1.less
│ ├── noUnusedClass1.scss
│ ├── noUnusedClass2.scss
│ ├── noUnusedClass3.scss
│ ├── parentSelector1.scss
│ ├── parentSelector2.scss
│ ├── parentSelector3.scss
│ ├── parentSelector4.scss
│ ├── parentSelector5.scss
│ ├── parentSelector6.scss
│ ├── parentSelector7.scss
│ ├── parentSelector8.scss
│ ├── root1.scss
│ └── unparsable.scss
├── lib/
│ ├── core/
│ │ └── traversalUtils.test.js
│ └── rules/
│ ├── no-undef-class.test.js
│ └── no-unused-class.test.js
└── utils.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": ["@babel/preset-env"],
"plugins": [
"@babel/plugin-syntax-flow",
"@babel/transform-flow-strip-types",
"@babel/plugin-proposal-export-default-from"
],
"sourceMaps": "inline"
}
================================================
FILE: .eslintrc
================================================
{
"parser": "@babel/eslint-parser",
"extends": [
"standard",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:mocha/recommended"
],
"env": {
"es6": true,
"node": true
},
"rules": {
"semi": [1, "always"],
"camelcase": 0,
"comma-dangle": 0
}
}
================================================
FILE: .flowconfig
================================================
[ignore]
build/
[include]
lib/
[version]
^0.36.0
================================================
FILE: .gitignore
================================================
node_modules
.DS_Store
build
npm-debug.log
================================================
FILE: .travis.yml
================================================
language: node_js
node_js:
- 4
- 6
================================================
FILE: README.md
================================================
# eslint-plugin-css-modules
[](https://travis-ci.org/atfzl/eslint-plugin-css-modules)
This 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.
## Rules
* `css-modules/no-unused-class`: You must use all the classes defined in css/scss/less file.
>If you still want to mark a class as used, then use this comment on top of your file
```js
/* eslint css-modules/no-unused-class: [2, { markAsUsed: ['container'] }] */
```
where container is the css class that you want to mark as used.
Add all such classes in the array.
>If you use the `camelCase` option of `css-loader`, you must also enabled it for this plugin
```js
/* eslint css-modules/no-unused-class: [2, { camelCase: true }] */
```
* `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).
>If you use the `camelCase` option of `css-loader`, you must also enabled it for this plugin
```js
/* eslint css-modules/no-undef-class: [2, { camelCase: true }] */
```
## Installation
```
npm i --save-dev eslint-plugin-css-modules
```
## Usage:
.eslintrc
```json
{
"plugins": [
"css-modules"
],
"extends": [
"plugin:css-modules/recommended"
]
}
```
You 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:
```json
{
"plugins": [
"css-modules"
],
"extends": [
"plugin:css-modules/recommended"
],
"rules": {
"css-modules/no-unused-class": [2, { "camelCase": true }],
"css-modules/no-undef-class": [2, { "camelCase": true }]
}
}
```
The camelCase option has 4 possible values, see [css-loader#camelCase](https://github.com/webpack-contrib/css-loader#camelcase) for description:
```js
true | "dashes" | "only" | "dashes-only"
```
## Specifying base path
You can specify path for the base directory via plugin settings in .eslintrc. This is used by the plugin to resolve absolute (S)CSS paths:
```json
{
"settings": {
"css-modules": {
"basePath": "app/scripts/..."
}
}
}
```
## Screen Shot

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