mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-17 17:05:25 +00:00
31 lines
833 B
Go
31 lines
833 B
Go
|
|
package gojs
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/dop251/goja"
|
||
|
|
errorutil "github.com/projectdiscovery/utils/errors"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
ErrInvalidFuncOpts = errorutil.NewWithFmt("invalid function options: %v")
|
||
|
|
)
|
||
|
|
|
||
|
|
type FuncOpts struct {
|
||
|
|
Name string
|
||
|
|
Signatures []string
|
||
|
|
Description string
|
||
|
|
FuncDecl interface{}
|
||
|
|
}
|
||
|
|
|
||
|
|
// valid checks if the function options are valid
|
||
|
|
func (f *FuncOpts) valid() bool {
|
||
|
|
return f.Name != "" && f.FuncDecl != nil && len(f.Signatures) > 0 && f.Description != ""
|
||
|
|
}
|
||
|
|
|
||
|
|
// RegisterFunc registers a function with given name, signatures and description
|
||
|
|
func RegisterFuncWithSignature(runtime *goja.Runtime, opts FuncOpts) error {
|
||
|
|
if !opts.valid() {
|
||
|
|
return ErrInvalidFuncOpts.Msgf("name: %s, signatures: %v, description: %s", opts.Name, opts.Signatures, opts.Description)
|
||
|
|
}
|
||
|
|
return runtime.Set(opts.Name, opts.FuncDecl)
|
||
|
|
}
|