npm.io
0.6.1 • Published 1 month ago

@bufbuild/cel

Licence
Apache-2.0
Version
0.6.1
Deps
2
Size
880 kB
Vulns
0
Weekly
0
Stars
38

@bufbuild/cel

This package provides a CEL evaluator for ECMAScript.

Example

Let's evaluate a CEL expression that has the variable name and uses the strings extension functions:

import { run } from "@bufbuild/cel";
import { strings } from "@bufbuild/cel/ext";

run(
  `name.indexOf('taco') == 0`, // CEL expression to run
  { name: "tacocat" }, // Bind a value to the variable `name`
  { funcs: strings }, // Register `indexOf` and other string extensions
); // true

That's it!

For an example of creating a reusable evaluator and more, refer to example.ts.

Types

The table below maps JS types to CEL types.

  • Input column is any value that can be passed to the evaluator as input. (CelInput)
  • CEL Type column is the CEL type it will represent at runtime. (CelType)
  • Output column is the type of values that are returned by the evaluator, either as returned from eval or as arguments to function implementations. (CelValue)
Input (JS Type) CEL Type (runtime) Output (JS Type)
number, {Float,Double}Value double number
bigint, all signed int wrappers int bigint
CelUint, all unsigned int wrappers uint CelUint
string, StringValue string string
Uint8Array, BytesValue bytes Uint8Array
Map, ReflectMap map CelMap
any[], ReflectList list CelList
boolean, BoolValue bool boolean
null null_type null
CelType type CelType
Timestamp, ReflectMessage timestamp ReflectMessage
Duration, ReflectMessage duration ReflectMessage
Message, ReflectMessage, Any <typeName> ReflectMessage
google.protobuf.Value and friends double/bool/string/list/map/null number/boolean/string/CelList/CelMap

Keywords