@@ -19,24 +19,27 @@ import (
1919 extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2020)
2121
22- // Transformer is a transformer for OpenAPI schemas
23- type Transformer struct {
22+ // transformer is a transformer for OpenAPI schemas
23+ type transformer struct {
2424 preDefinedTypes map [string ]extv1.JSONSchemaProps
2525}
2626
27- // NewTransformer creates a new transformer
28- func NewTransformer () * Transformer {
29- return & Transformer {
27+ // newTransformer creates a new transformer
28+ func newTransformer () * transformer {
29+ return & transformer {
3030 preDefinedTypes : make (map [string ]extv1.JSONSchemaProps ),
3131 }
3232}
3333
34- // LoadPreDefinedTypes loads pre-defined types into the transformer.
34+ // loadPreDefinedTypes loads pre-defined types into the transformer.
3535// The pre-defined types are used to resolve references in the schema.
36- func (t * Transformer ) LoadPreDefinedTypes (obj map [string ]interface {}) error {
36+ //
37+ // As of today, KRO doesn't support custom types in the schema - do
38+ // not use this function.
39+ func (t * transformer ) loadPreDefinedTypes (obj map [string ]interface {}) error {
3740 t .preDefinedTypes = make (map [string ]extv1.JSONSchemaProps )
3841
39- jsonSchemaProps , err := t .BuildOpenAPISchema (obj )
42+ jsonSchemaProps , err := t .buildOpenAPISchema (obj )
4043 if err != nil {
4144 return fmt .Errorf ("failed to build pre-defined types schema: %w" , err )
4245 }
@@ -47,9 +50,9 @@ func (t *Transformer) LoadPreDefinedTypes(obj map[string]interface{}) error {
4750 return nil
4851}
4952
50- // BuildOpenAPISchema builds an OpenAPI schema from the given object
53+ // buildOpenAPISchema builds an OpenAPI schema from the given object
5154// of a SimpleSchema.
52- func (tf * Transformer ) BuildOpenAPISchema (obj map [string ]interface {}) (* extv1.JSONSchemaProps , error ) {
55+ func (tf * transformer ) buildOpenAPISchema (obj map [string ]interface {}) (* extv1.JSONSchemaProps , error ) {
5356 schema := & extv1.JSONSchemaProps {
5457 Type : "object" ,
5558 Properties : map [string ]extv1.JSONSchemaProps {},
@@ -65,25 +68,25 @@ func (tf *Transformer) BuildOpenAPISchema(obj map[string]interface{}) (*extv1.JS
6568
6669 return schema , nil
6770}
68- func (tf * Transformer ) transformField (
71+ func (tf * transformer ) transformField (
6972 key string , value interface {},
7073 // parentSchema is used to add the key to the required list
7174 parentSchema * extv1.JSONSchemaProps ,
7275) (* extv1.JSONSchemaProps , error ) {
7376 switch v := value .(type ) {
7477 case map [interface {}]interface {}:
7578 nMap := transformMap (v )
76- return tf .BuildOpenAPISchema (nMap )
79+ return tf .buildOpenAPISchema (nMap )
7780 case map [string ]interface {}:
78- return tf .BuildOpenAPISchema (v )
81+ return tf .buildOpenAPISchema (v )
7982 case string :
8083 return tf .parseFieldSchema (key , v , parentSchema )
8184 default :
8285 return nil , fmt .Errorf ("unknown type in schema: key: %s, value: %v" , key , value )
8386 }
8487}
8588
86- func (tf * Transformer ) parseFieldSchema (key , fieldValue string , parentSchema * extv1.JSONSchemaProps ) (* extv1.JSONSchemaProps , error ) {
89+ func (tf * transformer ) parseFieldSchema (key , fieldValue string , parentSchema * extv1.JSONSchemaProps ) (* extv1.JSONSchemaProps , error ) {
8790 fieldType , markers , err := parseFieldSchema (fieldValue )
8891 if err != nil {
8992 return nil , fmt .Errorf ("failed to parse field schema for %s: %v" , key , err )
@@ -117,7 +120,7 @@ func (tf *Transformer) parseFieldSchema(key, fieldValue string, parentSchema *ex
117120 return fieldJSONSchemaProps , nil
118121}
119122
120- func (tf * Transformer ) handleMapType (key , fieldType string ) (* extv1.JSONSchemaProps , error ) {
123+ func (tf * transformer ) handleMapType (key , fieldType string ) (* extv1.JSONSchemaProps , error ) {
121124 keyType , valueType , err := parseMapType (fieldType )
122125 if err != nil {
123126 return nil , fmt .Errorf ("failed to parse map type for %s: %w" , key , err )
@@ -150,7 +153,7 @@ func (tf *Transformer) handleMapType(key, fieldType string) (*extv1.JSONSchemaPr
150153 return fieldJSONSchemaProps , nil
151154}
152155
153- func (tf * Transformer ) handleSliceType (key , fieldType string ) (* extv1.JSONSchemaProps , error ) {
156+ func (tf * transformer ) handleSliceType (key , fieldType string ) (* extv1.JSONSchemaProps , error ) {
154157 elementType , err := parseSliceType (fieldType )
155158 if err != nil {
156159 return nil , fmt .Errorf ("failed to parse slice type for %s: %w" , key , err )
@@ -180,7 +183,7 @@ func (tf *Transformer) handleSliceType(key, fieldType string) (*extv1.JSONSchema
180183 return fieldJSONSchemaProps , nil
181184}
182185
183- func (tf * Transformer ) applyMarkers (schema * extv1.JSONSchemaProps , markers []* Marker , key string , parentSchema * extv1.JSONSchemaProps ) {
186+ func (tf * transformer ) applyMarkers (schema * extv1.JSONSchemaProps , markers []* Marker , key string , parentSchema * extv1.JSONSchemaProps ) {
184187 for _ , marker := range markers {
185188 switch marker .MarkerType {
186189 case MarkerTypeRequired :
0 commit comments