consistent script processor environments

This commit is contained in:
Joel Wetzell
2026-03-08 13:32:34 -05:00
parent 6382cf6944
commit 09ddc40f1f
4 changed files with 28 additions and 14 deletions

View File

@@ -15,21 +15,9 @@ type FilterExpr struct {
Program *vm.Program
}
func SafeExprEnv(payload any) any {
exprEnv := ExprEnv{
Payload: payload,
}
return exprEnv
}
type ExprEnv struct {
Payload any
}
func (fe *FilterExpr) Process(ctx context.Context, payload any) (any, error) {
exprEnv := SafeExprEnv(payload)
exprEnv := GetEnvData(ctx, payload)
output, err := expr.Run(fe.Program, exprEnv)
if err != nil {

View File

@@ -101,6 +101,11 @@ type TemplateData struct {
Sender any
}
type EnvData struct {
Payload any
Sender any
}
func GetTemplateData(ctx context.Context, payload any) TemplateData {
templateData := TemplateData{Payload: payload}
modules := ctx.Value(common.ModulesContextKey)
@@ -114,3 +119,13 @@ func GetTemplateData(ctx context.Context, payload any) TemplateData {
}
return templateData
}
func GetEnvData(ctx context.Context, payload any) EnvData {
envData := EnvData{Payload: payload}
sender := ctx.Value(common.SenderContextKey)
if sender != nil {
envData.Sender = sender
}
return envData
}

View File

@@ -17,7 +17,7 @@ type ScriptExpr struct {
func (se *ScriptExpr) Process(ctx context.Context, payload any) (any, error) {
exprEnv := SafeExprEnv(payload)
exprEnv := GetEnvData(ctx, payload)
output, err := expr.Run(se.Program, exprEnv)
if err != nil {

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"github.com/jwetzell/showbridge-go/internal/common"
"github.com/jwetzell/showbridge-go/internal/config"
"modernc.org/quickjs"
)
@@ -30,6 +31,16 @@ func (sj *ScriptJS) Process(ctx context.Context, payload any) (any, error) {
vm.SetProperty(vm.GlobalObject(), payloadAtom, payload)
sender := ctx.Value(common.SenderContextKey)
if sender != nil {
senderAtom, err := vm.NewAtom("sender")
if err != nil {
return nil, err
}
vm.SetProperty(vm.GlobalObject(), senderAtom, sender)
}
_, err = vm.Eval(sj.Program, quickjs.EvalGlobal)
if err != nil {