aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 4.75 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.addStackArtifactToAssembly=addStackArtifactToAssembly,exports.contentHash=contentHash,exports.assertBound=assertBound;var crypto=()=>{var tmp=__importStar(require("crypto"));return crypto=()=>tmp,tmp},fs=()=>{var tmp=__importStar(require("fs"));return fs=()=>tmp,tmp},path=()=>{var tmp=__importStar(require("path"));return path=()=>tmp,tmp},constructs_1=()=>{var tmp=require("constructs");return constructs_1=()=>tmp,tmp},cxschema=()=>{var tmp=__importStar(require("../../../cloud-assembly-schema"));return cxschema=()=>tmp,tmp},errors_1=()=>{var tmp=require("../errors");return errors_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../private/literal-string");return literal_string_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};function addStackArtifactToAssembly(session,stack,stackProps,additionalStackDependencies){const stackTags=stack.tags.tagValues();if(Object.entries(stackTags).length>0){const resolvedTags=Object.entries(stackTags).filter(([k,v])=>!(token_1().Token.isUnresolved(k)||token_1().Token.isUnresolved(v))),unresolvedTags=Object.entries(stackTags).filter(([k,v])=>token_1().Token.isUnresolved(k)||token_1().Token.isUnresolved(v));if(unresolvedTags.length>0){const rendered=unresolvedTags.map(([k,v])=>`${token_1().Token.isUnresolved(k)?"<TOKEN>":k}=${token_1().Token.isUnresolved(v)?"<TOKEN>":v}`).join(", ");stack.node.addMetadata(cxschema().ArtifactMetadataEntryType.WARN,`Ignoring stack tags that contain deploy-time values (found: ${rendered}). Apply tags containing deploy-time values to resources only, avoid tagging stacks (for example using { excludeResourceTypes: ['aws:cdk:stack'] }).`)}resolvedTags.length>0&&stack.node.addMetadata(cxschema().ArtifactMetadataEntryType.STACK_TAGS,resolvedTags.map(([key,value])=>({key,value})))}const deps=[...stack.dependencies.map(s=>s.artifactId),...additionalStackDependencies],meta=collectStackMetadata(stack),stackNameProperty=stack.stackName===stack.artifactId?{}:{stackName:stack.stackName},properties={templateFile:stack.templateFile,terminationProtection:stack.terminationProtection,tags:nonEmptyDict(stackTags),validateOnSynth:session.validateOnSynth,notificationArns:stack._notificationArns,...stackProps,...stackNameProperty},metaFile=`${stack.artifactId}.metadata.json`,hasMeta=Object.keys(meta).length>0;hasMeta&&fs().writeFileSync(path().join(session.assembly.outdir,metaFile),JSON.stringify(meta,void 0,2),"utf-8"),session.assembly.addArtifact(stack.artifactId,{type:cxschema().ArtifactType.AWS_CLOUDFORMATION_STACK,environment:stack.environment,properties,dependencies:deps.length>0?deps:void 0,additionalMetadataFile:hasMeta?metaFile:void 0,displayName:stack.node.path})}function collectStackMetadata(stack){const output={},queue=[stack];let next;for(;next=queue.shift();)stack_1().Stack.isStack(next)&&next!==stack&&next.nestedStackParent===void 0||(handleNode(next),queue.push(...next.node.children));return output;function handleNode(node){node.node.metadata.length>0&&(output[constructs_1().Node.PATH_SEP+node.node.path]=node.node.metadata.map(md=>[cxschema().ArtifactMetadataEntryType.ERROR,cxschema().ArtifactMetadataEntryType.WARN,cxschema().ArtifactMetadataEntryType.INFO].includes(md.type)?md:stack.resolve(md)))}}function contentHash(content){return crypto().createHash("sha256").update(content).digest("hex")}function assertBound(x){if(x===null&&x===void 0)throw new(errors_1()).UnscopedValidationError((0,literal_string_1().lit)`CallBindstackFirst`,"You must call bindStack() first")}function nonEmptyDict(xs){return Object.keys(xs).length>0?xs:void 0}