func validatePattern(pattern string) error {
	_, err := doublestar.PathMatch(pattern, "x")
	return err
}
validatePattern tries to use pattern and returns error if it is not valid.
package filter
import "github.com/bmatcuk/doublestar/v2"
var patternDictionary = map[string][]string{
	"_ALL_FILES_": {"**"},
	"_IMAGE_EXTENSIONS_": {
		"**/*.jpg", "**/*.jpeg", "**/*.png", "**/*.webp", "**/*.gif",
		"**/*.JPG", "**/*.JPEG", "**/*.PNG", "**/*.WEBP", "**/*.GIF",
	},
	"_RAW_EXTENSIONS_": {
		"**/*.arw", "**/*.srf", "**/*.sr2", "**/*.crw", "**/*.cr2", "**/*.cr3", "**/*.dng", "**/*.nef", "**/*.nrw", "**/*.orf", "**/*.raf", "**/*.raw", "**/*.rw2",
		"**/*.ARW", "**/*.SRF", "**/*.SR2", "**/*.CRW", "**/*.CR2", "**/*.CR3", "**/*.DNG", "**/*.NEF", "**/*.NRW", "**/*.ORF", "**/*.RAF", "**/*.RAW", "**/*.RW2",
	},
	"_ALL_VIDEO_FILES_": {
		"**/*.mpg", "**/*.mod", "**/*.mmv", "**/*.tod", "**/*.wmv", "**/*.asf", "**/*.avi", "**/*.divx", "**/*.mov", "**/*.m4v", "**/*.3gp", "**/*.3g2", "**/*.mp4", "**/*.m2t", "**/*.m2ts", "**/*.mts", "**/*.mkv",
		"**/*.MPG", "**/*.MOD", "**/*.MMV", "**/*.TOD", "**/*.WMV", "**/*.ASF", "**/*.AVI", "**/*.DIVX", "**/*.MOV", "**/*.M4V", "**/*.3GP", "**/*.3G2", "**/*.MP4", "**/*.M2T", "**/*.M2TS", "**/*.MTS", "**/*.MKV",
	},
}
func translatePatternList(patternList []string) []string {
	var r []string
	for _, p := range deleteEmpty(patternList) {
		r = append(r, translatePattern(p)...)
	}
	return r
}
func translatePattern(pattern string) []string {
	if val, exist := patternDictionary[pattern]; exist {
		return val
	}
	return []string{pattern}
}
func deleteEmpty(s []string) []string {
	var r []string
	for _, str := range s {
		if str != "" {
			r = append(r, str)
		}
	}
	return r
}
func validatePatternList(patternList []string) error {
	for _, pat := range deleteEmpty(patternList) {
		if err := validatePattern(pat); err != nil {
			return err
		}
	}
	return nil
}