52 lines
1015 B
Go
52 lines
1015 B
Go
// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. All rights reserved.
|
|
|
|
package data
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"decl/internal/codec"
|
|
"io"
|
|
"decl/internal/mapper"
|
|
)
|
|
|
|
var (
|
|
ErrEmptyDocument error = errors.New("Document contains no resources")
|
|
)
|
|
|
|
type Serializer interface {
|
|
JSON() ([]byte, error)
|
|
YAML() ([]byte, error)
|
|
PB() ([]byte, error)
|
|
Generate(w io.Writer) (error)
|
|
}
|
|
|
|
type Loader interface {
|
|
LoadString(string, codec.Format) (error)
|
|
Load([]byte, codec.Format) (error)
|
|
LoadReader(io.ReadCloser, codec.Format) (error)
|
|
}
|
|
|
|
type DocumentGetter interface {
|
|
GetDocument() Document
|
|
}
|
|
|
|
type Document interface {
|
|
Serializer
|
|
Loader
|
|
Validator
|
|
mapper.Mapper
|
|
|
|
NewResource(uri string) (Resource, error)
|
|
Types() (TypesRegistry[Resource])
|
|
// Resources() []Declaration
|
|
|
|
SetConfig(config Document)
|
|
ConfigDoc() Document
|
|
Len() int
|
|
ResolveIds(ctx context.Context)
|
|
Filter(filter DeclarationSelector) []Declaration
|
|
|
|
//Diff(with *Document, output io.Writer) (returnOutput string, diffErr error)
|
|
}
|