no_multi_comp

package
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NoMultiCompRule = rule.Rule{
	Name: "react/no-multi-comp",
	Run: func(ctx rule.RuleContext, options any) rule.RuleListeners {
		opts := parseOptions(options)
		pragma := reactutil.GetReactPragma(ctx.Settings)
		createClass := reactutil.GetReactCreateClass(ctx.Settings)
		wrappers := reactutil.GetComponentWrapperFunctions(ctx.Settings, pragma)

		entries := collectComponents(ctx.SourceFile, pragma, createClass, wrappers, ctx.TypeChecker)

		kept := entries
		if opts.IgnoreStateless {
			filtered := kept[:0]
			for _, e := range entries {
				if isStatelessKindForIgnore(e.node) {
					continue
				}
				filtered = append(filtered, e)
			}
			kept = filtered
		}

		if len(kept) <= 1 {
			return rule.RuleListeners{}
		}

		for _, e := range kept[1:] {
			ctx.ReportNode(e.node, rule.RuleMessage{
				Id:          "onlyOneComponent",
				Description: "Declare only one React component per file",
			})
		}
		return rule.RuleListeners{}
	},
}

Functions

This section is empty.

Types

type Options

type Options struct {
	IgnoreStateless bool
}

Options carries the parsed rule options. Mirrors upstream's schema:

[{
  type: 'object',
  properties: {
    ignoreStateless: { default: false, type: 'boolean' },
  },
  additionalProperties: false,
}]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL