Skip to content

Commit 4348dcc

Browse files
author
Dimitri POSTOLOV
authored
feat: update eslint, various improvements (#513)
1 parent 5a7e9a7 commit 4348dcc

13 files changed

+114
-55
lines changed

.changeset/tough-windows-hang.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@graphql-eslint/eslint-plugin': patch
3+
---
4+
5+
update eslint, various improvements

package.json

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,30 @@
2828
"@babel/core": "7.14.6",
2929
"@babel/preset-env": "7.14.7",
3030
"@babel/preset-typescript": "7.14.5",
31-
"json-schema-to-markdown": "1.1.1",
32-
"@types/dedent": "0.7.0",
33-
"dedent": "0.7.0",
34-
"ts-node": "10.0.0",
35-
"patch-package": "6.4.7",
3631
"@changesets/cli": "2.16.0",
32+
"@types/dedent": "0.7.0",
33+
"@types/jest": "^26.0.23",
34+
"@types/node": "14.17.4",
3735
"@typescript-eslint/eslint-plugin": "4.28.1",
3836
"@typescript-eslint/parser": "4.28.1",
39-
"eslint": "7.28.0",
40-
"husky": "6.0.0",
41-
"lint-staged": "11.0.0",
42-
"@types/node": "14.17.4",
4337
"bob-the-bundler": "1.2.1",
38+
"dedent": "0.7.0",
39+
"eslint": "7.29.0",
40+
"eslint-config-prettier": "8.3.0",
4441
"eslint-config-standard": "16.0.3",
4542
"eslint-plugin-import": "2.23.4",
4643
"eslint-plugin-node": "11.1.0",
4744
"eslint-plugin-promise": "5.1.0",
4845
"eslint-plugin-standard": "5.0.0",
49-
"eslint-config-prettier": "8.3.0",
50-
"ts-jest": "27.0.3",
46+
"husky": "6.0.0",
47+
"jest": "27.0.6",
48+
"json-schema-to-markdown": "1.1.1",
49+
"lint-staged": "11.0.0",
50+
"patch-package": "6.4.7",
5151
"rimraf": "3.0.2",
52-
"typescript": "4.3.5",
53-
"jest": "27.0.6"
52+
"ts-jest": "27.0.3",
53+
"ts-node": "10.0.0",
54+
"typescript": "4.3.5"
5455
},
5556
"resolutions": {
5657
"@changesets/git": "1.1.1"

packages/plugin/src/processors/code-files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export function createGraphqlProcessor() {
7272
if (message.endLine != null) {
7373
message.endLine += lineOffset;
7474
}
75-
if (message.fix && typeof offset !== 'undefined') {
75+
if (message.fix && offset !== undefined) {
7676
message.fix.range[0] = offset + message.fix.range[0];
7777
message.fix.range[1] = offset + message.fix.range[1];
7878
}

packages/plugin/src/rules/avoid-operation-name-prefix.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GraphQLESLintRule, GraphQLESlintRuleContext } from '../types';
1+
import { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
22
import { GraphQLESTreeNode } from '../estree-parser/estree-ast';
33
import { OperationDefinitionNode, FragmentDefinitionNode } from 'graphql';
44

@@ -12,7 +12,7 @@ export type AvoidOperationNamePrefixConfig = [
1212
const AVOID_OPERATION_NAME_PREFIX = 'AVOID_OPERATION_NAME_PREFIX';
1313

1414
function verifyRule(
15-
context: GraphQLESlintRuleContext<AvoidOperationNamePrefixConfig>,
15+
context: GraphQLESLintRuleContext<AvoidOperationNamePrefixConfig>,
1616
node: GraphQLESTreeNode<OperationDefinitionNode> | GraphQLESTreeNode<FragmentDefinitionNode>
1717
) {
1818
const config = context.options[0] || { keywords: [], caseSensitive: false };

packages/plugin/src/rules/avoid-typename-prefix.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { FieldDefinitionNode } from 'graphql';
22
import { GraphQLESTreeNode } from '../estree-parser';
3-
import { GraphQLESLintRule, GraphQLESlintRuleContext } from '../types';
3+
import { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
44

55
const AVOID_TYPENAME_PREFIX = 'AVOID_TYPENAME_PREFIX';
66

77
function checkNode(
8-
context: GraphQLESlintRuleContext<any>,
8+
context: GraphQLESLintRuleContext<any>,
99
typeName: string,
1010
fields: GraphQLESTreeNode<FieldDefinitionNode>[]
1111
) {

packages/plugin/src/rules/graphql-js-validation.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { validate, GraphQLSchema, DocumentNode, ASTNode, ValidationRule } from '
22
import { validateSDL } from 'graphql/validation/validate';
33
import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';
44
import fs from 'fs';
5-
import { GraphQLESLintRule, GraphQLESlintRuleContext } from '../types';
5+
import { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
66
import { requireGraphQLSchemaFromContext } from '../utils';
77
import { GraphQLESTreeNode } from '../estree-parser';
88

@@ -18,7 +18,7 @@ function extractRuleName(stack: string | undefined): string | null {
1818

1919
export function validateDoc(
2020
sourceNode: GraphQLESTreeNode<ASTNode>,
21-
context: GraphQLESlintRuleContext,
21+
context: GraphQLESLintRuleContext,
2222
schema: GraphQLSchema | null,
2323
documentNode: DocumentNode,
2424
rules: ReadonlyArray<ValidationRule>,
@@ -54,7 +54,7 @@ const validationToRule = (
5454
name: string,
5555
ruleName: string,
5656
docs: GraphQLESLintRule['meta']['docs'],
57-
getDocumentNode?: (context: GraphQLESlintRuleContext) => DocumentNode | null
57+
getDocumentNode?: (context: GraphQLESLintRuleContext) => DocumentNode | null
5858
): Record<typeof name, GraphQLESLintRule<any, true>> => {
5959
let ruleFn: null | ValidationRule = null;
6060

packages/plugin/src/rules/no-operation-name-suffix.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { GraphQLESLintRule, GraphQLESlintRuleContext } from '../types';
1+
import { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
22
import { GraphQLESTreeNode } from '../estree-parser/estree-ast';
33
import { OperationDefinitionNode, FragmentDefinitionNode } from 'graphql';
44

55
const NO_OPERATION_NAME_SUFFIX = 'NO_OPERATION_NAME_SUFFIX';
66

77
function verifyRule(
8-
context: GraphQLESlintRuleContext,
8+
context: GraphQLESLintRuleContext,
99
node: GraphQLESTreeNode<OperationDefinitionNode> | GraphQLESTreeNode<FragmentDefinitionNode>
1010
) {
1111
if (node && node.name && node.name.value !== '') {

packages/plugin/src/rules/require-description.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GraphQLESLintRule, GraphQLESlintRuleContext } from '../types';
1+
import { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
22
import { GraphQLESTreeNode } from '../estree-parser/estree-ast';
33
import { ASTNode, Kind, StringValueNode } from 'graphql';
44

@@ -18,7 +18,7 @@ const DESCRIBABLE_NODES = [
1818
type RequireDescriptionRuleConfig = [{ on: typeof DESCRIBABLE_NODES }];
1919

2020
function verifyRule(
21-
context: GraphQLESlintRuleContext<RequireDescriptionRuleConfig>,
21+
context: GraphQLESLintRuleContext<RequireDescriptionRuleConfig>,
2222
node: GraphQLESTreeNode<ASTNode> & {
2323
readonly description?: GraphQLESTreeNode<StringValueNode>;
2424
}

packages/plugin/src/testkit.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { readFileSync } from 'fs';
33
import { ASTKindToNode } from 'graphql';
44
import { resolve } from 'path';
55
import { GraphQLESTreeNode } from './estree-parser';
6-
import { ParserOptions } from './types';
6+
import { GraphQLESLintRule, ParserOptions } from './types';
77

8-
export type GraphQLESlintRuleListener<WithTypeInfo extends boolean> = {
8+
export type GraphQLESLintRuleListener<WithTypeInfo extends boolean> = {
99
[K in keyof ASTKindToNode]?: (node: GraphQLESTreeNode<ASTKindToNode[K], WithTypeInfo>) => void;
1010
} &
1111
Record<string, any>;
@@ -21,11 +21,11 @@ export type GraphQLInvalidTestCase<T> = GraphQLValidTestCase<T> & {
2121
};
2222

2323
export class GraphQLRuleTester extends require('eslint').RuleTester {
24-
constructor(parserOptions: ParserOptions = {}) {
24+
constructor(parserOptions: ParserOptions) {
2525
super({
2626
parser: require.resolve('@graphql-eslint/eslint-plugin'),
2727
parserOptions: {
28-
...(parserOptions || {}),
28+
...parserOptions,
2929
skipGraphQLConfig: true,
3030
},
3131
});
@@ -37,12 +37,12 @@ export class GraphQLRuleTester extends require('eslint').RuleTester {
3737

3838
runGraphQLTests<Config>(
3939
name: string,
40-
rule: any, // Actually, it's GraphQLESLintRule, but TS has issues with that
40+
rule: GraphQLESLintRule,
4141
tests: {
42-
valid?: Array<string | GraphQLValidTestCase<Config>>;
43-
invalid?: Array<string | GraphQLInvalidTestCase<Config>>;
42+
valid?: GraphQLValidTestCase<Config>[];
43+
invalid?: GraphQLInvalidTestCase<Config>[];
4444
}
4545
): void {
46-
super.run(name, rule as any, tests);
46+
super.run(name, rule, tests);
4747
}
4848
}

packages/plugin/src/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Rule, AST, Linter } from 'eslint';
22
import { GraphQLESTreeNode } from './estree-parser';
33
import { ASTNode, GraphQLSchema } from 'graphql';
44
import { GraphQLParseOptions } from '@graphql-tools/utils';
5-
import { GraphQLESlintRuleListener } from './testkit';
5+
import { GraphQLESLintRuleListener } from './testkit';
66
import { SiblingOperations } from './sibling-operations';
77
import { FieldsCache } from './graphql-ast';
88

@@ -27,7 +27,7 @@ export type GraphQLESLintParseResult = Linter.ESLintParseResult & {
2727
services: ParserServices;
2828
};
2929

30-
export type GraphQLESlintRuleContext<Options = any[]> = Omit<
30+
export type GraphQLESLintRuleContext<Options = any[]> = Omit<
3131
Rule.RuleContext,
3232
'parserServices' | 'report' | 'options'
3333
> & {
@@ -53,6 +53,6 @@ export type RuleDocsInfo<T> = {
5353
};
5454

5555
export type GraphQLESLintRule<Options = any[], WithTypeInfo extends boolean = false> = {
56-
create(context: GraphQLESlintRuleContext<Options>): GraphQLESlintRuleListener<WithTypeInfo>;
56+
create(context: GraphQLESLintRuleContext<Options>): GraphQLESLintRuleListener<WithTypeInfo>;
5757
meta?: Rule.RuleMetaData & RuleDocsInfo<Options>;
5858
};

0 commit comments

Comments
 (0)