formats

package
v0.8.6 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrConfigError     = errors.ErrConfigError
	ErrValidationError = errors.ErrValidationError
)

Functions

func DetectTOMLFormat

func DetectTOMLFormat(data []byte) bool

DetectTOMLFormat attempts to detect if data is in TOML format.

func ExtractComments

func ExtractComments(data []byte) ([]string, error)

ExtractComments extracts comments from YAML content.

func FormatYAML

func FormatYAML(data []byte) ([]byte, error)

FormatYAML formats YAML content with consistent indentation.

func MergeYAMLDocuments

func MergeYAMLDocuments(documents ...map[string]any) (map[string]any, error)

MergeYAMLDocuments merges multiple YAML documents.

func ValidateYAMLSyntax

func ValidateYAMLSyntax(data []byte) error

ValidateYAMLSyntax validates YAML syntax without full parsing.

Types

type DataTransformer

type DataTransformer interface {
	Name() string
	Transform(data map[string]any) (map[string]any, error)
	Priority() int
}

DataTransformer transforms configuration data during loading.

type EnvVarTransformer

type EnvVarTransformer struct{}

EnvVarTransformer transforms environment variable references.

func (*EnvVarTransformer) Name

func (t *EnvVarTransformer) Name() string

func (*EnvVarTransformer) Priority

func (t *EnvVarTransformer) Priority() int

func (*EnvVarTransformer) Transform

func (t *EnvVarTransformer) Transform(data map[string]any) (map[string]any, error)

type FormatProcessor

type FormatProcessor interface {
	Name() string
	Extensions() []string
	Parse(data []byte) (map[string]any, error)
	Validate(data map[string]any) error
}

FormatProcessor processes specific configuration formats.

func GetProcessor

func GetProcessor(logger logger.Logger) FormatProcessor

GetProcessor returns a configured TOML processor.

func GetStrictProcessor

func GetStrictProcessor(logger logger.Logger) FormatProcessor

GetStrictProcessor returns a strict TOML processor.

func NewJSONProcessor

func NewJSONProcessor() FormatProcessor

NewJSONProcessor creates a new JSON processor.

func NewJSONProcessorWithOptions

func NewJSONProcessorWithOptions(options JSONOptions) FormatProcessor

NewJSONProcessorWithOptions creates a new JSON processor with options.

func NewYAMLProcessor

func NewYAMLProcessor() FormatProcessor

NewYAMLProcessor creates a new YAML processor.

func NewYAMLProcessorWithOptions

func NewYAMLProcessorWithOptions(options YAMLOptions) FormatProcessor

NewYAMLProcessorWithOptions creates a new YAML processor with options.

type JSONOptions

type JSONOptions struct {
	Strict              bool              // Strict parsing mode
	AllowComments       bool              // Allow comments in JSON (JSON5 style)
	AllowTrailingCommas bool              // Allow trailing commas
	ValidateSchema      bool              // Validate against JSON schema
	RequiredFields      []string          // List of required fields
	DeprecatedFields    map[string]string // Deprecated field mappings
	NumberAsString      bool              // Parse numbers as strings to preserve precision
	DisallowUnknown     bool              // Disallow unknown fields
}

JSONOptions contains options for JSON processing.

type JSONProcessor

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

JSONProcessor implements JSON format processing.

func (*JSONProcessor) Compact

func (p *JSONProcessor) Compact(data []byte) ([]byte, error)

Compact compacts JSON by removing whitespace.

func (*JSONProcessor) ConvertToJSONSchema

func (p *JSONProcessor) ConvertToJSONSchema(data map[string]any) (map[string]any, error)

ConvertToJSONSchema converts a configuration map to a JSON schema.

func (*JSONProcessor) Extensions

func (p *JSONProcessor) Extensions() []string

Extensions returns supported file extensions.

func (*JSONProcessor) ExtractPaths

func (p *JSONProcessor) ExtractPaths(data map[string]any) []string

ExtractPaths extracts all JSON paths from the data.

func (*JSONProcessor) FormatJSON

func (p *JSONProcessor) FormatJSON(data []byte, indent string) ([]byte, error)

FormatJSON formats JSON content with consistent indentation.

func (*JSONProcessor) GetMetadata

func (p *JSONProcessor) GetMetadata() map[string]any

GetMetadata returns metadata about the JSON processor.

func (*JSONProcessor) GetOptions

func (p *JSONProcessor) GetOptions() JSONOptions

GetOptions returns the current processor options.

func (*JSONProcessor) GetValueByPath

func (p *JSONProcessor) GetValueByPath(data map[string]any, path string) (any, error)

GetValueByPath gets a value using a JSON path.

func (*JSONProcessor) Marshal

func (p *JSONProcessor) Marshal(data map[string]any) ([]byte, error)

Marshal marshals a configuration map to JSON.

func (*JSONProcessor) MarshalIndent

func (p *JSONProcessor) MarshalIndent(data map[string]any, prefix, indent string) ([]byte, error)

MarshalIndent marshals a configuration map to indented JSON.

func (*JSONProcessor) Name

func (p *JSONProcessor) Name() string

Name returns the processor name.

func (*JSONProcessor) Parse

func (p *JSONProcessor) Parse(data []byte) (map[string]any, error)

Parse parses JSON data into a configuration map.

func (*JSONProcessor) SetOptions

func (p *JSONProcessor) SetOptions(options JSONOptions)

SetOptions updates the processor options.

func (*JSONProcessor) Validate

func (p *JSONProcessor) Validate(data map[string]any) error

Validate validates a configuration map against JSON rules.

func (*JSONProcessor) ValidateJSONSyntax

func (p *JSONProcessor) ValidateJSONSyntax(data []byte) error

ValidateJSONSyntax validates JSON syntax without full parsing.

type LoadOptions

type LoadOptions struct {
	UseCache       bool
	ValidateFormat bool
	ExpandEnvVars  bool
	ExpandSecrets  bool
	MergeStrategy  MergeStrategy
	Transformers   []DataTransformer
}

LoadOptions contains options for loading configuration.

type LoadResult

type LoadResult struct {
	Data     map[string]any
	Source   string
	LoadTime time.Time
	Size     int
	Format   string
	Hash     string
	Error    error
	Cached   bool
}

LoadResult represents the result of loading configuration.

type Loader

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

Loader handles loading configuration from various sources.

func NewLoader

func NewLoader(config LoaderConfig) *Loader

NewLoader creates a new configuration loader.

func (*Loader) ClearCache

func (l *Loader) ClearCache()

ClearCache clears the loader cache.

func (*Loader) GetCacheStats

func (l *Loader) GetCacheStats() map[string]any

GetCacheStats returns cache statistics.

func (*Loader) GetProcessor

func (l *Loader) GetProcessor(name string) (FormatProcessor, bool)

GetProcessor returns a format processor by name.

func (*Loader) GetProcessorByExtension

func (l *Loader) GetProcessorByExtension(extension string) (FormatProcessor, bool)

GetProcessorByExtension returns a format processor by file extension.

func (*Loader) LoadSource

func (l *Loader) LoadSource(ctx context.Context, source configcore.ConfigSource) (map[string]any, error)

LoadSource loads configuration from a source.

func (*Loader) LoadSourceWithOptions

func (l *Loader) LoadSourceWithOptions(ctx context.Context, source configcore.ConfigSource, options LoadOptions) (map[string]any, error)

LoadSourceWithOptions loads configuration from a source with options.

func (*Loader) RegisterProcessor

func (l *Loader) RegisterProcessor(processor FormatProcessor)

RegisterProcessor registers a format processor.

type LoaderConfig

type LoaderConfig struct {
	CacheTTL     time.Duration
	RetryCount   int
	RetryDelay   time.Duration
	Logger       logger.Logger
	Metrics      shared.Metrics
	ErrorHandler shared.ErrorHandler
}

LoaderConfig contains configuration for the loader.

type MergeStrategy

type MergeStrategy string

MergeStrategy defines how to merge configuration data.

const (
	MergeStrategyOverride MergeStrategy = "override" // Override existing values
	MergeStrategyMerge    MergeStrategy = "merge"    // Deep merge objects
	MergeStrategyAppend   MergeStrategy = "append"   // Append to arrays
	MergeStrategyPreserve MergeStrategy = "preserve" // Preserve existing values
)

type SecretsTransformer

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

SecretsTransformer transforms secret references.

func (*SecretsTransformer) Name

func (t *SecretsTransformer) Name() string

func (*SecretsTransformer) Priority

func (t *SecretsTransformer) Priority() int

func (*SecretsTransformer) Transform

func (t *SecretsTransformer) Transform(data map[string]any) (map[string]any, error)

type TOMLFormatValidator

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

TOMLFormatValidator provides additional validation for TOML-specific features.

func NewTOMLFormatValidator

func NewTOMLFormatValidator(processor *TOMLProcessor) *TOMLFormatValidator

NewTOMLFormatValidator creates a new TOML format validator.

func (*TOMLFormatValidator) ValidateTableStructure

func (tv *TOMLFormatValidator) ValidateTableStructure(data map[string]any) error

ValidateTableStructure validates TOML table structure.

type TOMLProcessor

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

TOMLProcessor handles TOML format configuration files.

func NewTOMLProcessor

func NewTOMLProcessor(options TOMLProcessorOptions) *TOMLProcessor

NewTOMLProcessor creates a new TOML format processor.

func (*TOMLProcessor) Extensions

func (tp *TOMLProcessor) Extensions() []string

Extensions returns the file extensions handled by this processor.

func (*TOMLProcessor) FormatData

func (tp *TOMLProcessor) FormatData(data map[string]any) ([]byte, error)

FormatData formats configuration data as TOML.

func (*TOMLProcessor) Name

func (tp *TOMLProcessor) Name() string

Name returns the processor name.

func (*TOMLProcessor) Parse

func (tp *TOMLProcessor) Parse(data []byte) (map[string]any, error)

Parse parses TOML data into a configuration map.

func (*TOMLProcessor) ParseToStruct

func (tp *TOMLProcessor) ParseToStruct(data []byte, target any) error

ParseToStruct parses TOML data directly into a struct.

func (*TOMLProcessor) Validate

func (tp *TOMLProcessor) Validate(data map[string]any) error

Validate validates TOML configuration data.

func (*TOMLProcessor) ValidateStructTags

func (tp *TOMLProcessor) ValidateStructTags(target any) error

ValidateStructTags validates TOML struct tags in a target struct.

type TOMLProcessorOptions

type TOMLProcessorOptions struct {
	Logger       logger.Logger
	StrictMode   bool // Strict parsing mode
	AllowUnknown bool // Allow unknown fields during validation
}

TOMLProcessorOptions contains options for the TOML processor.

type YAMLOptions

type YAMLOptions struct {
	Strict           bool              // Strict parsing mode
	AllowDuplicates  bool              // Allow duplicate keys
	ValidateSchema   bool              // Validate against JSON schema
	KnownFields      bool              // Only allow known fields
	RequiredFields   []string          // List of required fields
	DeprecatedFields map[string]string // Deprecated field mappings
}

YAMLOptions contains options for YAML processing.

type YAMLProcessor

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

YAMLProcessor implements YAML format processing.

func (*YAMLProcessor) Extensions

func (p *YAMLProcessor) Extensions() []string

Extensions returns supported file extensions.

func (*YAMLProcessor) GetMetadata

func (p *YAMLProcessor) GetMetadata() map[string]any

GetMetadata returns metadata about the YAML processor.

func (*YAMLProcessor) GetOptions

func (p *YAMLProcessor) GetOptions() YAMLOptions

GetOptions returns the current processor options.

func (*YAMLProcessor) Marshal

func (p *YAMLProcessor) Marshal(data map[string]any) ([]byte, error)

Marshal marshals a configuration map to YAML.

func (*YAMLProcessor) MarshalIndent

func (p *YAMLProcessor) MarshalIndent(data map[string]any, indent string) ([]byte, error)

MarshalIndent marshals a configuration map to indented YAML.

func (*YAMLProcessor) Name

func (p *YAMLProcessor) Name() string

Name returns the processor name.

func (*YAMLProcessor) Parse

func (p *YAMLProcessor) Parse(data []byte) (map[string]any, error)

Parse parses YAML data into a configuration map.

func (*YAMLProcessor) ParseMultiDocument

func (p *YAMLProcessor) ParseMultiDocument(data []byte) ([]map[string]any, error)

ParseMultiDocument parses multi-document YAML.

func (*YAMLProcessor) SetOptions

func (p *YAMLProcessor) SetOptions(options YAMLOptions)

SetOptions updates the processor options.

func (*YAMLProcessor) Validate

func (p *YAMLProcessor) Validate(data map[string]any) error

Validate validates a configuration map against YAML rules.

func (*YAMLProcessor) ValidateWithSchema

func (p *YAMLProcessor) ValidateWithSchema(data map[string]any, schema any) error

ValidateWithSchema validates YAML against a JSON schema.

Jump to

Keyboard shortcuts

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