@devinmdavies/eslint-plugin-barrel-files
Version:
eslint plugin to avoid common errors with barrel files
77 lines (70 loc) • 1.85 kB
JavaScript
/**
* @fileoverview avoid-barrel-files-ts
* @author Pascal Schilp
*/
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
import { RuleTester } from '@typescript-eslint/rule-tester';
import { after } from 'node:test';
import rule from '../../../lib/rules/avoid-barrel-files.js';
RuleTester.afterAll = after;
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester({
parserOptions: {
sourceType: "module",
ecmaVersion: "latest",
},
});
ruleTester.run('avoid-barrel-files ts', rule, {
valid: [
{
code: `
type Money = string;
export type { Money };
`,
},
{
code: `
type Money = {
amount: string;
currency: string;
};
export type { Money };
`,
},
{
code: `
interface Money {
amount: string;
currency: string;
};
type Country = string;
type State = {
name: string;
};
const newSouthWales = {
name: "New South Wales"
};
export { newSouthWales }
export type { Money, Country, State };
`,
}
],
invalid: [
{
code: `
import { Country } from 'geo';
type Money = string;
type State = {
name: string;
};
interface Person { name: string; age: number; }
export type { Money, Country, Person, State };
`,
errors: [{ message: 'Avoid barrel files, they slow down performance, and cause large module graphs with modules that go unused.' }],
}
],
});