From bf5ec80c8bc35b2a1a49d12be7d7e33ee0141997 Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 23:15:11 +0000 Subject: [PATCH] fix(codegen): reduce poll timer churn Use a ticker in watch mode and build registration strings without fmt. Co-Authored-By: Virgil --- cmd/codegen/main.go | 5 ++++- codegen/codegen.go | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cmd/codegen/main.go b/cmd/codegen/main.go index b9daa73..9681486 100644 --- a/cmd/codegen/main.go +++ b/cmd/codegen/main.go @@ -82,6 +82,9 @@ func runDaemon(ctx context.Context, inputPath, outputPath string, emitTypes bool var lastInput string var lastOutput string + ticker := time.NewTicker(pollInterval) + defer ticker.Stop() + for { input, err := coreio.Local.Read(inputPath) if err != nil { @@ -111,7 +114,7 @@ func runDaemon(ctx context.Context, inputPath, outputPath string, emitTypes bool return nil } return ctx.Err() - case <-time.After(pollInterval): + case <-ticker.C: } } } diff --git a/codegen/codegen.go b/codegen/codegen.go index 1068bf4..de446fd 100644 --- a/codegen/codegen.go +++ b/codegen/codegen.go @@ -1,7 +1,6 @@ package codegen import ( - "fmt" "slices" "strconv" "strings" @@ -81,7 +80,13 @@ func GenerateClass(tag, slot string) (string, error) { // // Example: GenerateRegistration("nav-bar", "NavBar") func GenerateRegistration(tag, className string) string { - return fmt.Sprintf(`customElements.define("%s", %s);`, tag, className) + var b strings.Builder + b.WriteString(`customElements.define("`) + b.WriteString(tag) + b.WriteString(`", `) + b.WriteString(className) + b.WriteString(`);`) + return b.String() } // codegen/codegen.go: TagToClassName converts a kebab-case tag to PascalCase class name.