module.go 791 B

12345678910111213141516171819202122232425262728293031323334
  1. package console
  2. import (
  3. "github.com/sagernet/sing-box/script/jsc"
  4. "github.com/sagernet/sing-box/script/modules/require"
  5. "github.com/dop251/goja"
  6. )
  7. const ModuleName = "console"
  8. type Module struct {
  9. runtime *goja.Runtime
  10. console jsc.Class[*Module, *Console]
  11. }
  12. func Require(runtime *goja.Runtime, module *goja.Object) {
  13. m := &Module{
  14. runtime: runtime,
  15. }
  16. m.console = createConsole(m)
  17. exports := module.Get("exports").(*goja.Object)
  18. exports.Set("Console", m.console.ToValue())
  19. }
  20. func Enable(runtime *goja.Runtime) {
  21. exports := require.Require(runtime, ModuleName).ToObject(runtime)
  22. classConsole := jsc.GetClass[*Module, *Console](runtime, exports, "Console")
  23. runtime.Set("console", NewConsole(classConsole))
  24. }
  25. func (m *Module) Runtime() *goja.Runtime {
  26. return m.runtime
  27. }