Files
kubesphere/vendor/github.com/open-policy-agent/opa/ast/builtins.go
2025-05-14 14:44:13 +08:00

635 lines
13 KiB
Go

// Copyright 2016 The OPA Authors. All rights reserved.
// Use of this source code is governed by an Apache2
// license that can be found in the LICENSE file.
package ast
import (
v1 "github.com/open-policy-agent/opa/v1/ast"
)
// Builtins is the registry of built-in functions supported by OPA.
// Call RegisterBuiltin to add a new built-in.
var Builtins = v1.Builtins
// RegisterBuiltin adds a new built-in function to the registry.
func RegisterBuiltin(b *Builtin) {
v1.RegisterBuiltin(b)
}
// DefaultBuiltins is the registry of built-in functions supported in OPA
// by default. When adding a new built-in function to OPA, update this
// list.
var DefaultBuiltins = v1.DefaultBuiltins
// BuiltinMap provides a convenient mapping of built-in names to
// built-in definitions.
var BuiltinMap = v1.BuiltinMap
// Deprecated: Builtins can now be directly annotated with the
// Nondeterministic property, and when set to true, will be ignored
// for partial evaluation.
var IgnoreDuringPartialEval = v1.IgnoreDuringPartialEval
/**
* Unification
*/
// Equality represents the "=" operator.
var Equality = v1.Equality
/**
* Assignment
*/
// Assign represents the assignment (":=") operator.
var Assign = v1.Assign
// Member represents the `in` (infix) operator.
var Member = v1.Member
// MemberWithKey represents the `in` (infix) operator when used
// with two terms on the lhs, i.e., `k, v in obj`.
var MemberWithKey = v1.MemberWithKey
var GreaterThan = v1.GreaterThan
var GreaterThanEq = v1.GreaterThanEq
// LessThan represents the "<" comparison operator.
var LessThan = v1.LessThan
var LessThanEq = v1.LessThanEq
var NotEqual = v1.NotEqual
// Equal represents the "==" comparison operator.
var Equal = v1.Equal
var Plus = v1.Plus
var Minus = v1.Minus
var Multiply = v1.Multiply
var Divide = v1.Divide
var Round = v1.Round
var Ceil = v1.Ceil
var Floor = v1.Floor
var Abs = v1.Abs
var Rem = v1.Rem
/**
* Bitwise
*/
var BitsOr = v1.BitsOr
var BitsAnd = v1.BitsAnd
var BitsNegate = v1.BitsNegate
var BitsXOr = v1.BitsXOr
var BitsShiftLeft = v1.BitsShiftLeft
var BitsShiftRight = v1.BitsShiftRight
/**
* Sets
*/
var And = v1.And
// Or performs a union operation on sets.
var Or = v1.Or
var Intersection = v1.Intersection
var Union = v1.Union
/**
* Aggregates
*/
var Count = v1.Count
var Sum = v1.Sum
var Product = v1.Product
var Max = v1.Max
var Min = v1.Min
/**
* Sorting
*/
var Sort = v1.Sort
/**
* Arrays
*/
var ArrayConcat = v1.ArrayConcat
var ArraySlice = v1.ArraySlice
var ArrayReverse = v1.ArrayReverse
/**
* Conversions
*/
var ToNumber = v1.ToNumber
/**
* Regular Expressions
*/
var RegexMatch = v1.RegexMatch
var RegexIsValid = v1.RegexIsValid
var RegexFindAllStringSubmatch = v1.RegexFindAllStringSubmatch
var RegexTemplateMatch = v1.RegexTemplateMatch
var RegexSplit = v1.RegexSplit
// RegexFind takes two strings and a number, the pattern, the value and number of match values to
// return, -1 means all match values.
var RegexFind = v1.RegexFind
// GlobsMatch takes two strings regexp-style strings and evaluates to true if their
// intersection matches a non-empty set of non-empty strings.
// Examples:
// - "a.a." and ".b.b" -> true.
// - "[a-z]*" and [0-9]+" -> not true.
var GlobsMatch = v1.GlobsMatch
/**
* Strings
*/
var AnyPrefixMatch = v1.AnyPrefixMatch
var AnySuffixMatch = v1.AnySuffixMatch
var Concat = v1.Concat
var FormatInt = v1.FormatInt
var IndexOf = v1.IndexOf
var IndexOfN = v1.IndexOfN
var Substring = v1.Substring
var Contains = v1.Contains
var StringCount = v1.StringCount
var StartsWith = v1.StartsWith
var EndsWith = v1.EndsWith
var Lower = v1.Lower
var Upper = v1.Upper
var Split = v1.Split
var Replace = v1.Replace
var ReplaceN = v1.ReplaceN
var RegexReplace = v1.RegexReplace
var Trim = v1.Trim
var TrimLeft = v1.TrimLeft
var TrimPrefix = v1.TrimPrefix
var TrimRight = v1.TrimRight
var TrimSuffix = v1.TrimSuffix
var TrimSpace = v1.TrimSpace
var Sprintf = v1.Sprintf
var StringReverse = v1.StringReverse
var RenderTemplate = v1.RenderTemplate
/**
* Numbers
*/
// RandIntn returns a random number 0 - n
// Marked non-deterministic because it relies on RNG internally.
var RandIntn = v1.RandIntn
var NumbersRange = v1.NumbersRange
var NumbersRangeStep = v1.NumbersRangeStep
/**
* Units
*/
var UnitsParse = v1.UnitsParse
var UnitsParseBytes = v1.UnitsParseBytes
//
/**
* Type
*/
// UUIDRFC4122 returns a version 4 UUID string.
// Marked non-deterministic because it relies on RNG internally.
var UUIDRFC4122 = v1.UUIDRFC4122
var UUIDParse = v1.UUIDParse
/**
* JSON
*/
var JSONFilter = v1.JSONFilter
var JSONRemove = v1.JSONRemove
var JSONPatch = v1.JSONPatch
var ObjectSubset = v1.ObjectSubset
var ObjectUnion = v1.ObjectUnion
var ObjectUnionN = v1.ObjectUnionN
var ObjectRemove = v1.ObjectRemove
var ObjectFilter = v1.ObjectFilter
var ObjectGet = v1.ObjectGet
var ObjectKeys = v1.ObjectKeys
/*
* Encoding
*/
var JSONMarshal = v1.JSONMarshal
var JSONMarshalWithOptions = v1.JSONMarshalWithOptions
var JSONUnmarshal = v1.JSONUnmarshal
var JSONIsValid = v1.JSONIsValid
var Base64Encode = v1.Base64Encode
var Base64Decode = v1.Base64Decode
var Base64IsValid = v1.Base64IsValid
var Base64UrlEncode = v1.Base64UrlEncode
var Base64UrlEncodeNoPad = v1.Base64UrlEncodeNoPad
var Base64UrlDecode = v1.Base64UrlDecode
var URLQueryDecode = v1.URLQueryDecode
var URLQueryEncode = v1.URLQueryEncode
var URLQueryEncodeObject = v1.URLQueryEncodeObject
var URLQueryDecodeObject = v1.URLQueryDecodeObject
var YAMLMarshal = v1.YAMLMarshal
var YAMLUnmarshal = v1.YAMLUnmarshal
// YAMLIsValid verifies the input string is a valid YAML document.
var YAMLIsValid = v1.YAMLIsValid
var HexEncode = v1.HexEncode
var HexDecode = v1.HexDecode
/**
* Tokens
*/
var JWTDecode = v1.JWTDecode
var JWTVerifyRS256 = v1.JWTVerifyRS256
var JWTVerifyRS384 = v1.JWTVerifyRS384
var JWTVerifyRS512 = v1.JWTVerifyRS512
var JWTVerifyPS256 = v1.JWTVerifyPS256
var JWTVerifyPS384 = v1.JWTVerifyPS384
var JWTVerifyPS512 = v1.JWTVerifyPS512
var JWTVerifyES256 = v1.JWTVerifyES256
var JWTVerifyES384 = v1.JWTVerifyES384
var JWTVerifyES512 = v1.JWTVerifyES512
var JWTVerifyHS256 = v1.JWTVerifyHS256
var JWTVerifyHS384 = v1.JWTVerifyHS384
var JWTVerifyHS512 = v1.JWTVerifyHS512
// Marked non-deterministic because it relies on time internally.
var JWTDecodeVerify = v1.JWTDecodeVerify
// Marked non-deterministic because it relies on RNG internally.
var JWTEncodeSignRaw = v1.JWTEncodeSignRaw
// Marked non-deterministic because it relies on RNG internally.
var JWTEncodeSign = v1.JWTEncodeSign
/**
* Time
*/
// Marked non-deterministic because it relies on time directly.
var NowNanos = v1.NowNanos
var ParseNanos = v1.ParseNanos
var ParseRFC3339Nanos = v1.ParseRFC3339Nanos
var ParseDurationNanos = v1.ParseDurationNanos
var Format = v1.Format
var Date = v1.Date
var Clock = v1.Clock
var Weekday = v1.Weekday
var AddDate = v1.AddDate
var Diff = v1.Diff
/**
* Crypto.
*/
var CryptoX509ParseCertificates = v1.CryptoX509ParseCertificates
var CryptoX509ParseAndVerifyCertificates = v1.CryptoX509ParseAndVerifyCertificates
var CryptoX509ParseAndVerifyCertificatesWithOptions = v1.CryptoX509ParseAndVerifyCertificatesWithOptions
var CryptoX509ParseCertificateRequest = v1.CryptoX509ParseCertificateRequest
var CryptoX509ParseKeyPair = v1.CryptoX509ParseKeyPair
var CryptoX509ParseRSAPrivateKey = v1.CryptoX509ParseRSAPrivateKey
var CryptoParsePrivateKeys = v1.CryptoParsePrivateKeys
var CryptoMd5 = v1.CryptoMd5
var CryptoSha1 = v1.CryptoSha1
var CryptoSha256 = v1.CryptoSha256
var CryptoHmacMd5 = v1.CryptoHmacMd5
var CryptoHmacSha1 = v1.CryptoHmacSha1
var CryptoHmacSha256 = v1.CryptoHmacSha256
var CryptoHmacSha512 = v1.CryptoHmacSha512
var CryptoHmacEqual = v1.CryptoHmacEqual
/**
* Graphs.
*/
var WalkBuiltin = v1.WalkBuiltin
var ReachableBuiltin = v1.ReachableBuiltin
var ReachablePathsBuiltin = v1.ReachablePathsBuiltin
/**
* Type
*/
var IsNumber = v1.IsNumber
var IsString = v1.IsString
var IsBoolean = v1.IsBoolean
var IsArray = v1.IsArray
var IsSet = v1.IsSet
var IsObject = v1.IsObject
var IsNull = v1.IsNull
/**
* Type Name
*/
// TypeNameBuiltin returns the type of the input.
var TypeNameBuiltin = v1.TypeNameBuiltin
/**
* HTTP Request
*/
// Marked non-deterministic because HTTP request results can be non-deterministic.
var HTTPSend = v1.HTTPSend
/**
* GraphQL
*/
// GraphQLParse returns a pair of AST objects from parsing/validation.
var GraphQLParse = v1.GraphQLParse
// GraphQLParseAndVerify returns a boolean and a pair of AST object from parsing/validation.
var GraphQLParseAndVerify = v1.GraphQLParseAndVerify
// GraphQLParseQuery parses the input GraphQL query and returns a JSON
// representation of its AST.
var GraphQLParseQuery = v1.GraphQLParseQuery
// GraphQLParseSchema parses the input GraphQL schema and returns a JSON
// representation of its AST.
var GraphQLParseSchema = v1.GraphQLParseSchema
// GraphQLIsValid returns true if a GraphQL query is valid with a given
// schema, and returns false for all other inputs.
var GraphQLIsValid = v1.GraphQLIsValid
// GraphQLSchemaIsValid returns true if the input is valid GraphQL schema,
// and returns false for all other inputs.
var GraphQLSchemaIsValid = v1.GraphQLSchemaIsValid
/**
* JSON Schema
*/
// JSONSchemaVerify returns empty string if the input is valid JSON schema
// and returns error string for all other inputs.
var JSONSchemaVerify = v1.JSONSchemaVerify
// JSONMatchSchema returns empty array if the document matches the JSON schema,
// and returns non-empty array with error objects otherwise.
var JSONMatchSchema = v1.JSONMatchSchema
/**
* Cloud Provider Helper Functions
*/
var ProvidersAWSSignReqObj = v1.ProvidersAWSSignReqObj
/**
* Rego
*/
var RegoParseModule = v1.RegoParseModule
var RegoMetadataChain = v1.RegoMetadataChain
// RegoMetadataRule returns the metadata for the active rule
var RegoMetadataRule = v1.RegoMetadataRule
/**
* OPA
*/
// Marked non-deterministic because of unpredictable config/environment-dependent results.
var OPARuntime = v1.OPARuntime
/**
* Trace
*/
var Trace = v1.Trace
/**
* Glob
*/
var GlobMatch = v1.GlobMatch
var GlobQuoteMeta = v1.GlobQuoteMeta
/**
* Networking
*/
var NetCIDRIntersects = v1.NetCIDRIntersects
var NetCIDRExpand = v1.NetCIDRExpand
var NetCIDRContains = v1.NetCIDRContains
var NetCIDRContainsMatches = v1.NetCIDRContainsMatches
var NetCIDRMerge = v1.NetCIDRMerge
var NetCIDRIsValid = v1.NetCIDRIsValid
// Marked non-deterministic because DNS resolution results can be non-deterministic.
var NetLookupIPAddr = v1.NetLookupIPAddr
/**
* Semantic Versions
*/
var SemVerIsValid = v1.SemVerIsValid
var SemVerCompare = v1.SemVerCompare
/**
* Printing
*/
// Print is a special built-in function that writes zero or more operands
// to a message buffer. The caller controls how the buffer is displayed. The
// operands may be of any type. Furthermore, unlike other built-in functions,
// undefined operands DO NOT cause the print() function to fail during
// evaluation.
var Print = v1.Print
// InternalPrint represents the internal implementation of the print() function.
// The compiler rewrites print() calls to refer to the internal implementation.
var InternalPrint = v1.InternalPrint
/**
* Deprecated built-ins.
*/
// SetDiff has been replaced by the minus built-in.
var SetDiff = v1.SetDiff
// NetCIDROverlap has been replaced by the `net.cidr_contains` built-in.
var NetCIDROverlap = v1.NetCIDROverlap
// CastArray checks the underlying type of the input. If it is array or set, an array
// containing the values is returned. If it is not an array, an error is thrown.
var CastArray = v1.CastArray
// CastSet checks the underlying type of the input.
// If it is a set, the set is returned.
// If it is an array, the array is returned in set form (all duplicates removed)
// If neither, an error is thrown
var CastSet = v1.CastSet
// CastString returns input if it is a string; if not returns error.
// For formatting variables, see sprintf
var CastString = v1.CastString
// CastBoolean returns input if it is a boolean; if not returns error.
var CastBoolean = v1.CastBoolean
// CastNull returns null if input is null; if not returns error.
var CastNull = v1.CastNull
// CastObject returns the given object if it is null; throws an error otherwise
var CastObject = v1.CastObject
// RegexMatchDeprecated declares `re_match` which has been deprecated. Use `regex.match` instead.
var RegexMatchDeprecated = v1.RegexMatchDeprecated
// All takes a list and returns true if all of the items
// are true. A collection of length 0 returns true.
var All = v1.All
// Any takes a collection and returns true if any of the items
// is true. A collection of length 0 returns false.
var Any = v1.Any
// Builtin represents a built-in function supported by OPA. Every built-in
// function is uniquely identified by a name.
type Builtin = v1.Builtin