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
-
value
Object
Quoter
Type: Function
Parameters
-
value
string to be quoted
Returns string quoted value
ExpressionExpander
Type: Object
Properties
-
properties
Object
expand
expand
Parameters
-
object
(string | boolean | number | bigint | Object | Map | Set) to expand -
path
Array<PathEntry> describing the location in the to expanding data source (optional, default[{value:object}]
)
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