aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 6.41 kB
JavaScript
var _a;Object.defineProperty(exports,"__esModule",{value:!0}),exports.AssetManifestBuilder=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var fs=()=>{var tmp=require("fs");return fs=()=>tmp,tmp},path=()=>{var tmp=require("path");return path=()=>tmp,tmp},cxschema=()=>{var tmp=require("../../../cloud-assembly-schema");return cxschema=()=>tmp,tmp},assets_1=()=>{var tmp=require("../assets");return assets_1=()=>tmp,tmp},string_specializer_1=()=>{var tmp=require("../helpers-internal/string-specializer");return string_specializer_1=()=>tmp,tmp};class AssetManifestBuilder{constructor(){this.files={},this.dockerImages={}}defaultAddFileAsset(stack,asset,target){try{jsiiDeprecationWarnings().aws_cdk_lib_Stack(stack),jsiiDeprecationWarnings().aws_cdk_lib_FileAssetSource(asset),jsiiDeprecationWarnings().aws_cdk_lib_AssetManifestFileDestination(target)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.defaultAddFileAsset),error}validateFileAssetSource(asset);const extension=asset.fileName!=null?path().extname(asset.fileName):"",objectKey=(target.bucketPrefix??"")+asset.sourceHash+(asset.packaging===assets_1().FileAssetPackaging.ZIP_DIRECTORY?".zip":extension);return this.addFileAsset(stack,asset.sourceHash,{path:asset.fileName,executable:asset.executable,packaging:asset.packaging},{bucketName:target.bucketName,objectKey,region:(0,string_specializer_1().resolvedOr)(stack.region,void 0),assumeRoleArn:target.role?.assumeRoleArn,assumeRoleExternalId:target.role?.assumeRoleExternalId,assumeRoleAdditionalOptions:target.role?.assumeRoleAdditionalOptions})}defaultAddDockerImageAsset(stack,asset,target){try{jsiiDeprecationWarnings().aws_cdk_lib_Stack(stack),jsiiDeprecationWarnings().aws_cdk_lib_DockerImageAssetSource(asset),jsiiDeprecationWarnings().aws_cdk_lib_AssetManifestDockerImageDestination(target)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.defaultAddDockerImageAsset),error}validateDockerImageAssetSource(asset);const imageTag=`${target.dockerTagPrefix??""}${asset.sourceHash}`,sourceHash=asset.assetName?`${asset.assetName}-${asset.sourceHash}`:asset.sourceHash;return this.addDockerImageAsset(stack,sourceHash,{executable:asset.executable,directory:asset.directoryName,dockerBuildArgs:asset.dockerBuildArgs,dockerBuildSecrets:asset.dockerBuildSecrets,dockerBuildSsh:asset.dockerBuildSsh,dockerBuildTarget:asset.dockerBuildTarget,dockerFile:asset.dockerFile,networkMode:asset.networkMode,platform:asset.platform,dockerOutputs:asset.dockerOutputs,cacheFrom:asset.dockerCacheFrom,cacheTo:asset.dockerCacheTo,cacheDisabled:asset.dockerCacheDisabled},{repositoryName:target.repositoryName,imageTag,region:(0,string_specializer_1().resolvedOr)(stack.region,void 0),assumeRoleArn:target.role?.assumeRoleArn,assumeRoleExternalId:target.role?.assumeRoleExternalId,assumeRoleAdditionalOptions:target.role?.assumeRoleAdditionalOptions})}addFileAsset(stack,sourceHash,source,dest){try{jsiiDeprecationWarnings().aws_cdk_lib_Stack(stack),jsiiDeprecationWarnings().aws_cdk_lib_cloud_assembly_schema_FileSource(source),jsiiDeprecationWarnings().aws_cdk_lib_cloud_assembly_schema_FileDestination(dest)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addFileAsset),error}return this.files[sourceHash]||(this.files[sourceHash]={source,destinations:{}}),this.files[sourceHash].destinations[this.manifestEnvName(stack)]=dest,dest}addDockerImageAsset(stack,sourceHash,source,dest){try{jsiiDeprecationWarnings().aws_cdk_lib_Stack(stack),jsiiDeprecationWarnings().aws_cdk_lib_cloud_assembly_schema_DockerImageSource(source),jsiiDeprecationWarnings().aws_cdk_lib_cloud_assembly_schema_DockerImageDestination(dest)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addDockerImageAsset),error}return this.dockerImages[sourceHash]||(this.dockerImages[sourceHash]={source,destinations:{}}),this.dockerImages[sourceHash].destinations[this.manifestEnvName(stack)]=dest,dest}get hasAssets(){return Object.keys(this.files).length+Object.keys(this.dockerImages).length>0}emitManifest(stack,session,options={},dependencies=[]){try{jsiiDeprecationWarnings().aws_cdk_lib_Stack(stack),jsiiDeprecationWarnings().aws_cdk_lib_ISynthesisSession(session),jsiiDeprecationWarnings().aws_cdk_lib_cloud_assembly_schema_AssetManifestOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.emitManifest),error}const artifactId=`${stack.artifactId}.assets`,manifestFile=`${artifactId}.json`,outPath=path().join(session.assembly.outdir,manifestFile),manifest={version:cxschema().Manifest.version(),files:this.files,dockerImages:this.dockerImages};return fs().writeFileSync(outPath,JSON.stringify(manifest,void 0,2)),session.assembly.addArtifact(artifactId,{type:cxschema().ArtifactType.ASSET_MANIFEST,properties:{file:manifestFile,...options},dependencies:dependencies.length>0?dependencies:void 0}),artifactId}manifestEnvName(stack){return[(0,string_specializer_1().resolvedOr)(stack.account,"current_account"),(0,string_specializer_1().resolvedOr)(stack.region,"current_region")].join("-")}}exports.AssetManifestBuilder=AssetManifestBuilder,_a=JSII_RTTI_SYMBOL_1,AssetManifestBuilder[_a]={fqn:"aws-cdk-lib.AssetManifestBuilder",version:"2.185.0"};function validateFileAssetSource(asset){if(!!asset.executable==!!asset.fileName)throw new Error(`Exactly one of 'fileName' or 'executable' is required, got: ${JSON.stringify(asset)}`);if(!!asset.packaging!=!!asset.fileName)throw new Error(`'packaging' is expected in combination with 'fileName', got: ${JSON.stringify(asset)}`)}function validateDockerImageAssetSource(asset){if(!!asset.executable==!!asset.directoryName)throw new Error(`Exactly one of 'directoryName' or 'executable' is required, got: ${JSON.stringify(asset)}`);check("dockerBuildArgs"),check("dockerBuildTarget"),check("dockerOutputs"),check("dockerFile");function check(key){if(asset[key]&&!asset.directoryName)throw new Error(`'${key}' is only allowed in combination with 'directoryName', got: ${JSON.stringify(asset)}`)}}
;