import type { Linter } from 'eslint'; import { interopDefault } from '../util'; export async function yaml(): Promise { 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: '.*', }, ], }, }, ]; }