Skip to content

Commit

Permalink
Use the new no-circular-dependencies ESLint rule in the library (#159)
Browse files Browse the repository at this point in the history
  • Loading branch information
guyca committed Jul 10, 2024
1 parent d33f71b commit 625c5b8
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 39 deletions.
2 changes: 2 additions & 0 deletions packages/eslint-plugin-obsidian/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
const { unresolvedProviderDependenciesGenerator } = require('./rules/unresolvedProviderDependencies');
const { noCircularDependenciesGenerator } = require('./rules/noCircularDependency');

module.exports = {
rules: {
'unresolved-provider-dependencies': unresolvedProviderDependenciesGenerator(),
'no-circular-dependencies': noCircularDependenciesGenerator(),
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export class ErrorReporter {
if (error && node && path) {
this.context.reportError(
node,
'circular-dependencies',
'no-circular-dependencies',
{
firstDependency: path[0],
path: path.join(' -> '),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ import type { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { create } from './createRule';
import {Context} from '../../dto/context';

type Rule = TSESLint.RuleModule<'circular-dependencies', []>;
type Rule = TSESLint.RuleModule<'no-circular-dependencies', []>;

const createRule = ESLintUtils.RuleCreator(
(name) => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`,
);

export const circularDependenciesGenerator = () => {
export const noCircularDependenciesGenerator = () => {
return createRule({
create: (context: RuleContext<'circular-dependencies', []>) => {
create: (context: RuleContext<'no-circular-dependencies', []>) => {
return create(new Context(context));
},
name: 'circular-dependencies',
name: 'no-circular-dependencies',
meta: {
docs: {
description: 'Dependencies must be defined in the graph or its subgraphs.',
recommended: 'strict',
},
messages: {
'circular-dependencies': 'Circular dependency detected starting from {{firstDependency}}: {{path}}',
'no-circular-dependencies': 'Circular dependency detected starting from {{firstDependency}}: {{path}}',
},
schema: [],
type: 'problem',
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { RuleTester } from '@typescript-eslint/rule-tester';
import { noCircularDependenciesGenerator } from '../../src/rules/noCircularDependency';
import {
circularDependencyBetween3Providers,
circularDependencyBetweenSomeOfTheProviders,
invalidGraph,
} from 'eslint-plugin-obsidian/tests/noCircularDependencies/code/invalidGraphs';
import { validGraph } from 'eslint-plugin-obsidian/tests/noCircularDependencies/code/validGraphs';

const ruleTester = new RuleTester();

ruleTester.run(
'no-circular-dependencies',
noCircularDependenciesGenerator(),
{
valid: [validGraph],
invalid: [
{
code: invalidGraph,
errors: [{ messageId: 'no-circular-dependencies' }],
},
{
code: circularDependencyBetween3Providers,
errors: [{ messageId: 'no-circular-dependencies' }],
},
{
code: circularDependencyBetweenSomeOfTheProviders,
errors: [{ messageId: 'no-circular-dependencies' }],
},
],
},
);
3 changes: 2 additions & 1 deletion packages/react-obsidian/.eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
],
"rules": {
"no-console":"off",
"obsidian/unresolved-provider-dependencies": 2,
"obsidian/unresolved-provider-dependencies": "error",
"obsidian/no-circular-dependencies": "warn",
"@stylistic/max-len": [
"error",
{
Expand Down

0 comments on commit 625c5b8

Please sign in to comment.