// Package main is the WO-WZ-002 acceptance fixture: a minimal plugin with // one block, one template, and one admin page, compiled to wasm with only // the wasmguest boilerplate (main.go). package main import ( "context" "fmt" "io" "git.dev.alexdunmow.com/block/core/blocks" "git.dev.alexdunmow.com/block/core/plugin" "git.dev.alexdunmow.com/block/core/templates" ) // capReport is populated by the Load hook from capability calls, then // surfaced through the greeting block ({"report": true}). It is the runtime // proof that deps.Content / deps.Settings / deps.Bridge cross the wasm ABI // end-to-end through the guest capability stubs (WO-WZ-003 acceptance). var capReport string // Registration is the fixture's plugin registration — the same shape a .so // plugin exports, untouched by the wasm migration. var Registration = plugin.PluginRegistration{ Name: "wasmfixture", Version: "0.0.1", Register: func(tr templates.TemplateRegistry, br blocks.BlockRegistry) error { br.Register(blocks.BlockMeta{ Key: "greeting", Title: "Greeting", Description: "Renders a greeting", Category: blocks.CategoryContent, }, func(ctx context.Context, content map[string]any) string { if boom, _ := content["boom"].(bool); boom { panic("fixture kaboom") } if report, _ := content["report"].(bool); report { return "
capreport:" + capReport + "
" } name, _ := content["name"].(string) if name == "" { name = "world" } return fmt.Sprintf("hello %s
", name) }) return tr.Register("wasmfixture-page", func(ctx context.Context, doc map[string]any) templates.HTMLComponent { title, _ := doc["title"].(string) return htmlString("