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)
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 } }
- String
- Number
- BigInt
- Buffer
- Object (key and value will be expanded)
- Array
- Map (key and value will be expanded)
- Set
- Boolean
- Promise
Type: Function
Returns Object expression evaluation result
Type: Object
-
value
Object
Type: Function
-
value
string to be quoted
Returns string quoted value
Type: Function
Returns (string | boolean | number | bigint | Object | Map | Set) expression evaluation result
Type: Object
Creates a new expansion context
-
options
Object? object with the following keys-
options.leftMarker
string? lead in of expression -
options.rightMarker
string? lead out of expression -
options.markerRegexp
RegExp? expression with lead in / out -
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
Type: Expander
-
object
-
path
(optional, default[{value:object}]
)
Properties used for the default expander implementation
With npm do:
npm install expression-expander
BSD-2-Clause