in pkg/asyncapi/v2/decode.go [93:114]
func setDefaultsHook(_ reflect.Type, to reflect.Type, data interface{}) (interface{}, error) {
if !to.Implements(reflect.TypeOf((*MapStructureDefaultsProvider)(nil)).Elem()) {
return data, nil
}
var toType reflect.Type
switch to.Kind() { //nolint:exhaustive
case reflect.Array, reflect.Chan, reflect.Map, reflect.Ptr, reflect.Slice:
toType = to.Elem()
default:
toType = to
}
defaults := reflect.New(toType).Interface().(MapStructureDefaultsProvider).MapStructureDefaults()
for k, v := range defaults {
if _, ok := data.(map[string]interface{})[k]; !ok {
data.(map[string]interface{})[k] = v
}
}
return data, nil
}