export function renderIntrinsics()

in packages/@aws-cdk/cloudformation-diff/lib/render-intrinsics.ts [21:54]


export function renderIntrinsics(x: any): any {
  if (Array.isArray(x)) {
    return x.filter(el => !isNoValue(el)).map(renderIntrinsics);
  }

  if (isNoValue(x)) {
    return undefined;
  }

  const intrinsic = getIntrinsic(x);
  if (intrinsic) {
    if (intrinsic.fn === 'Ref') {
      return '${' + intrinsic.args + '}';
    }
    if (intrinsic.fn === 'Fn::GetAtt') {
      return '${' + intrinsic.args[0] + '.' + intrinsic.args[1] + '}';
    }
    if (intrinsic.fn === 'Fn::Join') {
      return unCloudFormationFnJoin(intrinsic.args[0], intrinsic.args[1]);
    }
    return stringifyIntrinsic(intrinsic.fn, intrinsic.args);
  }

  if (typeof x === 'object' && x !== null) {
    const ret: any = {};
    for (const [key, value] of Object.entries(x)) {
      if (!isNoValue(value)) {
        ret[key] = renderIntrinsics(value);
      }
    }
    return ret;
  }
  return x;
}