func()

in code/go/internal/validator/spec.go [186:236]


func (s Spec) rules(pkgType string, rootSpec spectypes.ItemSpec) validationRules {
	rulesDef := []struct {
		fn    validationRule
		since *semver.Version
		until *semver.Version
		types []string
	}{
		{fn: semantic.ValidateVersionIntegrity},
		{fn: semantic.ValidateChangelogLinks},
		{fn: semantic.ValidatePrerelease},
		{fn: semantic.WarnOn(semantic.ValidateMinimumKibanaVersion), until: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateMinimumKibanaVersion, since: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateFieldGroups},
		{fn: semantic.ValidateFieldsLimits(rootSpec.MaxFieldsPerDataStream()), types: []string{"integration", "input"}},
		{fn: semantic.ValidateUniqueFields, since: semver.MustParse("2.0.0"), types: []string{"integration", "input"}},
		{fn: semantic.ValidateDimensionFields, types: []string{"integration", "input"}},
		{fn: semantic.ValidateDateFields, types: []string{"integration", "input"}},
		{fn: semantic.ValidateRequiredFields, types: []string{"integration", "input"}},
		{fn: semantic.ValidateExternalFieldsWithDevFolder, types: []string{"integration", "input"}},
		{fn: semantic.WarnOn(semantic.ValidateVisualizationsUsedByValue), types: []string{"integration", "content"}, until: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateVisualizationsUsedByValue, types: []string{"integration", "content"}, since: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateILMPolicyPresent, since: semver.MustParse("2.0.0"), types: []string{"integration"}},
		{fn: semantic.ValidateProfilingNonGA, types: []string{"integration"}},
		{fn: semantic.ValidateKibanaObjectIDs, types: []string{"integration", "content"}},
		{fn: semantic.ValidateRoutingRulesAndDataset, types: []string{"integration"}, since: semver.MustParse("2.9.0")},
		{fn: semantic.ValidateKibanaNoDanglingObjectIDs, since: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateKibanaFilterPresent, since: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateKibanaNoLegacyVisualizations, types: []string{"integration", "content"}, since: semver.MustParse("3.0.0")},
		{fn: semantic.ValidateDimensionsPresent, types: []string{"integration"}, since: semver.MustParse("3.0.1")},
		{fn: semantic.ValidateCapabilitiesRequired, since: semver.MustParse("2.10.0")}, // capabilities definition was added in spec version 2.10.0
		{fn: semantic.ValidateRequiredVarGroups},
	}

	var validationRules validationRules
	for _, rule := range rulesDef {
		if rule.since != nil && s.version.LessThan(rule.since) {
			continue
		}
		if rule.until != nil && !s.version.LessThan(rule.until) {
			continue
		}

		if rule.types != nil && !slices.Contains(rule.types, pkgType) {
			continue
		}

		validationRules = append(validationRules, rule.fn)
	}

	return validationRules
}