Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 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.RemoveElement("#temporary-element")

    // Patch signals (update client-side state)
    sse.MarshalAndPatchSignals(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.

Releases

Packages

Contributors

Languages