Documentation
¶
Index ¶
- Constants
- Variables
- func AffectedPatterns(pattern string) []string
- func BuildSSRBundle(opts BuildOptions) ([]byte, error)
- func DefaultPoolSize() int
- func DefaultSSRAliases(webDir, packagesDir string) map[string]string
- func ExpandPath(pattern string, params Params) (string, bool)
- func Handler(deps HandlerDeps) http.Handler
- func IndexNow(ctx context.Context, deps IndexNowDeps, urls []string) error
- func Invalidate(ctx context.Context, pattern string, params Params) error
- func PropsSHA256(propsJSON []byte) string
- func Reconcile(routes []RouteSpec) error
- func ReconcileEngine(ctx context.Context, r Renderer) error
- func Refresh(ctx context.Context, pattern string, params Params) error
- func RegisterDep(pagePattern, dependsOnPattern string)
- func RegisterLoader(pattern string, fn LoaderFn)
- func RegisterPaths(pattern string, fn PathsFn)
- func RegisterService(s *Service)
- func RenderDocument(doc Document) ([]byte, error)
- func ResetForTest()
- func SitemapHandler(routes []RouteSpec, baseURL string, opts SitemapOptions) http.Handler
- func ValidParamValue(v string) bool
- func ValidateParams(p Params) error
- func ViteBuildID(data []byte) string
- type BuildOptions
- type CacheConfig
- type CacheEntry
- type DevHandler
- type DevHandlerDeps
- type Directive
- type DirectiveSink
- type Document
- type EnginePool
- type HandlerDeps
- type HeadEntry
- type IndexNowDeps
- type LayeredCache
- func (c *LayeredCache) Delete(ctx context.Context, paths ...string) error
- func (c *LayeredCache) EvictMatching(ctx context.Context, match func(key string) bool) (int, error)
- func (c *LayeredCache) Get(ctx context.Context, path string) (CacheEntry, bool)
- func (c *LayeredCache) GetOrLoad(ctx context.Context, path string, ...) (CacheEntry, error)
- func (c *LayeredCache) GetStale(ctx context.Context, path string) (CacheEntry, bool)
- func (c *LayeredCache) Keys() []string
- func (c *LayeredCache) PurgeForeign(ctx context.Context, buildID string) error
- func (c *LayeredCache) Put(ctx context.Context, path string, ent CacheEntry) error
- type LoaderFn
- type Mode
- type PagePath
- type Params
- type PathsFn
- type PoolOptions
- type PrerenderDeps
- type PrerenderManifest
- type PrerenderManifestEntry
- type Registry
- func (r *Registry) AffectedPatterns(pattern string) []string
- func (r *Registry) LookupLoader(pattern string) (LoaderFn, error)
- func (r *Registry) LookupPaths(pattern string) (PathsFn, error)
- func (r *Registry) Reconcile(routes []RouteSpec) error
- func (r *Registry) RegisterDep(pagePattern, dependsOnPattern string)
- func (r *Registry) RegisterLoader(pattern string, fn LoaderFn)
- func (r *Registry) RegisterPaths(pattern string, fn PathsFn)
- type RenderResult
- type Renderer
- type RouteSpec
- type Service
- type SitemapOptions
- type ViteAssets
Constants ¶
View Source
const ( DefaultMemPages = 1024 DefaultTTL = time.Hour )
View Source
const ( DefaultMemoryLimit = 512 << 20 DefaultRenderTimeout = 3 * time.Second )
View Source
const ( DefaultCacheControl = "max-age=60, stale-while-revalidate=300" DefaultPoisonTTL = 10 * time.Minute )
View Source
const DefaultIndexNowEndpoint = "https://api.indexnow.org/indexnow"
View Source
const DefaultPrelude = `` /* 5289-byte string literal not displayed */
View Source
const MaxPropsBytes = 512 << 10
View Source
const OutputVersion = "rv1"
Variables ¶
View Source
var ( ErrRenderTimeout = errors.New("renderx: render timeout") ErrPoolClosed = errors.New("renderx: engine pool closed") )
View Source
var ( ErrEmptyRenderOutput = errors.New("renderx: empty render output") ErrMissingTitle = errors.New("renderx: head directives emitted but no <title>") )
View Source
var ( ErrPatternNotFound = errors.New("renderx: pattern not registered") ErrPatternMismatch = errors.New("renderx: registered pattern not in route table") ErrMissingPaths = errors.New("renderx: static param route missing Paths") ErrInvalidParam = errors.New("renderx: invalid path param") ErrInvalidDirective = errors.New("renderx: invalid directive payload") ErrInvalidHeadTag = errors.New("renderx: invalid head tag or attr name") ErrInvalidCacheKey = errors.New("renderx: invalid cache key") ErrBuildIDMismatch = errors.New("renderx: cache entry buildId mismatch") ErrPropsTooLarge = errors.New("renderx: props exceed size limit") ErrPageNotFound = errors.New("renderx: page not found") )
Functions ¶
func AffectedPatterns ¶
func BuildSSRBundle ¶
func BuildSSRBundle(opts BuildOptions) ([]byte, error)
func DefaultPoolSize ¶
func DefaultPoolSize() int
func DefaultSSRAliases ¶
func Handler ¶
func Handler(deps HandlerDeps) http.Handler
func PropsSHA256 ¶
func RegisterDep ¶
func RegisterDep(pagePattern, dependsOnPattern string)
func RegisterLoader ¶
func RegisterPaths ¶
func RegisterService ¶
func RegisterService(s *Service)
func RenderDocument ¶
func ResetForTest ¶
func ResetForTest()
func SitemapHandler ¶
func SitemapHandler(routes []RouteSpec, baseURL string, opts SitemapOptions) http.Handler
func ValidParamValue ¶
func ValidateParams ¶
func ViteBuildID ¶
Types ¶
type BuildOptions ¶
type CacheConfig ¶
type CacheEntry ¶
type DevHandler ¶
type DevHandler struct {
// contains filtered or unexported fields
}
func NewDevHandler ¶
func NewDevHandler(deps DevHandlerDeps) (*DevHandler, error)
func (*DevHandler) Close ¶
func (d *DevHandler) Close()
func (*DevHandler) ServeHTTP ¶
func (d *DevHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type DevHandlerDeps ¶
type DevHandlerDeps struct {
BuildOpts BuildOptions
PoolOpts PoolOptions
NewRenderer func(bundle []byte, opts PoolOptions) (Renderer, error)
Cache *LayeredCache
Routes []RouteSpec
BuildID string
Assets ViteAssets
Lang string
SPA http.Handler
Registry *Registry
Interval time.Duration
Warn func(format string, args ...any)
}
type Directive ¶
type Directive struct {
Kind string `json:"kind"`
Payload json.RawMessage `json:"payload,omitempty"`
Seq int `json:"seq"`
}
type DirectiveSink ¶
type DirectiveSink struct {
// contains filtered or unexported fields
}
func NewSink ¶
func NewSink() *DirectiveSink
func (*DirectiveSink) Append ¶
func (s *DirectiveSink) Append(kind string, payload json.RawMessage) Directive
func (*DirectiveSink) Directives ¶
func (s *DirectiveSink) Directives() []Directive
func (*DirectiveSink) Truncated ¶
func (s *DirectiveSink) Truncated() bool
type EnginePool ¶
type EnginePool struct {
// contains filtered or unexported fields
}
func NewEnginePool ¶
func NewEnginePool(bundle []byte, opts PoolOptions) (*EnginePool, error)
func (*EnginePool) Close ¶
func (p *EnginePool) Close()
func (*EnginePool) Render ¶
func (p *EnginePool) Render(ctx context.Context, pageID, location string, props json.RawMessage) (RenderResult, error)
type HandlerDeps ¶
type HandlerDeps struct {
PrerenderFS fs.FS
SPA http.Handler
Cache *LayeredCache
Renderer Renderer
Routes []RouteSpec
BuildID string
CacheControl string
ErrorPage func(http.ResponseWriter, *http.Request, error)
Warn func(format string, args ...any)
Assets ViteAssets
Lang string
Registry *Registry
PoisonTTL time.Duration
}
type HeadEntry ¶
type HeadEntry struct {
Tag string `json:"tag"`
Attrs map[string]string `json:"attrs,omitempty"`
Children string `json:"children,omitempty"`
}
func HeadEntries ¶
type IndexNowDeps ¶
type LayeredCache ¶
type LayeredCache struct {
// contains filtered or unexported fields
}
func NewLayeredCache ¶
func NewLayeredCache(cfg CacheConfig) (*LayeredCache, error)
func (*LayeredCache) Delete ¶
func (c *LayeredCache) Delete(ctx context.Context, paths ...string) error
func (*LayeredCache) EvictMatching ¶
func (*LayeredCache) Get ¶
func (c *LayeredCache) Get(ctx context.Context, path string) (CacheEntry, bool)
func (*LayeredCache) GetOrLoad ¶
func (c *LayeredCache) GetOrLoad(ctx context.Context, path string, load func(context.Context) (CacheEntry, error)) (CacheEntry, error)
func (*LayeredCache) GetStale ¶
func (c *LayeredCache) GetStale(ctx context.Context, path string) (CacheEntry, bool)
func (*LayeredCache) Keys ¶
func (c *LayeredCache) Keys() []string
func (*LayeredCache) PurgeForeign ¶
func (c *LayeredCache) PurgeForeign(ctx context.Context, buildID string) error
func (*LayeredCache) Put ¶
func (c *LayeredCache) Put(ctx context.Context, path string, ent CacheEntry) error
type PoolOptions ¶
type PrerenderDeps ¶
type PrerenderManifest ¶
type PrerenderManifest struct {
BuildID string `json:"buildId"`
GeneratedAt time.Time `json:"generatedAt"`
Pages []PrerenderManifestEntry `json:"pages"`
}
func Prerender ¶
func Prerender(ctx context.Context, deps PrerenderDeps) (PrerenderManifest, error)
type PrerenderManifestEntry ¶
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func NewRegistry() *Registry
func (*Registry) AffectedPatterns ¶
func (*Registry) RegisterDep ¶
func (*Registry) RegisterLoader ¶
func (*Registry) RegisterPaths ¶
type RenderResult ¶
type RenderResult struct {
HTML string
Sink *DirectiveSink
}
type Service ¶
type Service struct {
Cache *LayeredCache
Renderer Renderer
Routes []RouteSpec
BuildID string
Assets ViteAssets
Lang string
Registry *Registry
Warn func(format string, args ...any)
RefreshTimeout time.Duration
}
func (*Service) Invalidate ¶
type SitemapOptions ¶
type ViteAssets ¶
func ParseViteManifest ¶
func ParseViteManifest(data []byte, entryKey string) (ViteAssets, error)
Source Files
¶
Click to show internal directories.
Click to hide internal directories.