param_names

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: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ParamNamesRule = rule.Rule{
	Name: "promise/param-names",
	Run: func(ctx rule.RuleContext, options any) rule.RuleListeners {
		opts := parseOptions(options)
		// ECMAScript + Unicode flags mirror ESLint's `new RegExp(pattern, 'u')`
		// so user patterns using lookaround, backreferences, or `\p{...}` work
		// identically to the original rule (Go's standard `regexp` / RE2 does not).
		const reOpts = regexp2.ECMAScript | regexp2.Unicode
		resolveRe, err := regexp2.Compile(opts.ResolvePattern, reOpts)
		if err != nil {
			return rule.RuleListeners{}
		}
		rejectRe, err := regexp2.Compile(opts.RejectPattern, reOpts)
		if err != nil {
			return rule.RuleListeners{}
		}

		return rule.RuleListeners{
			ast.KindNewExpression: func(node *ast.Node) {
				callee := ast.SkipOuterExpressions(node.AsNewExpression().Expression, skipTransparent)
				if callee == nil || !ast.IsIdentifier(callee) || callee.AsIdentifier().Text != "Promise" {
					return
				}
				args := node.Arguments()
				if len(args) != 1 {
					return
				}
				executor := ast.SkipOuterExpressions(args[0], skipTransparent)
				if executor == nil || !ast.IsFunctionExpressionOrArrowFunction(executor) {
					return
				}

				params := make([]*ast.Node, 0, len(executor.Parameters()))
				for _, p := range executor.Parameters() {
					if !ast.IsThisParameter(p) {
						params = append(params, p)
					}
				}
				if len(params) == 0 {
					return
				}

				if resolveName := paramName(params[0]); resolveName != "" && !regexMatch(resolveRe, resolveName) {
					ctx.ReportNode(params[0], buildResolveParamNamesMessage(opts.ResolvePattern))
				}
				if len(params) >= 2 {
					if rejectName := paramName(params[1]); rejectName != "" && !regexMatch(rejectRe, rejectName) {
						ctx.ReportNode(params[1], buildRejectParamNamesMessage(opts.RejectPattern))
					}
				}
			},
		}
	},
}

Functions

This section is empty.

Types

type Options

type Options struct {
	ResolvePattern string
	RejectPattern  string
}

Jump to

Keyboard shortcuts

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