From c575c4e34f34b8db30d1b387b9b2e290500a2aff Mon Sep 17 00:00:00 2001 From: Timo Stamm Date: Tue, 22 Apr 2025 15:58:27 +0200 Subject: [PATCH] Implement getField CEL function --- packages/protovalidate/src/cel.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/protovalidate/src/cel.ts b/packages/protovalidate/src/cel.ts index 174b7f7f..58b29c61 100644 --- a/packages/protovalidate/src/cel.ts +++ b/packages/protovalidate/src/cel.ts @@ -24,6 +24,7 @@ import { type CelEnv, CelError, CelList, + CelObject, type CelResult, type CelVal, createEnv, @@ -234,6 +235,18 @@ function createCustomFuncs(): FuncRegistry { }, ), ); + reg.add( + Func.binary( + "getField", + ["dyn_string_get_field_dyn"], + (id: number, lhs: CelVal, rhs: CelVal): CelResult | undefined => { + if (typeof rhs == "string" && lhs instanceof CelObject) { + return lhs.accessByName(id, rhs); + } + return undefined; + }, + ), + ); return reg; }