expression-expander

expands expressions in object graphs

Usage no npm install needed!

<script type="module">
  import expressionExpander from 'https://cdn.skypack.dev/expression-expander';
</script>

README

npm License minified size downloads GitHub Issues Build Status Styled with prettier Commitizen friendly Known Vulnerabilities Coverage Status

Expression Expander

Expands \${to be evaluated} expressions in object graphs. The actual expression syntax inside of the \${evaluated} is not defined within this module (only simple key lookup)

example

file.js

import { createContext } from "expression-expander";

const context = createContext();

context.properties = { aKey: "aValue", moreKeys: { a: 1, b: 2 } };

// expanding whole expressions at the key position
console.log(
  JSON.stringify(
    context.expand({ simple: "${aKey}", complex: { "${moreKeys}": {} } })
  )
);

Output

{ "simple": "aValue", "complex": { "a": 1, "b": 2 } }

Any Object of the following types may be expanded

  • String
  • Number
  • BigInt
  • Buffer
  • Object (key and value will be expanded)
  • Array
  • Map (key and value will be expanded)
  • Set
  • Boolean
  • Promise

API

Table of Contents

expression-expander

Evaluator

Type: Function

Parameters

Returns Object expression evaluation result

PathEntry

Type: Object

Properties

Quoter

Type: Function

Parameters

Returns string quoted value

ExpressionExpander

Type: Object

Properties

expand

expand

Parameters

Returns any expanded object

properties

Properties used for the default expander implementation

createContext

Creates a new expansion context

Parameters

  • options Object? object with the following keys (optional, default {})

    • options.valueQuoter Quoter? to quote expanded values by default no special quoting is done and the evaluated result will be direcly inserted into the output string
    • options.evaluate Evaluator? evaluate(expression,context,path) function to evaluate expressions the default evaluation function does a lookup into the properties
    • options.keepUndefinedValues boolean? true: is expression resolves to undefind the original string will be used (with surrounding ${})
    • options.maxNestingLevel number? max number of recursive calls to expand defaults to 20
    • options.properties Object? default properties to evaluate expression against

Returns ExpressionExpander newly created expansion context

install

With npm do:

npm install expression-expander

license

BSD-2-Clause