import payloadEsLintConfig from '@tabshiftcms/eslint-config' import payloadPlugin from '@tabshiftcms/eslint-plugin' export const defaultESLintIgnores = [ '**/.temp', '**/.*', // ignore all dotfiles '**/.git', '**/.hg', '**/.pnp.*', '**/.svn', '**/playwright.config.ts', '**/jest.config.js', '**/tsconfig.tsbuildinfo', '**/README.md', '**/eslint.config.js', '**/payload-types.ts', '**/dist/', '**/.yarn/', '**/build/', '**/node_modules/', '**/temp/', 'packages/**/*.spec.ts', 'next-env.d.ts', '**/app', 'src/**/*.spec.ts', '**/jest.setup.js', 'packages/payload/rollup.dts.config.mjs', ] /** @typedef {import('eslint').Linter.Config} Config */ export const rootParserOptions = { sourceType: 'module', ecmaVersion: 'latest', projectService: true, } /** @type {Config[]} */ export const rootEslintConfig = [ ...payloadEsLintConfig, { ignores: [ ...defaultESLintIgnores, 'packages/eslint-*/**', 'test/live-preview/next-app', 'packages/**/*.spec.ts', 'templates/**', 'examples/**', ], }, { plugins: { payload: payloadPlugin, }, rules: { 'payload/no-jsx-import-statements': 'warn', 'payload/no-relative-monorepo-imports': 'error', 'payload/no-imports-from-exports-dir': 'error', 'payload/no-imports-from-self': 'error', 'payload/proper-payload-logger-usage': 'error', }, }, { files: ['scripts/**/*.ts'], rules: { '@typescript-eslint/no-unused-vars': 'off', 'no-console': 'off', 'perfectionist/sort-object-types': 'off', 'perfectionist/sort-objects': 'off', }, }, { files: ['tools/**/*.ts'], rules: { 'no-console': 'off', 'perfectionist/sort-object-types': 'off', 'perfectionist/sort-objects': 'off', 'payload/no-relative-monorepo-imports': 'off', }, }, ] export default [ ...rootEslintConfig, { files: ['packages/eslint-config/**/*.ts'], rules: { 'perfectionist/sort-objects': 'off', }, }, { files: ['templates/vercel-postgres/**'], rules: { 'no-restricted-exports': 'off', }, }, ]