/ lib / embed.js
embed.js
 1  import { buildEmbeddedObject } from './internal-builders.js';
 2  
 3  const { isArray } = Array;
 4  const isString = (val) => typeof val === 'string';
 5  const isNumber = (val) => typeof val === 'number';
 6  
 7  export const embedExpression = (expr) => {
 8    if (isString(expr) || expr == null || typeof expr === 'boolean' || isNumber(expr)) {
 9      return expr;
10    } else if (isArray(expr)) {
11      return expr.map((value) => embedExpression(value));
12    } else if (typeof expr === 'object') {
13      return buildEmbeddedObject(
14        Object.fromEntries(
15          Object.entries(expr).map(({ 0: key, 1: value }) => [key, embedExpression(value)]),
16        ),
17      );
18    } else {
19      throw new Error();
20    }
21  };
22  
23  export { buildEmbeddedObject, buildEmbeddedObject as o };