UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 2.4 kB
"use strict";var _a;Object.defineProperty(exports,"__esModule",{value:!0}),exports.Stage=void 0;const jsiiDeprecationWarnings=require("../../.warnings.jsii.js"),JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti"),cxapi=require("../../cx-api"),constructs_1=require("constructs"),synthesis_1=require("./private/synthesis"),STAGE_SYMBOL=Symbol.for("@aws-cdk/core.Stage");class Stage extends constructs_1.Construct{constructor(scope,id,props={}){super(scope,id);try{jsiiDeprecationWarnings.aws_cdk_lib_StageProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,Stage),error}if(id!==""&&!/^[a-z][a-z0-9\-\_\.]+$/i.test(id))throw new Error(`invalid stage name "${id}". Stage name must start with a letter and contain only alphanumeric characters, hypens ('-'), underscores ('_') and periods ('.')`);Object.defineProperty(this,STAGE_SYMBOL,{value:!0}),this.parentStage=Stage.of(this),this.region=props.env?.region??this.parentStage?.region,this.account=props.env?.account??this.parentStage?.account,props.permissionsBoundary?._bind(this),this._assemblyBuilder=this.createBuilder(props.outdir),this.stageName=[this.parentStage?.stageName,props.stageName??id].filter(x=>x).join("-")}static of(construct){return constructs_1.Node.of(construct).scopes.reverse().slice(1).find(Stage.isStage)}static isStage(x){return x!==null&&typeof x=="object"&&STAGE_SYMBOL in x}get outdir(){return this._assemblyBuilder.outdir}get assetOutdir(){return this._assemblyBuilder.assetOutdir}get artifactId(){return this.node.path?`assembly-${this.node.path.replace(/\//g,"-").replace(/^-+|-+$/g,"")}`:""}synth(options={}){try{jsiiDeprecationWarnings.aws_cdk_lib_StageSynthesisOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.synth),error}return(!this.assembly||options.force)&&(this.assembly=synthesis_1.synthesize(this,{skipValidation:options.skipValidation,validateOnSynthesis:options.validateOnSynthesis})),this.assembly}createBuilder(outdir){if(this.parentStage&&outdir)throw new Error('"outdir" cannot be specified for nested stages');return this.parentStage?this.parentStage._assemblyBuilder.createNestedAssembly(this.artifactId,this.node.path):new cxapi.CloudAssemblyBuilder(outdir)}}exports.Stage=Stage,_a=JSII_RTTI_SYMBOL_1,Stage[_a]={fqn:"aws-cdk-lib.Stage",version:"2.70.0"};