mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Fix inconsistent field names in javascript plugin hooks (#4869)
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"reflect"
|
||||
|
||||
"github.com/dop251/goja"
|
||||
)
|
||||
@@ -16,8 +17,27 @@ type VM struct {
|
||||
GQLHandler http.Handler
|
||||
}
|
||||
|
||||
// optionalFieldNameMapper wraps a goja.FieldNameMapper and returns the field name if the wrapped mapper returns an empty string.
|
||||
type optionalFieldNameMapper struct {
|
||||
mapper goja.FieldNameMapper
|
||||
}
|
||||
|
||||
func (tfm optionalFieldNameMapper) FieldName(t reflect.Type, f reflect.StructField) string {
|
||||
if ret := tfm.mapper.FieldName(t, f); ret != "" {
|
||||
return ret
|
||||
}
|
||||
|
||||
return f.Name
|
||||
}
|
||||
|
||||
func (tfm optionalFieldNameMapper) MethodName(t reflect.Type, m reflect.Method) string {
|
||||
return tfm.mapper.MethodName(t, m)
|
||||
}
|
||||
|
||||
func NewVM() *VM {
|
||||
return &VM{Runtime: goja.New()}
|
||||
r := goja.New()
|
||||
r.SetFieldNameMapper(optionalFieldNameMapper{goja.TagFieldNameMapper("json", true)})
|
||||
return &VM{Runtime: r}
|
||||
}
|
||||
|
||||
type APIAdder interface {
|
||||
|
||||
Reference in New Issue
Block a user