diff --git a/codegen/cuekind/testing/cuestomkind2.cue b/codegen/cuekind/testing/cuestomkind2.cue index f37531c2..5d659ca9 100644 --- a/codegen/cuekind/testing/cuestomkind2.cue +++ b/codegen/cuekind/testing/cuestomkind2.cue @@ -18,32 +18,32 @@ customKind2: { innerField1: string innerField2: [...string] innerField3: [...#InnerObject2] - } @cuetsy(kind="interface") + } #InnerObject2: { name: string details: { [string]: _ } - } @cuetsy(kind="interface") + } #Type1: { group: string options?: [...string] - } @cuetsy(kind="interface") + } #Type2: { group: string details: { [string]: _ } - } @cuetsy(kind="interface") - #UnionType: #Type1 | #Type2 @cuetsy(kind="type") + } + #UnionType: #Type1 | #Type2 field1: string inner: #InnerObject1 union: #UnionType map: { [string]: #Type2 } - timestamp: string & time.Time @cuetsy(kind="string") - enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum") + timestamp: string & time.Time + enum: "val1" | "val2" | "val3" | "val4" | *"default" i32: int32 & <= 123456 i64: int64 & >= 123456 boolField: bool | *false @@ -51,4 +51,4 @@ customKind2: { } } } -} \ No newline at end of file +} diff --git a/codegen/cuekind/testing/customkind.cue b/codegen/cuekind/testing/customkind.cue index e8f4cd41..5f3a5ec4 100644 --- a/codegen/cuekind/testing/customkind.cue +++ b/codegen/cuekind/testing/customkind.cue @@ -18,50 +18,50 @@ customKind: { } "v1-0": { schema: { - #InnerObject1: { - innerField1: string - innerField2: [...string] - innerField3: [...#InnerObject2] - } @cuetsy(kind="interface") - #InnerObject2: { - name: string - details: { - [string]: _ - } - } @cuetsy(kind="interface") - #Type1: { - group: string - options?: [...string] - } @cuetsy(kind="interface") - #Type2: { - group: string - details: { - [string]: _ - } - } @cuetsy(kind="interface") - #UnionType: #Type1 | #Type2 @cuetsy(kind="type") - spec: { - field1: string - inner: #InnerObject1 - union: #UnionType - map: { - [string]: #Type2 - } - timestamp: string & time.Time @cuetsy(kind="string") - enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum") - i32: int32 & <= 123456 - i64: int64 & >= 123456 - boolField: bool | *false - floatField: float64 - } - status: { - statusField1: string - } - metadata: { - customMetadataField: string - otherMetadataField: string - } + spec: { + #InnerObject1: { + innerField1: string + innerField2: [...string] + innerField3: [...#InnerObject2] + } + #InnerObject2: { + name: string + details: { + [string]: _ + } + } + #Type1: { + group: string + options?: [...string] + } + #Type2: { + group: string + details: { + [string]: _ + } + } + #UnionType: #Type1 | #Type2 + field1: string + inner: #InnerObject1 + union: #UnionType + map: { + [string]: #Type2 + } + timestamp: string & time.Time + enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum",memberNames="val1|val2|val3|val4|default") + i32: int32 & <= 123456 + i64: int64 & >= 123456 + boolField: bool | *false + floatField: float64 + } + status: { + statusField1: string + } + metadata: { + customMetadataField: string + otherMetadataField: string + } } } } -} \ No newline at end of file +} diff --git a/codegen/jennies/dstutil.go b/codegen/jennies/dstutil.go deleted file mode 100644 index 040c7e04..00000000 --- a/codegen/jennies/dstutil.go +++ /dev/null @@ -1,293 +0,0 @@ -package jennies - -import ( - "fmt" - "regexp" - "strings" - "unicode" - - "github.com/dave/dst" - "github.com/dave/dst/dstutil" -) - -func addGenComments() dstutil.ApplyFunc { - return func(c *dstutil.Cursor) bool { - switch c.Node().(type) { - case *dst.TypeSpec: - c.Parent().Decorations().Start.Append("// +k8s:openapi-gen=true") - case *dst.StructType: - // TODO: is there a way of getting to the typedef from the struct cursor? - // This would allow us to not add the +k8s comment to every type, and just the types that require OpenAPI - /* c.Parent() - //c.Parent().(*dst.TypeSpec).Decs.Start = []string{"// +k8s:openapi-gen=true"} - fmt.Println(c.Parent().Decorations()) - fmt.Printf("%#v\n", c.Parent()) - x.Decs.Start = append(x.Decs.Start, "// +k8s:openapi-gen=true") */ - } - return true - } -} - -// -// All Code in this file is taken from grafana.com/thema's internal package to allow for go post-processing -// - -// depointerizer returns an AST manipulator that removes redundant -// pointer indirection from the defined types. -// -//nolint:gocritic,revive -func depointerizer() dstutil.ApplyFunc { - return func(c *dstutil.Cursor) bool { - switch x := c.Node().(type) { - case *dst.Field: - if s, is := x.Type.(*dst.StarExpr); is { - switch deref := depoint(s).(type) { - case *dst.ArrayType, *dst.MapType: - x.Type = deref - } - } - } - return true - } -} - -func depoint(e dst.Expr) dst.Expr { - if star, is := e.(*dst.StarExpr); is { - return star.X - } - return e -} - -func setStar(e dst.Expr) string { - if _, is := e.(*dst.StarExpr); is { - return "*" - } - return "" -} - -// It fixes the "generic" fields. It happens when a value in cue could be different structs. -// For Go it generates a struct with a json.RawMessage field inside and multiple functions to map it between the different possibilities. -// -//nolint:gocognit -func fixRawData() dstutil.ApplyFunc { - return func(c *dstutil.Cursor) bool { - f, is := c.Node().(*dst.File) - if !is { - return false - } - - rawFields := make(map[string]bool) - existingRawFields := make(map[string]bool) - for _, decl := range f.Decls { - switch x := decl.(type) { - // Find the structs that only contains one json.RawMessage inside - case *dst.GenDecl: - for _, t := range x.Specs { - if ts, ok := t.(*dst.TypeSpec); ok { - if tp, ok := ts.Type.(*dst.StructType); ok && len(tp.Fields.List) == 1 { - if fn, ok := tp.Fields.List[0].Type.(*dst.SelectorExpr); ok { - if fmt.Sprintf("%s.%s", fn.X, fn.Sel.Name) == "json.RawMessage" { - rawFields[ts.Name.Name] = true - } - } - } - } - } - // Find the functions of the previous structs to verify that are the ones that we are looking for. - case *dst.FuncDecl: - for _, recv := range x.Recv.List { - fnType := depoint(recv.Type).(*dst.Ident).Name - if rawFields[fnType] { - existingRawFields[fnType] = true - } - } - } - } - - dstutil.Apply(f, func(c *dstutil.Cursor) bool { - switch x := c.Node().(type) { - // Delete the functions - case *dst.FuncDecl: - c.Delete() - case *dst.GenDecl: - // Deletes all "generics" generated for these json.RawMessage structs - comments := x.Decorations().Start.All() - if len(comments) > 0 { - if strings.HasSuffix(comments[0], "defines model for .") { - c.Delete() - } - } - for _, spec := range x.Specs { - if tp, ok := spec.(*dst.TypeSpec); ok { - // Delete structs with only json.RawMessage - if existingRawFields[tp.Name.Name] { - c.Delete() - continue - } - // Set types that was using these structs as interface{} - if st, ok := tp.Type.(*dst.StructType); ok { - iterateStruct(st, withoutRawData(existingRawFields)) - } - if mt, ok := tp.Type.(*dst.MapType); ok { - iterateMap(mt, withoutRawData(existingRawFields)) - } - if at, ok := tp.Type.(*dst.ArrayType); ok { - iterateArray(at, withoutRawData(existingRawFields)) - } - } - } - } - return true - }, nil) - - return true - } -} - -// Fixes type name containing underscores in the generated Go files -func fixUnderscoreInTypeName() dstutil.ApplyFunc { - return func(c *dstutil.Cursor) bool { - switch x := c.Node().(type) { - case *dst.GenDecl: - if specs, isType := x.Specs[0].(*dst.TypeSpec); isType { - if strings.Contains(specs.Name.Name, "_") { - oldName := specs.Name.Name - specs.Name.Name = strings.ReplaceAll(specs.Name.Name, "_", "") - x.Decs.Start[0] = strings.ReplaceAll(x.Decs.Start[0], oldName, specs.Name.Name) - } - if st, ok := specs.Type.(*dst.StructType); ok { - iterateStruct(st, withoutUnderscore) - } - if mt, ok := specs.Type.(*dst.MapType); ok { - iterateMap(mt, withoutUnderscore) - } - if at, ok := specs.Type.(*dst.ArrayType); ok { - iterateArray(at, withoutUnderscore) - } - } - case *dst.Field: - findFieldsWithUnderscores(x) - } - return true - } -} - -func findFieldsWithUnderscores(x *dst.Field) { - switch t := x.Type.(type) { - case *dst.Ident: - withoutUnderscore(t) - case *dst.StarExpr: - if i, is := t.X.(*dst.Ident); is { - withoutUnderscore(i) - } - case *dst.ArrayType: - iterateArray(t, withoutUnderscore) - case *dst.MapType: - iterateMap(t, withoutUnderscore) - } -} - -func withoutUnderscore(i *dst.Ident) { - if strings.Contains(i.Name, "_") { - i.Name = strings.ReplaceAll(i.Name, "_", "") - } -} - -func withoutRawData(existingFields map[string]bool) func(ident *dst.Ident) { - return func(i *dst.Ident) { - if existingFields[i.Name] { - i.Name = setStar(i) + "interface{}" - } - } -} - -func iterateStruct(s *dst.StructType, fn func(i *dst.Ident)) { - for _, f := range s.Fields.List { - switch mx := depoint(f.Type).(type) { - case *dst.Ident: - fn(mx) - case *dst.ArrayType: - iterateArray(mx, fn) - case *dst.MapType: - iterateMap(mx, fn) - case *dst.StructType: - iterateStruct(mx, fn) - } - } -} - -func iterateMap(s *dst.MapType, fn func(i *dst.Ident)) { - switch mx := s.Value.(type) { - case *dst.Ident: - fn(mx) - case *dst.ArrayType: - iterateArray(mx, fn) - case *dst.MapType: - iterateMap(mx, fn) - } -} - -func iterateArray(a *dst.ArrayType, fn func(i *dst.Ident)) { - switch mx := a.Elt.(type) { - case *dst.Ident: - fn(mx) - case *dst.ArrayType: - iterateArray(mx, fn) - case *dst.StructType: - iterateStruct(mx, fn) - } -} - -func fixTODOComments() dstutil.ApplyFunc { - return func(cursor *dstutil.Cursor) bool { - switch f := cursor.Node().(type) { - case *dst.File: - for _, d := range f.Decls { - if isTypeSpec(d) { - removeGoFieldComment(d.Decorations().Start.All()) - } - fixTODOComment(d.Decorations().Start.All()) - } - case *dst.Field: - if len(f.Names) > 0 { - removeGoFieldComment(f.Decorations().Start.All()) - } - } - - return true - } -} - -func fixTODOComment(comments []string) { - todoRegex := regexp.MustCompile("(//) (.*) (TODO.*)") - if len(comments) > 0 { - comments[0] = todoRegex.ReplaceAllString(comments[0], "$1 $3") - } -} - -func removeGoFieldComment(comments []string) { - todoRegex := regexp.MustCompile("(//) ([A-Z].*?) ([A-Z]?.*?) (.*)") - if len(comments) > 0 { - matches := todoRegex.FindAllStringSubmatch(comments[0], -1) - if len(matches) > 0 { - if strings.EqualFold(matches[0][3], matches[0][2]) { - comments[0] = fmt.Sprintf("%s %s %s", matches[0][1], matches[0][3], matches[0][4]) - } else { - r := []rune(matches[0][3]) - if !unicode.IsLower(r[0]) { - comments[0] = fmt.Sprintf("%s %s %s", matches[0][1], matches[0][3], matches[0][4]) - } - } - } - } -} - -func isTypeSpec(d dst.Decl) bool { - gd, ok := d.(*dst.GenDecl) - if !ok { - return false - } - - _, is := gd.Specs[0].(*dst.TypeSpec) - return is -} diff --git a/codegen/jennies/gotypes.go b/codegen/jennies/gotypes.go index 3f90cd4e..301cee3c 100644 --- a/codegen/jennies/gotypes.go +++ b/codegen/jennies/gotypes.go @@ -1,24 +1,16 @@ package jennies import ( - "bytes" + "context" "fmt" - "go/format" - "go/parser" - "go/token" "path" - "path/filepath" "strings" "cuelang.org/go/cue" - "github.com/dave/dst/decorator" - "github.com/dave/dst/dstutil" - "github.com/getkin/kin-openapi/openapi3" "github.com/grafana/codejen" - "golang.org/x/tools/imports" + "github.com/grafana/cog" "github.com/grafana/grafana-app-sdk/codegen" - deepmapcodegen "github.com/grafana/grafana-app-sdk/internal/deepmap/oapi-codegen/pkg/codegen" ) const GoTypesMaxDepth = 5 @@ -93,19 +85,19 @@ func (g *GoTypes) generateFiles(version *codegen.KindVersion, name string, machi return g.generateFilesAtDepth(version.Schema, version, 0, machineName, packageName, pathPrefix, namePrefix) } - applyFuncs := make([]dstutil.ApplyFunc, 0) + codegenPipeline := cog.TypesFromSchema(). + CUEValue(packageName, version.Schema, cog.ForceEnvelope(name)). + Golang() + if g.AddKubernetesCodegen { - applyFuncs = append(applyFuncs, addGenComments()) + codegenPipeline = codegenPipeline.SchemaTransformations(cog.AppendCommentToObjects("+k8s:openapi-gen=true")) } - goBytes, err := GoTypesFromCUE(version.Schema, CUEGoConfig{ - PackageName: packageName, - Name: exportField(sanitizeLabelString(name)), - Version: version.Version, - ApplyFuncs: applyFuncs, - }, 0) + + goBytes, err := codegenPipeline.Run(context.Background()) if err != nil { return nil, err } + return codejen.Files{codejen.File{ Data: goBytes, RelativePath: fmt.Sprintf(path.Join(pathPrefix, "%s_gen.go"), strings.ToLower(machineName)), @@ -120,16 +112,12 @@ func (g *GoTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersion, cur for _, s := range TrimPathPrefix(v.Path(), kv.Schema.Path()).Selectors() { fieldName = append(fieldName, s.String()) } - applyFuncs := make([]dstutil.ApplyFunc, 0) - if g.AddKubernetesCodegen && fieldName[len(fieldName)-1] != "metadata" { // metadata hack because of thema - applyFuncs = append(applyFuncs, addGenComments()) - } + goBytes, err := GoTypesFromCUE(v, CUEGoConfig{ - PackageName: packageName, - Name: exportField(strings.Join(fieldName, "")), - NamePrefix: namePrefix, - Version: kv.Version, - ApplyFuncs: applyFuncs, + PackageName: packageName, + Name: exportField(strings.Join(fieldName, "")), + NamePrefix: namePrefix, + AddKubernetesOpenAPIGenComment: g.AddKubernetesCodegen && fieldName[len(fieldName)-1] != "metadata", // metadata hack because of thema }, len(v.Path().Selectors())-(g.Depth-g.NamingDepth)) if err != nil { return nil, err @@ -158,144 +146,42 @@ func (g *GoTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersion, cur } type CUEGoConfig struct { - PackageName string - Name string - Version string - IgnoreDiscoveredImports bool - - // ApplyFuncs is a slice of AST manipulation funcs that will be executed against - // the generated Go file prior to running it through goimports. For each slice - // element, [dstutil.Apply] is called with the element as the "pre" parameter. - ApplyFuncs []dstutil.ApplyFunc + PackageName string + Name string - // UseGoDeclInComments sets the name of the fields and structs at the beginning of each comment. - UseGoDeclInComments bool + AddKubernetesOpenAPIGenComment bool // NamePrefix prefixes all generated types with the provided NamePrefix NamePrefix string } func GoTypesFromCUE(v cue.Value, cfg CUEGoConfig, maxNamingDepth int) ([]byte, error) { - openAPIConfig := CUEOpenAPIConfig{ - Name: cfg.NamePrefix + cfg.Name, - Version: cfg.Version, - NameFunc: func(value cue.Value, path cue.Path) string { - i := 0 - for ; i < len(path.Selectors()) && i < len(v.Path().Selectors()); i++ { - if maxNamingDepth > 0 && i >= maxNamingDepth { - break - } - if !SelEq(path.Selectors()[i], v.Path().Selectors()[i]) { - break - } + nameFunc := func(value cue.Value, definitionPath cue.Path) string { + i := 0 + for ; i < len(definitionPath.Selectors()) && i < len(v.Path().Selectors()); i++ { + if maxNamingDepth > 0 && i >= maxNamingDepth { + break } - if i > 0 { - path = cue.MakePath(path.Selectors()[i:]...) + if !SelEq(definitionPath.Selectors()[i], v.Path().Selectors()[i]) { + break } - return cfg.NamePrefix + strings.Trim(path.String(), "?#") - }, - } - - yml, err := CUEValueToOAPIYAML(v, openAPIConfig) - if err != nil { - return nil, err - } - - loader := openapi3.NewLoader() - oT, err := loader.LoadFromData(yml) - if err != nil { - return nil, fmt.Errorf("loading generated openapi failed: %w", err) - } - - ccfg := deepmapcodegen.Configuration{ - PackageName: cfg.PackageName, - Compatibility: deepmapcodegen.CompatibilityOptions{ - AlwaysPrefixEnumValues: true, - }, - Generate: deepmapcodegen.GenerateOptions{ - Models: true, - }, - OutputOptions: deepmapcodegen.OutputOptions{ - SkipPrune: true, - // SkipFmt: true, // we should be able to skip fmt, but dst's parser panics on nested structs when we don't - UserTemplates: map[string]string{ - "imports.tmpl": importstmpl, - }, - }, - ImportMapping: nil, - AdditionalImports: nil, - } - - gostr, err := deepmapcodegen.Generate(oT, ccfg) - if err != nil { - return nil, fmt.Errorf("openapi generation failed: %w", err) - } - - applyFuncs := []dstutil.ApplyFunc{depointerizer(), fixRawData(), fixUnderscoreInTypeName()} - if !cfg.UseGoDeclInComments { - applyFuncs = append(applyFuncs, fixTODOComments()) - } - applyFuncs = append(applyFuncs, cfg.ApplyFuncs...) - - return postprocessGoFile(genGoFile{ - path: fmt.Sprintf("%s_type_gen.go", cfg.Name), - appliers: applyFuncs, - in: []byte(gostr), - errifadd: !cfg.IgnoreDiscoveredImports, - }) -} - -type genGoFile struct { - errifadd bool - path string - appliers []dstutil.ApplyFunc - in []byte -} - -func postprocessGoFile(cfg genGoFile) ([]byte, error) { - fname := sanitizeLabelString(filepath.Base(cfg.path)) - buf := new(bytes.Buffer) - fset := token.NewFileSet() - gf, err := decorator.ParseFile(fset, fname, string(cfg.in), parser.ParseComments) - if err != nil { - return nil, fmt.Errorf("error parsing generated file: %w", err) - } - - for _, af := range cfg.appliers { - dstutil.Apply(gf, af, nil) - } - - err = decorator.Fprint(buf, gf) - if err != nil { - return nil, fmt.Errorf("error formatting generated file: %w", err) - } - - byt, err := imports.Process(fname, buf.Bytes(), nil) - if err != nil { - return nil, fmt.Errorf("goimports processing of generated file failed: %w", err) - } - - if cfg.errifadd { - // Compare imports before and after; warn about performance if some were added - gfa, _ := parser.ParseFile(fset, fname, string(byt), parser.ParseComments) - imap := make(map[string]bool) - for _, im := range gf.Imports { - imap[im.Path.Value] = true } - var added []string - for _, im := range gfa.Imports { - if !imap[im.Path.Value] { - added = append(added, im.Path.Value) - } + if i > 0 { + definitionPath = cue.MakePath(definitionPath.Selectors()[i:]...) } + return strings.Trim(definitionPath.String(), "?#") + } - if len(added) != 0 { - // TODO improve the guidance in this error if/when we better abstract over imports to generate - return nil, fmt.Errorf("goimports added the following import statements to %s: \n\t%s\nRelying on goimports to find imports significantly slows down code generation. Either add these imports with an AST manipulation in cfg.ApplyFuncs, or set cfg.IgnoreDiscoveredImports to true", cfg.path, strings.Join(added, "\n\t")) - } + codegenPipeline := cog.TypesFromSchema(). + CUEValue(cfg.PackageName, v, cog.ForceEnvelope(cfg.Name), cog.NameFunc(nameFunc)). + SchemaTransformations(cog.PrefixObjectsNames(cfg.NamePrefix)). + Golang() + + if cfg.AddKubernetesOpenAPIGenComment { + codegenPipeline = codegenPipeline.SchemaTransformations(cog.AppendCommentToObjects("+k8s:openapi-gen=true")) } - return format.Source(byt) + return codegenPipeline.Run(context.Background()) } // SanitizeLabelString strips characters from a string that are not allowed for @@ -324,38 +210,3 @@ func exportField(field string) string { } return strings.ToUpper(field) } - -// Almost all of the below imports are eliminated by dst transformers and calls -// to goimports - but if they're not present in the template, then the internal -// call to goimports that oapi-codegen makes will trigger a search for them, -// which can slow down codegen by orders of magnitude. -var importstmpl = `package {{ .PackageName }} - -import ( - "bytes" - "compress/gzip" - "context" - "encoding/base64" - "encoding/json" - "encoding/xml" - "errors" - "fmt" - "gopkg.in/yaml.v2" - "io" - "io/ioutil" - "os" - "net/http" - "net/url" - "path" - "strings" - "time" - - "github.com/deepmap/oapi-codegen/pkg/runtime" - openapi_types "github.com/deepmap/oapi-codegen/pkg/types" - "github.com/getkin/kin-openapi/openapi3" - "github.com/go-chi/chi/v5" - "github.com/labstack/echo/v4" - "github.com/gin-gonic/gin" - "github.com/gorilla/mux" -) -` diff --git a/codegen/jennies/typescript.go b/codegen/jennies/typescript.go index bd124c3c..02902a19 100644 --- a/codegen/jennies/typescript.go +++ b/codegen/jennies/typescript.go @@ -2,13 +2,14 @@ package jennies import ( "bytes" + "context" "fmt" "path" "strings" "cuelang.org/go/cue" "github.com/grafana/codejen" - "github.com/grafana/cuetsy" + "github.com/grafana/cog" "github.com/grafana/grafana-app-sdk/codegen" "github.com/grafana/grafana-app-sdk/codegen/templates" @@ -120,11 +121,6 @@ func (TypeScriptTypes) JennyName() string { } func (j TypeScriptTypes) Generate(kind codegen.Kind) (codejen.Files, error) { - cfg := cuetsy.Config{ - ImportMapper: cuetsy.IgnoreImportMapper, - Export: true, - } - if j.GenerateOnlyCurrent { ver := kind.Version(kind.Properties().Current) if ver == nil { @@ -134,7 +130,7 @@ func (j TypeScriptTypes) Generate(kind codegen.Kind) (codejen.Files, error) { return nil, nil } - return j.generateFiles(ver, kind.Name(), "", strings.ToLower(kind.Properties().MachineName)+"_", cfg) + return j.generateFiles(ver, kind.Name(), "", strings.ToLower(kind.Properties().MachineName)+"_") } files := make(codejen.Files, 0) @@ -146,7 +142,7 @@ func (j TypeScriptTypes) Generate(kind codegen.Kind) (codejen.Files, error) { continue } - generated, err := j.generateFiles(&v, kind.Name(), fmt.Sprintf("%s/%s", kind.Properties().MachineName, v.Version), "", cfg) + generated, err := j.generateFiles(&v, kind.Name(), fmt.Sprintf("%s/%s", kind.Properties().MachineName, v.Version), "") if err != nil { return nil, err } @@ -155,12 +151,12 @@ func (j TypeScriptTypes) Generate(kind codegen.Kind) (codejen.Files, error) { return files, nil } -func (j TypeScriptTypes) generateFiles(version *codegen.KindVersion, name, pathPrefix, prefix string, cfg cuetsy.Config) (codejen.Files, error) { +func (j TypeScriptTypes) generateFiles(version *codegen.KindVersion, name, pathPrefix, prefix string) (codejen.Files, error) { if j.Depth > 0 { - return j.generateFilesAtDepth(version.Schema, version, 0, pathPrefix, prefix, cfg) + return j.generateFilesAtDepth(version.Schema, version, 0, pathPrefix, prefix) } - tsBytes, err := generateTypescriptBytes(version.Schema, exportField(sanitizeLabelString(name)), cfg) + tsBytes, err := generateTypescriptBytes(version.Schema, exportField(sanitizeLabelString(name))) if err != nil { return nil, err } @@ -171,13 +167,13 @@ func (j TypeScriptTypes) generateFiles(version *codegen.KindVersion, name, pathP }}, nil } -func (j TypeScriptTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersion, currDepth int, pathPrefix string, prefix string, cfg cuetsy.Config) (codejen.Files, error) { +func (j TypeScriptTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersion, currDepth int, pathPrefix string, prefix string) (codejen.Files, error) { if currDepth == j.Depth { fieldName := make([]string, 0) for _, s := range TrimPathPrefix(v.Path(), kv.Schema.Path()).Selectors() { fieldName = append(fieldName, s.String()) } - tsBytes, err := generateTypescriptBytes(v, exportField(strings.Join(fieldName, "")), cfg) + tsBytes, err := generateTypescriptBytes(v, exportField(strings.Join(fieldName, ""))) if err != nil { return nil, err } @@ -195,7 +191,7 @@ func (j TypeScriptTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersi files := make(codejen.Files, 0) for it.Next() { - f, err := j.generateFilesAtDepth(it.Value(), kv, currDepth+1, pathPrefix, prefix, cfg) + f, err := j.generateFilesAtDepth(it.Value(), kv, currDepth+1, pathPrefix, prefix) if err != nil { return nil, err } @@ -204,21 +200,9 @@ func (j TypeScriptTypes) generateFilesAtDepth(v cue.Value, kv *codegen.KindVersi return files, nil } -func generateTypescriptBytes(v cue.Value, name string, cfg cuetsy.Config) ([]byte, error) { - tf, err := cuetsy.GenerateAST(v, cfg) - if err != nil { - return nil, err - } - as := cuetsy.TypeInterface - top, err := cuetsy.GenerateSingleAST(name, v.Eval(), as) - if err != nil { - return nil, fmt.Errorf("generating TS for schema root failed: %w", err) - } - tf.Nodes = append(tf.Nodes, top.T) - if top.D != nil { - tf.Nodes = append(tf.Nodes, top.D) - } - // post-process fix on the generated TS - fixed := strings.ReplaceAll(tf.String(), "Array", "string[]") - return []byte(fixed), nil +func generateTypescriptBytes(v cue.Value, name string) ([]byte, error) { + return cog.TypesFromSchema(). + CUEValue("", v, cog.ForceEnvelope(name)). + Typescript(). + Run(context.Background()) } diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_metadata_gen.go.txt index 803f3951..5550e6c3 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_metadata_gen.go.txt @@ -1,32 +1,21 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v0_0 -import ( - "time" -) +import "time" -// CustomKindMetadata defines model for CustomKindMetadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type CustomKindMetadata struct { + UpdateTimestamp time.Time `json:"updateTimestamp"` CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type CustomKindKubeObjectMetadata struct { CreationTimestamp time.Time `json:"creationTimestamp"` DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` Generation int64 `json:"generation"` + UpdatedBy string `json:"updatedBy"` Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_spec_gen.go.txt index ac3c5845..19ee6960 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_spec_gen.go.txt @@ -1,8 +1,9 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v0_0 -// CustomKindSpec defines model for CustomKindSpec. // +k8s:openapi-gen=true type CustomKindSpec struct { - DeprecatedField string `json:"deprecatedField"` Field1 string `json:"field1"` + DeprecatedField string `json:"deprecatedField"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_status_gen.go.txt index 34deb349..5e86ae3d 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v0_0/customkind_status_gen.go.txt @@ -1,70 +1,34 @@ -package v0_0 +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for CustomKindOperatorStateState. -const ( - CustomKindOperatorStateStateFailed CustomKindOperatorStateState = "failed" - CustomKindOperatorStateStateInProgress CustomKindOperatorStateState = "in_progress" - CustomKindOperatorStateStateSuccess CustomKindOperatorStateState = "success" -) - -// Defines values for CustomKindstatusOperatorStateState. -const ( - CustomKindstatusOperatorStateStateFailed CustomKindstatusOperatorStateState = "failed" - CustomKindstatusOperatorStateStateInProgress CustomKindstatusOperatorStateState = "in_progress" - CustomKindstatusOperatorStateStateSuccess CustomKindstatusOperatorStateState = "success" -) +package v0_0 -// CustomKindOperatorState defines model for CustomKindOperatorState. // +k8s:openapi-gen=true -type CustomKindOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type CustomKindstatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State CustomKindOperatorStateState `json:"state"` + State CustomKindStatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// CustomKindOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type CustomKindOperatorStateState string - -// CustomKindStatus defines model for CustomKindStatus. // +k8s:openapi-gen=true type CustomKindStatus struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]CustomKindstatusOperatorState `json:"operatorStates,omitempty"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// CustomKindstatusOperatorState defines model for CustomKindstatus.#OperatorState. // +k8s:openapi-gen=true -type CustomKindstatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` +type CustomKindStatusOperatorStateState string - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State CustomKindstatusOperatorStateState `json:"state"` -} - -// CustomKindstatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type CustomKindstatusOperatorStateState string +const ( + StatusOperatorStateStateSuccess CustomKindStatusOperatorStateState = "success" + StatusOperatorStateStateInProgress CustomKindStatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed CustomKindStatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_metadata_gen.go.txt index 3340bea4..c577526c 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_metadata_gen.go.txt @@ -1,34 +1,31 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1_0 -import ( - "time" -) +import "time" -// CustomKindMetadata defines model for CustomKindMetadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type CustomKindMetadata struct { - CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - CustomMetadataField string `json:"customMetadataField"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - OtherMetadataField string `json:"otherMetadataField"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type CustomKindKubeObjectMetadata struct { - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + CustomMetadataField string `json:"customMetadataField"` + UpdateTimestamp time.Time `json:"updateTimestamp"` + CreatedBy string `json:"createdBy"` + Uid string `json:"uid"` + CreationTimestamp time.Time `json:"creationTimestamp"` + DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` + Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` + Generation int64 `json:"generation"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + OtherMetadataField string `json:"otherMetadataField"` + UpdatedBy string `json:"updatedBy"` + Labels map[string]string `json:"labels"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_spec_gen.go.txt index 4b325887..16443dd6 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_spec_gen.go.txt @@ -1,62 +1,58 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1_0 -import ( - "time" -) +import "time" -// Defines values for CustomKindSpecEnum. -const ( - CustomKindSpecEnumDefault CustomKindSpecEnum = "default" - CustomKindSpecEnumVal1 CustomKindSpecEnum = "val1" - CustomKindSpecEnumVal2 CustomKindSpecEnum = "val2" - CustomKindSpecEnumVal3 CustomKindSpecEnum = "val3" - CustomKindSpecEnumVal4 CustomKindSpecEnum = "val4" -) +// +k8s:openapi-gen=true +type CustomKindspecInnerObject1 struct { + InnerField1 string `json:"innerField1"` + InnerField2 []string `json:"innerField2"` + InnerField3 []CustomKindspecInnerObject2 `json:"innerField3"` +} -// CustomKindInnerObject1 defines model for CustomKindInnerObject1. // +k8s:openapi-gen=true -type CustomKindInnerObject1 struct { - InnerField1 string `json:"innerField1"` - InnerField2 []string `json:"innerField2"` - InnerField3 []CustomKindInnerObject2 `json:"innerField3"` +type CustomKindspecInnerObject2 struct { + Name string `json:"name"` + Details map[string]any `json:"details"` } -// CustomKindInnerObject2 defines model for CustomKindInnerObject2. // +k8s:openapi-gen=true -type CustomKindInnerObject2 struct { - Details map[string]interface{} `json:"details"` - Name string `json:"name"` +type CustomKindspecType1 struct { + Group string `json:"group"` + Options []string `json:"options,omitempty"` } -// CustomKindSpec defines model for CustomKindSpec. // +k8s:openapi-gen=true -type CustomKindSpec struct { - BoolField bool `json:"boolField"` - Enum CustomKindSpecEnum `json:"enum"` - Field1 string `json:"field1"` - FloatField float64 `json:"floatField"` - I32 int `json:"i32"` - I64 int `json:"i64"` - Inner CustomKindInnerObject1 `json:"inner"` - Map map[string]CustomKindType2 `json:"map"` - Timestamp time.Time `json:"timestamp"` - Union interface{} `json:"union"` +type CustomKindspecType2 struct { + Group string `json:"group"` + Details map[string]any `json:"details"` } -// CustomKindSpecEnum defines model for CustomKindSpec.Enum. // +k8s:openapi-gen=true -type CustomKindSpecEnum string +type CustomKindspecUnionType any -// CustomKindType1 defines model for CustomKindType1. // +k8s:openapi-gen=true -type CustomKindType1 struct { - Group string `json:"group"` - Options []string `json:"options,omitempty"` +type CustomKindSpec struct { + Field1 string `json:"field1"` + Inner CustomKindspecInnerObject1 `json:"inner"` + Union CustomKindspecUnionType `json:"union"` + Map map[string]CustomKindspecType2 `json:"map"` + Timestamp time.Time `json:"timestamp"` + Enum CustomKindSpecEnum `json:"enum"` + I32 int32 `json:"i32"` + I64 int64 `json:"i64"` + BoolField bool `json:"boolField"` + FloatField float64 `json:"floatField"` } -// CustomKindType2 defines model for CustomKindType2. // +k8s:openapi-gen=true -type CustomKindType2 struct { - Details map[string]interface{} `json:"details"` - Group string `json:"group"` -} +type CustomKindSpecEnum string + +const ( + SpecEnumVal1 CustomKindSpecEnum = "val1" + SpecEnumVal2 CustomKindSpecEnum = "val2" + SpecEnumVal3 CustomKindSpecEnum = "val3" + SpecEnumVal4 CustomKindSpecEnum = "val4" + SpecEnumDefault CustomKindSpecEnum = "default" +) diff --git a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_status_gen.go.txt index 0d4bec6a..fbc73e71 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/custom/v1_0/customkind_status_gen.go.txt @@ -1,71 +1,35 @@ -package v1_0 +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for CustomKindOperatorStateState. -const ( - CustomKindOperatorStateStateFailed CustomKindOperatorStateState = "failed" - CustomKindOperatorStateStateInProgress CustomKindOperatorStateState = "in_progress" - CustomKindOperatorStateStateSuccess CustomKindOperatorStateState = "success" -) - -// Defines values for CustomKindstatusOperatorStateState. -const ( - CustomKindstatusOperatorStateStateFailed CustomKindstatusOperatorStateState = "failed" - CustomKindstatusOperatorStateStateInProgress CustomKindstatusOperatorStateState = "in_progress" - CustomKindstatusOperatorStateStateSuccess CustomKindstatusOperatorStateState = "success" -) +package v1_0 -// CustomKindOperatorState defines model for CustomKindOperatorState. // +k8s:openapi-gen=true -type CustomKindOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type CustomKindstatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State CustomKindOperatorStateState `json:"state"` + State CustomKindStatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// CustomKindOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type CustomKindOperatorStateState string - -// CustomKindStatus defines model for CustomKindStatus. // +k8s:openapi-gen=true type CustomKindStatus struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - + StatusField1 string `json:"statusField1"` // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]CustomKindstatusOperatorState `json:"operatorStates,omitempty"` - StatusField1 string `json:"statusField1"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// CustomKindstatusOperatorState defines model for CustomKindstatus.#OperatorState. // +k8s:openapi-gen=true -type CustomKindstatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` +type CustomKindStatusOperatorStateState string - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State CustomKindstatusOperatorStateState `json:"state"` -} - -// CustomKindstatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type CustomKindstatusOperatorStateState string +const ( + StatusOperatorStateStateSuccess CustomKindStatusOperatorStateState = "success" + StatusOperatorStateStateInProgress CustomKindStatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed CustomKindStatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_metadata_gen.go.txt index fdeb96e0..17618399 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_metadata_gen.go.txt @@ -1,32 +1,21 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1 -import ( - "time" -) +import "time" -// TestKind2Metadata defines model for TestKind2Metadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type TestKind2Metadata struct { + UpdateTimestamp time.Time `json:"updateTimestamp"` CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type TestKind2KubeObjectMetadata struct { CreationTimestamp time.Time `json:"creationTimestamp"` DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` Generation int64 `json:"generation"` + UpdatedBy string `json:"updatedBy"` Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_spec_gen.go.txt index 82d5c11a..96b41945 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_spec_gen.go.txt @@ -1,6 +1,7 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1 -// TestKind2Spec defines model for TestKind2Spec. // +k8s:openapi-gen=true type TestKind2Spec struct { TestField string `json:"testField"` diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_status_gen.go.txt index b46b4285..3971b79e 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind2_status_gen.go.txt @@ -1,70 +1,34 @@ -package v1 +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for TestKind2OperatorStateState. -const ( - TestKind2OperatorStateStateFailed TestKind2OperatorStateState = "failed" - TestKind2OperatorStateStateInProgress TestKind2OperatorStateState = "in_progress" - TestKind2OperatorStateStateSuccess TestKind2OperatorStateState = "success" -) - -// Defines values for TestKind2statusOperatorStateState. -const ( - TestKind2statusOperatorStateStateFailed TestKind2statusOperatorStateState = "failed" - TestKind2statusOperatorStateStateInProgress TestKind2statusOperatorStateState = "in_progress" - TestKind2statusOperatorStateStateSuccess TestKind2statusOperatorStateState = "success" -) +package v1 -// TestKind2OperatorState defines model for TestKind2OperatorState. // +k8s:openapi-gen=true -type TestKind2OperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type TestKind2statusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State TestKind2OperatorStateState `json:"state"` + State TestKind2StatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// TestKind2OperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKind2OperatorStateState string - -// TestKind2Status defines model for TestKind2Status. // +k8s:openapi-gen=true type TestKind2Status struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]TestKind2statusOperatorState `json:"operatorStates,omitempty"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// TestKind2statusOperatorState defines model for TestKind2status.#OperatorState. // +k8s:openapi-gen=true -type TestKind2statusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` +type TestKind2StatusOperatorStateState string - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State TestKind2statusOperatorStateState `json:"state"` -} - -// TestKind2statusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKind2statusOperatorStateState string +const ( + StatusOperatorStateStateSuccess TestKind2StatusOperatorStateState = "success" + StatusOperatorStateStateInProgress TestKind2StatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed TestKind2StatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_metadata_gen.go.txt index 031668d0..2d002acd 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_metadata_gen.go.txt @@ -1,32 +1,21 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1 -import ( - "time" -) +import "time" -// TestKindMetadata defines model for TestKindMetadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type TestKindMetadata struct { + UpdateTimestamp time.Time `json:"updateTimestamp"` CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type TestKindKubeObjectMetadata struct { CreationTimestamp time.Time `json:"creationTimestamp"` DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` Generation int64 `json:"generation"` + UpdatedBy string `json:"updatedBy"` Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_spec_gen.go.txt index dbfd2f90..22630a18 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_spec_gen.go.txt @@ -1,6 +1,7 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1 -// TestKindSpec defines model for TestKindSpec. // +k8s:openapi-gen=true type TestKindSpec struct { StringField string `json:"stringField"` diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_status_gen.go.txt index 05d157e4..3673d15d 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v1/testkind_status_gen.go.txt @@ -1,70 +1,34 @@ -package v1 +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for TestKindOperatorStateState. -const ( - TestKindOperatorStateStateFailed TestKindOperatorStateState = "failed" - TestKindOperatorStateStateInProgress TestKindOperatorStateState = "in_progress" - TestKindOperatorStateStateSuccess TestKindOperatorStateState = "success" -) - -// Defines values for TestKindstatusOperatorStateState. -const ( - TestKindstatusOperatorStateStateFailed TestKindstatusOperatorStateState = "failed" - TestKindstatusOperatorStateStateInProgress TestKindstatusOperatorStateState = "in_progress" - TestKindstatusOperatorStateStateSuccess TestKindstatusOperatorStateState = "success" -) +package v1 -// TestKindOperatorState defines model for TestKindOperatorState. // +k8s:openapi-gen=true -type TestKindOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type TestKindstatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State TestKindOperatorStateState `json:"state"` + State TestKindStatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// TestKindOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKindOperatorStateState string - -// TestKindStatus defines model for TestKindStatus. // +k8s:openapi-gen=true type TestKindStatus struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]TestKindstatusOperatorState `json:"operatorStates,omitempty"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// TestKindstatusOperatorState defines model for TestKindstatus.#OperatorState. // +k8s:openapi-gen=true -type TestKindstatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` +type TestKindStatusOperatorStateState string - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State TestKindstatusOperatorStateState `json:"state"` -} - -// TestKindstatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKindstatusOperatorStateState string +const ( + StatusOperatorStateStateSuccess TestKindStatusOperatorStateState = "success" + StatusOperatorStateStateInProgress TestKindStatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed TestKindStatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_metadata_gen.go.txt index c212dfc2..daf14e3d 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_metadata_gen.go.txt @@ -1,32 +1,21 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v2 -import ( - "time" -) +import "time" -// TestKindMetadata defines model for TestKindMetadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type TestKindMetadata struct { + UpdateTimestamp time.Time `json:"updateTimestamp"` CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type TestKindKubeObjectMetadata struct { CreationTimestamp time.Time `json:"creationTimestamp"` DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` Generation int64 `json:"generation"` + UpdatedBy string `json:"updatedBy"` Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_spec_gen.go.txt index 702bda53..a130a3bd 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_spec_gen.go.txt @@ -1,13 +1,12 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v2 -import ( - "time" -) +import "time" -// TestKindSpec defines model for TestKindSpec. // +k8s:openapi-gen=true type TestKindSpec struct { - IntField int64 `json:"intField"` StringField string `json:"stringField"` + IntField int64 `json:"intField"` TimeField time.Time `json:"timeField"` } diff --git a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_status_gen.go.txt index 72ffbfe5..d4c482dd 100644 --- a/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbygroup/test/v2/testkind_status_gen.go.txt @@ -1,70 +1,34 @@ -package v2 +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for TestKindOperatorStateState. -const ( - TestKindOperatorStateStateFailed TestKindOperatorStateState = "failed" - TestKindOperatorStateStateInProgress TestKindOperatorStateState = "in_progress" - TestKindOperatorStateStateSuccess TestKindOperatorStateState = "success" -) - -// Defines values for TestKindstatusOperatorStateState. -const ( - TestKindstatusOperatorStateStateFailed TestKindstatusOperatorStateState = "failed" - TestKindstatusOperatorStateStateInProgress TestKindstatusOperatorStateState = "in_progress" - TestKindstatusOperatorStateStateSuccess TestKindstatusOperatorStateState = "success" -) +package v2 -// TestKindOperatorState defines model for TestKindOperatorState. // +k8s:openapi-gen=true -type TestKindOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type TestKindstatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State TestKindOperatorStateState `json:"state"` + State TestKindStatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// TestKindOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKindOperatorStateState string - -// TestKindStatus defines model for TestKindStatus. // +k8s:openapi-gen=true type TestKindStatus struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]TestKindstatusOperatorState `json:"operatorStates,omitempty"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// TestKindstatusOperatorState defines model for TestKindstatus.#OperatorState. // +k8s:openapi-gen=true -type TestKindstatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` +type TestKindStatusOperatorStateState string - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State TestKindstatusOperatorStateState `json:"state"` -} - -// TestKindstatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type TestKindstatusOperatorStateState string +const ( + StatusOperatorStateStateSuccess TestKindStatusOperatorStateState = "success" + StatusOperatorStateStateInProgress TestKindStatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed TestKindStatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_metadata_gen.go.txt index f940065f..fc7d327b 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_metadata_gen.go.txt @@ -1,32 +1,21 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v0_0 -import ( - "time" -) +import "time" -// Metadata defines model for Metadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type Metadata struct { + UpdateTimestamp time.Time `json:"updateTimestamp"` CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type KubeObjectMetadata struct { CreationTimestamp time.Time `json:"creationTimestamp"` DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` Generation int64 `json:"generation"` + UpdatedBy string `json:"updatedBy"` Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` } diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_spec_gen.go.txt index 94ffb92c..17c9f963 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_spec_gen.go.txt @@ -1,8 +1,9 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v0_0 -// Spec defines model for Spec. // +k8s:openapi-gen=true type Spec struct { - DeprecatedField string `json:"deprecatedField"` Field1 string `json:"field1"` + DeprecatedField string `json:"deprecatedField"` } diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_status_gen.go.txt index 54ca37c2..fefa2456 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v0_0/customkind_status_gen.go.txt @@ -1,70 +1,34 @@ -package v0_0 - -// Defines values for OperatorStateState. -const ( - OperatorStateStateFailed OperatorStateState = "failed" - OperatorStateStateInProgress OperatorStateState = "in_progress" - OperatorStateStateSuccess OperatorStateState = "success" -) +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for StatusOperatorStateState. -const ( - StatusOperatorStateStateFailed StatusOperatorStateState = "failed" - StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" - StatusOperatorStateStateSuccess StatusOperatorStateState = "success" -) +package v0_0 -// OperatorState defines model for OperatorState. // +k8s:openapi-gen=true -type OperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type StatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State OperatorStateState `json:"state"` + State StatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// OperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type OperatorStateState string - -// Status defines model for Status. // +k8s:openapi-gen=true type Status struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// StatusOperatorState defines model for status.#OperatorState. -// +k8s:openapi-gen=true -type StatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` - - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State StatusOperatorStateState `json:"state"` -} - -// StatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. // +k8s:openapi-gen=true type StatusOperatorStateState string + +const ( + StatusOperatorStateStateSuccess StatusOperatorStateState = "success" + StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed StatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_metadata_gen.go.txt index 8d79a86e..99ce7744 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_metadata_gen.go.txt @@ -1,34 +1,31 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1_0 -import ( - "time" -) +import "time" -// Metadata defines model for Metadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type Metadata struct { - CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - CustomMetadataField string `json:"customMetadataField"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - OtherMetadataField string `json:"otherMetadataField"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type KubeObjectMetadata struct { - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + CustomMetadataField string `json:"customMetadataField"` + UpdateTimestamp time.Time `json:"updateTimestamp"` + CreatedBy string `json:"createdBy"` + Uid string `json:"uid"` + CreationTimestamp time.Time `json:"creationTimestamp"` + DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` + Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` + Generation int64 `json:"generation"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + OtherMetadataField string `json:"otherMetadataField"` + UpdatedBy string `json:"updatedBy"` + Labels map[string]string `json:"labels"` } diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_spec_gen.go.txt index 21fce2d0..af884ea0 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_spec_gen.go.txt @@ -1,62 +1,58 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package v1_0 -import ( - "time" -) +import "time" -// Defines values for SpecEnum. -const ( - SpecEnumDefault SpecEnum = "default" - SpecEnumVal1 SpecEnum = "val1" - SpecEnumVal2 SpecEnum = "val2" - SpecEnumVal3 SpecEnum = "val3" - SpecEnumVal4 SpecEnum = "val4" -) +// +k8s:openapi-gen=true +type SpecInnerObject1 struct { + InnerField1 string `json:"innerField1"` + InnerField2 []string `json:"innerField2"` + InnerField3 []SpecInnerObject2 `json:"innerField3"` +} -// InnerObject1 defines model for InnerObject1. // +k8s:openapi-gen=true -type InnerObject1 struct { - InnerField1 string `json:"innerField1"` - InnerField2 []string `json:"innerField2"` - InnerField3 []InnerObject2 `json:"innerField3"` +type SpecInnerObject2 struct { + Name string `json:"name"` + Details map[string]any `json:"details"` } -// InnerObject2 defines model for InnerObject2. // +k8s:openapi-gen=true -type InnerObject2 struct { - Details map[string]interface{} `json:"details"` - Name string `json:"name"` +type SpecType1 struct { + Group string `json:"group"` + Options []string `json:"options,omitempty"` } -// Spec defines model for Spec. // +k8s:openapi-gen=true -type Spec struct { - BoolField bool `json:"boolField"` - Enum SpecEnum `json:"enum"` - Field1 string `json:"field1"` - FloatField float64 `json:"floatField"` - I32 int `json:"i32"` - I64 int `json:"i64"` - Inner InnerObject1 `json:"inner"` - Map map[string]Type2 `json:"map"` - Timestamp time.Time `json:"timestamp"` - Union interface{} `json:"union"` +type SpecType2 struct { + Group string `json:"group"` + Details map[string]any `json:"details"` } -// SpecEnum defines model for Spec.Enum. // +k8s:openapi-gen=true -type SpecEnum string +type SpecUnionType any -// Type1 defines model for Type1. // +k8s:openapi-gen=true -type Type1 struct { - Group string `json:"group"` - Options []string `json:"options,omitempty"` +type Spec struct { + Field1 string `json:"field1"` + Inner SpecInnerObject1 `json:"inner"` + Union SpecUnionType `json:"union"` + Map map[string]SpecType2 `json:"map"` + Timestamp time.Time `json:"timestamp"` + Enum SpecEnum `json:"enum"` + I32 int32 `json:"i32"` + I64 int64 `json:"i64"` + BoolField bool `json:"boolField"` + FloatField float64 `json:"floatField"` } -// Type2 defines model for Type2. // +k8s:openapi-gen=true -type Type2 struct { - Details map[string]interface{} `json:"details"` - Group string `json:"group"` -} +type SpecEnum string + +const ( + SpecEnumVal1 SpecEnum = "val1" + SpecEnumVal2 SpecEnum = "val2" + SpecEnumVal3 SpecEnum = "val3" + SpecEnumVal4 SpecEnum = "val4" + SpecEnumDefault SpecEnum = "default" +) diff --git a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_status_gen.go.txt b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_status_gen.go.txt index 39c90cf7..ddc0659a 100644 --- a/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/groupbykind/customkind/v1_0/customkind_status_gen.go.txt @@ -1,71 +1,35 @@ -package v1_0 - -// Defines values for OperatorStateState. -const ( - OperatorStateStateFailed OperatorStateState = "failed" - OperatorStateStateInProgress OperatorStateState = "in_progress" - OperatorStateStateSuccess OperatorStateState = "success" -) +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for StatusOperatorStateState. -const ( - StatusOperatorStateStateFailed StatusOperatorStateState = "failed" - StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" - StatusOperatorStateStateSuccess StatusOperatorStateState = "success" -) +package v1_0 -// OperatorState defines model for OperatorState. // +k8s:openapi-gen=true -type OperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type StatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State OperatorStateState `json:"state"` + State StatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// OperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type OperatorStateState string - -// Status defines model for Status. // +k8s:openapi-gen=true type Status struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - + StatusField1 string `json:"statusField1"` // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"` - StatusField1 string `json:"statusField1"` -} - -// StatusOperatorState defines model for status.#OperatorState. -// +k8s:openapi-gen=true -type StatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` - - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State StatusOperatorStateState `json:"state"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// StatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. // +k8s:openapi-gen=true type StatusOperatorStateState string + +const ( + StatusOperatorStateStateSuccess StatusOperatorStateState = "success" + StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed StatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_lineage.cue.txt b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_lineage.cue.txt index adef7feb..34885a08 100644 --- a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_lineage.cue.txt +++ b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_lineage.cue.txt @@ -11,7 +11,7 @@ customkind: thema.#Lineage & { joinSchema: { metadata: { { - uid: string + uid: string creationTimestamp: time.Time & { string } @@ -71,32 +71,32 @@ customkind: thema.#Lineage & { }, { version: [1, 0] schema: { - #InnerObject1: { - innerField1: string - innerField2: [...string] - innerField3: [...#InnerObject2] - } - #InnerObject2: { - name: string - details: { - [string]: _ + spec: { + #InnerObject1: { + innerField1: string + innerField2: [...string] + innerField3: [...#InnerObject2] } - } - #Type1: { - group: string - options?: [...string] - } - #Type2: { - group: string - details: { - [string]: _ + #InnerObject2: { + name: string + details: { + [string]: _ + } } - } - #UnionType: #Type1 | #Type2 - spec: { - field1: string - inner: #InnerObject1 - union: #UnionType + #Type1: { + group: string + options?: [...string] + } + #Type2: { + group: string + details: { + [string]: _ + } + } + #UnionType: #Type1 | #Type2 + field1: string + inner: #InnerObject1 + union: #UnionType map: { [string]: #Type2 } diff --git a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_metadata_gen.go.txt b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_metadata_gen.go.txt index ecf7eec6..c6981291 100644 --- a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_metadata_gen.go.txt +++ b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_metadata_gen.go.txt @@ -1,34 +1,31 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package customkind -import ( - "time" -) +import "time" -// Metadata defines model for Metadata. +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. type Metadata struct { - CreatedBy string `json:"createdBy"` - CreationTimestamp time.Time `json:"creationTimestamp"` - CustomMetadataField string `json:"customMetadataField"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - OtherMetadataField string `json:"otherMetadataField"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` - UpdateTimestamp time.Time `json:"updateTimestamp"` - UpdatedBy string `json:"updatedBy"` -} - -// _kubeObjectMetadata is metadata found in a kubernetes object's metadata field. -// It is not exhaustive and only includes fields which may be relevant to a kind's implementation, -// As it is also intended to be generic enough to function with any API Server. -type KubeObjectMetadata struct { - CreationTimestamp time.Time `json:"creationTimestamp"` - DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` - Finalizers []string `json:"finalizers"` - Generation int64 `json:"generation"` - Labels map[string]string `json:"labels"` - ResourceVersion string `json:"resourceVersion"` - Uid string `json:"uid"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + CustomMetadataField string `json:"customMetadataField"` + UpdateTimestamp time.Time `json:"updateTimestamp"` + CreatedBy string `json:"createdBy"` + Uid string `json:"uid"` + CreationTimestamp time.Time `json:"creationTimestamp"` + DeletionTimestamp *time.Time `json:"deletionTimestamp,omitempty"` + Finalizers []string `json:"finalizers"` + ResourceVersion string `json:"resourceVersion"` + Generation int64 `json:"generation"` + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + OtherMetadataField string `json:"otherMetadataField"` + UpdatedBy string `json:"updatedBy"` + Labels map[string]string `json:"labels"` } diff --git a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_spec_gen.go.txt b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_spec_gen.go.txt index ba4600df..14eecda6 100644 --- a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_spec_gen.go.txt +++ b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_spec_gen.go.txt @@ -1,62 +1,58 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + package customkind -import ( - "time" -) +import "time" -// Defines values for SpecEnum. -const ( - SpecEnumDefault SpecEnum = "default" - SpecEnumVal1 SpecEnum = "val1" - SpecEnumVal2 SpecEnum = "val2" - SpecEnumVal3 SpecEnum = "val3" - SpecEnumVal4 SpecEnum = "val4" -) +// +k8s:openapi-gen=true +type SpecInnerObject1 struct { + InnerField1 string `json:"innerField1"` + InnerField2 []string `json:"innerField2"` + InnerField3 []SpecInnerObject2 `json:"innerField3"` +} -// InnerObject1 defines model for InnerObject1. // +k8s:openapi-gen=true -type InnerObject1 struct { - InnerField1 string `json:"innerField1"` - InnerField2 []string `json:"innerField2"` - InnerField3 []InnerObject2 `json:"innerField3"` +type SpecInnerObject2 struct { + Name string `json:"name"` + Details map[string]any `json:"details"` } -// InnerObject2 defines model for InnerObject2. // +k8s:openapi-gen=true -type InnerObject2 struct { - Details map[string]interface{} `json:"details"` - Name string `json:"name"` +type SpecType1 struct { + Group string `json:"group"` + Options []string `json:"options,omitempty"` } -// Spec defines model for Spec. // +k8s:openapi-gen=true -type Spec struct { - BoolField bool `json:"boolField"` - Enum SpecEnum `json:"enum"` - Field1 string `json:"field1"` - FloatField float64 `json:"floatField"` - I32 int `json:"i32"` - I64 int `json:"i64"` - Inner InnerObject1 `json:"inner"` - Map map[string]Type2 `json:"map"` - Timestamp time.Time `json:"timestamp"` - Union interface{} `json:"union"` +type SpecType2 struct { + Group string `json:"group"` + Details map[string]any `json:"details"` } -// SpecEnum defines model for Spec.Enum. // +k8s:openapi-gen=true -type SpecEnum string +type SpecUnionType any -// Type1 defines model for Type1. // +k8s:openapi-gen=true -type Type1 struct { - Group string `json:"group"` - Options []string `json:"options,omitempty"` +type Spec struct { + Field1 string `json:"field1"` + Inner SpecInnerObject1 `json:"inner"` + Union SpecUnionType `json:"union"` + Map map[string]SpecType2 `json:"map"` + Timestamp time.Time `json:"timestamp"` + Enum SpecEnum `json:"enum"` + I32 int32 `json:"i32"` + I64 int64 `json:"i64"` + BoolField bool `json:"boolField"` + FloatField float64 `json:"floatField"` } -// Type2 defines model for Type2. // +k8s:openapi-gen=true -type Type2 struct { - Details map[string]interface{} `json:"details"` - Group string `json:"group"` -} +type SpecEnum string + +const ( + SpecEnumVal1 SpecEnum = "val1" + SpecEnumVal2 SpecEnum = "val2" + SpecEnumVal3 SpecEnum = "val3" + SpecEnumVal4 SpecEnum = "val4" + SpecEnumDefault SpecEnum = "default" +) diff --git a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_status_gen.go.txt b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_status_gen.go.txt index 4b88db09..f5d0af5f 100644 --- a/codegen/testing/golden_generated/go/unversioned/customkind/customkind_status_gen.go.txt +++ b/codegen/testing/golden_generated/go/unversioned/customkind/customkind_status_gen.go.txt @@ -1,71 +1,35 @@ -package customkind - -// Defines values for OperatorStateState. -const ( - OperatorStateStateFailed OperatorStateState = "failed" - OperatorStateStateInProgress OperatorStateState = "in_progress" - OperatorStateStateSuccess OperatorStateState = "success" -) +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// Defines values for StatusOperatorStateState. -const ( - StatusOperatorStateStateFailed StatusOperatorStateState = "failed" - StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" - StatusOperatorStateStateSuccess StatusOperatorStateState = "success" -) +package customkind -// OperatorState defines model for OperatorState. // +k8s:openapi-gen=true -type OperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - +type StatusOperatorState struct { // lastEvaluation is the ResourceVersion last evaluated LastEvaluation string `json:"lastEvaluation"` - // state describes the state of the lastEvaluation. // It is limited to three possible states for machine evaluation. - State OperatorStateState `json:"state"` + State StatusOperatorStateState `json:"state"` + // descriptiveState is an optional more descriptive state field which has no requirements on format + DescriptiveState *string `json:"descriptiveState,omitempty"` + // details contains any extra information that is operator-specific + Details map[string]any `json:"details,omitempty"` } -// OperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. -// +k8s:openapi-gen=true -type OperatorStateState string - -// Status defines model for Status. // +k8s:openapi-gen=true type Status struct { - // additionalFields is reserved for future use - AdditionalFields map[string]interface{} `json:"additionalFields,omitempty"` - + StatusField1 string `json:"statusField1"` // operatorStates is a map of operator ID to operator state evaluations. // Any operator which consumes this kind SHOULD add its state evaluation information to this field. OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"` - StatusField1 string `json:"statusField1"` -} - -// StatusOperatorState defines model for status.#OperatorState. -// +k8s:openapi-gen=true -type StatusOperatorState struct { - // descriptiveState is an optional more descriptive state field which has no requirements on format - DescriptiveState *string `json:"descriptiveState,omitempty"` - - // details contains any extra information that is operator-specific - Details map[string]interface{} `json:"details,omitempty"` - - // lastEvaluation is the ResourceVersion last evaluated - LastEvaluation string `json:"lastEvaluation"` - - // state describes the state of the lastEvaluation. - // It is limited to three possible states for machine evaluation. - State StatusOperatorStateState `json:"state"` + // additionalFields is reserved for future use + AdditionalFields map[string]any `json:"additionalFields,omitempty"` } -// StatusOperatorStateState state describes the state of the lastEvaluation. -// It is limited to three possible states for machine evaluation. // +k8s:openapi-gen=true type StatusOperatorStateState string + +const ( + StatusOperatorStateStateSuccess StatusOperatorStateState = "success" + StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress" + StatusOperatorStateStateFailed StatusOperatorStateState = "failed" +) diff --git a/codegen/testing/golden_generated/go/unversioned/customkind2/customkind2_gen.go.txt b/codegen/testing/golden_generated/go/unversioned/customkind2/customkind2_gen.go.txt index 4469d842..376a1abd 100644 --- a/codegen/testing/golden_generated/go/unversioned/customkind2/customkind2_gen.go.txt +++ b/codegen/testing/golden_generated/go/unversioned/customkind2/customkind2_gen.go.txt @@ -1,56 +1,51 @@ -package customkind2 - -import ( - "time" -) - -// Defines values for CustomKind2Enum. -const ( - CustomKind2EnumDefault CustomKind2Enum = "default" - CustomKind2EnumVal1 CustomKind2Enum = "val1" - CustomKind2EnumVal2 CustomKind2Enum = "val2" - CustomKind2EnumVal3 CustomKind2Enum = "val3" - CustomKind2EnumVal4 CustomKind2Enum = "val4" -) +// Code generated - EDITING IS FUTILE. DO NOT EDIT. -// CustomKind2 defines model for CustomKind2. -type CustomKind2 struct { - BoolField bool `json:"boolField"` - Enum CustomKind2Enum `json:"enum"` - Field1 string `json:"field1"` - FloatField float64 `json:"floatField"` - I32 int `json:"i32"` - I64 int `json:"i64"` - Inner InnerObject1 `json:"inner"` - Map map[string]Type2 `json:"map"` - Timestamp time.Time `json:"timestamp"` - Union interface{} `json:"union"` -} +package customkind2 -// CustomKind2Enum defines model for CustomKind2.Enum. -type CustomKind2Enum string +import "time" -// InnerObject1 defines model for InnerObject1. type InnerObject1 struct { InnerField1 string `json:"innerField1"` InnerField2 []string `json:"innerField2"` InnerField3 []InnerObject2 `json:"innerField3"` } -// InnerObject2 defines model for InnerObject2. type InnerObject2 struct { - Details map[string]interface{} `json:"details"` - Name string `json:"name"` + Name string `json:"name"` + Details map[string]any `json:"details"` } -// Type1 defines model for Type1. type Type1 struct { Group string `json:"group"` Options []string `json:"options,omitempty"` } -// Type2 defines model for Type2. type Type2 struct { - Details map[string]interface{} `json:"details"` - Group string `json:"group"` + Group string `json:"group"` + Details map[string]any `json:"details"` } + +type UnionType any + +type CustomKind2 struct { + Field1 string `json:"field1"` + Inner InnerObject1 `json:"inner"` + Union UnionType `json:"union"` + Map map[string]Type2 `json:"map"` + Timestamp time.Time `json:"timestamp"` + Enum CustomKind2Enum `json:"enum"` + I32 int32 `json:"i32"` + I64 int64 `json:"i64"` + BoolField bool `json:"boolField"` + FloatField float64 `json:"floatField"` +} + +type CustomKind2Enum string + +const ( + CustomKind2EnumVal1 CustomKind2Enum = "val1" + CustomKind2EnumVal2 CustomKind2Enum = "val2" + CustomKind2EnumVal3 CustomKind2Enum = "val3" + CustomKind2EnumVal4 CustomKind2Enum = "val4" + CustomKind2EnumDefault CustomKind2Enum = "default" +) diff --git a/codegen/testing/golden_generated/typescript/unversioned/customkind2_types.gen.ts.txt b/codegen/testing/golden_generated/typescript/unversioned/customkind2_types.gen.ts.txt index db8f9220..a5af1fed 100644 --- a/codegen/testing/golden_generated/typescript/unversioned/customkind2_types.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/unversioned/customkind2_types.gen.ts.txt @@ -1,59 +1,73 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + export interface InnerObject1 { - innerField1: string; - innerField2: string[]; - innerField3: Array; + innerField1: string; + innerField2: string[]; + innerField3: InnerObject2[]; } -export const defaultInnerObject1: Partial = { - innerField2: [], - innerField3: [], -}; +export const defaultInnerObject1 = (): InnerObject1 => ({ + innerField1: "", + innerField2: [], + innerField3: [], +}); export interface InnerObject2 { - details: Record; - name: string; + name: string; + details: Record; } +export const defaultInnerObject2 = (): InnerObject2 => ({ + name: "", + details: {}, +}); + export interface Type1 { - group: string; - options?: string[]; + group: string; + options?: string[]; } -export const defaultType1: Partial = { - options: [], -}; +export const defaultType1 = (): Type1 => ({ + group: "", +}); export interface Type2 { - details: Record; - group: string; + group: string; + details: Record; } -export type UnionType = (Type1 | Type2); +export const defaultType2 = (): Type2 => ({ + group: "", + details: {}, +}); -export enum enum { - Default = 'default', - Val1 = 'val1', - Val2 = 'val2', - Val3 = 'val3', - Val4 = 'val4', -} +export type UnionType = Type1 | Type2; -export const defaultenum: enum = enum.Default; +export const defaultUnionType = (): UnionType => (defaultType1()); export interface CustomKind2 { - boolField: boolean; - enum: ('val1' | 'val2' | 'val3' | 'val4' | 'default'); - field1: string; - floatField: number; - i32: number; - i64: number; - inner: InnerObject1; - map: Record; - timestamp: string; - union: UnionType; + field1: string; + inner: InnerObject1; + union: UnionType; + map: Record; + timestamp: string; + enum: "val1" | "val2" | "val3" | "val4" | "default"; + i32: number; + i64: number; + boolField: boolean; + floatField: number; } -export const defaultCustomKind2: Partial = { - boolField: false, - enum: 'default', -}; +export const defaultCustomKind2 = (): CustomKind2 => ({ + field1: "", + inner: defaultInnerObject1(), + union: defaultUnionType(), + map: {}, + timestamp: "", + enum: "default", + i32: 0, + i64: 0, + boolField: false, + floatField: 0, +}); + diff --git a/codegen/testing/golden_generated/typescript/unversioned/customkind_types.gen.ts.txt b/codegen/testing/golden_generated/typescript/unversioned/customkind_types.gen.ts.txt index 8c34cf15..d6eee7a0 100644 --- a/codegen/testing/golden_generated/typescript/unversioned/customkind_types.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/unversioned/customkind_types.gen.ts.txt @@ -1,107 +1,143 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + export interface InnerObject1 { - innerField1: string; - innerField2: string[]; - innerField3: Array; + innerField1: string; + innerField2: string[]; + innerField3: InnerObject2[]; } -export const defaultInnerObject1: Partial = { - innerField2: [], - innerField3: [], -}; +export const defaultInnerObject1 = (): InnerObject1 => ({ + innerField1: "", + innerField2: [], + innerField3: [], +}); export interface InnerObject2 { - details: Record; - name: string; + name: string; + details: Record; } +export const defaultInnerObject2 = (): InnerObject2 => ({ + name: "", + details: {}, +}); + export interface Type1 { - group: string; - options?: string[]; + group: string; + options?: string[]; } -export const defaultType1: Partial = { - options: [], -}; +export const defaultType1 = (): Type1 => ({ + group: "", +}); export interface Type2 { - details: Record; - group: string; + group: string; + details: Record; } -export type UnionType = (Type1 | Type2); +export const defaultType2 = (): Type2 => ({ + group: "", + details: {}, +}); + +export type UnionType = Type1 | Type2; + +export const defaultUnionType = (): UnionType => (defaultType1()); + +export interface OperatorState { + // lastEvaluation is the ResourceVersion last evaluated + lastEvaluation: string; + // state describes the state of the lastEvaluation. + // It is limited to three possible states for machine evaluation. + state: "success" | "in_progress" | "failed"; + // descriptiveState is an optional more descriptive state field which has no requirements on format + descriptiveState?: string; + // details contains any extra information that is operator-specific + details?: Record; +} + +export const defaultOperatorState = (): OperatorState => ({ + lastEvaluation: "", + state: "success", +}); export interface CustomKind { - /** - * metadata contains embedded CommonMetadata and can be extended with custom string fields - * TODO: use CommonMetadata instead of redefining here; currently needs to be defined here - * without external reference as using the CommonMetadata reference breaks thema codegen. - */ - metadata: { - /** - * All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) - * Can't use this as it's not yet enforced CUE: - * ...string - * Have to do this gnarly regex instead - */ - customMetadataField: string; - updateTimestamp: string; - createdBy: string; - uid: string; - creationTimestamp: string; - deletionTimestamp?: string; - finalizers: string[]; - resourceVersion: string; - generation: number; - /** - * All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) - * Can't use this as it's not yet enforced CUE: - * ...string - * Have to do this gnarly regex instead - */ - otherMetadataField: string; - updatedBy: string; - labels: Record; - }; - spec: { - field1: string; - inner: InnerObject1; - union: UnionType; - map: Record; - timestamp: string; - enum: ('val1' | 'val2' | 'val3' | 'val4' | 'default'); - i32: number; - i64: number; - boolField: boolean; - floatField: number; - }; - status: { - statusField1: string; - /** - * operatorStates is a map of operator ID to operator state evaluations. - * Any operator which consumes this kind SHOULD add its state evaluation information to this field. - */ - operatorStates?: Record, -}>; - /** - * additionalFields is reserved for future use - */ - additionalFields?: Record; - }; + spec: { + field1: string; + inner: InnerObject1; + union: UnionType; + map: Record; + timestamp: string; + enum: "val1" | "val2" | "val3" | "val4" | "default"; + i32: number; + i64: number; + boolField: boolean; + floatField: number; + }; + status: { + statusField1: string; + // operatorStates is a map of operator ID to operator state evaluations. + // Any operator which consumes this kind SHOULD add its state evaluation information to this field. + operatorStates?: Record; + // additionalFields is reserved for future use + additionalFields?: Record; + }; + // metadata contains embedded CommonMetadata and can be extended with custom string fields + // TODO: use CommonMetadata instead of redefining here; currently needs to be defined here + // without external reference as using the CommonMetadata reference breaks thema codegen. + metadata: { + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + customMetadataField: string; + updateTimestamp: string; + createdBy: string; + uid: string; + creationTimestamp: string; + deletionTimestamp?: string; + finalizers: string[]; + resourceVersion: string; + generation: number; + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + otherMetadataField: string; + updatedBy: string; + labels: Record; + }; } + +export const defaultCustomKind = (): CustomKind => ({ + spec: { + field1: "", + inner: defaultInnerObject1(), + union: defaultUnionType(), + map: {}, + timestamp: "", + enum: "default", + i32: 0, + i64: 0, + boolField: false, + floatField: 0, +}, + status: { + statusField1: "", +}, + metadata: { + customMetadataField: "", + updateTimestamp: "", + createdBy: "", + uid: "", + creationTimestamp: "", + finalizers: [], + resourceVersion: "", + generation: 0, + otherMetadataField: "", + updatedBy: "", + labels: {}, +}, +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.metadata.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.metadata.gen.ts.txt index 313c6558..4377f3c1 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.metadata.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.metadata.gen.ts.txt @@ -1,21 +1,30 @@ -/** - * metadata contains embedded CommonMetadata and can be extended with custom string fields - * TODO: use CommonMetadata instead of redefining here; currently needs to be defined here - * without external reference as using the CommonMetadata reference breaks thema codegen. - */ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. export interface Metadata { - createdBy: string; - creationTimestamp: string; - deletionTimestamp?: string; - finalizers: string[]; - generation: number; - labels: Record; - resourceVersion: string; - uid: string; - updateTimestamp: string; - updatedBy: string; + updateTimestamp: string; + createdBy: string; + uid: string; + creationTimestamp: string; + deletionTimestamp?: string; + finalizers: string[]; + resourceVersion: string; + generation: number; + updatedBy: string; + labels: Record; } -export const defaultMetadata: Partial = { - finalizers: [], -}; +export const defaultMetadata = (): Metadata => ({ + updateTimestamp: "", + createdBy: "", + uid: "", + creationTimestamp: "", + finalizers: [], + resourceVersion: "", + generation: 0, + updatedBy: "", + labels: {}, +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.spec.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.spec.gen.ts.txt index 81ffe520..ccc3411a 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.spec.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.spec.gen.ts.txt @@ -1,4 +1,12 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + export interface Spec { - deprecatedField: string; - field1: string; + field1: string; + deprecatedField: string; } + +export const defaultSpec = (): Spec => ({ + field1: "", + deprecatedField: "", +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.status.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.status.gen.ts.txt index d1f8620c..01be8df7 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.status.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v0-0/types.status.gen.ts.txt @@ -1,29 +1,30 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +export interface OperatorState { + // lastEvaluation is the ResourceVersion last evaluated + lastEvaluation: string; + // state describes the state of the lastEvaluation. + // It is limited to three possible states for machine evaluation. + state: "success" | "in_progress" | "failed"; + // descriptiveState is an optional more descriptive state field which has no requirements on format + descriptiveState?: string; + // details contains any extra information that is operator-specific + details?: Record; +} + +export const defaultOperatorState = (): OperatorState => ({ + lastEvaluation: "", + state: "success", +}); + export interface Status { - /** - * additionalFields is reserved for future use - */ - additionalFields?: Record; - /** - * operatorStates is a map of operator ID to operator state evaluations. - * Any operator which consumes this kind SHOULD add its state evaluation information to this field. - */ - operatorStates?: Record, -}>; + // operatorStates is a map of operator ID to operator state evaluations. + // Any operator which consumes this kind SHOULD add its state evaluation information to this field. + operatorStates?: Record; + // additionalFields is reserved for future use + additionalFields?: Record; } + +export const defaultStatus = (): Status => ({ +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.metadata.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.metadata.gen.ts.txt index 3f1cdb1a..bc3062a3 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.metadata.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.metadata.gen.ts.txt @@ -1,35 +1,42 @@ -/** - * metadata contains embedded CommonMetadata and can be extended with custom string fields - * TODO: use CommonMetadata instead of redefining here; currently needs to be defined here - * without external reference as using the CommonMetadata reference breaks thema codegen. - */ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +// metadata contains embedded CommonMetadata and can be extended with custom string fields +// TODO: use CommonMetadata instead of redefining here; currently needs to be defined here +// without external reference as using the CommonMetadata reference breaks thema codegen. export interface Metadata { - createdBy: string; - creationTimestamp: string; - /** - * All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) - * Can't use this as it's not yet enforced CUE: - * ...string - * Have to do this gnarly regex instead - */ - customMetadataField: string; - deletionTimestamp?: string; - finalizers: string[]; - generation: number; - labels: Record; - /** - * All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) - * Can't use this as it's not yet enforced CUE: - * ...string - * Have to do this gnarly regex instead - */ - otherMetadataField: string; - resourceVersion: string; - uid: string; - updateTimestamp: string; - updatedBy: string; + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + customMetadataField: string; + updateTimestamp: string; + createdBy: string; + uid: string; + creationTimestamp: string; + deletionTimestamp?: string; + finalizers: string[]; + resourceVersion: string; + generation: number; + // All extensions to this metadata need to have string values (for APIServer encoding-to-annotations purposes) + // Can't use this as it's not yet enforced CUE: + // ...string + // Have to do this gnarly regex instead + otherMetadataField: string; + updatedBy: string; + labels: Record; } -export const defaultMetadata: Partial = { - finalizers: [], -}; +export const defaultMetadata = (): Metadata => ({ + customMetadataField: "", + updateTimestamp: "", + createdBy: "", + uid: "", + creationTimestamp: "", + finalizers: [], + resourceVersion: "", + generation: 0, + otherMetadataField: "", + updatedBy: "", + labels: {}, +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.spec.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.spec.gen.ts.txt index aba03faf..0351b33c 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.spec.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.spec.gen.ts.txt @@ -1,27 +1,73 @@ -export enum enum { - Default = 'default', - Val1 = 'val1', - Val2 = 'val2', - Val3 = 'val3', - Val4 = 'val4', +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +export interface InnerObject1 { + innerField1: string; + innerField2: string[]; + innerField3: InnerObject2[]; +} + +export const defaultInnerObject1 = (): InnerObject1 => ({ + innerField1: "", + innerField2: [], + innerField3: [], +}); + +export interface InnerObject2 { + name: string; + details: Record; +} + +export const defaultInnerObject2 = (): InnerObject2 => ({ + name: "", + details: {}, +}); + +export interface Type1 { + group: string; + options?: string[]; } -export const defaultenum: enum = enum.Default; +export const defaultType1 = (): Type1 => ({ + group: "", +}); + +export interface Type2 { + group: string; + details: Record; +} + +export const defaultType2 = (): Type2 => ({ + group: "", + details: {}, +}); + +export type UnionType = Type1 | Type2; + +export const defaultUnionType = (): UnionType => (defaultType1()); export interface Spec { - boolField: boolean; - enum: ('val1' | 'val2' | 'val3' | 'val4' | 'default'); - field1: string; - floatField: number; - i32: number; - i64: number; - inner: InnerObject1; - map: Record; - timestamp: string; - union: UnionType; + field1: string; + inner: InnerObject1; + union: UnionType; + map: Record; + timestamp: string; + enum: "val1" | "val2" | "val3" | "val4" | "default"; + i32: number; + i64: number; + boolField: boolean; + floatField: number; } -export const defaultSpec: Partial = { - boolField: false, - enum: 'default', -}; +export const defaultSpec = (): Spec => ({ + field1: "", + inner: defaultInnerObject1(), + union: defaultUnionType(), + map: {}, + timestamp: "", + enum: "default", + i32: 0, + i64: 0, + boolField: false, + floatField: 0, +}); + diff --git a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.status.gen.ts.txt b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.status.gen.ts.txt index 3c977e60..d5e40a0e 100644 --- a/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.status.gen.ts.txt +++ b/codegen/testing/golden_generated/typescript/versioned/customkind/v1-0/types.status.gen.ts.txt @@ -1,30 +1,32 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +export interface OperatorState { + // lastEvaluation is the ResourceVersion last evaluated + lastEvaluation: string; + // state describes the state of the lastEvaluation. + // It is limited to three possible states for machine evaluation. + state: "success" | "in_progress" | "failed"; + // descriptiveState is an optional more descriptive state field which has no requirements on format + descriptiveState?: string; + // details contains any extra information that is operator-specific + details?: Record; +} + +export const defaultOperatorState = (): OperatorState => ({ + lastEvaluation: "", + state: "success", +}); + export interface Status { - /** - * additionalFields is reserved for future use - */ - additionalFields?: Record; - /** - * operatorStates is a map of operator ID to operator state evaluations. - * Any operator which consumes this kind SHOULD add its state evaluation information to this field. - */ - operatorStates?: Record, -}>; - statusField1: string; + statusField1: string; + // operatorStates is a map of operator ID to operator state evaluations. + // Any operator which consumes this kind SHOULD add its state evaluation information to this field. + operatorStates?: Record; + // additionalFields is reserved for future use + additionalFields?: Record; } + +export const defaultStatus = (): Status => ({ + statusField1: "", +}); + diff --git a/codegen/thema/generators_test.go b/codegen/thema/generators_test.go index f13d3c4c..b7165b1a 100644 --- a/codegen/thema/generators_test.go +++ b/codegen/thema/generators_test.go @@ -54,7 +54,7 @@ func TestResourceGenerator(t *testing.T) { require.Nil(t, err) files, err := parser.Generate(ResourceGenerator(), "customKind") - require.Nil(t, err) + require.NoError(t, err) // Check number of files generated // 8 -> object, spec, metadata, status, lineage (CUE), lineage (go), schema, codec, cue.mod/module.cue assert.Len(t, files, 9) diff --git a/codegen/thema/testing/customkind.cue b/codegen/thema/testing/customkind.cue index 63b3a4f2..031cab27 100644 --- a/codegen/thema/testing/customkind.cue +++ b/codegen/thema/testing/customkind.cue @@ -12,47 +12,48 @@ customKind: { lineage: { name: "customkind", schemas: [{ - version: [0,0] - schema: { - spec: { - field1: string - deprecatedField: string - } - } + version: [0,0] + schema: { + spec: { + field1: string + deprecatedField: string + } + } },{ version: [1,0] schema: { - #InnerObject1: { - innerField1: string - innerField2: [...string] - innerField3: [...#InnerObject2] - } @cuetsy(kind="interface") - #InnerObject2: { - name: string - details: { - [string]: _ + spec: { + #InnerObject1: { + innerField1: string + innerField2: [...string] + innerField3: [...#InnerObject2] } - } @cuetsy(kind="interface") - #Type1: { - group: string - options?: [...string] - } @cuetsy(kind="interface") - #Type2: { - group: string - details: { - [string]: _ + #InnerObject2: { + name: string + details: { + [string]: _ + } } - } @cuetsy(kind="interface") - #UnionType: #Type1 | #Type2 @cuetsy(kind="type") - spec: { + #Type1: { + group: string + options?: [...string] + } + #Type2: { + group: string + details: { + [string]: _ + } + } + #UnionType: #Type1 | #Type2 + field1: string inner: #InnerObject1 union: #UnionType map: { [string]: #Type2 } - timestamp: string & time.Time @cuetsy(kind="string") - enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum",memberNames="val1","val2","val3","val4", "default") + timestamp: string & time.Time + enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum",memberNames="val1|val2|val3|val4|default") i32: int32 & <= 123456 i64: int64 & >= 123456 boolField: bool | *false @@ -68,4 +69,4 @@ customKind: { } }] } -} \ No newline at end of file +} diff --git a/codegen/thema/testing/customkind2.cue b/codegen/thema/testing/customkind2.cue index 441cdfc9..edac22da 100644 --- a/codegen/thema/testing/customkind2.cue +++ b/codegen/thema/testing/customkind2.cue @@ -20,32 +20,32 @@ customKind2: { innerField1: string innerField2: [...string] innerField3: [...#InnerObject2] - } @cuetsy(kind="interface") + } #InnerObject2: { name: string details: { [string]: _ } - } @cuetsy(kind="interface") + } #Type1: { group: string options?: [...string] - } @cuetsy(kind="interface") + } #Type2: { group: string details: { [string]: _ } - } @cuetsy(kind="interface") - #UnionType: #Type1 | #Type2 @cuetsy(kind="type") + } + #UnionType: #Type1 | #Type2 field1: string inner: #InnerObject1 union: #UnionType map: { [string]: #Type2 } - timestamp: string & time.Time @cuetsy(kind="string") - enum: "val1" | "val2" | "val3" | "val4" | *"default" @cuetsy(kind="enum") + timestamp: string & time.Time + enum: "val1" | "val2" | "val3" | "val4" | *"default" i32: int32 & <= 123456 i64: int64 & >= 123456 boolField: bool | *false @@ -53,4 +53,4 @@ customKind2: { } }] } -} \ No newline at end of file +} diff --git a/go.mod b/go.mod index 1e327e85..25c7e64d 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,10 @@ go 1.22.2 replace github.com/getkin/kin-openapi => github.com/getkin/kin-openapi v0.123.0 require ( - cuelang.org/go v0.5.0 - github.com/dave/dst v0.27.3 + cuelang.org/go v0.8.2 github.com/getkin/kin-openapi v0.123.0 - github.com/grafana/codejen v0.0.3 - github.com/grafana/cuetsy v0.1.10 + github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d + github.com/grafana/cog v0.0.0-20240701132206-feda63c6647f github.com/grafana/thema v0.0.0-20230511182720-3146087fcc26 github.com/hashicorp/go-multierror v1.1.1 github.com/matryer/moq v0.3.4 @@ -39,22 +38,24 @@ require ( ) require ( + cuelabs.dev/go/oci/ociregistry v0.0.0-20240412105620-eedc705cef15 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/apd/v3 v3.2.1 // indirect github.com/cockroachdb/errors v1.9.1 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/emicklei/proto v1.10.0 // indirect + github.com/emicklei/proto v1.13.2 // indirect + github.com/expr-lang/expr v1.16.9 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.20.2 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.8 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect @@ -63,30 +64,31 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/huandu/xstrings v1.5.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/invopop/yaml v0.2.0 // indirect + github.com/invopop/yaml v0.3.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect - github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 // indirect + github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/xlab/treeprint v1.1.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 // indirect go.opentelemetry.io/otel/metric v1.27.0 // indirect go.opentelemetry.io/proto/otlp v1.2.0 // indirect diff --git a/go.sum b/go.sum index 6c611365..b0df39e7 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU= -cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= +cuelabs.dev/go/oci/ociregistry v0.0.0-20240412105620-eedc705cef15 h1:W1yhnRytFwrWARHmhvJDhn4hjx73Hb5sffPnn3109MI= +cuelabs.dev/go/oci/ociregistry v0.0.0-20240412105620-eedc705cef15/go.mod h1:pK23AUVXuNzzTpfMCA06sxZGeVQ/75FdVtW249de9Uo= +cuelang.org/go v0.8.2 h1:vWfHI1kQlBvwkna7ktAqXjV5LUEAgU6vyMlJjvZZaDw= +cuelang.org/go v0.8.2/go.mod h1:CoDbYolfMms4BhWUlhD+t5ORnihR7wvjcfgyO9lL5FI= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= @@ -19,8 +21,8 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= +github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= @@ -35,10 +37,6 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= -github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= -github.com/dave/jennifer v1.5.0 h1:HmgPN93bVDpkQyYbqhCHj5QlgvUkvEOzMyEvKLgCRrg= -github.com/dave/jennifer v1.5.0/go.mod h1:4MnyiFIlZS3l5tSDn8VnzE6ffAhYBMB2SZntBsZGUok= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -48,8 +46,8 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw= -github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +github.com/emicklei/proto v1.13.2 h1:z/etSFO3uyXeuEsVPzfl56WNgzcvIr42aQazXaQmFZY= +github.com/emicklei/proto v1.13.2/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= @@ -57,6 +55,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/expr-lang/expr v1.16.9 h1:WUAzmR0JNI9JCiF0/ewwHB1gmcGw5wW7nWt8gc6PpCI= +github.com/expr-lang/expr v1.16.9/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -77,13 +77,15 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= -github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicbw= -github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -133,10 +135,10 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/codejen v0.0.3 h1:tAWxoTUuhgmEqxJPOLtJoxlPBbMULFwKFOcRsPRPXDw= -github.com/grafana/codejen v0.0.3/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= -github.com/grafana/cuetsy v0.1.10 h1:+W9/7roI8LorL+D1RJhKGdhsTZ81adrK9dHS0r7qsXs= -github.com/grafana/cuetsy v0.1.10/go.mod h1:Ix97+CPD8ws9oSSxR3/Lf4ahU1I4Np83kjJmDVnLZvc= +github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d h1:hrXbGJ5jgp6yNITzs5o+zXq0V5yT3siNJ+uM8LGwWKk= +github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= +github.com/grafana/cog v0.0.0-20240701132206-feda63c6647f h1:vNtlN+e3ZrTJBI8ChnGPoBEFySEqnGCUl0oF45kEGjc= +github.com/grafana/cog v0.0.0-20240701132206-feda63c6647f/go.mod h1:liBxkYUVBZ9rgBe4pBa0SC1Mip7SRO2oiM0DpsSRCQY= github.com/grafana/thema v0.0.0-20230511182720-3146087fcc26 h1:HX927q4X1n451pnGb8U0wq74i8PCzuxVjzv7TyD10kc= github.com/grafana/thema v0.0.0-20230511182720-3146087fcc26/go.mod h1:Pn9nfzCk7nV0mvNgwusgCjCROZP6nm4GpwTnmEhLT24= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= @@ -149,6 +151,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= +github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= @@ -156,8 +160,8 @@ github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/C github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY= -github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q= +github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= +github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= @@ -199,8 +203,6 @@ github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/matryer/moq v0.3.4 h1:czCFIos9rI2tyOehN9ktc/6bQ76N9J4xQ2n3dk063ac= github.com/matryer/moq v0.3.4/go.mod h1:wqm9QObyoMuUtH81zFfs3EK6mXEcByy+TjvSROOXJ2U= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -228,8 +230,6 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto= -github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= @@ -239,13 +239,16 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -261,8 +264,8 @@ github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSz github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 h1:sadMIsgmHpEOGbUs6VtHBXRR1OHevnj7hLx9ZcdNGW4= -github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= +github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6 h1:MAzmm+JtFxQwTPb1cVMLkemw2OxLy5AB/d/rxtAwGQQ= +github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/puzpuzpuz/xsync/v2 v2.5.1 h1:mVGYAvzDSu52+zaGyNjC+24Xw2bQi3kTr4QJ6N9pIIU= github.com/puzpuzpuz/xsync/v2 v2.5.1/go.mod h1:gD2H2krq/w52MfPLE+Uy64TzJDVY7lP2znR9qmR35kU= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -273,10 +276,10 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99 github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= @@ -319,8 +322,6 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/yalue/merged_fs v1.3.0 h1:qCeh9tMPNy/i8cwDsQTJ5bLr6IRxbs6meakNE5O+wyY= @@ -512,11 +513,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= diff --git a/go.work.sum b/go.work.sum index 3ac35127..3b79d896 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,95 +1,494 @@ -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20230802163732-1c33ebd9ecfa.1/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/accessapproval v1.7.5/go.mod h1:g88i1ok5dvQ9XJsxpUInWWvUBrIZhyPDPbk4T01OoJ0= +cloud.google.com/go/accesscontextmanager v1.8.5/go.mod h1:TInEhcZ7V9jptGNqN3EzZ5XMhT6ijWxTGjzyETwmL0Q= +cloud.google.com/go/aiplatform v1.60.0/go.mod h1:eTlGuHOahHprZw3Hio5VKmtThIOak5/qy6pzdsqcQnM= +cloud.google.com/go/analytics v0.23.0/go.mod h1:YPd7Bvik3WS95KBok2gPXDqQPHy08TsCQG6CdUCb+u0= +cloud.google.com/go/apigateway v1.6.5/go.mod h1:6wCwvYRckRQogyDDltpANi3zsCDl6kWi0b4Je+w2UiI= +cloud.google.com/go/apigeeconnect v1.6.5/go.mod h1:MEKm3AiT7s11PqTfKE3KZluZA9O91FNysvd3E6SJ6Ow= +cloud.google.com/go/apigeeregistry v0.8.3/go.mod h1:aInOWnqF4yMQx8kTjDqHNXjZGh/mxeNlAf52YqtASUs= +cloud.google.com/go/appengine v1.8.5/go.mod h1:uHBgNoGLTS5di7BvU25NFDuKa82v0qQLjyMJLuPQrVo= +cloud.google.com/go/area120 v0.8.5/go.mod h1:BcoFCbDLZjsfe4EkCnEq1LKvHSK0Ew/zk5UFu6GMyA0= +cloud.google.com/go/artifactregistry v1.14.7/go.mod h1:0AUKhzWQzfmeTvT4SjfI4zjot72EMfrkvL9g9aRjnnM= +cloud.google.com/go/asset v1.17.2/go.mod h1:SVbzde67ehddSoKf5uebOD1sYw8Ab/jD/9EIeWg99q4= +cloud.google.com/go/assuredworkloads v1.11.5/go.mod h1:FKJ3g3ZvkL2D7qtqIGnDufFkHxwIpNM9vtmhvt+6wqk= +cloud.google.com/go/automl v1.13.5/go.mod h1:MDw3vLem3yh+SvmSgeYUmUKqyls6NzSumDm9OJ3xJ1Y= +cloud.google.com/go/baremetalsolution v1.2.4/go.mod h1:BHCmxgpevw9IEryE99HbYEfxXkAEA3hkMJbYYsHtIuY= +cloud.google.com/go/batch v1.8.0/go.mod h1:k8V7f6VE2Suc0zUM4WtoibNrA6D3dqBpB+++e3vSGYc= +cloud.google.com/go/beyondcorp v1.0.4/go.mod h1:Gx8/Rk2MxrvWfn4WIhHIG1NV7IBfg14pTKv1+EArVcc= +cloud.google.com/go/bigquery v1.59.1/go.mod h1:VP1UJYgevyTwsV7desjzNzDND5p6hZB+Z8gZJN1GQUc= +cloud.google.com/go/billing v1.18.2/go.mod h1:PPIwVsOOQ7xzbADCwNe8nvK776QpfrOAUkvKjCUcpSE= +cloud.google.com/go/binaryauthorization v1.8.1/go.mod h1:1HVRyBerREA/nhI7yLang4Zn7vfNVA3okoAR9qYQJAQ= +cloud.google.com/go/certificatemanager v1.7.5/go.mod h1:uX+v7kWqy0Y3NG/ZhNvffh0kuqkKZIXdvlZRO7z0VtM= +cloud.google.com/go/channel v1.17.5/go.mod h1:FlpaOSINDAXgEext0KMaBq/vwpLMkkPAw9b2mApQeHc= +cloud.google.com/go/cloudbuild v1.15.1/go.mod h1:gIofXZSu+XD2Uy+qkOrGKEx45zd7s28u/k8f99qKals= +cloud.google.com/go/clouddms v1.7.4/go.mod h1:RdrVqoFG9RWI5AvZ81SxJ/xvxPdtcRhFotwdE79DieY= +cloud.google.com/go/cloudtasks v1.12.6/go.mod h1:b7c7fe4+TJsFZfDyzO51F7cjq7HLUlRi/KZQLQjDsaY= +cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/contactcenterinsights v1.13.0/go.mod h1:ieq5d5EtHsu8vhe2y3amtZ+BE+AQwX5qAy7cpo0POsI= +cloud.google.com/go/container v1.31.0/go.mod h1:7yABn5s3Iv3lmw7oMmyGbeV6tQj86njcTijkkGuvdZA= +cloud.google.com/go/containeranalysis v0.11.4/go.mod h1:cVZT7rXYBS9NG1rhQbWL9pWbXCKHWJPYraE8/FTSYPE= +cloud.google.com/go/datacatalog v1.19.3/go.mod h1:ra8V3UAsciBpJKQ+z9Whkxzxv7jmQg1hfODr3N3YPJ4= +cloud.google.com/go/dataflow v0.9.5/go.mod h1:udl6oi8pfUHnL0z6UN9Lf9chGqzDMVqcYTcZ1aPnCZQ= +cloud.google.com/go/dataform v0.9.2/go.mod h1:S8cQUwPNWXo7m/g3DhWHsLBoufRNn9EgFrMgne2j7cI= +cloud.google.com/go/datafusion v1.7.5/go.mod h1:bYH53Oa5UiqahfbNK9YuYKteeD4RbQSNMx7JF7peGHc= +cloud.google.com/go/datalabeling v0.8.5/go.mod h1:IABB2lxQnkdUbMnQaOl2prCOfms20mcPxDBm36lps+s= +cloud.google.com/go/dataplex v1.14.2/go.mod h1:0oGOSFlEKef1cQeAHXy4GZPB/Ife0fz/PxBf+ZymA2U= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.4.0/go.mod h1:3B1Ht2aRB8VZIteGxQS/iNSJGzt9+CA0WGnDVMEm7Z4= +cloud.google.com/go/dataqna v0.8.5/go.mod h1:vgihg1mz6n7pb5q2YJF7KlXve6tCglInd6XO0JGOlWM= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastream v1.10.4/go.mod h1:7kRxPdxZxhPg3MFeCSulmAJnil8NJGGvSNdn4p1sRZo= +cloud.google.com/go/deploy v1.17.1/go.mod h1:SXQyfsXrk0fBmgBHRzBjQbZhMfKZ3hMQBw5ym7MN/50= +cloud.google.com/go/dialogflow v1.49.0/go.mod h1:dhVrXKETtdPlpPhE7+2/k4Z8FRNUp6kMV3EW3oz/fe0= +cloud.google.com/go/dlp v1.11.2/go.mod h1:9Czi+8Y/FegpWzgSfkRlyz+jwW6Te9Rv26P3UfU/h/w= +cloud.google.com/go/documentai v1.25.0/go.mod h1:ftLnzw5VcXkLItp6pw1mFic91tMRyfv6hHEY5br4KzY= +cloud.google.com/go/domains v0.9.5/go.mod h1:dBzlxgepazdFhvG7u23XMhmMKBjrkoUNaw0A8AQB55Y= +cloud.google.com/go/edgecontainer v1.1.5/go.mod h1:rgcjrba3DEDEQAidT4yuzaKWTbkTI5zAMu3yy6ZWS0M= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.6.6/go.mod h1:XbqHJGaiH0v2UvtuucfOzFXN+rpL/aU5BCZLn4DYl1Q= +cloud.google.com/go/eventarc v1.13.4/go.mod h1:zV5sFVoAa9orc/52Q+OuYUG9xL2IIZTbbuTHC6JSY8s= +cloud.google.com/go/filestore v1.8.1/go.mod h1:MbN9KcaM47DRTIuLfQhJEsjaocVebNtNQhSLhKCF5GM= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/functions v1.16.0/go.mod h1:nbNpfAG7SG7Duw/o1iZ6ohvL7mc6MapWQVpqtM29n8k= +cloud.google.com/go/gkebackup v1.3.5/go.mod h1:KJ77KkNN7Wm1LdMopOelV6OodM01pMuK2/5Zt1t4Tvc= +cloud.google.com/go/gkeconnect v0.8.5/go.mod h1:LC/rS7+CuJ5fgIbXv8tCD/mdfnlAadTaUufgOkmijuk= +cloud.google.com/go/gkehub v0.14.5/go.mod h1:6bzqxM+a+vEH/h8W8ec4OJl4r36laxTs3A/fMNHJ0wA= +cloud.google.com/go/gkemulticloud v1.1.1/go.mod h1:C+a4vcHlWeEIf45IB5FFR5XGjTeYhF83+AYIpTy4i2Q= +cloud.google.com/go/grafeas v0.3.4/go.mod h1:A5m316hcG+AulafjAbPKXBO/+I5itU4LOdKO2R/uDIc= +cloud.google.com/go/gsuiteaddons v1.6.5/go.mod h1:Lo4P2IvO8uZ9W+RaC6s1JVxo42vgy+TX5a6hfBZ0ubs= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iap v1.9.4/go.mod h1:vO4mSq0xNf/Pu6E5paORLASBwEmphXEjgCFg7aeNu1w= +cloud.google.com/go/ids v1.4.5/go.mod h1:p0ZnyzjMWxww6d2DvMGnFwCsSxDJM666Iir1bK1UuBo= +cloud.google.com/go/iot v1.7.5/go.mod h1:nq3/sqTz3HGaWJi1xNiX7F41ThOzpud67vwk0YsSsqs= +cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= +cloud.google.com/go/language v1.12.3/go.mod h1:evFX9wECX6mksEva8RbRnr/4wi/vKGYnAJrTRXU8+f8= +cloud.google.com/go/lifesciences v0.9.5/go.mod h1:OdBm0n7C0Osh5yZB7j9BXyrMnTRGBJIZonUMxo5CzPw= +cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/managedidentities v1.6.5/go.mod h1:fkFI2PwwyRQbjLxlm5bQ8SjtObFMW3ChBGNqaMcgZjI= +cloud.google.com/go/maps v1.6.4/go.mod h1:rhjqRy8NWmDJ53saCfsXQ0LKwBHfi6OSh5wkq6BaMhI= +cloud.google.com/go/mediatranslation v0.8.5/go.mod h1:y7kTHYIPCIfgyLbKncgqouXJtLsU+26hZhHEEy80fSs= +cloud.google.com/go/memcache v1.10.5/go.mod h1:/FcblbNd0FdMsx4natdj+2GWzTq+cjZvMa1I+9QsuMA= +cloud.google.com/go/metastore v1.13.4/go.mod h1:FMv9bvPInEfX9Ac1cVcRXp8EBBQnBcqH6gz3KvJ9BAE= +cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg= +cloud.google.com/go/networkconnectivity v1.14.4/go.mod h1:PU12q++/IMnDJAB+3r+tJtuCXCfwfN+C6Niyj6ji1Po= +cloud.google.com/go/networkmanagement v1.9.4/go.mod h1:daWJAl0KTFytFL7ar33I6R/oNBH8eEOX/rBNHrC/8TA= +cloud.google.com/go/networksecurity v0.9.5/go.mod h1:KNkjH/RsylSGyyZ8wXpue8xpCEK+bTtvof8SBfIhMG8= +cloud.google.com/go/notebooks v1.11.3/go.mod h1:0wQyI2dQC3AZyQqWnRsp+yA+kY4gC7ZIVP4Qg3AQcgo= +cloud.google.com/go/optimization v1.6.3/go.mod h1:8ve3svp3W6NFcAEFr4SfJxrldzhUl4VMUJmhrqVKtYA= +cloud.google.com/go/orchestration v1.8.5/go.mod h1:C1J7HesE96Ba8/hZ71ISTV2UAat0bwN+pi85ky38Yq8= +cloud.google.com/go/orgpolicy v1.12.1/go.mod h1:aibX78RDl5pcK3jA8ysDQCFkVxLj3aOQqrbBaUL2V5I= +cloud.google.com/go/osconfig v1.12.5/go.mod h1:D9QFdxzfjgw3h/+ZaAb5NypM8bhOMqBzgmbhzWViiW8= +cloud.google.com/go/oslogin v1.13.1/go.mod h1:vS8Sr/jR7QvPWpCjNqy6LYZr5Zs1e8ZGW/KPn9gmhws= +cloud.google.com/go/phishingprotection v0.8.5/go.mod h1:g1smd68F7mF1hgQPuYn3z8HDbNre8L6Z0b7XMYFmX7I= +cloud.google.com/go/policytroubleshooter v1.10.3/go.mod h1:+ZqG3agHT7WPb4EBIRqUv4OyIwRTZvsVDHZ8GlZaoxk= +cloud.google.com/go/privatecatalog v0.9.5/go.mod h1:fVWeBOVe7uj2n3kWRGlUQqR/pOd450J9yZoOECcQqJk= +cloud.google.com/go/pubsub v1.36.1/go.mod h1:iYjCa9EzWOoBiTdd4ps7QoMtMln5NwaZQpK1hbRfBDE= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise/v2 v2.9.2/go.mod h1:trwwGkfhCmp05Ll5MSJPXY7yvnO0p4v3orGANAFHAuU= +cloud.google.com/go/recommendationengine v0.8.5/go.mod h1:A38rIXHGFvoPvmy6pZLozr0g59NRNREz4cx7F58HAsQ= +cloud.google.com/go/recommender v1.12.1/go.mod h1:gf95SInWNND5aPas3yjwl0I572dtudMhMIG4ni8nr+0= +cloud.google.com/go/redis v1.14.2/go.mod h1:g0Lu7RRRz46ENdFKQ2EcQZBAJ2PtJHJLuiiRuEXwyQw= +cloud.google.com/go/resourcemanager v1.9.5/go.mod h1:hep6KjelHA+ToEjOfO3garMKi/CLYwTqeAw7YiEI9x8= +cloud.google.com/go/resourcesettings v1.6.5/go.mod h1:WBOIWZraXZOGAgoR4ukNj0o0HiSMO62H9RpFi9WjP9I= +cloud.google.com/go/retail v1.16.0/go.mod h1:LW7tllVveZo4ReWt68VnldZFWJRzsh9np+01J9dYWzE= +cloud.google.com/go/run v1.3.4/go.mod h1:FGieuZvQ3tj1e9GnzXqrMABSuir38AJg5xhiYq+SF3o= +cloud.google.com/go/scheduler v1.10.6/go.mod h1:pe2pNCtJ+R01E06XCDOJs1XvAMbv28ZsQEbqknxGOuE= +cloud.google.com/go/secretmanager v1.11.5/go.mod h1:eAGv+DaCHkeVyQi0BeXgAHOU0RdrMeZIASKc+S7VqH4= +cloud.google.com/go/security v1.15.5/go.mod h1:KS6X2eG3ynWjqcIX976fuToN5juVkF6Ra6c7MPnldtc= +cloud.google.com/go/securitycenter v1.24.4/go.mod h1:PSccin+o1EMYKcFQzz9HMMnZ2r9+7jbc+LvPjXhpwcU= +cloud.google.com/go/servicedirectory v1.11.4/go.mod h1:Bz2T9t+/Ehg6x+Y7Ycq5xiShYLD96NfEsWNHyitj1qM= +cloud.google.com/go/shell v1.7.5/go.mod h1:hL2++7F47/IfpfTO53KYf1EC+F56k3ThfNEXd4zcuiE= +cloud.google.com/go/spanner v1.57.0/go.mod h1:aXQ5QDdhPRIqVhYmnkAdwPYvj/DRN0FguclhEWw+jOo= +cloud.google.com/go/speech v1.21.1/go.mod h1:E5GHZXYQlkqWQwY5xRSLHw2ci5NMQNG52FfMU1aZrIA= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storagetransfer v1.10.4/go.mod h1:vef30rZKu5HSEf/x1tK3WfWrL0XVoUQN/EPDRGPzjZs= +cloud.google.com/go/talent v1.6.6/go.mod h1:y/WQDKrhVz12WagoarpAIyKKMeKGKHWPoReZ0g8tseQ= +cloud.google.com/go/texttospeech v1.7.5/go.mod h1:tzpCuNWPwrNJnEa4Pu5taALuZL4QRRLcb+K9pbhXT6M= +cloud.google.com/go/tpu v1.6.5/go.mod h1:P9DFOEBIBhuEcZhXi+wPoVy/cji+0ICFi4TtTkMHSSs= +cloud.google.com/go/trace v1.10.5/go.mod h1:9hjCV1nGBCtXbAE4YK7OqJ8pmPYSxPA0I67JwRd5s3M= +cloud.google.com/go/translate v1.10.1/go.mod h1:adGZcQNom/3ogU65N9UXHOnnSvjPwA/jKQUMnsYXOyk= +cloud.google.com/go/video v1.20.4/go.mod h1:LyUVjyW+Bwj7dh3UJnUGZfyqjEto9DnrvTe1f/+QrW0= +cloud.google.com/go/videointelligence v1.11.5/go.mod h1:/PkeQjpRponmOerPeJxNPuxvi12HlW7Em0lJO14FC3I= +cloud.google.com/go/vision/v2 v2.8.0/go.mod h1:ocqDiA2j97pvgogdyhoxiQp2ZkDCyr0HWpicywGGRhU= +cloud.google.com/go/vmmigration v1.7.5/go.mod h1:pkvO6huVnVWzkFioxSghZxIGcsstDvYiVCxQ9ZH3eYI= +cloud.google.com/go/vmwareengine v1.1.1/go.mod h1:nMpdsIVkUrSaX8UvmnBhzVzG7PPvNYc5BszcvIVudYs= +cloud.google.com/go/vpcaccess v1.7.5/go.mod h1:slc5ZRvvjP78c2dnL7m4l4R9GwL3wDLcpIWz6P/ziig= +cloud.google.com/go/webrisk v1.9.5/go.mod h1:aako0Fzep1Q714cPEM5E+mtYX8/jsfegAuS8aivxy3U= +cloud.google.com/go/websecurityscanner v1.6.5/go.mod h1:QR+DWaxAz2pWooylsBF854/Ijvuoa3FCyS1zBa1rAVQ= +cloud.google.com/go/workflows v1.12.4/go.mod h1:yQ7HUqOkdJK4duVtMeBCAOPiN1ZF1E9pAMX51vpwB/w= +cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/participle/v2 v2.1.0/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= +github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/chromedp/cdproto v0.0.0-20220208224320-6efb837e6bc2/go.mod h1:At5TxYYdxkbQL0TSefRjhLE3Q0lgvqKKMSFUglJ7i1U= -github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bufbuild/protovalidate-go v0.2.1/go.mod h1:e7XXDtlxj5vlEyAgsrxpzayp4cEMKCSSb8ZCkin+MVA= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/elazarl/goproxy v0.0.0-20230731152917-f99041a5c027/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= +github.com/dave/jennifer v1.5.0/go.mod h1:4MnyiFIlZS3l5tSDn8VnzE6ffAhYBMB2SZntBsZGUok= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= +github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= +github.com/go-quicktest/qt v1.100.0/go.mod h1:leyLsQ4jksGmF1KaQEyabnqGIiJTbOU5S46QegToEj4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.17.8/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.12.1/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/codejen v0.0.3/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= +github.com/grafana/cog v0.0.0-20240529130920-083c489f684f/go.mod h1:A+ggqoURW2MB0Y5bxfi7DZOtxKYqwLuugRfMI+sT/0w= +github.com/grafana/cog v0.0.0-20240603130906-42de25f609a6/go.mod h1:A+ggqoURW2MB0Y5bxfi7DZOtxKYqwLuugRfMI+sT/0w= +github.com/grafana/cog v0.0.0-20240625151715-4edf6d363ef5/go.mod h1:liBxkYUVBZ9rgBe4pBa0SC1Mip7SRO2oiM0DpsSRCQY= +github.com/grafana/cuetsy v0.1.10/go.mod h1:Ix97+CPD8ws9oSSxR3/Lf4ahU1I4Np83kjJmDVnLZvc= +github.com/grafana/cuetsy v0.1.11/go.mod h1:Ix97+CPD8ws9oSSxR3/Lf4ahU1I4Np83kjJmDVnLZvc= github.com/grafana/grafana-plugin-sdk-go v0.222.0/go.mod h1:0lYONo3rJrjIoJNOQP0h2NXmOaF5rFIuH/rwSVSeIrQ= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20191002090509-6af20e3a5340/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/hamba/avro/v2 v2.17.2/go.mod h1:Q9YK+qxAhtVrNqOhwlZTATLgLA8qxG2vtvkhK8fJ7Jo= github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jszwedko/go-datemath v0.1.1-0.20230526204004-640a500621d6/go.mod h1:WrYiIuiXUMIvTDAQw97C+9l0CnBmCcvosPjN3XDqS/o= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/mattetti/filebuffer v1.0.1/go.mod h1:YdMURNDOttIiruleeVr6f56OrMc+MydEnTcXwtkxNVs= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/labstack/echo/v4 v4.9.1/go.mod h1:Pop5HLc+xoc4qhTZ1ip6C0RtP7Z+4VzRLWZZFKqbbjo= +github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= +github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.3.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= +github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= +github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/unknwon/bra v0.0.0-20200517080246-1e3013ecaff8/go.mod h1:fVle4kNr08ydeohzYafr20oZzbAkhQT39gKK/pFQ5M4= -github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM= -github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3/go.mod h1:1xEUf2abjfP92w2GZTV+GgaRxXErwRXcClbUwrNJffU= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/substrait-io/substrait-go v0.4.2/go.mod h1:qhpnLmrcvAnlZsUyPXZRqldiHapPTXC3t7xFgDi3aQg= +github.com/tetratelabs/wazero v1.6.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.einride.tech/aip v0.66.0/go.mod h1:qAhMsfT7plxBX+Oy7Huol6YUvZ0ZzdUz26yZsQwfl1M= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= +go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= +go.etcd.io/etcd/client/v2 v2.305.10/go.mod h1:m3CKZi69HzilhVqtPDcjhSGp+kA1OmbNn0qamH80xjA= +go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.etcd.io/etcd/pkg/v3 v3.5.10/go.mod h1:TKTuCKKcF1zxmfKWDkfz5qqYaE3JncKKZPFf8c1nFUs= +go.etcd.io/etcd/raft/v3 v3.5.10/go.mod h1:odD6kr8XQXTy9oQnyMPBOr0TVe+gT0neQhElQ6jbGRc= +go.etcd.io/etcd/server/v3 v3.5.10/go.mod h1:gBplPHfs6YI0L+RpGkTQO7buDbHv5HJGG/Bst0/zIPo= +go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0/go.mod h1:5z+/ZWJQKXa9YT34fQNx5K8Hd1EoIhvtUygUQPqEOgQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.48.0/go.mod h1:tIKj3DbO8N9Y2xo52og3irLsPI4GW02DSMtrVgNMgxg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0/go.mod h1:f/PbKbRd4cdUICWell6DmzvVJ7QrmBgFrRHjXmAXbK4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0/go.mod h1:rdENBZMT2OE6Ne/KLwpiXudnAsbdrdBaqBvTN8M8BgA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/contrib/propagators/jaeger v1.22.0/go.mod h1:bH9GkgkN21mscXcQP6lQJYI8XnEPDxlTN/ZOBuHDjqE= go.opentelemetry.io/contrib/samplers/jaegerremote v0.18.0/go.mod h1:tjp49JHNvreAAoWjdCHIVD7NXMjuJ3Dp/9iNOuPPlC8= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/metric v1.23.0/go.mod h1:MqUW2X2a6Q8RN96E2/nqNoT+z9BSms20Jb7Bbp+HiTo= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.23.0/go.mod h1:GSGTbIClEsuZrGIzoEHqsVfxgn5UkggkflQwDScNUsk= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191020152052-9984515f0562/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +google.golang.org/api v0.164.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o= +google.golang.org/api v0.166.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= +google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014/go.mod h1:SaPjaZGWb0lPqs6Ittu0spdfrOArqji4ZdeP5IC/9N4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240509183442-62759503f434/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/apiserver v0.30.1/go.mod h1:i87ZnQ+/PGAmSbD/iEKM68bm1D5reX8fO4Ito4B01mo= +k8s.io/apiserver v0.30.2/go.mod h1:BOTdFBIch9Sv0ypSEcUR6ew/NUFGocRFNl72Ra7wTm8= +k8s.io/code-generator v0.30.1/go.mod h1:hFgxRsvOUg79mbpbVKfjJvRhVz1qLoe40yZDJ/hwRH4= +k8s.io/code-generator v0.30.2/go.mod h1:RQP5L67QxqgkVquk704CyvWFIq0e6RCMmLTXxjE8dVA= +k8s.io/component-base v0.30.1/go.mod h1:e/X9kDiOebwlI41AvBHuWdqFriSRrX50CdwA9TFaHLI= +k8s.io/component-base v0.30.2/go.mod h1:yQLkQDrkK8J6NtP+MGJOws+/PPeEXNpwFixsUI7h/OE= +k8s.io/kms v0.30.1/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= +k8s.io/kms v0.30.2/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= +lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/libc v1.22.4/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.21.2/go.mod h1:cxbLkB5WS32DnQqeH4h4o1B0eMr8W/y8/RGuxQ3JsC0= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0/go.mod h1:z7+wmGM2dfIiLRfrC6jb5kV2Mq/sK1ZP303cxzkV5Y4=