Documentation
¶
Overview ¶
Package polyscript provides a unified interface for executing scripts in different language runtimes.
This package supports these "engine" types:
- Extism: WebAssembly modules
- Risor: Risor scripting language
- Starlark: Starlark configuration language
For each engine, there are two main patterns available:
- Basic execution: Load and execute scripts without external data
- With data preparation: Provide initial static data, and thread-safe dynamic runtime data
All functions in this package return a common evaluation.Evaluator interface. For direct access to the underlying engine, use the specific engine's methods.
Index ¶
- func FromExtismBytes(wasmBytes []byte, logHandler slog.Handler, entryPoint string) (platform.Evaluator, error)
- func FromExtismBytesWithData(wasmBytes []byte, staticData map[string]any, logHandler slog.Handler, ...) (platform.Evaluator, error)
- func FromExtismFile(filePath string, logHandler slog.Handler, entryPoint string) (platform.Evaluator, error)
- func FromExtismFileWithData(filePath string, staticData map[string]any, logHandler slog.Handler, ...) (platform.Evaluator, error)
- func FromRisorFile(filePath string, logHandler slog.Handler) (platform.Evaluator, error)
- func FromRisorFileWithData(filePath string, staticData map[string]any, logHandler slog.Handler) (platform.Evaluator, error)
- func FromRisorString(content string, logHandler slog.Handler) (platform.Evaluator, error)
- func FromRisorStringWithData(script string, staticData map[string]any, logHandler slog.Handler) (platform.Evaluator, error)
- func FromStarlarkFile(filePath string, logHandler slog.Handler) (platform.Evaluator, error)
- func FromStarlarkFileWithData(filePath string, staticData map[string]any, logHandler slog.Handler) (platform.Evaluator, error)
- func FromStarlarkString(content string, logHandler slog.Handler) (platform.Evaluator, error)
- func FromStarlarkStringWithData(script string, staticData map[string]any, logHandler slog.Handler) (platform.Evaluator, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FromExtismBytes ¶ added in v0.0.3
func FromExtismBytes( wasmBytes []byte, logHandler slog.Handler, entryPoint string, ) (platform.Evaluator, error)
FromExtismBytes creates an Extism evaluator from WASM bytecode.
Example:
wasmBytes := []byte{...} // Your WASM bytecode be, err := FromExtismBytes(wasmBytes, slog.Default().Handler(), "process")
func FromExtismBytesWithData ¶ added in v0.0.3
func FromExtismBytesWithData( wasmBytes []byte, staticData map[string]any, logHandler slog.Handler, entryPoint string, ) (platform.Evaluator, error)
FromExtismBytesWithData creates an Extism evaluator from WASM bytecode with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
wasmBytes := []byte{...} // Your WASM bytecode staticData := map[string]any{"config": "value"} be, err := FromExtismBytesWithData(wasmBytes, staticData, slog.Default().Handler(), "process") runtimeData := map[string]any{"request": req} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
func FromExtismFile ¶
func FromExtismFile( filePath string, logHandler slog.Handler, entryPoint string, ) (platform.Evaluator, error)
FromExtismFile creates an Extism evaluator from a WASM file.
Example:
be, err := FromExtismFile("path/to/module.wasm", slog.Default().Handler(), "process") result, err := be.Eval(context.Background())
func FromExtismFileWithData ¶
func FromExtismFileWithData( filePath string, staticData map[string]any, logHandler slog.Handler, entryPoint string, ) (platform.Evaluator, error)
FromExtismFileWithData creates an Extism evaluator with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
staticData := map[string]any{"config": "value"} be, err := FromExtismFileWithData("path/to/module.wasm", staticData, slog.Default().Handler(), "process") runtimeData := map[string]any{"request": req} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
func FromRisorFile ¶
FromRisorFile creates a Risor evaluator from a .risor file.
Example:
be, err := FromRisorFile("path/to/script.risor", slog.Default().Handler()) result, err := be.Eval(context.Background())
func FromRisorFileWithData ¶
func FromRisorFileWithData( filePath string, staticData map[string]any, logHandler slog.Handler, ) (platform.Evaluator, error)
FromRisorFileWithData creates a Risor evaluator with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
staticData := map[string]any{"config": "value"} be, err := FromRisorFileWithData("path/to/script.risor", staticData, slog.Default().Handler()) runtimeData := map[string]any{"request": req} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
func FromRisorString ¶
FromRisorString creates a Risor evaluator from a script string.
Example:
script := `return "Hello, world!"` be, err := FromRisorString(script, slog.Default().Handler()) result, err := be.Eval(context.Background())
func FromRisorStringWithData ¶
func FromRisorStringWithData( script string, staticData map[string]any, logHandler slog.Handler, ) (platform.Evaluator, error)
FromRisorStringWithData creates a Risor evaluator with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
script := `return config + " and " + request.field` staticData := map[string]any{"config": "static value"} be, err := FromRisorStringWithData(script, staticData, slog.Default().Handler()) runtimeData := map[string]any{"request": map[string]string{"field": "dynamic value"}} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
func FromStarlarkFile ¶
FromStarlarkFile creates a Starlark evaluator from a .star file.
Example:
be, err := FromStarlarkFile("path/to/script.star", slog.Default().Handler()) result, err := be.Eval(context.Background())
func FromStarlarkFileWithData ¶
func FromStarlarkFileWithData( filePath string, staticData map[string]any, logHandler slog.Handler, ) (platform.Evaluator, error)
FromStarlarkFileWithData creates a Starlark evaluator with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
staticData := map[string]any{"constants": map[string]string{"version": "1.0"}} be, err := FromStarlarkFileWithData("path/to/script.star", staticData, slog.Default().Handler()) runtimeData := map[string]any{"input": userInput} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
func FromStarlarkString ¶
FromStarlarkString creates a Starlark evaluator from a script string.
Example:
script := `def main(): return "Hello from Starlark"` be, err := FromStarlarkString(script, slog.Default().Handler()) result, err := be.Eval(context.Background())
func FromStarlarkStringWithData ¶
func FromStarlarkStringWithData( script string, staticData map[string]any, logHandler slog.Handler, ) (platform.Evaluator, error)
FromStarlarkStringWithData creates a Starlark evaluator with both static and dynamic data capabilities. To add runtime data, use the AddDataToContext method on the evaluator to add data to the context.
Example:
script := `def main(): return constants.greeting + " " + user.name` staticData := map[string]any{"constants": map[string]string{"greeting": "Hello"}} be, err := FromStarlarkStringWithData(script, staticData, slog.Default().Handler()) runtimeData := map[string]any{"user": map[string]string{"name": "World"}} ctx, err = be.AddDataToContext(context.Background(), runtimeData) result, err := be.Eval(ctx)
Types ¶
This section is empty.
Directories
¶
Path | Synopsis |
---|---|
extism/adapters
The adapters for the Extism SDK types that wrap the SDK's concrete types are defined here.
|
The adapters for the Extism SDK types that wrap the SDK's concrete types are defined here. |
types/gen
command
|
|
examples
|
|
data-prep/extism
command
Package main provides an example of using Extism with go-polyscript
|
Package main provides an example of using Extism with go-polyscript |
data-prep/risor
command
|
|
data-prep/starlark
command
|
|
multiple-instantiation/extism
command
|
|
multiple-instantiation/risor
command
|
|
multiple-instantiation/starlark
command
|
|
simple/extism
command
|
|
simple/risor
command
|
|
simple/starlark
command
|
|
internal
|
|
constants
Description: This file contains constants used for accessing values from context objects.
|
Description: This file contains constants used for accessing values from context objects. |
script/loader
Package loader provides implementations of the Loader interface for various source types.
|
Package loader provides implementations of the Loader interface for various source types. |
script/loader/httpauth
Package httpauth provides authentication strategies for HTTP requests in go-polyscript.
|
Package httpauth provides authentication strategies for HTTP requests in go-polyscript. |