88 lines
2.4 KiB
TypeScript
88 lines
2.4 KiB
TypeScript
import type { Linter } from 'eslint';
|
|
|
|
import { interopDefault } from '../util';
|
|
|
|
export async function yaml(): Promise<Linter.Config[]> {
|
|
const [pluginYaml, parserYaml] = await Promise.all([
|
|
interopDefault(import('eslint-plugin-yml')),
|
|
interopDefault(import('yaml-eslint-parser')),
|
|
] as const);
|
|
|
|
return [
|
|
{
|
|
files: ['**/*.y?(a)ml'],
|
|
plugins: {
|
|
yaml: pluginYaml as any,
|
|
},
|
|
languageOptions: {
|
|
parser: parserYaml,
|
|
},
|
|
rules: {
|
|
'style/spaced-comment': 'off',
|
|
|
|
'yaml/block-mapping': 'error',
|
|
'yaml/block-sequence': 'error',
|
|
'yaml/no-empty-key': 'error',
|
|
'yaml/no-empty-sequence-entry': 'error',
|
|
'yaml/no-irregular-whitespace': 'error',
|
|
'yaml/plain-scalar': 'error',
|
|
|
|
'yaml/vue-custom-block/no-parsing-error': 'error',
|
|
|
|
'yaml/block-mapping-question-indicator-newline': 'error',
|
|
'yaml/block-sequence-hyphen-indicator-newline': 'error',
|
|
'yaml/flow-mapping-curly-newline': 'error',
|
|
'yaml/flow-mapping-curly-spacing': 'error',
|
|
'yaml/flow-sequence-bracket-newline': 'error',
|
|
'yaml/flow-sequence-bracket-spacing': 'error',
|
|
'yaml/indent': ['error', 2],
|
|
'yaml/key-spacing': 'error',
|
|
'yaml/no-tab-indent': 'error',
|
|
'yaml/quotes': [
|
|
'error',
|
|
{
|
|
avoidEscape: true,
|
|
prefer: 'single',
|
|
},
|
|
],
|
|
'yaml/spaced-comment': 'error',
|
|
},
|
|
},
|
|
{
|
|
files: ['pnpm-workspace.yaml'],
|
|
rules: {
|
|
'yaml/sort-keys': [
|
|
'error',
|
|
{
|
|
order: [
|
|
'packages',
|
|
'overrides',
|
|
'patchedDependencies',
|
|
'hoistPattern',
|
|
'catalog',
|
|
'catalogs',
|
|
|
|
'allowedDeprecatedVersions',
|
|
'allowNonAppliedPatches',
|
|
'configDependencies',
|
|
'ignoredBuiltDependencies',
|
|
'ignoredOptionalDependencies',
|
|
'neverBuiltDependencies',
|
|
'onlyBuiltDependencies',
|
|
'onlyBuiltDependenciesFile',
|
|
'packageExtensions',
|
|
'peerDependencyRules',
|
|
'supportedArchitectures',
|
|
],
|
|
pathPattern: '^$',
|
|
},
|
|
{
|
|
order: { type: 'asc' },
|
|
pathPattern: '.*',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
];
|
|
}
|