Skip to content

starfederation/datastar-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Datastar Go SDK

Go Reference Go Report Card

This package provides a Go SDK for working with Datastar.

License

This package is licensed for free under the MIT License.

Requirements

This package requires Go 1.24 or later.

Installation

go get github.com/starfederation/datastar-go

Usage

import (
    "net/http"
    "github.com/starfederation/datastar-go/datastar"
)

// Read signals from request
type Store struct {
    Message string `json:"message"`
    Count   int    `json:"count"`
}

func handler(w http.ResponseWriter, r *http.Request) {
    // Read signals from the request
    store := &Store{}
    if err := datastar.ReadSignals(r, store); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // Create a Server-Sent Event writer
    sse := datastar.NewSSE(w, r)

    // Patch elements in the DOM
    sse.PatchElements(`<div id="output">Hello from Datastar!</div>`)

    // Remove elements from the DOM
    sse.RemoveElements("#temporary-element")

    // Patch signals (update client-side state)
    sse.PatchSignals(map[string]any{
        "message": "Updated message",
        "count":   store.Count + 1,
    })

    // Execute JavaScript in the browser
    sse.ExecuteScript(`console.log("Hello from server!")`)

    // Redirect the browser
    sse.Redirect("/new-page")
}

Examples

See the examples directory for complete working examples.

Testing

go test ./...

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

Official Datastar Go SDK.

Resources

License

Stars

Watchers

Forks

Packages

No packages published