Files
any-hub/internal/hubmodule/interfaces.go
2025-11-15 21:35:41 +08:00

56 lines
1.6 KiB
Go

package hubmodule
import "time"
// MigrationState 描述模块上线阶段,方便观测端区分 legacy/beta/ga。
type MigrationState string
const (
MigrationStateLegacy MigrationState = "legacy"
MigrationStateBeta MigrationState = "beta"
MigrationStateGA MigrationState = "ga"
)
// ValidationMode 描述缓存再验证的默认策略。
type ValidationMode string
const (
ValidationModeETag ValidationMode = "etag"
ValidationModeLastModified ValidationMode = "last-modified"
ValidationModeNever ValidationMode = "never"
)
// CacheStrategyProfile 描述模块的缓存读写策略及其默认值。
type CacheStrategyProfile struct {
TTLHint time.Duration
ValidationMode ValidationMode
DiskLayout string
RequiresMetadataFile bool
SupportsStreamingWrite bool
}
// ModuleMetadata 记录一个模块的静态信息,供配置校验和诊断端使用。
type ModuleMetadata struct {
Key string
Description string
MigrationState MigrationState
SupportedProtocols []string
CacheStrategy CacheStrategyProfile
LocatorRewrite LocatorRewrite
}
// DefaultModuleKey 返回内置 legacy 模块的键值。
func DefaultModuleKey() string {
return defaultModuleKey
}
// Locator 表示模块可用于重写缓存路径的轻量结构体,避免依赖 cache 包。
type Locator struct {
HubName string
Path string
HubType string
}
// LocatorRewrite 允许模块根据自身协议调整缓存路径,例如将 npm metadata 写入独立文件。
type LocatorRewrite func(Locator) Locator