1.4.5.2
This commit is contained in:
95
EdgeNode/internal/js/lib_console_log.go
Normal file
95
EdgeNode/internal/js/lib_console_log.go
Normal file
@@ -0,0 +1,95 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
//go:build script
|
||||
// +build script
|
||||
|
||||
package js
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||
teaconst "github.com/TeaOSLab/EdgeNode/internal/const"
|
||||
"github.com/TeaOSLab/EdgeNode/internal/remotelogs"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var SharedJSConsoleLogLibrary = NewJSConsoleLogLibrary()
|
||||
|
||||
func init() {
|
||||
if !teaconst.IsMain {
|
||||
return
|
||||
}
|
||||
|
||||
SharedLibraryManager.Register(SharedJSConsoleLogLibrary)
|
||||
}
|
||||
|
||||
type JSConsoleLogLibrary struct {
|
||||
JSBaseLibrary
|
||||
|
||||
t *testing.T
|
||||
}
|
||||
|
||||
func NewJSConsoleLogLibrary() *JSConsoleLogLibrary {
|
||||
return &JSConsoleLogLibrary{}
|
||||
}
|
||||
|
||||
func (this *JSConsoleLogLibrary) JSNamespace() string {
|
||||
return "gojs.console.JSConsoleLogLibrary"
|
||||
}
|
||||
|
||||
func (this *JSConsoleLogLibrary) JSPrototype() string {
|
||||
return `console.log = function () {
|
||||
$this.Log(arguments)
|
||||
}`
|
||||
}
|
||||
|
||||
func (this *JSConsoleLogLibrary) JSSetTesting(t *testing.T) {
|
||||
this.t = t
|
||||
}
|
||||
|
||||
func (this *JSConsoleLogLibrary) Log(arguments *FunctionArguments) (any, error) {
|
||||
arg0, ok := arguments.ArgAt(0)
|
||||
if !ok {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var values = []string{}
|
||||
if arg0.IsArgumentsObject() {
|
||||
var obj = arg0.Object()
|
||||
if obj != nil {
|
||||
valueLength, err := obj.Get("length")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var length = valueLength.Uint32()
|
||||
for i := uint32(0); i < length; i++ {
|
||||
arg, err := obj.GetIdx(i)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if arg.IsObject() || arg.IsArray() {
|
||||
objectJSON, err := arg.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
values = append(values, string(objectJSON))
|
||||
} else {
|
||||
values = append(values, arg.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if this.t != nil {
|
||||
this.t.Log("[JS_CONSOLE_LOG]" + strings.Join(values, " "))
|
||||
} else {
|
||||
var serverId = arguments.Context().ServerId()
|
||||
if serverId > 0 {
|
||||
remotelogs.ServerLog(serverId, "SCRIPT", "[CONSOLE_LOG]"+strings.Join(values, " "), nodeconfigs.NodeLogTypeScriptConsoleLog, maps.Map{})
|
||||
} else {
|
||||
remotelogs.Println("SCRIPT", "[CONSOLE_LOG]"+strings.Join(values, " "))
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user