aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 4.18 kB
JavaScript
;var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||(function(){var ownKeys=function(o){return ownKeys=Object.getOwnPropertyNames||function(o2){var ar=[];for(var k in o2)Object.prototype.hasOwnProperty.call(o2,k)&&(ar[ar.length]=k);return ar},ownKeys(o)};return function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k=ownKeys(mod),i=0;i<k.length;i++)k[i]!=="default"&&__createBinding(result,mod,k[i]);return __setModuleDefault(result,mod),result}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.GeneratedWhenNeededMarker=void 0,exports.generatePhysicalName=generatePhysicalName,exports.isGeneratedWhenNeededMarker=isGeneratedWhenNeededMarker;var crypto=()=>{var tmp=__importStar(require("crypto"));return crypto=()=>tmp,tmp},constructs_1=()=>{var tmp=require("constructs");return constructs_1=()=>tmp,tmp},token_map_1=()=>{var tmp=require("./token-map");return token_map_1=()=>tmp,tmp},errors_1=()=>{var tmp=require("../errors");return errors_1=()=>tmp,tmp},names_1=()=>{var tmp=require("../names");return names_1=()=>tmp,tmp},stack_1=()=>{var tmp=require("../stack");return stack_1=()=>tmp,tmp},token_1=()=>{var tmp=require("../token");return token_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("./literal-string");return literal_string_1=()=>tmp,tmp};function generatePhysicalName(resource){const stack=stack_1().Stack.of(resource),stackPart=new PrefixNamePart(stack.stackName,25),idPart=new SuffixNamePart(names_1().Names.nodeUniqueId(resource.node),24),region=stack.region;if(token_1().Token.isUnresolved(region)||!region)throw new(errors_1()).ValidationError((0,literal_string_1().lit)`CannotGeneratePhysicalNameRegionUnresolved`,`Cannot generate a physical name for ${constructs_1().Node.of(resource).path}, because the region is un-resolved or missing`,resource);const account=stack.account;if(token_1().Token.isUnresolved(account)||!account)throw new(errors_1()).ValidationError((0,literal_string_1().lit)`CannotGeneratePhysicalNameAccountUnresolved`,`Cannot generate a physical name for ${constructs_1().Node.of(resource).path}, because the account is un-resolved or missing`,resource);const parts=[stackPart,idPart].map(part=>part.generate()),hash=crypto().createHash("sha256").update(stackPart.bareStr).update(idPart.bareStr).update(region).update(account).digest("hex").slice(0,12);return[...parts,hash].join("").toLowerCase()}class NamePart{bareStr;constructor(bareStr){this.bareStr=bareStr}}class PrefixNamePart extends NamePart{prefixLength;constructor(bareStr,prefixLength){super(bareStr),this.prefixLength=prefixLength}generate(){return this.bareStr.slice(0,this.prefixLength)}}class SuffixNamePart extends NamePart{suffixLength;constructor(str,suffixLength){super(str),this.suffixLength=suffixLength}generate(){const strLen=this.bareStr.length,startIndex=Math.max(strLen-this.suffixLength,0);return this.bareStr.slice(startIndex,strLen)}}const GENERATE_IF_NEEDED_SYMBOL=Symbol.for("@aws-cdk/core.<private>.GenerateIfNeeded");class GeneratedWhenNeededMarker{creationStack=["Token stack traces are no longer captured"];constructor(){Object.defineProperty(this,GENERATE_IF_NEEDED_SYMBOL,{value:!0})}resolve(_ctx){throw new(errors_1()).UnscopedValidationError((0,literal_string_1().lit)`InvalidPhysicalNameMarker`,'Invalid physical name passed to CloudFormation. Use "this.physicalName" instead')}toString(){return"PhysicalName.GENERATE_IF_NEEDED"}}exports.GeneratedWhenNeededMarker=GeneratedWhenNeededMarker;function isGeneratedWhenNeededMarker(val){const token=token_map_1().TokenMap.instance().lookupString(val);return!!token&&GENERATE_IF_NEEDED_SYMBOL in token}