29 lines
598 B
Go
29 lines
598 B
Go
|
package module
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/dop251/goja"
|
||
|
)
|
||
|
|
||
|
func assertType[T any](v goja.Value, rt *goja.Runtime) T {
|
||
|
if c, ok := v.Export().(T); ok {
|
||
|
return c
|
||
|
}
|
||
|
|
||
|
panic(rt.NewTypeError(fmt.Sprintf("expected value to be a '%T', got '%T'", new(T), v.Export())))
|
||
|
}
|
||
|
|
||
|
func assertContext(v goja.Value, r *goja.Runtime) context.Context {
|
||
|
return assertType[context.Context](v, r)
|
||
|
}
|
||
|
|
||
|
func assertObject(v goja.Value, r *goja.Runtime) map[string]any {
|
||
|
return assertType[map[string]any](v, r)
|
||
|
}
|
||
|
|
||
|
func assertString(v goja.Value, r *goja.Runtime) string {
|
||
|
return assertType[string](v, r)
|
||
|
}
|