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 machine, use the specific machine's methods.
Index ¶
- 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 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. |