// 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" ) // 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") } 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("" + title + "") }) }, AdminPages: func() []plugin.AdminPage { return []plugin.AdminPage{{ Key: "wasmfixture", Title: "Wasm Fixture", Icon: "flask", Route: "/admin/wasmfixture", }} }, } type htmlString string func (s htmlString) Render(_ context.Context, w io.Writer) error { _, err := io.WriteString(w, string(s)) return err }