UNPKG

@bfra.me/eslint-config

Version:
73 lines (71 loc) 2.38 kB
import type {Config} from '../config' import {anyParser} from '../parsers/any-parser' import {requireOf} from '../require-of' import {interopDefault} from '../utils' import {fallback} from './fallback' export async function jsonSchema(name: string, files: string[]): Promise<Config[]> { return requireOf( ['eslint-plugin-json-schema-validator'], async () => { const pluginJsonSchemaValidator = await interopDefault( import('eslint-plugin-json-schema-validator'), ) return [ ...pluginJsonSchemaValidator.configs['flat/recommended'] .map((config: Config) => { if (config.files == null) { return {...config, files} } if (config.files.flat().some(file => files.some(suffix => file.endsWith(suffix)))) { return config } return {} }) .filter(o => Object.keys(o).length > 0) .map((config: Config, index) => ({ ...config, name: config.plugins ? `@bfra.me/${name}/json-schema/plugins` : `@bfra.me/${name}/json-schema/${(config.name ?? '') || `unnamed${index}`}`, })), { name: `@bfra.me/${name}/json-schema`, files, rules: { 'json-schema-validator/no-invalid': [ 'error', { schemas: [ { fileMatch: ['.eslintrc.js'], schema: 'https://json.schemastore.org/eslintrc', }, { fileMatch: ['.prettierrc.toml'], schema: 'https://json.schemastore.org/prettierrc', }, { fileMatch: [ 'stylelint.config.js', 'stylelint.config.cjs', '.stylelintrc.js', '.stylelintrc.yaml', '.stylelintrc.yml', ], schema: 'https://json.schemastore.org/stylelintrc', }, ], useSchemastoreCatalog: true, }, ], }, }, ] }, async missingList => fallback(missingList, { files, languageOptions: {parser: anyParser}, }), ) }