Adding upstream version 0.0~git20250409.f7acab6.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
b9b5d88025
commit
21b930d007
51 changed files with 11229 additions and 0 deletions
97
errors/errors.go
Normal file
97
errors/errors.go
Normal file
|
@ -0,0 +1,97 @@
|
|||
package errors
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/dop251/goja"
|
||||
)
|
||||
|
||||
const (
|
||||
ErrCodeInvalidArgType = "ERR_INVALID_ARG_TYPE"
|
||||
ErrCodeInvalidArgValue = "ERR_INVALID_ARG_VALUE"
|
||||
ErrCodeInvalidThis = "ERR_INVALID_THIS"
|
||||
ErrCodeMissingArgs = "ERR_MISSING_ARGS"
|
||||
ErrCodeOutOfRange = "ERR_OUT_OF_RANGE"
|
||||
)
|
||||
|
||||
func error_toString(call goja.FunctionCall, r *goja.Runtime) goja.Value {
|
||||
this := call.This.ToObject(r)
|
||||
var name, msg string
|
||||
if n := this.Get("name"); n != nil && !goja.IsUndefined(n) {
|
||||
name = n.String()
|
||||
} else {
|
||||
name = "Error"
|
||||
}
|
||||
if m := this.Get("message"); m != nil && !goja.IsUndefined(m) {
|
||||
msg = m.String()
|
||||
}
|
||||
if code := this.Get("code"); code != nil && !goja.IsUndefined(code) {
|
||||
if name != "" {
|
||||
name += " "
|
||||
}
|
||||
name += "[" + code.String() + "]"
|
||||
}
|
||||
if msg != "" {
|
||||
if name != "" {
|
||||
name += ": "
|
||||
}
|
||||
name += msg
|
||||
}
|
||||
return r.ToValue(name)
|
||||
}
|
||||
|
||||
func addProps(r *goja.Runtime, e *goja.Object, code string) {
|
||||
e.Set("code", code)
|
||||
e.DefineDataProperty("toString", r.ToValue(error_toString), goja.FLAG_TRUE, goja.FLAG_TRUE, goja.FLAG_FALSE)
|
||||
}
|
||||
|
||||
func NewTypeError(r *goja.Runtime, code string, params ...interface{}) *goja.Object {
|
||||
e := r.NewTypeError(params...)
|
||||
addProps(r, e, code)
|
||||
return e
|
||||
}
|
||||
|
||||
func NewRangeError(r *goja.Runtime, code string, params ...interface{}) *goja.Object {
|
||||
ctor, _ := r.Get("RangeError").(*goja.Object)
|
||||
return NewError(r, ctor, code, params...)
|
||||
}
|
||||
|
||||
func NewError(r *goja.Runtime, ctor *goja.Object, code string, args ...interface{}) *goja.Object {
|
||||
if ctor == nil {
|
||||
ctor, _ = r.Get("Error").(*goja.Object)
|
||||
}
|
||||
if ctor == nil {
|
||||
return nil
|
||||
}
|
||||
msg := ""
|
||||
if len(args) > 0 {
|
||||
f, _ := args[0].(string)
|
||||
msg = fmt.Sprintf(f, args[1:]...)
|
||||
}
|
||||
o, err := r.New(ctor, r.ToValue(msg))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
addProps(r, o, code)
|
||||
return o
|
||||
}
|
||||
|
||||
func NewArgumentNotBigIntTypeError(r *goja.Runtime, name string) *goja.Object {
|
||||
return NewNotCorrectTypeError(r, name, "BigInt")
|
||||
}
|
||||
|
||||
func NewArgumentNotStringTypeError(r *goja.Runtime, name string) *goja.Object {
|
||||
return NewNotCorrectTypeError(r, name, "string")
|
||||
}
|
||||
|
||||
func NewArgumentNotNumberTypeError(r *goja.Runtime, name string) *goja.Object {
|
||||
return NewNotCorrectTypeError(r, name, "number")
|
||||
}
|
||||
|
||||
func NewNotCorrectTypeError(r *goja.Runtime, name, _type string) *goja.Object {
|
||||
return NewTypeError(r, ErrCodeInvalidArgType, "The \"%s\" argument must be of type %s.", name, _type)
|
||||
}
|
||||
|
||||
func NewArgumentOutOfRangeError(r *goja.Runtime, name string, v any) *goja.Object {
|
||||
return NewRangeError(r, ErrCodeOutOfRange, "The value of \"%s\" %v is out of range.", name, v)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue