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
valueObject
Type: Function
valuestring 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
-
optionsObject? object with the following keysoptions.leftMarkerstring? lead in of expressionoptions.rightMarkerstring? lead out of expressionoptions.markerRegexp(RegExp | string)? expression with lead in / outoptions.valueQuoterQuoter? to quote expanded values by default no special quoting is done and the evaluated result will be direcly inserted into the output stringoptions.evaluateEvaluator? evaluate(expression,context,path) function to evaluate expressions the default evaluation function does a lookup into the propertiesoptions.keepUndefinedValuesboolean? true: is expression resolves to undefind the original string will be used (with surrounding ${})options.maxNestingLevelnumber? max number of recursive calls to expand defaults to 20options.propertiesObject? default properties to evaluate expression against
Returns ExpressionExpander newly created expansion context
Type: Expander
objectpath(optional, default[{value:object}])
Properties used for the default expander implementation
With npm do:
npm install expression-expanderBSD-2-Clause