Documentation ¶
Index ¶
- func HijackConsoleLogging(e *Engine) error
- type Engine
- func (e *Engine) AddImport(filename string, loader func() []byte)
- func (e *Engine) CallFunctionWithTimeout(fn string) (otto.Value, error)
- func (e *Engine) DeclareNamespace(namespace string) (*otto.Object, error)
- func (e *Engine) EnableAssets() error
- func (e *Engine) Exec(fn string) (otto.Value, error)
- func (e *Engine) ImportNativePackage(namespace string, pkg *NativePackage) error
- func (e *Engine) ImportStandardLibrary(pkgs []*NativePackage) error
- func (e *Engine) InitVM() error
- func (e *Engine) LoadScript(filename string, source []byte) error
- func (e *Engine) LoadScriptWithTimeout(script *ast.Program) (otto.Value, error)
- func (e *Engine) Raise(name string, format string, args ...interface{}) otto.Value
- func (e *Engine) SetConst(name string, value interface{}) error
- func (e *Engine) SetEntryPoint(fnName string)
- func (e *Engine) SetID(id string)
- func (e *Engine) SetLogger(l logger.Logger) error
- func (e *Engine) SetName(n string)
- func (e *Engine) SetTimeout(t int)
- type NativeConst
- type NativeField
- type NativeFunc
- type NativePackage
- type NativeType
- type NativeVar
- type ParamDef
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HijackConsoleLogging ¶
HijackConsoleLogging intercepts the javascript runtimes console logging functions (i.e. console.log) and dynamically generates new native function implementations of those build ins that use the engine object's Logger interface
Types ¶
type Engine ¶
type Engine struct { // javascript V8 runtime VM *otto.Otto // logger interface for any output Logger logger.Logger // maps the asset names to the functions that return their bytes Imports map[string]func() []byte // maps the namespaces to native packages created by the compiler Packages map[string]*NativePackage // plaintext name of the VM - usually the script file basename Name string // unique identifier for this VM (unique per build) ID string // flag to denote whether the debugger is enabled DebuggerEnabled bool // timeout in seconds Timeout int // is the genesis VM halted Halted bool // is the genesis VM paused Paused bool // backwards compatibility to tell the planner whether to execute the before hook BeforeHook bool // backwards compatibility option to tell the planner whether to execute the after hook AfterHook bool // defines the entry point function for execution of the script EntryPoint string // contains filtered or unexported fields }
Engine defines the virtual machine type for the genesis scripting engine
func New ¶
New returns a new genesis virtual machine with the given parameters (does not run, just returns the container object)
func (*Engine) CallFunctionWithTimeout ¶
CallFunctionWithTimeout calls a given top level function in the VM that honors the VMs timeout setting
func (*Engine) DeclareNamespace ¶
DeclareNamespace adds an empty namespace to the virtual machine. Caution! will overwrite any values at existing namespace.
func (*Engine) EnableAssets ¶
EnableAssets injects the core asset handling functions into the engine's runtime TODO (gen0cide): Fix asset retrieval to call from vm functions, not the raw translations
func (*Engine) Exec ¶
Exec takes a single string of javascript and evaluates it within the VMs current context. It will return both a javascript value object as well as an error if one was encountered
func (*Engine) ImportNativePackage ¶
func (e *Engine) ImportNativePackage(namespace string, pkg *NativePackage) error
ImportNativePackage adds a golang native package to the virtual machine's runtime at a specified namespace
func (*Engine) ImportStandardLibrary ¶
func (e *Engine) ImportStandardLibrary(pkgs []*NativePackage) error
ImportStandardLibrary injects all provided native packages into the standard libraries namespace within the engine
func (*Engine) LoadScript ¶
LoadScript takes a script (source) with a corrasponding filename for debugging purposes and checks it for syntax errors before evaluating the script within the virtual machine's current scope
func (*Engine) LoadScriptWithTimeout ¶
LoadScriptWithTimeout evaluates an expression in the VM that honors the VMs timeout setting
func (*Engine) Raise ¶
Raise is a convenience method for throwing a javascript runtime error from go space
func (*Engine) SetEntryPoint ¶
SetEntryPoint sets the function name of the entry point function for the script
func (*Engine) SetTimeout ¶
SetTimeout sets the timeout in seconds for the virtual machine
type NativeConst ¶
type NativeConst struct { Name string Value interface{} }
NativeConst defines a golang const declared within a given library
type NativeField ¶
NativeField expresses a struct field within a Go native type within the engine
type NativeFunc ¶
type NativeFunc struct { Name string Signature string Func func(call otto.FunctionCall) otto.Value }
NativeFunc defines a golang library function that is callable from within the genesis VM
type NativePackage ¶
type NativePackage struct { ImportPath string Name string SymbolTable map[string]*NativeFunc Types map[string]*NativeType Consts map[string]*NativeConst Vars map[string]*NativeVar }
NativePackage defines a golang library that is being imported into the genesis VM
type NativeType ¶
type NativeType struct { Name string Factory func(call otto.FunctionCall) otto.Value Fields map[string]*NativeField }
NativeType expresses a native Golang type definition that can be used within the engine