Files
waf-platform/EdgeNode/internal/js/lib_console_log.go
2026-02-04 20:27:13 +08:00

96 lines
2.1 KiB
Go

// 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
}