How to use expression-eval - 4 common examples

To help you get started, we’ve selected a few expression-eval examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github uber / deck.gl / modules / json / src / helpers / parse-expression-string.js View on Github external
export default function parseExpressionString(propValue, configuration) {
  // NOTE: Can be null which represents invalid function. Return null so that prop can be omitted
  if (propValue in cachedExpressionMap) {
    return cachedExpressionMap[propValue];
  }

  let func;
  // Compile with expression-eval
  const ast = expressionEval.parse(propValue);
  if (!ast.right && !ast.left && ast.type === 'Identifier') {
    func = row => {
      return get(row, propValue);
    };
  } else {
    // NOTE: To avoid security risks, the arguments passed to the
    // compiled expression must only give access to pure data (no globals etc)
    // We disable function call syntax
    traverse(ast, node => {
      if (node.type === 'CallExpression') {
        throw new Error('Function calls not allowed in JSON expressions');
      }
    });
    // TODO Something like `expressionEval.eval(ast, {row});` would be useful for unpacking arrays
    func = row => {
      return expressionEval.eval(ast, row);
github kalmhq / kalm / frontend / src / rbac / casbin / coreEnforcer.ts View on Github external
private getExpression(exp: string): Matcher {
    const matcherKey = exp;

    let expression = this.matcherMap.get(matcherKey);

    if (!expression) {
      expression = compile(exp);
      this.matcherMap.set(matcherKey, expression);
    }

    return expression;
  }
github casbin / node-casbin / src / coreEnforcer.ts View on Github external
const expString = this.model.model.get('m')?.get('m')?.value;
    if (!expString) {
      throw new Error('Unable to find matchers in model');
    }

    const effect = this.model.model.get('e')?.get('e')?.value;
    if (!effect) {
      throw new Error('Unable to find policy_effect in model');
    }

    const matcherKey = `${asyncCompile ? 'ASYNC[' : 'SYNC['}${expString}]`;

    let expression = this.matcherMap.get(matcherKey);
    if (!expression) {
      expression = asyncCompile ? compileAsync(expString) : compile(expString);
      this.matcherMap.set(matcherKey, expression);
    }

    let policyEffects: Effect[];
    let matcherResults: number[];

    const p = this.model.model.get('p')?.get('p');
    const policyLen = p?.policy?.length;

    const rTokens = this.model.model.get('r')?.get('r')?.tokens;
    const rTokensLen = rTokens?.length;

    if (policyLen && policyLen !== 0) {
      policyEffects = new Array(policyLen);
      matcherResults = new Array(policyLen);

expression-eval

JavaScript expression parsing and evaluation.

MIT
Latest version published 1 year ago

Package Health Score

56 / 100
Full package analysis