f4b947fb56
Fixes #51917 It's throwing error in arrow function, should also be covered in the lint rule fix NEXT-1326
164 lines
2.5 KiB
TypeScript
164 lines
2.5 KiB
TypeScript
import rule from '@next/eslint-plugin-next/dist/rules/no-async-client-component'
|
|
import { RuleTester } from 'eslint'
|
|
;(RuleTester as any).setDefaultConfig({
|
|
parserOptions: {
|
|
ecmaVersion: 2018,
|
|
sourceType: 'module',
|
|
ecmaFeatures: {
|
|
modules: true,
|
|
jsx: true,
|
|
},
|
|
},
|
|
})
|
|
const ruleTester = new RuleTester()
|
|
|
|
const message =
|
|
'Prevent client components from being async functions. See: https://nextjs.org/docs/messages/no-async-client-component'
|
|
|
|
ruleTester.run('no-async-client-component single line', rule, {
|
|
valid: [
|
|
`
|
|
export default async function MyComponent() {
|
|
return <></>
|
|
}
|
|
`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `
|
|
"use client"
|
|
|
|
export default async function MyComponent() {
|
|
return <></>
|
|
}
|
|
`,
|
|
errors: [
|
|
{
|
|
message,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
|
|
ruleTester.run('no-async-client-component single line capitalization', rule, {
|
|
valid: [
|
|
`
|
|
"use client"
|
|
|
|
export default async function myFunction() {
|
|
return ''
|
|
}
|
|
`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `
|
|
"use client"
|
|
|
|
export default async function MyFunction() {
|
|
return ''
|
|
}
|
|
`,
|
|
errors: [
|
|
{
|
|
message,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
|
|
ruleTester.run('no-async-client-component multiple line', rule, {
|
|
valid: [
|
|
`
|
|
async function MyComponent() {
|
|
return <></>
|
|
}
|
|
|
|
export default MyComponent
|
|
`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `
|
|
"use client"
|
|
|
|
async function MyComponent() {
|
|
return <></>
|
|
}
|
|
|
|
export default MyComponent
|
|
`,
|
|
errors: [
|
|
{
|
|
message,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
|
|
ruleTester.run('no-async-client-component multiple line capitalization', rule, {
|
|
valid: [
|
|
`
|
|
"use client"
|
|
|
|
async function myFunction() {
|
|
return ''
|
|
}
|
|
|
|
export default myFunction
|
|
`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `
|
|
"use client"
|
|
|
|
async function MyFunction() {
|
|
return ''
|
|
}
|
|
|
|
export default MyFunction
|
|
`,
|
|
errors: [
|
|
{
|
|
message,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
|
|
ruleTester.run('no-async-client-component arrow function', rule, {
|
|
valid: [
|
|
`
|
|
"use client"
|
|
|
|
const myFunction = () => {
|
|
return ''
|
|
}
|
|
|
|
export default myFunction
|
|
`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `
|
|
"use client"
|
|
|
|
const MyFunction = async () => {
|
|
return '123'
|
|
}
|
|
|
|
export default MyFunction
|
|
`,
|
|
errors: [
|
|
{
|
|
message,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|