44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package js
|
|
|
|
import (
|
|
"apigo.cc/ai/ai/goja"
|
|
"github.com/ssgo/u"
|
|
)
|
|
|
|
func RequireFile() map[string]any {
|
|
return map[string]any{
|
|
"read": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := MakeArgs(&argsIn, vm).Check(1)
|
|
if r, err := u.ReadFile(findPath(vm, args.Str(0))); err == nil {
|
|
return vm.ToValue(r)
|
|
} else {
|
|
panic(vm.NewGoError(err))
|
|
}
|
|
},
|
|
"write": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := MakeArgs(&argsIn, vm).Check(2)
|
|
if err := u.WriteFileBytes(findPath(vm, args.Str(0)), u.Bytes(args.Any(0))); err == nil {
|
|
return nil
|
|
} else {
|
|
panic(vm.NewGoError(err))
|
|
}
|
|
},
|
|
"dir": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := MakeArgs(&argsIn, vm).Check(1)
|
|
if r, err := u.ReadDir(findPath(vm, args.Str(0))); err == nil {
|
|
return vm.ToValue(r)
|
|
} else {
|
|
panic(vm.NewGoError(err))
|
|
}
|
|
},
|
|
"stat": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := MakeArgs(&argsIn, vm).Check(1)
|
|
return vm.ToValue(u.GetFileInfo(findPath(vm, args.Str(0))))
|
|
},
|
|
"find": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
|
args := MakeArgs(&argsIn, vm).Check(1)
|
|
return vm.ToValue(findPath(vm, args.Str(0)))
|
|
},
|
|
}
|
|
}
|