Skip to content

Commit 4ba90f7

Browse files
committed
review comments
1 parent a356876 commit 4ba90f7

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

packages/gatsby/src/utils/eslint-rules/__tests__/no-anonymous-exports-page-templates.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,9 @@ ruleTester.run(`no-anonymous-exports-page-templates`, rule, {
4343
code: `export default function() {}`,
4444
errors: [{ messageId: `anonymousFunctionDeclaration` }],
4545
}),
46+
test({
47+
code: `export default class {}`,
48+
errors: [{ messageId: `anonymousClass` }],
49+
}),
4650
],
4751
})

packages/gatsby/src/utils/eslint-rules/limited-exports-page-templates.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ function isTemplateQuery(node: Node, varName: string | undefined): boolean {
88
// const query = graphql``
99
// export { query }
1010
if (
11-
node?.type === `ExportNamedDeclaration` &&
12-
node?.declaration === null &&
11+
node.type === `ExportNamedDeclaration` &&
12+
node.declaration === null &&
1313
varName
1414
) {
1515
// For export { foobar } the declaration will be null and specifiers exists
@@ -23,11 +23,11 @@ function isTemplateQuery(node: Node, varName: string | undefined): boolean {
2323
// Checks for:
2424
// export const query = graphql``
2525
return (
26-
node?.type === `ExportNamedDeclaration` &&
27-
node?.declaration?.type === `VariableDeclaration` &&
28-
node?.declaration?.declarations[0]?.init?.type ===
26+
node.type === `ExportNamedDeclaration` &&
27+
node.declaration?.type === `VariableDeclaration` &&
28+
node.declaration?.declarations[0]?.init?.type ===
2929
`TaggedTemplateExpression` &&
30-
(node?.declaration?.declarations[0]?.init?.tag as Identifier)?.name ===
30+
(node.declaration?.declarations[0]?.init?.tag as Identifier)?.name ===
3131
`graphql`
3232
)
3333
}
@@ -52,14 +52,18 @@ const limitedExports: Rule.RuleModule = {
5252
let queryVariableName: string | undefined = ``
5353

5454
return {
55+
// eslint-disable-next-line consistent-return
5556
TaggedTemplateExpression: (node): void => {
5657
if (
57-
node?.type === `TaggedTemplateExpression` &&
58+
node.type === `TaggedTemplateExpression` &&
5859
// @ts-ignore
59-
node?.tag?.name === `graphql`
60+
node.tag?.name === `graphql`
6061
) {
62+
if (queryVariableName) {
63+
return undefined
64+
}
6165
// @ts-ignore
62-
queryVariableName = node?.parent?.id?.name
66+
queryVariableName = node.parent?.id?.name
6367
}
6468
},
6569
// eslint-disable-next-line consistent-return

packages/gatsby/src/utils/eslint-rules/no-anonymous-exports-page-templates.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ const defs = {
1111
messageId: `anonymousFunctionDeclaration`,
1212
forbid: (node): boolean => !node.declaration.id,
1313
},
14+
ClassDeclaration: {
15+
messageId: `anonymousClass`,
16+
forbid: (node): boolean => !node.declaration.id,
17+
},
1418
}
1519

1620
const noAnonymousExports: Rule.RuleModule = {
@@ -22,21 +26,31 @@ const noAnonymousExports: Rule.RuleModule = {
2226
Please add a name to your function, for example:
2327
2428
Before:
25-
export default () => {};
29+
export default () => {}
2630
2731
After:
28-
const Named = () => {};
32+
const Named = () => {}
2933
export default Named;
3034
`,
3135
anonymousFunctionDeclaration: `Anonymous function declarations cause Fast Refresh to not preserve local component state.
3236
3337
Please add a name to your function, for example:
3438
3539
Before:
36-
export default function () {};
40+
export default function () {}
3741
3842
After:
3943
export default function Named() {}
44+
`,
45+
anonymousClass: `Anonymous classes cause Fast Refresh to not preserve local component state.
46+
47+
Please add a name to your class, for example:
48+
49+
Before:
50+
export default class extends Component {}
51+
52+
After:
53+
export default class Named extends Component {}
4054
`,
4155
},
4256
},

0 commit comments

Comments
 (0)