datastar

package
v0.21.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2024 License: MIT Imports: 15 Imported by: 8

Documentation

Index

Constants

View Source
const (
	DatastarKey               = "datastar"
	Version                   = "0.21.4"
	VersionClientByteSize     = 34326
	VersionClientByteSizeGzip = 12688

	// The default duration for settling during fragment merges. Allows for CSS transitions to complete.
	DefaultFragmentsSettleDuration = 300 * time.Millisecond
	// The default duration for retrying SSE on connection reset. This is part of the underlying retry mechanism of SSE.
	DefaultSseRetryDuration = 1000 * time.Millisecond

	// The default attributes for <script/> element use when executing scripts. It is a set of of key-value pairs delimited by a newline \\n character.
	DefaultExecuteScriptAttributes = "type module"

	//region Dataline literals
	SelectorDatalineLiteral          = "selector "
	MergeModeDatalineLiteral         = "mergeMode "
	SettleDurationDatalineLiteral    = "settleDuration "
	FragmentsDatalineLiteral         = "fragments "
	UseViewTransitionDatalineLiteral = "useViewTransition "
	SignalsDatalineLiteral           = "signals "
	OnlyIfMissingDatalineLiteral     = "onlyIfMissing "
	PathsDatalineLiteral             = "paths "
	ScriptDatalineLiteral            = "script "
	AttributesDatalineLiteral        = "attributes "
	AutoRemoveDatalineLiteral        = "autoRemove "
)
View Source
const (
	NewLine       = "\n"
	DoubleNewLine = "\n\n"
)

Variables

View Source
var (

	// Should fragments be merged using the ViewTransition API?
	DefaultFragmentsUseViewTransitions = false

	// Should a given set of signals merge if they are missing?
	DefaultMergeSignalsOnlyIfMissing = false

	// Should script element remove itself after execution?
	DefaultExecuteScriptAutoRemove = true
)
View Source
var (
	ErrEventTypeError = errors.New("event type is required")
)
View Source
var (
	ErrNoPathsProvided = errors.New("no paths provided")
)

Functions

func DeleteSSE

func DeleteSSE(urlFormat string, args ...any) string

func GetSSE

func GetSSE(urlFormat string, args ...any) string

func PatchSSE

func PatchSSE(urlFormat string, args ...any) string

func PostSSE

func PostSSE(urlFormat string, args ...any) string

func PutSSE

func PutSSE(urlFormat string, args ...any) string

func ReadSignals

func ReadSignals(r *http.Request, signals any) error

Types

type DispatchCustomEventOption

type DispatchCustomEventOption func(*DispatchCustomEventOptions)

func WithDispatchCustomEventBubbles

func WithDispatchCustomEventBubbles(bubbles bool) DispatchCustomEventOption

func WithDispatchCustomEventCancelable

func WithDispatchCustomEventCancelable(cancelable bool) DispatchCustomEventOption

func WithDispatchCustomEventComposed

func WithDispatchCustomEventComposed(composed bool) DispatchCustomEventOption

func WithDispatchCustomEventEventID

func WithDispatchCustomEventEventID(id string) DispatchCustomEventOption

func WithDispatchCustomEventRetryDuration

func WithDispatchCustomEventRetryDuration(retryDuration time.Duration) DispatchCustomEventOption

func WithDispatchCustomEventSelector

func WithDispatchCustomEventSelector(selector string) DispatchCustomEventOption

type DispatchCustomEventOptions

type DispatchCustomEventOptions struct {
	EventID       string
	RetryDuration time.Duration
	Selector      string
	Bubbles       bool
	Cancelable    bool
	Composed      bool
}

type EventType

type EventType string

region The type protocol on top of SSE which allows for core pushed based communication between the server and the client.

const (
	// An event for merging HTML fragments into the DOM.
	EventTypeMergeFragments EventType = "datastar-merge-fragments"

	// An event for merging signals.
	EventTypeMergeSignals EventType = "datastar-merge-signals"

	// An event for removing HTML fragments from the DOM.
	EventTypeRemoveFragments EventType = "datastar-remove-fragments"

	// An event for removing signals.
	EventTypeRemoveSignals EventType = "datastar-remove-signals"

	// An event for executing <script/> elements in the browser.
	EventTypeExecuteScript EventType = "datastar-execute-script"
)

type ExecuteScriptOption

type ExecuteScriptOption func(*ExecuteScriptOptions)

func WithExecuteScriptAttributeKVs

func WithExecuteScriptAttributeKVs(kvs ...string) ExecuteScriptOption

func WithExecuteScriptAttributes

func WithExecuteScriptAttributes(attributes ...string) ExecuteScriptOption

func WithExecuteScriptAutoRemove

func WithExecuteScriptAutoRemove(autoremove bool) ExecuteScriptOption

func WithExecuteScriptEventID

func WithExecuteScriptEventID(id string) ExecuteScriptOption

func WithExecuteScriptRetryDuration

func WithExecuteScriptRetryDuration(retryDuration time.Duration) ExecuteScriptOption

type ExecuteScriptOptions

type ExecuteScriptOptions struct {
	EventID       string
	RetryDuration time.Duration
	Attributes    []string
	AutoRemove    *bool
}

type FragmentMergeMode

type FragmentMergeMode string

region The mode in which a fragment is merged into the DOM.

const (
	// Default value for FragmentMergeMode
	// Morphs the fragment into the existing element using idiomorph.
	DefaultFragmentMergeMode = FragmentMergeModeMorph

	// Morphs the fragment into the existing element using idiomorph.
	FragmentMergeModeMorph FragmentMergeMode = "morph"

	// Replaces the inner HTML of the existing element.
	FragmentMergeModeInner FragmentMergeMode = "inner"

	// Replaces the outer HTML of the existing element.
	FragmentMergeModeOuter FragmentMergeMode = "outer"

	// Prepends the fragment to the existing element.
	FragmentMergeModePrepend FragmentMergeMode = "prepend"

	// Appends the fragment to the existing element.
	FragmentMergeModeAppend FragmentMergeMode = "append"

	// Inserts the fragment before the existing element.
	FragmentMergeModeBefore FragmentMergeMode = "before"

	// Inserts the fragment after the existing element.
	FragmentMergeModeAfter FragmentMergeMode = "after"

	// Upserts the attributes of the existing element.
	FragmentMergeModeUpsertAttributes FragmentMergeMode = "upsertAttributes"
)

func FragmentMergeTypeFromString

func FragmentMergeTypeFromString(s string) (FragmentMergeMode, error)

type MergeFragmentOption

type MergeFragmentOption func(*MergeFragmentOptions)

func WithMergeAfter

func WithMergeAfter() MergeFragmentOption

func WithMergeAppend

func WithMergeAppend() MergeFragmentOption

func WithMergeBefore

func WithMergeBefore() MergeFragmentOption

func WithMergeMode

func WithMergeMode(merge FragmentMergeMode) MergeFragmentOption

func WithMergeMorph

func WithMergeMorph() MergeFragmentOption

func WithMergePrepend

func WithMergePrepend() MergeFragmentOption

func WithMergeUpsertAttributes

func WithMergeUpsertAttributes() MergeFragmentOption

func WithSelector

func WithSelector(selector string) MergeFragmentOption

func WithSelectorID

func WithSelectorID(id string) MergeFragmentOption

func WithSelectorf

func WithSelectorf(selectorFormat string, args ...any) MergeFragmentOption

func WithSettleDuration

func WithSettleDuration(d time.Duration) MergeFragmentOption

func WithUseViewTransitions

func WithUseViewTransitions(useViewTransition bool) MergeFragmentOption

func WithViewTransitions

func WithViewTransitions() MergeFragmentOption

func WithoutViewTransitions

func WithoutViewTransitions() MergeFragmentOption

type MergeFragmentOptions

type MergeFragmentOptions struct {
	EventID            string
	RetryDuration      time.Duration
	Selector           string
	MergeMode          FragmentMergeMode
	SettleDuration     time.Duration
	UseViewTransitions bool
}

type MergeSignalsOption

type MergeSignalsOption func(*MergeSignalsOptions)

func WithMergeSignalsEventID

func WithMergeSignalsEventID(id string) MergeSignalsOption

func WithMergeSignalsRetryDuration

func WithMergeSignalsRetryDuration(retryDuration time.Duration) MergeSignalsOption

func WithOnlyIfMissing

func WithOnlyIfMissing(onlyIfMissing bool) MergeSignalsOption

type MergeSignalsOptions

type MergeSignalsOptions struct {
	EventID       string
	RetryDuration time.Duration
	OnlyIfMissing bool
}

type RemoveFragmentsOption

type RemoveFragmentsOption func(*RemoveFragmentsOptions)

func WithRemoveEventID

func WithRemoveEventID(id string) RemoveFragmentsOption

func WithRemoveRetryDuration

func WithRemoveRetryDuration(d time.Duration) RemoveFragmentsOption

func WithRemoveSettleDuration

func WithRemoveSettleDuration(d time.Duration) RemoveFragmentsOption

func WithRemoveUseViewTransitions

func WithRemoveUseViewTransitions(useViewTransition bool) RemoveFragmentsOption

type RemoveFragmentsOptions

type RemoveFragmentsOptions struct {
	EventID            string
	RetryDuration      time.Duration
	SettleDuration     time.Duration
	UseViewTransitions *bool
}

type SSEEventOption

type SSEEventOption func(*ServerSentEventData)

func WithSSEEventId

func WithSSEEventId(id string) SSEEventOption

func WithSSERetryDuration

func WithSSERetryDuration(retryDuration time.Duration) SSEEventOption

type ServerSentEventData

type ServerSentEventData struct {
	Type          EventType
	EventID       string
	Data          []string
	RetryDuration time.Duration
}

type ServerSentEventGenerator

type ServerSentEventGenerator struct {
	// contains filtered or unexported fields
}

func (*ServerSentEventGenerator) ConsoleError

func (sse *ServerSentEventGenerator) ConsoleError(err error, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) ConsoleLog

func (sse *ServerSentEventGenerator) ConsoleLog(msg string, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) ConsoleLogf

func (sse *ServerSentEventGenerator) ConsoleLogf(format string, args ...any) error

func (*ServerSentEventGenerator) Context

func (sse *ServerSentEventGenerator) Context() context.Context

func (*ServerSentEventGenerator) DispatchCustomEvent

func (sse *ServerSentEventGenerator) DispatchCustomEvent(eventName string, detail any, opts ...DispatchCustomEventOption) error

func (*ServerSentEventGenerator) ExecuteScript

func (sse *ServerSentEventGenerator) ExecuteScript(scriptContents string, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) MarshalAndMergeSignals

func (sse *ServerSentEventGenerator) MarshalAndMergeSignals(signals any, opts ...MergeSignalsOption) error

func (*ServerSentEventGenerator) MarshalAndMergeSignalsIfMissing

func (sse *ServerSentEventGenerator) MarshalAndMergeSignalsIfMissing(signals any, opts ...MergeSignalsOption) error

func (*ServerSentEventGenerator) MergeFragmentGostar

func (sse *ServerSentEventGenerator) MergeFragmentGostar(child elements.ElementRenderer, opts ...MergeFragmentOption) error

func (*ServerSentEventGenerator) MergeFragmentTempl

func (sse *ServerSentEventGenerator) MergeFragmentTempl(c templ.Component, opts ...MergeFragmentOption) error

func (*ServerSentEventGenerator) MergeFragmentf

func (sse *ServerSentEventGenerator) MergeFragmentf(format string, args ...any) error

func (*ServerSentEventGenerator) MergeFragments

func (sse *ServerSentEventGenerator) MergeFragments(fragment string, opts ...MergeFragmentOption) error

func (*ServerSentEventGenerator) MergeSignals

func (sse *ServerSentEventGenerator) MergeSignals(signalsContents []byte, opts ...MergeSignalsOption) error

func (*ServerSentEventGenerator) MergeSignalsIfMissingRaw

func (sse *ServerSentEventGenerator) MergeSignalsIfMissingRaw(signalsJSON string) error

func (*ServerSentEventGenerator) Prefetch

func (sse *ServerSentEventGenerator) Prefetch(urls ...string) error

func (*ServerSentEventGenerator) Redirect

func (sse *ServerSentEventGenerator) Redirect(url string, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) Redirectf

func (sse *ServerSentEventGenerator) Redirectf(format string, args ...any) error

func (*ServerSentEventGenerator) RemoveFragments

func (sse *ServerSentEventGenerator) RemoveFragments(selector string, opts ...RemoveFragmentsOption) error

func (*ServerSentEventGenerator) RemoveSignals

func (sse *ServerSentEventGenerator) RemoveSignals(paths ...string) error

func (*ServerSentEventGenerator) ReplaceURL

func (sse *ServerSentEventGenerator) ReplaceURL(u url.URL, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) ReplaceURLQuerystring

func (sse *ServerSentEventGenerator) ReplaceURLQuerystring(r *http.Request, values url.Values, opts ...ExecuteScriptOption) error

func (*ServerSentEventGenerator) Send

func (sse *ServerSentEventGenerator) Send(eventType EventType, dataLines []string, opts ...SSEEventOption) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL