import type { Linter } from 'eslint'; const restrictedImportIgnores = [ '**/vite.config.mts', '**/tailwind.config.mjs', '**/postcss.config.mjs', ]; const customConfig: Linter.Config[] = [ // shadcn-ui 内部组件是自动生成的,不做太多限制 { files: ['packages/@core/ui-kit/shadcn-ui/**/**'], rules: { 'vue/require-default-prop': 'off', }, }, { files: [ 'app/**', 'packages/effects/**/**', 'packages/utils/**/**', 'packages/types/**/**', 'packages/locales/**/**', ], ignores: restrictedImportIgnores, rules: { 'perfectionist/sort-interfaces': 'off', 'perfectionist/sort-objects': 'off', }, }, { files: ['**/**.vue'], ignores: restrictedImportIgnores, rules: { 'perfectionist/sort-objects': 'off', }, }, { // apps内部的一些基础规则 files: ['app/**'], ignores: restrictedImportIgnores, rules: { 'no-restricted-imports': [ 'error', { patterns: [ { group: ['#/api/*'], message: 'The #/api package cannot be imported, please use the @core package itself', }, { group: ['#/layouts/*'], message: 'The #/layouts package cannot be imported, please use the @core package itself', }, { group: ['#/locales/*'], message: 'The #/locales package cannot be imported, please use the @core package itself', }, { group: ['#/stores/*'], message: 'The #/stores package cannot be imported, please use the @core package itself', }, ], }, ], 'perfectionist/sort-interfaces': 'off', }, }, { // @core内部组件,不能引入@aiflowy/* 里面的包 files: ['packages/@core/**/**'], ignores: restrictedImportIgnores, rules: { 'no-restricted-imports': [ 'error', { patterns: [ { group: ['@aiflowy/*'], message: 'The @core package cannot import the @aiflowy package, please use the @core package itself', }, ], }, ], }, }, { // @core/shared内部组件,不能引入@aiflowy/* 或者 @aiflowy-core/* 里面的包 files: ['packages/@core/base/**/**'], ignores: restrictedImportIgnores, rules: { 'no-restricted-imports': [ 'error', { patterns: [ { group: ['@aiflowy/*', '@aiflowy-core/*'], message: 'The @aiflowy-core/shared package cannot import the @aiflowy package, please use the @core/shared package itself', }, ], }, ], }, }, { // 不能引入@aiflowy/*里面的包 files: [ 'packages/types/**/**', 'packages/utils/**/**', 'packages/icons/**/**', 'packages/constants/**/**', 'packages/styles/**/**', 'packages/stores/**/**', 'packages/preferences/**/**', 'packages/locales/**/**', ], ignores: restrictedImportIgnores, rules: { 'no-restricted-imports': [ 'error', { patterns: [ { group: ['@aiflowy/*'], message: 'The @aiflowy package cannot be imported, please use the @core package itself', }, ], }, ], }, }, { files: ['**/**/playwright.config.ts'], rules: { 'n/prefer-global/buffer': 'off', 'n/prefer-global/process': 'off', 'no-console': 'off', }, }, { files: ['internal/**/**', 'scripts/**/**'], rules: { 'no-console': 'off', }, }, ]; export { customConfig };