const noMaxLength … // NewListType returns a parameterized list type with a specified element type. func NewListType(elem *DeclType, maxItems int64) *DeclType { … } // NewMapType returns a parameterized map type with the given key and element types. func NewMapType(key, elem *DeclType, maxProperties int64) *DeclType { … } // NewObjectType creates an object type with a qualified name and a set of field declarations. func NewObjectType(name string, fields map[string]*DeclField) *DeclType { … } func NewSimpleTypeWithMinSize(name string, celType *cel.Type, zeroVal ref.Val, minSize int64) *DeclType { … } type DeclType … // MaybeAssignTypeName attempts to set the DeclType name to a fully qualified name, if the type // is of `object` type. // // The DeclType must return true for `IsObject` or this assignment will error. func (t *DeclType) MaybeAssignTypeName(name string) *DeclType { … } // ExprType returns the CEL expression type of this declaration. func (t *DeclType) ExprType() (*exprpb.Type, error) { … } // CelType returns the CEL type of this declaration. func (t *DeclType) CelType() *cel.Type { … } // FindField returns the DeclField with the given name if present. func (t *DeclType) FindField(name string) (*DeclField, bool) { … } // HasTrait implements the CEL ref.Type interface making this type declaration suitable for use // within the CEL evaluator. func (t *DeclType) HasTrait(trait int) bool { … } // IsList returns whether the declaration is a `list` type which defines a parameterized element // type, but not a parameterized key type or fields. func (t *DeclType) IsList() bool { … } // IsMap returns whether the declaration is a 'map' type which defines parameterized key and // element types, but not fields. func (t *DeclType) IsMap() bool { … } // IsObject returns whether the declartion is an 'object' type which defined a set of typed fields. func (t *DeclType) IsObject() bool { … } // String implements the fmt.Stringer interface method. func (t *DeclType) String() string { … } // TypeName returns the fully qualified type name for the DeclType. func (t *DeclType) TypeName() string { … } // DefaultValue returns the CEL ref.Val representing the default value for this object type, // if one exists. func (t *DeclType) DefaultValue() ref.Val { … } // FieldTypeMap constructs a map of the field and object types nested within a given type. func FieldTypeMap(path string, t *DeclType) map[string]*DeclType { … } func buildDeclTypes(path string, t *DeclType, types map[string]*DeclType) { … } type DeclField … func NewDeclField(name string, declType *DeclType, required bool, enumValues []interface{ … } // TypeName returns the string type name of the field. func (f *DeclField) TypeName() string { … } // DefaultValue returns the zero value associated with the field. func (f *DeclField) DefaultValue() ref.Val { … } // EnumValues returns the set of values that this field may take. func (f *DeclField) EnumValues() []ref.Val { … } func allTypesForDecl(declTypes []*DeclType) map[string]*DeclType { … } // NewDeclTypeProvider returns an Open API Schema-based type-system which is CEL compatible. func NewDeclTypeProvider(rootTypes ...*DeclType) *DeclTypeProvider { … } type DeclTypeProvider … func (rt *DeclTypeProvider) SetRecognizeKeywordAsFieldName(recognize bool) { … } func (rt *DeclTypeProvider) EnumValue(enumName string) ref.Val { … } func (rt *DeclTypeProvider) FindIdent(identName string) (ref.Val, bool) { … } // EnvOptions returns a set of cel.EnvOption values which includes the declaration set // as well as a custom ref.TypeProvider. // // If the DeclTypeProvider value is nil, an empty []cel.EnvOption set is returned. func (rt *DeclTypeProvider) EnvOptions(tp types.Provider) ([]cel.EnvOption, error) { … } // WithTypeProvider returns a new DeclTypeProvider that sets the given TypeProvider // If the original DeclTypeProvider is nil, the returned DeclTypeProvider is still nil. func (rt *DeclTypeProvider) WithTypeProvider(tp types.Provider) (*DeclTypeProvider, error) { … } // FindStructType attempts to resolve the typeName provided from the rule's rule-schema, or if not // from the embedded ref.TypeProvider. // // FindStructType overrides the default type-finding behavior of the embedded TypeProvider. // // Note, when the type name is based on the Open API Schema, the name will reflect the object path // where the type definition appears. func (rt *DeclTypeProvider) FindStructType(typeName string) (*types.Type, bool) { … } // FindDeclType returns the CPT type description which can be mapped to a CEL type. func (rt *DeclTypeProvider) FindDeclType(typeName string) (*DeclType, bool) { … } // FindStructFieldNames returns the field names associated with the type, if the type // is found. func (rt *DeclTypeProvider) FindStructFieldNames(typeName string) ([]string, bool) { … } // FindStructFieldType returns a field type given a type name and field name, if found. // // Note, the type name for an Open API Schema type is likely to be its qualified object path. // If, in the future an object instance rather than a type name were provided, the field // resolution might more accurately reflect the expected type model. However, in this case // concessions were made to align with the existing CEL interfaces. func (rt *DeclTypeProvider) FindStructFieldType(typeName, fieldName string) (*types.FieldType, bool) { … } // NativeToValue is an implementation of the ref.TypeAdapater interface which supports conversion // of rule values to CEL ref.Val instances. func (rt *DeclTypeProvider) NativeToValue(val interface{ … } func (rt *DeclTypeProvider) NewValue(typeName string, fields map[string]ref.Val) ref.Val { … } // TypeNames returns the list of type names declared within the DeclTypeProvider object. func (rt *DeclTypeProvider) TypeNames() []string { … } func (rt *DeclTypeProvider) findDeclType(typeName string) (*DeclType, bool) { … } func findScalar(typename string) *DeclType { … } var AnyType … var BoolType … var BytesType … var DoubleType … var DurationType … var DateType … var DynType … var IntType … var NullType … var StringType … var TimestampType … var QuantityDeclType … var UintType … var ListType … var MapType …