1.0.0 • Published 2 years ago

@fleker/cel-js v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

Common Expression Language - JS

Supported functionality (subset)

x Basic types and primitives x Comparisons x Lists ~ Logic - Ternary conditional, logical AND, logical OR etc

Usage

Create a list

const expr = '["-1"]'
const expected = {
    list_value: {
        values: { string_value: `-1` }
    }
}

const celSpec = new CelSpec();
const ast = celSpec.toAST(expr, {});
const tf = new TextFormatter({}, {})

const cel = tf.format(ast)
expect(cel).toStrictEqual(expected) // Returns `true`

Pass-in variables through a JSON object

const expr = 'x'
const bindings = {
    x: 123
}
const expected = {
    int64_value: 123
}
const celSpec = new CelSpec();
const ast = celSpec.toAST(expr, {});
const bindingsAst = (() => {
    if (!bindings) return {}
    const tf = new TextFormatter({}, bindings)
    let res = {}
    for (const [key, entry] of Object.entries(bindings)) {
        const entryAst = celSpec.toAST(`${entry}`)
        const entryCel = tf.format(entryAst)
        res[key] = entryCel
    }
    return res
})()
const tf = new TextFormatter({}, bindingsAst)

const cel = tf.format(ast)
expect(cel).toStrictEqual(expected) // Returns `true`