Documentation
¶
Index ¶
- Constants
- func AdminAPIGroupPath(roots RootsConfig) string
- func BuildAdapterWarnings(urls URLKitAdapter, router RouterAdapter) []string
- func DefaultRouteDomainForSurface(surface string) string
- func DefaultRouteSurfaceForDomain(domain string) string
- func DefaultUIGroupPath() string
- func FormatStartupReport(report StartupReport) string
- func IsReservedSlug(slug string) bool
- func JoinAbsolutePath(base string, segments ...string) string
- func NormalizeMountName(value string) string
- func NormalizeRelativePath(value string) string
- func NormalizeRouteDomain(domain string) string
- func NormalizeRouteNamePrefix(prefix, slug string) string
- func NormalizeRouteSurface(surface string) string
- func OwnsRouteKey(slug, routeKey string) bool
- func OwnsRouteName(prefix, slug, routeName string) bool
- func ProtectedAppAPIGroupPath(roots RootsConfig) string
- func ProtectedAppUIGroupPath() string
- func PublicAPIGroupPath(roots RootsConfig) string
- func ReservedSlugs() []string
- func RouteDomains() []string
- func RouteKeyOwnershipPrefix(slug string) string
- func RouteNameOwnershipPrefix(prefix, slug string) string
- func ValidateSlug(slug string) error
- type Config
- type Conflict
- type ConflictError
- type ConflictPolicy
- type FallbackDiffEntry
- type FallbackEntry
- type Manifest
- type ManifestConfig
- type ManifestDiff
- type ManifestDiffEntry
- type ManifestEntry
- type ModuleConfig
- type ModuleContext
- type ModuleContract
- type ModuleMountOverride
- type NamedMountContract
- type NamedMountOverride
- type Planner
- type Registry
- type ResolvedModule
- type ResolvedMount
- type RootDerivationInput
- type RootsConfig
- type RouteDeclaration
- type RouteSummary
- type RouterAdapter
- type RouterCapabilities
- type RouterCapabilityProvider
- type RuntimeReport
- type RuntimeRouteIssue
- type StartupReport
- type URLConfig
- type URLKitAdapter
- type URLKitCapabilities
- type URLKitCapabilityProvider
- type URLNamespaceConfig
- type Validator
- func (v *Validator) Conflicts() []Conflict
- func (v *Validator) PreflightRouter(owner, module string, routes []router.RouteDefinition) error
- func (v *Validator) PreflightURLKit(entries []ManifestEntry, urls URLKitAdapter) error
- func (v *Validator) ReconcileRouter(manifest Manifest, adapter RouterAdapter) error
- func (v *Validator) ValidateFallbacks(entries []ManifestEntry, fallbacks []FallbackEntry) error
- func (v *Validator) ValidateHostRoutes(entries []ManifestEntry) error
- func (v *Validator) ValidateModule(contract ModuleContract, resolved ResolvedModule, entries []ManifestEntry) error
Constants ¶
View Source
const ( RouteDomainSystem = "system" RouteDomainInternalOps = "internal_ops" RouteDomainAdminUI = "admin_ui" RouteDomainAdminAPI = "admin_api" RouteDomainProtectedAppUI = "protected_app_ui" RouteDomainProtectedAppAPI = "protected_app_api" RouteDomainPublicAPI = "public_api" RouteDomainPublicSite = "public_site" RouteDomainStatic = "static" )
View Source
const ( FallbackModeDisabled = "disabled" FallbackModePublicContentOnly = "public_content_only" FallbackModeExplicitPathsOnly = "explicit_paths_only" )
View Source
const ( ManifestMethodUnknown = "UNKNOWN" ManifestDiffAdded = "added" ManifestDiffRemoved = "removed" ManifestDiffChanged = "changed" )
View Source
const ( SurfaceUI = "ui" SurfaceAPI = "api" SurfaceProtectedAppUI = "protected_app_ui" SurfaceProtectedAppAPI = "protected_app_api" SurfacePublicAPI = "public_api" SurfacePublicSite = "public_site" SurfaceSystem = "system" SurfaceInternalOps = "internal_ops" SurfaceStatic = "static" )
View Source
const ( DefaultAdminAPIPrefix = "api" DefaultPublicAPIPrefix = "api" DefaultPublicAPIVersion = "v1" DefaultProtectedAppRoot = "/app" DefaultProtectedAppAPIRoot = "/app/api" SlugPattern = "^[a-z][a-z0-9_-]{1,62}$" )
View Source
const ( ConflictKindPathConflict = "path_conflict" ConflictKindRouteNameConflict = "route_name_conflict" ConflictKindOwnershipViolation = "ownership_violation" ConflictKindSlugViolation = "slug_violation" )
Variables ¶
This section is empty.
Functions ¶
func AdminAPIGroupPath ¶
func AdminAPIGroupPath(roots RootsConfig) string
func BuildAdapterWarnings ¶
func BuildAdapterWarnings(urls URLKitAdapter, router RouterAdapter) []string
func DefaultRouteDomainForSurface ¶ added in v0.36.0
func DefaultRouteSurfaceForDomain ¶ added in v0.36.0
func DefaultUIGroupPath ¶
func DefaultUIGroupPath() string
func FormatStartupReport ¶
func FormatStartupReport(report StartupReport) string
func IsReservedSlug ¶
func JoinAbsolutePath ¶
func NormalizeMountName ¶ added in v0.120.0
NormalizeMountName returns the canonical identifier used by module contracts, host configuration, routing contexts, and runtime router lookup.
func NormalizeRelativePath ¶
func NormalizeRouteDomain ¶ added in v0.36.0
func NormalizeRouteSurface ¶ added in v0.36.0
func OwnsRouteKey ¶
func OwnsRouteName ¶
func ProtectedAppAPIGroupPath ¶ added in v0.58.0
func ProtectedAppAPIGroupPath(roots RootsConfig) string
func ProtectedAppUIGroupPath ¶ added in v0.58.0
func ProtectedAppUIGroupPath() string
func PublicAPIGroupPath ¶
func PublicAPIGroupPath(roots RootsConfig) string
func ReservedSlugs ¶
func ReservedSlugs() []string
func RouteDomains ¶ added in v0.36.0
func RouteDomains() []string
func RouteKeyOwnershipPrefix ¶
func ValidateSlug ¶
Types ¶
type Config ¶
type Config struct {
Enabled bool `json:"enabled"`
EnforceRouteNamePolicy bool `json:"enforce_route_name_policy"`
EnforceSlugPolicy bool `json:"enforce_slug_policy"`
ConflictPolicy ConflictPolicy `json:"conflict_policy"`
ProtectedAppEnabled bool `json:"protected_app_enabled,omitempty"`
Roots RootsConfig `json:"roots"`
Modules map[string]ModuleConfig `json:"modules"`
Manifest ManifestConfig `json:"manifest"`
ReservedPrefixes []string `json:"reserved_prefixes,omitempty"`
}
func DefaultConfig ¶
func DefaultConfig() Config
func NormalizeConfig ¶
func NormalizeConfig(cfg Config, input RootDerivationInput) Config
type Conflict ¶
type Conflict struct {
Kind string `json:"kind"`
Module string `json:"module,omitempty"`
Method string `json:"method,omitempty"`
Path string `json:"path,omitempty"`
RouteName string `json:"route_name,omitempty"`
Existing map[string]string `json:"existing,omitempty"`
Incoming map[string]string `json:"incoming,omitempty"`
Message string `json:"message,omitempty"`
}
type ConflictError ¶
type ConflictError struct {
Conflicts []Conflict `json:"conflicts"`
}
func (*ConflictError) Error ¶
func (e *ConflictError) Error() string
type ConflictPolicy ¶
type ConflictPolicy string
const ( ConflictPolicyError ConflictPolicy = "error" ConflictPolicyWarn ConflictPolicy = "warn" ConflictPolicyReplace ConflictPolicy = "replace" )
type FallbackDiffEntry ¶ added in v0.36.0
type FallbackDiffEntry struct {
Kind string `json:"kind"`
Key string `json:"key"`
Before *FallbackEntry `json:"before,omitempty"`
After *FallbackEntry `json:"after,omitempty"`
}
type FallbackEntry ¶ added in v0.36.0
type FallbackEntry struct {
Owner string `json:"owner"`
Surface string `json:"surface"`
Domain string `json:"domain,omitempty"`
BasePath string `json:"base_path,omitempty"`
Mode string `json:"mode"`
AllowRoot bool `json:"allow_root"`
AllowedMethods []string `json:"allowed_methods,omitempty"`
AllowedExactPaths []string `json:"allowed_exact_paths,omitempty"`
AllowedPathPrefixes []string `json:"allowed_path_prefixes,omitempty"`
ReservedPrefixes []string `json:"reserved_prefixes,omitempty"`
}
func NormalizeFallbackEntry ¶ added in v0.36.0
func NormalizeFallbackEntry(entry FallbackEntry) FallbackEntry
type Manifest ¶
type Manifest struct {
Entries []ManifestEntry `json:"entries,omitempty"`
Fallbacks []FallbackEntry `json:"fallbacks,omitempty"`
}
func NormalizeManifest ¶
func (Manifest) SortedEntries ¶
func (m Manifest) SortedEntries() []ManifestEntry
type ManifestConfig ¶
type ManifestDiff ¶
type ManifestDiff struct {
Added []ManifestDiffEntry `json:"added,omitempty"`
Removed []ManifestDiffEntry `json:"removed,omitempty"`
Changed []ManifestDiffEntry `json:"changed,omitempty"`
FallbackAdded []FallbackDiffEntry `json:"fallback_added,omitempty"`
FallbackRemoved []FallbackDiffEntry `json:"fallback_removed,omitempty"`
FallbackChanged []FallbackDiffEntry `json:"fallback_changed,omitempty"`
}
func DiffManifests ¶
func DiffManifests(before, after Manifest) ManifestDiff
func (ManifestDiff) HasChanges ¶
func (m ManifestDiff) HasChanges() bool
type ManifestDiffEntry ¶
type ManifestDiffEntry struct {
Kind string `json:"kind"`
Key string `json:"key"`
Before *ManifestEntry `json:"before,omitempty"`
After *ManifestEntry `json:"after,omitempty"`
}
type ManifestEntry ¶
type ModuleConfig ¶
type ModuleConfig struct {
Mount ModuleMountOverride `json:"mount"`
Mounts map[string]NamedMountOverride `json:"mounts,omitempty"`
}
type ModuleContext ¶
type ModuleContext struct {
Contract ModuleContract `json:"contract"`
Resolved ResolvedModule `json:"resolved"`
UIRoutes map[string]string `json:"ui_routes,omitempty"`
APIRoutes map[string]string `json:"api_routes,omitempty"`
PublicAPIRoutes map[string]string `json:"public_api_routes,omitempty"`
MountRoutes map[string]map[string]string `json:"mount_routes,omitempty"`
}
func BuildModuleContext ¶
func BuildModuleContext(contract ModuleContract, resolved ResolvedModule) ModuleContext
func (ModuleContext) GroupPath ¶
func (c ModuleContext) GroupPath(surface string) string
func (ModuleContext) Mount ¶ added in v0.119.0
func (c ModuleContext) Mount(name string) (ResolvedMount, bool)
func (ModuleContext) MountRoutePath ¶ added in v0.119.0
func (c ModuleContext) MountRoutePath(name, routeKey string) string
func (ModuleContext) RoutePath ¶
func (c ModuleContext) RoutePath(surface, routeKey string) string
type ModuleContract ¶
type ModuleContract struct {
Slug string `json:"slug"`
UIRoutes map[string]string `json:"ui_routes,omitempty"`
APIRoutes map[string]string `json:"api_routes,omitempty"`
PublicAPIRoutes map[string]string `json:"public_api_routes,omitempty"`
// Typed declarations are preferred for new modules because they enable
// exact method/path conflict detection and runtime reconciliation. The
// path-only fields remain source compatible and normalize to UNKNOWN.
UIRouteDeclarations map[string]RouteDeclaration `json:"ui_route_declarations,omitempty"`
APIRouteDeclarations map[string]RouteDeclaration `json:"api_route_declarations,omitempty"`
PublicAPIRouteDeclarations map[string]RouteDeclaration `json:"public_api_route_declarations,omitempty"`
RouteNamePrefix string `json:"route_name_prefix,omitempty"`
// Mounts declares additional named route sets. The host must authorize each
// name with a surface and absolute base in Config.Modules[slug].Mounts.
Mounts map[string]NamedMountContract `json:"mounts,omitempty"`
}
func NormalizeModuleContract ¶
func NormalizeModuleContract(contract ModuleContract) ModuleContract
type ModuleMountOverride ¶
type ModuleMountOverride struct {
UIBase string `json:"ui_base,omitempty"`
APIBase string `json:"api_base,omitempty"`
PublicAPIBase string `json:"public_api_base,omitempty"`
}
func NormalizeMountOverride ¶
func NormalizeMountOverride(cfg ModuleMountOverride) ModuleMountOverride
type NamedMountContract ¶ added in v0.119.0
type NamedMountContract struct {
Routes map[string]string `json:"routes,omitempty"`
RouteDeclarations map[string]RouteDeclaration `json:"route_declarations,omitempty"`
}
type NamedMountOverride ¶ added in v0.119.0
type Planner ¶
type Planner interface {
RegisterModule(contract ModuleContract) error
RegisterHostRoutes(entries ...ManifestEntry) error
RegisterFallback(entry FallbackEntry) error
ResolvedModule(slug string) (ResolvedModule, bool)
Validate() error
Manifest() Manifest
Report() StartupReport
}
func NewPlanner ¶
func NewPlanner(cfg Config, urls URLKitAdapter) (Planner, error)
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func NewRegistry() *Registry
func (*Registry) TrackManifestEntry ¶
func (r *Registry) TrackManifestEntry(entry ManifestEntry) []Conflict
func (*Registry) TrackRouterRoute ¶
func (r *Registry) TrackRouterRoute(owner, module string, route router.RouteDefinition) []Conflict
type ResolvedModule ¶
type ResolvedModule struct {
Slug string `json:"slug"`
UIMountBase string `json:"ui_mount_base,omitempty"`
APIMountBase string `json:"api_mount_base,omitempty"`
PublicAPIMountBase string `json:"public_api_mount_base,omitempty"`
UIGroupPath string `json:"ui_group_path,omitempty"`
APIGroupPath string `json:"api_group_path,omitempty"`
PublicAPIGroupPath string `json:"public_api_group_path,omitempty"`
Mounts map[string]ResolvedMount `json:"mounts,omitempty"`
}
type ResolvedMount ¶ added in v0.119.0
type RootDerivationInput ¶
type RootsConfig ¶
type RootsConfig struct {
AdminRoot string `json:"admin_root,omitempty"`
APIRoot string `json:"api_root,omitempty"`
PublicAPIRoot string `json:"public_api_root,omitempty"`
ProtectedAppRoot string `json:"protected_app_root,omitempty"`
ProtectedAppAPIRoot string `json:"protected_app_api_root,omitempty"`
}
func DeriveDefaultRoots ¶
func DeriveDefaultRoots(input RootDerivationInput) RootsConfig
func MergeRoots ¶
func MergeRoots(defaults, overrides RootsConfig) RootsConfig
func NormalizeRoots ¶
func NormalizeRoots(cfg RootsConfig) RootsConfig
type RouteDeclaration ¶ added in v0.120.0
type RouteDeclaration struct {
Method router.HTTPMethod `json:"method"`
Path string `json:"path"`
}
type RouteSummary ¶
type RouteSummary struct {
TotalRoutes int `json:"total_routes"`
HostRoutes int `json:"host_routes"`
ModuleRoutes int `json:"module_routes"`
FallbackRoutes int `json:"fallback_routes"`
Modules []string `json:"modules,omitempty"`
Domains []string `json:"domains,omitempty"`
DomainCounts map[string]int `json:"domain_counts,omitempty"`
}
type RouterAdapter ¶
type RouterAdapter interface {
Routes() []router.RouteDefinition
ValidateRoutes() []error
}
type RouterCapabilities ¶
type RouterCapabilities struct {
NativeRouteNamePolicy bool `json:"native_route_name_policy"`
NativeOwnershipChecks bool `json:"native_ownership_checks"`
NativeManifest bool `json:"native_manifest"`
}
func DetectRouterCapabilities ¶
func DetectRouterCapabilities(adapter RouterAdapter) RouterCapabilities
type RouterCapabilityProvider ¶
type RouterCapabilityProvider interface {
RoutingRouterCapabilities() RouterCapabilities
}
type RuntimeReport ¶ added in v0.119.0
type RuntimeReport struct {
Available bool `json:"available"`
Reconciled bool `json:"reconciled"`
State router.RegistrationState `json:"state,omitempty"`
Revision uint64 `json:"revision,omitempty"`
DeclaredRoutes int `json:"declared_routes"`
MountedRoutes int `json:"mounted_routes"`
MissingRoutes []RuntimeRouteIssue `json:"missing_routes,omitempty"`
UnverifiableRoutes []RuntimeRouteIssue `json:"unverifiable_routes,omitempty"`
Shadows []router.RouteShadow `json:"shadows,omitempty"`
}
func BuildRuntimeReport ¶ added in v0.119.0
func BuildRuntimeReport(manifest Manifest, snapshot router.RegistrationSnapshot) RuntimeReport
type RuntimeRouteIssue ¶ added in v0.119.0
type StartupReport ¶
type StartupReport struct {
EffectiveRoots RootsConfig `json:"effective_roots"`
Modules []ResolvedModule `json:"modules,omitempty"`
RouteSummary RouteSummary `json:"route_summary"`
Fallbacks []FallbackEntry `json:"fallbacks,omitempty"`
Conflicts []Conflict `json:"conflicts,omitempty"`
Warnings []string `json:"warnings,omitempty"`
Runtime *RuntimeReport `json:"runtime,omitempty"`
}
func BuildStartupReport ¶
func BuildStartupReport(roots RootsConfig, modules []ResolvedModule, manifest Manifest, conflicts []Conflict, warnings []string) StartupReport
func CloneStartupReport ¶ added in v0.120.0
func CloneStartupReport(report StartupReport) StartupReport
CloneStartupReport returns an immutable-by-convention copy suitable for concurrent caches and diagnostics callers.
type URLConfig ¶
type URLConfig struct {
Admin URLNamespaceConfig `json:"admin"`
Public URLNamespaceConfig `json:"public"`
}
type URLKitAdapter ¶
type URLKitCapabilities ¶
type URLKitCapabilities struct {
NativeStrictMutations bool `json:"native_strict_mutations"`
NativeManifest bool `json:"native_manifest"`
}
func DetectURLKitCapabilities ¶
func DetectURLKitCapabilities(adapter URLKitAdapter) URLKitCapabilities
type URLKitCapabilityProvider ¶
type URLKitCapabilityProvider interface {
RoutingURLKitCapabilities() URLKitCapabilities
}
type URLNamespaceConfig ¶
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
func NewValidator ¶
func NewValidator(roots RootsConfig) *Validator
func (*Validator) PreflightRouter ¶
func (v *Validator) PreflightRouter(owner, module string, routes []router.RouteDefinition) error
func (*Validator) PreflightURLKit ¶
func (v *Validator) PreflightURLKit(entries []ManifestEntry, urls URLKitAdapter) error
func (*Validator) ReconcileRouter ¶
func (v *Validator) ReconcileRouter(manifest Manifest, adapter RouterAdapter) error
func (*Validator) ValidateFallbacks ¶ added in v0.36.0
func (v *Validator) ValidateFallbacks(entries []ManifestEntry, fallbacks []FallbackEntry) error
func (*Validator) ValidateHostRoutes ¶ added in v0.36.0
func (v *Validator) ValidateHostRoutes(entries []ManifestEntry) error
func (*Validator) ValidateModule ¶
func (v *Validator) ValidateModule(contract ModuleContract, resolved ResolvedModule, entries []ManifestEntry) error
Click to show internal directories.
Click to hide internal directories.