This commit is contained in:
2026-01-27 10:37:40 -05:00
parent 60fb12e52c
commit f039a12a66
7 changed files with 209 additions and 112 deletions

View File

@@ -1,9 +1,14 @@
// Example: How to add builtins to the framework
// Just write a Go function and register it - that's all!
package main
package standard
import "fmt"
import (
"fmt"
"github.com/dop251/goja"
"reichard.io/poiesis/internal/runtime/pkg/builtin"
)
// Simple function - just register it!
func multiply(a, b int) int {
@@ -33,14 +38,25 @@ func getUser(id int) (User, error) {
}, nil
}
// Register all builtins in init
// Optional: Register custom converter for User type
func convertUser(vm *goja.Runtime, user User) goja.Value {
obj := vm.NewObject()
_ = obj.Set("name", user.Name)
_ = obj.Set("email", user.Email)
_ = obj.Set("age", user.Age)
return obj
}
// In a real file, you'd put this in init():
//
// func init() {
// RegisterBuiltin("multiply", multiply)
// RegisterBuiltin("divide", divide)
// RegisterBuiltin("getUser", getUser)
// builtin.RegisterCustomConverter(convertUser)
// builtin.RegisterBuiltin("multiply", multiply)
// builtin.RegisterBuiltin("divide", divide)
// builtin.RegisterBuiltin("getUser", getUser)
// }
// That's it! TypeScript definitions are auto-generated:
// declare function multiply(arg0: number, arg1: number): number;
// declare function divide(arg0: number, arg1: number): number;
// declare function getUser(arg0: number): any;
// declare function getUser(arg0: number): User;