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
}