Documentation
¶
Overview ¶
Package viewdef provides viewdef hot-loading support. CRC: crc-ViewdefStore.md Spec: viewdefs.md Sequence: seq-viewdef-hotload.md
CRC: crc-ViewdefStore.md Spec: viewdefs.md
Package viewdef provides viewdef management. CRC: crc-Viewdef.md Spec: viewdefs.md
ViewdefManager loads and serves viewdefs to frontend sessions. Spec: viewdefs.md
Index ¶
- func ParseKey(key string) (typeName, namespace string, err error)
- type HotLoader
- type SessionPusher
- type Store
- func (s *Store) Count() int
- func (s *Store) FlushUpdates() map[string]string
- func (s *Store) Get(typeName, namespace string) *Viewdef
- func (s *Store) GetByKey(key string) *Viewdef
- func (s *Store) GetForType(typeName string) []*Viewdef
- func (s *Store) GetPendingUpdatesJSON() ([]byte, error)
- func (s *Store) Has(typeName, namespace string) bool
- func (s *Store) HasPendingUpdates() bool
- func (s *Store) Keys() []string
- func (s *Store) LoadFromFS(fsys fs.FS) error
- func (s *Store) QueueForType(typeName string)
- func (s *Store) QueueViewdef(viewdef *Viewdef)
- func (s *Store) Remove(typeName, namespace string)
- func (s *Store) ResetSentTypes()
- func (s *Store) Store(viewdef *Viewdef)
- type Viewdef
- type ViewdefManager
- func (m *ViewdefManager) AddNewViewdefsForType(sessionID, typeName string, defs map[string]string)
- func (m *ViewdefManager) AddViewdef(key, content string)
- func (m *ViewdefManager) ClearSession(sessionID string)
- func (m *ViewdefManager) Count() int
- func (m *ViewdefManager) GetAllViewdefs() map[string]string
- func (m *ViewdefManager) GetChangedViewdefsForSession(sessionID string) map[string]string
- func (m *ViewdefManager) GetSessionsForViewdef(key string) []string
- func (m *ViewdefManager) GetViewdefsForType(typeName string) map[string]string
- func (m *ViewdefManager) LoadFromBundle() error
- func (m *ViewdefManager) LoadFromDirectory(dir string) error
- func (m *ViewdefManager) LoadFromFS(fsys fs.FS, dir string) error
- func (m *ViewdefManager) LoadViewdefsForType(typeName string)
- func (m *ViewdefManager) MarkViewdefSent(sessionID, key string)
- func (m *ViewdefManager) SetViewdefDir(dir string)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type HotLoader ¶ added in v0.9.0
type HotLoader struct {
// contains filtered or unexported fields
}
HotLoader watches the viewdef directory for file changes and triggers pushes.
func NewHotLoader ¶ added in v0.9.0
func NewHotLoader(cfg *config.Config, viewdefDir string, manager *ViewdefManager, sessions SessionPusher) (*HotLoader, error)
NewHotLoader creates a new hot loader for the given viewdef directory.
type SessionPusher ¶ added in v0.9.0
type SessionPusher interface {
// GetSessionIDs returns a list of active vended session IDs.
GetSessionIDs() []string
// PushViewdefs pushes updated viewdefs to a session.
PushViewdefs(sessionID string, viewdefs map[string]string)
}
SessionPusher provides session management for hot-loading viewdefs. CRC: crc-ViewdefStore.md
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store manages viewdef storage and delivery.
func (*Store) FlushUpdates ¶
FlushUpdates returns pending viewdef updates and clears the queue. Returns nil if no updates pending.
func (*Store) Get ¶
Get retrieves a viewdef by TYPE.NAMESPACE. Falls back to TYPE.DEFAULT if TYPE.NAMESPACE not found.
func (*Store) GetForType ¶
GetForType returns all viewdefs for a type.
func (*Store) GetPendingUpdatesJSON ¶
GetPendingUpdatesJSON returns pending updates as JSON for variable 1's viewdefs property.
func (*Store) HasPendingUpdates ¶
HasPendingUpdates checks if there are queued viewdef updates.
func (*Store) LoadFromFS ¶
LoadFromFS loads viewdefs from a filesystem (e.g., embedded or os.DirFS). Expects files at html/viewdefs/TYPE.NAMESPACE.html
func (*Store) QueueForType ¶
QueueForType queues all viewdefs for a type for delivery. Called when a variable of this type needs its viewdefs.
func (*Store) QueueViewdef ¶
QueueViewdef queues a specific viewdef for delivery.
func (*Store) ResetSentTypes ¶
func (s *Store) ResetSentTypes()
ResetSentTypes clears the record of sent types. Call when a new frontend connects.
type Viewdef ¶
type Viewdef struct {
Type string // Type name (e.g., "Contact")
Namespace string // Namespace (e.g., "DEFAULT", "COMPACT", "OPTION")
Content string // HTML template content
}
Viewdef represents a view definition template.
func NewViewdef ¶
NewViewdef creates a new viewdef.
func (*Viewdef) GetContent ¶
GetContent returns the HTML template content.
func (*Viewdef) GetNamespace ¶
GetNamespace returns the namespace.
type ViewdefManager ¶
type ViewdefManager struct {
// contains filtered or unexported fields
}
ViewdefManager manages viewdef loading and tracking.
func NewViewdefManager ¶
func NewViewdefManager() *ViewdefManager
NewViewdefManager creates a new viewdef manager.
func (*ViewdefManager) AddNewViewdefsForType ¶ added in v0.9.0
func (m *ViewdefManager) AddNewViewdefsForType(sessionID, typeName string, defs map[string]string)
AddNewViewdefsForType loads and marks viewdefs for a type as sent. This is called when a new type is encountered in the variable changes.
func (*ViewdefManager) AddViewdef ¶
func (m *ViewdefManager) AddViewdef(key, content string)
AddViewdef adds or updates a viewdef dynamically. If viewdefDir is set, writes to file and tracks the file path.
func (*ViewdefManager) ClearSession ¶
func (m *ViewdefManager) ClearSession(sessionID string)
ClearSession removes tracking data for a session.
func (*ViewdefManager) Count ¶
func (m *ViewdefManager) Count() int
Count returns the number of loaded viewdefs.
func (*ViewdefManager) GetAllViewdefs ¶
func (m *ViewdefManager) GetAllViewdefs() map[string]string
GetAllViewdefs returns all loaded viewdefs.
func (*ViewdefManager) GetChangedViewdefsForSession ¶ added in v0.9.0
func (m *ViewdefManager) GetChangedViewdefsForSession(sessionID string) map[string]string
GetChangedViewdefsForSession returns viewdefs that need to be sent to a session. This includes: - Viewdefs for new types that haven't been sent yet - Viewdefs that have been modified since they were last sent Marks returned viewdefs as sent with their current mod time.
func (*ViewdefManager) GetSessionsForViewdef ¶ added in v0.9.0
func (m *ViewdefManager) GetSessionsForViewdef(key string) []string
GetSessionsForViewdef returns all session IDs that have received a viewdef.
func (*ViewdefManager) GetViewdefsForType ¶
func (m *ViewdefManager) GetViewdefsForType(typeName string) map[string]string
GetViewdefsForType returns all viewdefs for a given type. Returns a map of TYPE.NAMESPACE -> HTML content
func (*ViewdefManager) LoadFromBundle ¶
func (m *ViewdefManager) LoadFromBundle() error
LoadFromBundle loads viewdefs from the embedded bundle.
func (*ViewdefManager) LoadFromDirectory ¶
func (m *ViewdefManager) LoadFromDirectory(dir string) error
LoadFromDirectory loads viewdefs from a directory. Files should be named TYPE.NAMESPACE.html (e.g., Adder.DEFAULT.html)
func (*ViewdefManager) LoadFromFS ¶
func (m *ViewdefManager) LoadFromFS(fsys fs.FS, dir string) error
LoadFromFS loads viewdefs from a filesystem (for custom site directories).
func (*ViewdefManager) LoadViewdefsForType ¶ added in v0.9.0
func (m *ViewdefManager) LoadViewdefsForType(typeName string)
LoadViewdefsForType loads viewdefs for a type from filesystem into cache. Does not mark them as sent - use GetChangedViewdefsForSession after to get them.
func (*ViewdefManager) MarkViewdefSent ¶ added in v0.9.0
func (m *ViewdefManager) MarkViewdefSent(sessionID, key string)
MarkViewdefSent marks a viewdef as sent for a session. Used when pushing viewdefs outside of normal flow (e.g., hot-reload).
func (*ViewdefManager) SetViewdefDir ¶ added in v0.9.0
func (m *ViewdefManager) SetViewdefDir(dir string)
SetViewdefDir sets the directory for on-demand viewdef loading.