Files
buildx/policy/builtins.go
Tonis Tiigi 03479f1a96 policy: allow array.flatten and template strings
Enable new builtins from OPA v1.14. The template_strings parser
feature was already active via ast.Features, but evaluating the
$"..." syntax also requires the internal.template_string builtin
to be present in the capabilities allowlist.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-07-06 16:53:49 -07:00

206 lines
3.1 KiB
Go

package policy
import "github.com/open-policy-agent/opa/v1/ast"
func builtins() []*ast.Builtin {
b := []*ast.Builtin{
ast.Equality,
// Assignment (":=")
ast.Assign,
// Membership, infix "in": `x in xs`
ast.Member,
ast.MemberWithKey,
// Comparisons
ast.GreaterThan,
ast.GreaterThanEq,
ast.LessThan,
ast.LessThanEq,
ast.NotEqual,
ast.Equal,
// Arithmetic
ast.Plus,
ast.Minus,
ast.Multiply,
ast.Divide,
ast.Ceil,
ast.Floor,
ast.Round,
ast.Abs,
ast.Rem,
// Bitwise Arithmetic
ast.BitsOr,
ast.BitsAnd,
ast.BitsNegate,
ast.BitsXOr,
ast.BitsShiftLeft,
ast.BitsShiftRight,
// Binary
ast.And,
ast.Or,
// Aggregates
ast.Count,
ast.Sum,
ast.Product,
ast.Max,
ast.Min,
ast.Any,
ast.All,
// Arrays
ast.ArrayConcat,
ast.ArrayFlatten,
ast.ArraySlice,
ast.ArrayReverse,
// Conversions
ast.ToNumber,
// Casts (DEPRECATED)
ast.CastObject,
ast.CastNull,
ast.CastBoolean,
ast.CastString,
ast.CastSet,
ast.CastArray,
// Regular Expressions
ast.RegexIsValid,
ast.RegexMatch,
ast.RegexMatchDeprecated,
ast.RegexSplit,
ast.GlobsMatch,
ast.RegexTemplateMatch,
ast.RegexFind,
ast.RegexFindAllStringSubmatch,
ast.RegexReplace,
// Sets
ast.SetDiff,
ast.Intersection,
ast.Union,
// Strings
ast.AnyPrefixMatch,
ast.AnySuffixMatch,
ast.Concat,
ast.FormatInt,
ast.IndexOf,
ast.IndexOfN,
ast.Substring,
ast.Lower,
ast.Upper,
ast.Contains,
ast.StringCount,
ast.StartsWith,
ast.EndsWith,
ast.Split,
ast.Replace,
ast.ReplaceN,
ast.Trim,
ast.TrimLeft,
ast.TrimPrefix,
ast.TrimRight,
ast.TrimSuffix,
ast.TrimSpace,
ast.Sprintf,
ast.StringReverse,
ast.RenderTemplate,
// Numbers
ast.NumbersRange,
ast.NumbersRangeStep,
ast.RandIntn,
// Encoding
ast.JSONMarshal,
ast.JSONMarshalWithOptions,
ast.JSONUnmarshal,
ast.JSONIsValid,
ast.Base64Encode,
ast.Base64Decode,
ast.Base64IsValid,
ast.Base64UrlEncode,
ast.Base64UrlEncodeNoPad,
ast.Base64UrlDecode,
ast.URLQueryDecode,
ast.URLQueryEncode,
ast.URLQueryEncodeObject,
ast.URLQueryDecodeObject,
ast.YAMLMarshal,
ast.YAMLUnmarshal,
ast.YAMLIsValid,
ast.HexEncode,
ast.HexDecode,
// Object Manipulation
ast.ObjectUnion,
ast.ObjectUnionN,
ast.ObjectRemove,
ast.ObjectFilter,
ast.ObjectGet,
ast.ObjectKeys,
ast.ObjectSubset,
// JSON Object Manipulation
ast.JSONFilter,
ast.JSONRemove,
ast.JSONPatch,
// Time
ast.NowNanos,
ast.ParseNanos,
ast.ParseRFC3339Nanos,
ast.ParseDurationNanos,
ast.Format,
ast.Date,
ast.Clock,
ast.Weekday,
ast.AddDate,
ast.Diff,
// Sort
ast.Sort,
// Types
ast.IsNumber,
ast.IsString,
ast.IsBoolean,
ast.IsArray,
ast.IsSet,
ast.IsObject,
ast.IsNull,
ast.TypeNameBuiltin,
// Glob
ast.GlobMatch,
ast.GlobQuoteMeta,
// Units
ast.UnitsParse,
ast.UnitsParseBytes,
// UUIDs
ast.UUIDRFC4122,
ast.UUIDParse,
// SemVers
ast.SemVerIsValid,
ast.SemVerCompare,
// Printing
ast.Print,
ast.InternalPrint,
// Internal implementation for template strings.
ast.InternalTemplateString,
}
return b
}