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 keysoptions.leftMarker
string? lead in of expressionoptions.rightMarker
string? lead out of expressionoptions.markerRegexp
(RegExp | string)? expression with lead in / outoptions.valueQuoter
Quoter? to quote expanded values by default no special quoting is done and the evaluated result will be direcly inserted into the output stringoptions.evaluate
Evaluator? evaluate(expression,context,path) function to evaluate expressions the default evaluation function does a lookup into the propertiesoptions.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 20options.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