aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 1.41 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderData=void 0;const core_1=require("../../core");function renderData(scope,data){const obj=core_1.Stack.of(scope).resolve(data);if(typeof obj=="string")return{text:obj,markers:{}};if(typeof obj!="object")throw new Error(`Unexpected: after resolve() data must either be a string or a CloudFormation intrinsic. Got: ${JSON.stringify(obj)}`);let markerIndex=0;const markers={},result=new Array,fnJoin=obj["Fn::Join"];if(fnJoin){const sep=fnJoin[0],parts=fnJoin[1];if(sep!=="")throw new Error(`Unexpected "Fn::Join", expecting separator to be an empty string but got "${sep}"`);for(const part of parts){if(typeof part=="string"){result.push(part);continue}if(typeof part=="object"){addMarker(part);continue}throw new Error(`Unexpected "Fn::Join" part, expecting string or object but got ${typeof part}`)}}else if(obj.Ref||obj["Fn::GetAtt"])addMarker(obj);else throw new Error('Unexpected: Expecting `resolve()` to return "Fn::Join", "Ref" or "Fn::GetAtt"');function addMarker(part){const keys=Object.keys(part);if(keys.length!==1||keys[0]!="Ref"&&keys[0]!="Fn::GetAtt")throw new Error(`Invalid CloudFormation reference. "Ref" or "Fn::GetAtt". Got ${JSON.stringify(part)}`);const marker=`<<marker:0xbaba:${markerIndex++}>>`;result.push(marker),markers[marker]=part}return{text:result.join(""),markers}}exports.renderData=renderData;