UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 2.22 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.deployTimeLookup=deployTimeLookup;var cxapi=()=>{var tmp=require("../../../cx-api");return cxapi=()=>tmp,tmp},region_info_1=()=>{var tmp=require("../../../region-info");return region_info_1=()=>tmp,tmp},cfn_mapping_1=()=>{var tmp=require("../cfn-mapping");return cfn_mapping_1=()=>tmp,tmp},cfn_pseudo_1=()=>{var tmp=require("../cfn-pseudo");return cfn_pseudo_1=()=>tmp,tmp};function deployTimeLookup(stack,factName,lookupMap,defaultValue){if(Object.values(lookupMap).length===0){if(defaultValue===void 0)throw new Error(`region-info: don't have any information for ${factName}. Use 'Fact.register' to provide values, or add partitions to the '${cxapi().TARGET_PARTITIONS}' context value.`);return defaultValue}const pattern=findValuePattern(lookupMap);if(pattern!==void 0)return pattern;const[factClass,factParam]=factName.includes(":")?factName.split(":"):[factName,"value"],mapId=`${ucfirst(factClass)}Map`,factKey=factParam.replace(/[^a-zA-Z0-9]/g,"x");let mapping=stack.node.tryFindChild(mapId);mapping||(mapping=new(cfn_mapping_1()).CfnMapping(stack,mapId));for(const[region,value]of Object.entries(lookupMap))mapping.setValue(region,factKey,value);return mapping.findInMap(cfn_pseudo_1().Aws.REGION,factKey)}function ucfirst(x){return`${x.slice(0,1).toUpperCase()}${x.slice(1)}`}function findValuePattern(regionMap){const simplified={...regionMap},urlSuffixes=Object.keys(simplified).map(urlSuffix);if(!allSame(urlSuffixes)&&Object.entries(simplified).every(([region,value])=>value.includes(urlSuffix(region))))for(const region in simplified)simplified[region]=replaceAll(simplified[region],urlSuffix(region),cfn_pseudo_1().Aws.URL_SUFFIX);if(Object.entries(simplified).every(([region,value])=>value.includes(region)))for(const region in simplified)simplified[region]=replaceAll(simplified[region],region,cfn_pseudo_1().Aws.REGION);const values=Object.values(simplified);if(allSame(values))return values[0]}function allSame(xs){return xs.every(x=>x===xs[0])}function urlSuffix(region){return region_info_1().RegionInfo.get(region)?.domainSuffix??"amazonaws.com"}function replaceAll(x,pat,replacement){return x.split(pat).join(replacement)}