agent-claw: automated task changes

This commit is contained in:
daniel
2026-05-06 18:55:16 -05:00
parent 38905bb1e9
commit 732b00fb66
8494 changed files with 2018127 additions and 4 deletions

View File

@@ -0,0 +1,65 @@
import * as cloudfront from '../../aws-cloudfront';
import type { OriginIpAddressType } from '../../aws-cloudfront';
import * as lambda from '../../aws-lambda';
import * as cdk from '../../core';
/**
* Properties for a Lambda Function URL Origin.
*/
export interface FunctionUrlOriginProps extends cloudfront.OriginProps {
/**
* Specifies how long, in seconds, CloudFront waits for a response from the origin.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(30)
*/
readonly readTimeout?: cdk.Duration;
/**
* Specifies how long, in seconds, CloudFront persists its connection to the origin.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(5)
*/
readonly keepaliveTimeout?: cdk.Duration;
/**
* Specifies which IP protocol CloudFront uses when connecting to your origin.
*
* If your origin uses both IPv4 and IPv6 protocols, you can choose dualstack to help optimize reliability.
*
* @default OriginIpAddressType.IPV4
*/
readonly ipAddressType?: OriginIpAddressType;
}
/**
* Properties for configuring a origin using a standard Lambda Functions URLs.
*/
export interface FunctionUrlOriginBaseProps extends cloudfront.OriginProps {
}
/**
* Properties for configuring a Lambda Functions URLs with OAC.
*/
export interface FunctionUrlOriginWithOACProps extends FunctionUrlOriginProps {
/**
* An optional Origin Access Control
*
* @default - an Origin Access Control will be created.
*/
readonly originAccessControl?: cloudfront.IOriginAccessControlRef;
}
/**
* An Origin for a Lambda Function URL.
*/
export declare class FunctionUrlOrigin extends cloudfront.OriginBase {
private readonly props;
/**
* Create a Lambda Function URL Origin with Origin Access Control (OAC) configured
*/
static withOriginAccessControl(lambdaFunctionUrl: lambda.IFunctionUrl, props?: FunctionUrlOriginWithOACProps): cloudfront.IOrigin;
constructor(lambdaFunctionUrl: lambda.IFunctionUrl, props?: FunctionUrlOriginProps);
protected renderCustomOriginConfig(): cloudfront.CfnDistribution.CustomOriginConfigProperty | undefined;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FunctionUrlOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var utils_1=()=>{var tmp=require("./private/utils");return utils_1=()=>tmp,tmp},cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp},lambda=()=>{var tmp=require("../../aws-lambda");return lambda=()=>tmp,tmp},cdk=()=>{var tmp=require("../../core");return cdk=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};class FunctionUrlOrigin extends cloudfront().OriginBase{props;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.FunctionUrlOrigin",version:"2.252.0"};static withOriginAccessControl(lambdaFunctionUrl,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_IFunctionUrl(lambdaFunctionUrl),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_FunctionUrlOriginWithOACProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withOriginAccessControl),error}return new FunctionUrlOriginWithOAC(lambdaFunctionUrl,props)}constructor(lambdaFunctionUrl,props={}){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_IFunctionUrl(lambdaFunctionUrl),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_FunctionUrlOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,FunctionUrlOrigin),error}const domainName=cdk().Fn.select(2,cdk().Fn.split("/",lambdaFunctionUrl.url));super(domainName,props),this.props=props,(0,utils_1().validateSecondsInRangeOrUndefined)("readTimeout",1,180,props.readTimeout),(0,utils_1().validateSecondsInRangeOrUndefined)("keepaliveTimeout",1,180,props.keepaliveTimeout),this.validateResponseCompletionTimeoutWithReadTimeout(props.responseCompletionTimeout,props.readTimeout)}renderCustomOriginConfig(){return{originSslProtocols:[cloudfront().OriginSslPolicy.TLS_V1_2],originProtocolPolicy:cloudfront().OriginProtocolPolicy.HTTPS_ONLY,originReadTimeout:this.props.readTimeout?.toSeconds(),originKeepaliveTimeout:this.props.keepaliveTimeout?.toSeconds(),ipAddressType:this.props.ipAddressType}}}exports.FunctionUrlOrigin=FunctionUrlOrigin;class FunctionUrlOriginWithOAC extends cloudfront().OriginBase{originAccessControl;functionUrl;props;constructor(lambdaFunctionUrl,props={}){const domainName=cdk().Fn.select(2,cdk().Fn.split("/",lambdaFunctionUrl.url));super(domainName,props),this.functionUrl=lambdaFunctionUrl,this.originAccessControl=props?.originAccessControl,this.props=props,(0,utils_1().validateSecondsInRangeOrUndefined)("readTimeout",1,180,props.readTimeout),(0,utils_1().validateSecondsInRangeOrUndefined)("keepaliveTimeout",1,180,props.keepaliveTimeout)}renderCustomOriginConfig(){return{originSslProtocols:[cloudfront().OriginSslPolicy.TLS_V1_2],originProtocolPolicy:cloudfront().OriginProtocolPolicy.HTTPS_ONLY,originReadTimeout:this.props.readTimeout?.toSeconds(),originKeepaliveTimeout:this.props.keepaliveTimeout?.toSeconds(),ipAddressType:this.props.ipAddressType}}bind(scope,options){const originBindConfig=super.bind(scope,options);return this.originAccessControl||(this.originAccessControl=new(cloudfront()).FunctionUrlOriginAccessControl(scope,"FunctionUrlOriginAccessControl")),this.validateAuthType(scope),this.addInvokePermission(scope,options),{...originBindConfig,originProperty:{...originBindConfig.originProperty,originAccessControlId:this.originAccessControl?.originAccessControlRef.originAccessControlId}}}addInvokePermission(scope,options){const distributionId=options.distributionId;new(lambda()).CfnPermission(scope,`InvokeFromApiFor${options.originId}`,{principal:"cloudfront.amazonaws.com",action:"lambda:InvokeFunctionUrl",functionName:this.functionUrl.functionArn,sourceArn:`arn:${cdk().Aws.PARTITION}:cloudfront::${cdk().Aws.ACCOUNT_ID}:distribution/${distributionId}`})}validateAuthType(scope){const originAccessControlConfig=(this.originAccessControl?.node.children.find(child=>child instanceof cloudfront().CfnOriginAccessControl)).originAccessControlConfig,isAlwaysSigning=originAccessControlConfig.signingBehavior===cloudfront().SigningBehavior.ALWAYS&&originAccessControlConfig.signingProtocol===cloudfront().SigningProtocol.SIGV4,isAuthTypeIsNone=this.functionUrl.authType!==lambda().FunctionUrlAuthType.AWS_IAM;if(isAlwaysSigning&&isAuthTypeIsNone)throw new(cdk()).ValidationError((0,literal_string_1().lit)`FunctionUrlAuthTypeMustBeAwsIam`,"The authType of the Function URL must be set to AWS_IAM when origin access control signing method is SIGV4_ALWAYS.",scope)}}

View File

@@ -0,0 +1,67 @@
import * as cloudfront from '../../aws-cloudfront';
import type * as cdk from '../../core';
/**
* Properties for an Origin backed by an S3 website-configured bucket, load balancer, or custom HTTP server.
*/
export interface HttpOriginProps extends cloudfront.OriginProps {
/**
* Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect to the origin.
*
* @default OriginProtocolPolicy.HTTPS_ONLY
*/
readonly protocolPolicy?: cloudfront.OriginProtocolPolicy;
/**
* The SSL versions to use when interacting with the origin.
*
* @default OriginSslPolicy.TLS_V1_2
*/
readonly originSslProtocols?: cloudfront.OriginSslPolicy[];
/**
* The HTTP port that CloudFront uses to connect to the origin.
*
* @default 80
*/
readonly httpPort?: number;
/**
* The HTTPS port that CloudFront uses to connect to the origin.
*
* @default 443
*/
readonly httpsPort?: number;
/**
* Specifies how long, in seconds, CloudFront waits for a response from the origin, also known as the origin response timeout.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(30)
*/
readonly readTimeout?: cdk.Duration;
/**
* Specifies how long, in seconds, CloudFront persists its connection to the origin.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(5)
*/
readonly keepaliveTimeout?: cdk.Duration;
/**
* Specifies which IP protocol CloudFront uses when connecting to your origin.
*
* If your origin uses both IPv4 and IPv6 protocols, you can choose dualstack to help optimize reliability.
*
* @default undefined - AWS Cloudfront default is IPv4
*/
readonly ipAddressType?: cloudfront.OriginIpAddressType;
}
/**
* An Origin for an HTTP server or S3 bucket configured for website hosting.
*/
export declare class HttpOrigin extends cloudfront.OriginBase {
private readonly props;
constructor(domainName: string, props?: HttpOriginProps);
protected renderCustomOriginConfig(): cloudfront.CfnDistribution.CustomOriginConfigProperty | undefined;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HttpOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var utils_1=()=>{var tmp=require("./private/utils");return utils_1=()=>tmp,tmp},cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp};class HttpOrigin extends cloudfront().OriginBase{props;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.HttpOrigin",version:"2.252.0"};constructor(domainName,props={}){super(domainName,props),this.props=props;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_HttpOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,HttpOrigin),error}(0,utils_1().validateSecondsInRangeOrUndefined)("readTimeout",1,180,props.readTimeout),(0,utils_1().validateSecondsInRangeOrUndefined)("keepaliveTimeout",1,180,props.keepaliveTimeout),this.validateResponseCompletionTimeoutWithReadTimeout(props.responseCompletionTimeout,props.readTimeout)}renderCustomOriginConfig(){return{originSslProtocols:this.props.originSslProtocols??[cloudfront().OriginSslPolicy.TLS_V1_2],originProtocolPolicy:this.props.protocolPolicy??cloudfront().OriginProtocolPolicy.HTTPS_ONLY,httpPort:this.props.httpPort,httpsPort:this.props.httpsPort,originReadTimeout:this.props.readTimeout?.toSeconds(),originKeepaliveTimeout:this.props.keepaliveTimeout?.toSeconds(),ipAddressType:this.props.ipAddressType}}}exports.HttpOrigin=HttpOrigin;

View File

@@ -0,0 +1,9 @@
export * from './function-url-origin';
export * from './http-origin';
export * from './load-balancer-origin';
export * from './s3-origin';
export * from './origin-group';
export * from './rest-api-origin';
export * from './s3-static-website-origin';
export * from './s3-bucket-origin';
export * from './vpc-origin';

View File

@@ -0,0 +1 @@
"use strict";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]})),__exportStar=exports&&exports.__exportStar||function(m,exports2){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports2,p)&&__createBinding(exports2,m,p)};Object.defineProperty(exports,"__esModule",{value:!0});var _noFold;exports.FunctionUrlOrigin=void 0,Object.defineProperty(exports,_noFold="FunctionUrlOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./function-url-origin").FunctionUrlOrigin;return Object.defineProperty(exports,_noFold="FunctionUrlOrigin",{enumerable:!0,configurable:!0,value}),value}}),exports.HttpOrigin=void 0,Object.defineProperty(exports,_noFold="HttpOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./http-origin").HttpOrigin;return Object.defineProperty(exports,_noFold="HttpOrigin",{enumerable:!0,configurable:!0,value}),value}}),exports.LoadBalancerV2Origin=void 0,Object.defineProperty(exports,_noFold="LoadBalancerV2Origin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./load-balancer-origin").LoadBalancerV2Origin;return Object.defineProperty(exports,_noFold="LoadBalancerV2Origin",{enumerable:!0,configurable:!0,value}),value}}),exports.S3Origin=void 0,Object.defineProperty(exports,_noFold="S3Origin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./s3-origin").S3Origin;return Object.defineProperty(exports,_noFold="S3Origin",{enumerable:!0,configurable:!0,value}),value}}),exports.OriginGroup=void 0,Object.defineProperty(exports,_noFold="OriginGroup",{enumerable:!0,configurable:!0,get:()=>{var value=require("./origin-group").OriginGroup;return Object.defineProperty(exports,_noFold="OriginGroup",{enumerable:!0,configurable:!0,value}),value}}),exports.RestApiOrigin=void 0,Object.defineProperty(exports,_noFold="RestApiOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./rest-api-origin").RestApiOrigin;return Object.defineProperty(exports,_noFold="RestApiOrigin",{enumerable:!0,configurable:!0,value}),value}}),exports.S3StaticWebsiteOrigin=void 0,Object.defineProperty(exports,_noFold="S3StaticWebsiteOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./s3-static-website-origin").S3StaticWebsiteOrigin;return Object.defineProperty(exports,_noFold="S3StaticWebsiteOrigin",{enumerable:!0,configurable:!0,value}),value}}),exports.S3BucketOrigin=void 0,Object.defineProperty(exports,_noFold="S3BucketOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./s3-bucket-origin").S3BucketOrigin;return Object.defineProperty(exports,_noFold="S3BucketOrigin",{enumerable:!0,configurable:!0,value}),value}}),exports.VpcOrigin=void 0,Object.defineProperty(exports,_noFold="VpcOrigin",{enumerable:!0,configurable:!0,get:()=>{var value=require("./vpc-origin").VpcOrigin;return Object.defineProperty(exports,_noFold="VpcOrigin",{enumerable:!0,configurable:!0,value}),value}});

View File

@@ -0,0 +1,14 @@
import type { HttpOriginProps } from './http-origin';
import { HttpOrigin } from './http-origin';
import type * as elbv2 from '../../aws-elasticloadbalancingv2';
/**
* Properties for an Origin backed by a v2 load balancer.
*/
export interface LoadBalancerV2OriginProps extends HttpOriginProps {
}
/**
* An Origin for a v2 load balancer.
*/
export declare class LoadBalancerV2Origin extends HttpOrigin {
constructor(loadBalancer: elbv2.ILoadBalancerV2, props?: LoadBalancerV2OriginProps);
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LoadBalancerV2Origin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var http_origin_1=()=>{var tmp=require("./http-origin");return http_origin_1=()=>tmp,tmp};class LoadBalancerV2Origin extends http_origin_1().HttpOrigin{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.LoadBalancerV2Origin",version:"2.252.0"};constructor(loadBalancer,props={}){super(loadBalancer.loadBalancerDnsName,{...props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancingv2_ILoadBalancerV2(loadBalancer),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_LoadBalancerV2OriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,LoadBalancerV2Origin),error}}}exports.LoadBalancerV2Origin=LoadBalancerV2Origin;

View File

@@ -0,0 +1,39 @@
import type { Construct } from 'constructs';
import type * as cloudfront from '../../aws-cloudfront';
/** Construction properties for `OriginGroup`. */
export interface OriginGroupProps {
/**
* The primary origin that should serve requests for this group.
*/
readonly primaryOrigin: cloudfront.IOrigin;
/**
* The fallback origin that should serve requests when the primary fails.
*/
readonly fallbackOrigin: cloudfront.IOrigin;
/**
* The list of HTTP status codes that,
* when returned from the primary origin,
* would cause querying the fallback origin.
*
* @default - 500, 502, 503 and 504
*/
readonly fallbackStatusCodes?: number[];
/**
* The selection criteria for the origin group.
*
* @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html#concept_origin_groups.creating
*
* @default - OriginSelectionCriteria.DEFAULT
*/
readonly selectionCriteria?: cloudfront.OriginSelectionCriteria;
}
/**
* An Origin that represents a group.
* Consists of a primary Origin,
* and a fallback Origin called when the primary returns one of the provided HTTP status codes.
*/
export declare class OriginGroup implements cloudfront.IOrigin {
private readonly props;
constructor(props: OriginGroupProps);
bind(scope: Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OriginGroup=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};class OriginGroup{props;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.OriginGroup",version:"2.252.0"};constructor(props){this.props=props;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_OriginGroupProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,OriginGroup),error}}bind(scope,options){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_OriginBindOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.bind),error}const primaryOriginConfig=this.props.primaryOrigin.bind(scope,options);if(primaryOriginConfig.failoverConfig)throw new(core_1()).ValidationError((0,literal_string_1().lit)`OriginGroupCannotUseOriginWithFailover`,"An OriginGroup cannot use an Origin with its own failover configuration as its primary origin!",scope);return{originProperty:primaryOriginConfig.originProperty,failoverConfig:{failoverOrigin:this.props.fallbackOrigin,statusCodes:this.props.fallbackStatusCodes},selectionCriteria:this.props.selectionCriteria}}}exports.OriginGroup=OriginGroup;

View File

@@ -0,0 +1,5 @@
import * as cdk from '../../../core';
/**
* Throws an error if a duration is defined and not an integer number of seconds within a range.
*/
export declare function validateSecondsInRangeOrUndefined(name: string, min: number, max: number, duration?: cdk.Duration): void;

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSecondsInRangeOrUndefined=validateSecondsInRangeOrUndefined;var cdk=()=>{var tmp=require("../../../core");return cdk=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};function validateSecondsInRangeOrUndefined(name,min,max,duration){if(duration===void 0)return;const value=duration.toSeconds();if(!Number.isInteger(value)||value<min||value>max)throw new(cdk()).UnscopedValidationError((0,literal_string_1().lit)`InvalidDurationRange`,`${name}: Must be an int between ${min} and ${max} seconds (inclusive); received ${value}.`)}

View File

@@ -0,0 +1,36 @@
import type * as apigateway from '../../aws-apigateway';
import * as cloudfront from '../../aws-cloudfront';
import * as cdk from '../../core';
/**
* Properties for an Origin for an API Gateway REST API.
*/
export interface RestApiOriginProps extends cloudfront.OriginProps {
/**
* Specifies how long, in seconds, CloudFront waits for a response from the origin, also known as the origin response timeout.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(30)
*/
readonly readTimeout?: cdk.Duration;
/**
* Specifies how long, in seconds, CloudFront persists its connection to the origin.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(5)
*/
readonly keepaliveTimeout?: cdk.Duration;
}
/**
* An Origin for an API Gateway REST API.
*/
export declare class RestApiOrigin extends cloudfront.OriginBase {
private readonly props;
constructor(restApi: apigateway.RestApiBase, props?: RestApiOriginProps);
protected renderCustomOriginConfig(): cloudfront.CfnDistribution.CustomOriginConfigProperty | undefined;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RestApiOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var utils_1=()=>{var tmp=require("./private/utils");return utils_1=()=>tmp,tmp},cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp},cdk=()=>{var tmp=require("../../core");return cdk=()=>tmp,tmp};class RestApiOrigin extends cloudfront().OriginBase{props;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.RestApiOrigin",version:"2.252.0"};constructor(restApi,props={}){super(cdk().Fn.select(2,cdk().Fn.split("/",restApi.url)),{originPath:props.originPath??`/${cdk().Fn.select(3,cdk().Fn.split("/",restApi.url))}`,...props}),this.props=props;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_apigateway_RestApiBase(restApi),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_RestApiOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,RestApiOrigin),error}(0,utils_1().validateSecondsInRangeOrUndefined)("readTimeout",1,180,props.readTimeout),(0,utils_1().validateSecondsInRangeOrUndefined)("keepaliveTimeout",1,180,props.keepaliveTimeout),this.validateResponseCompletionTimeoutWithReadTimeout(props.responseCompletionTimeout,props.readTimeout)}renderCustomOriginConfig(){return{originSslProtocols:[cloudfront().OriginSslPolicy.TLS_V1_2],originProtocolPolicy:cloudfront().OriginProtocolPolicy.HTTPS_ONLY,originReadTimeout:this.props.readTimeout?.toSeconds(),originKeepaliveTimeout:this.props.keepaliveTimeout?.toSeconds()}}}exports.RestApiOrigin=RestApiOrigin;

View File

@@ -0,0 +1,63 @@
import type { Construct } from 'constructs';
import * as cloudfront from '../../aws-cloudfront';
import { AccessLevel } from '../../aws-cloudfront';
import * as iam from '../../aws-iam';
import type { IBucket } from '../../aws-s3';
import type { IOriginAccessControlRef } from '../../interfaces/generated/aws-cloudfront-interfaces.generated';
/**
* Properties for configuring a origin using a standard S3 bucket
*/
export interface S3BucketOriginBaseProps extends cloudfront.OriginProps {
}
/**
* Properties for configuring a S3 origin with OAC
*/
export interface S3BucketOriginWithOACProps extends S3BucketOriginBaseProps {
/**
* An optional Origin Access Control
*
* @default - an Origin Access Control will be created.
*/
readonly originAccessControl?: IOriginAccessControlRef;
/**
* The level of permissions granted in the bucket policy and key policy (if applicable)
* to the CloudFront distribution.
*
* @default [AccessLevel.READ]
*/
readonly originAccessLevels?: AccessLevel[];
}
/**
* Properties for configuring a S3 origin with OAI
*/
export interface S3BucketOriginWithOAIProps extends S3BucketOriginBaseProps {
/**
* An optional Origin Access Identity
*
* @default - an Origin Access Identity will be created.
*/
readonly originAccessIdentity?: cloudfront.ICloudFrontOriginAccessIdentityRef & iam.IGrantable;
}
/**
* A S3 Bucket Origin
*/
export declare abstract class S3BucketOrigin extends cloudfront.OriginBase {
/**
* Create a S3 Origin with Origin Access Control (OAC) configured
*/
static withOriginAccessControl(bucket: IBucket, props?: S3BucketOriginWithOACProps): cloudfront.IOrigin;
/**
* Create a S3 Origin with Origin Access Identity (OAI) configured
* OAI is a legacy feature and we **strongly** recommend you to use OAC via `withOriginAccessControl()`
* unless it is not supported in your required region (e.g. China regions).
*/
static withOriginAccessIdentity(bucket: IBucket, props?: S3BucketOriginWithOAIProps): cloudfront.IOrigin;
/**
* Create a S3 Origin with default S3 bucket settings (no origin access control)
*/
static withBucketDefaults(bucket: IBucket, props?: cloudfront.OriginProps): cloudfront.IOrigin;
constructor(bucket: IBucket, props?: S3BucketOriginBaseProps);
/** @internal */
protected _bind(scope: Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig;
protected renderS3OriginConfig(): cloudfront.CfnDistribution.S3OriginConfigProperty | undefined;
}

View File

@@ -0,0 +1,6 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.S3BucketOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp},aws_cloudfront_1=()=>{var tmp=require("../../aws-cloudfront");return aws_cloudfront_1=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};const BUCKET_ACTIONS={READ:[{action:"s3:GetObject"}],READ_VERSIONED:[{action:"s3:GetObjectVersion"}],LIST:[{action:"s3:ListBucket",needsBucketArn:!0}],WRITE:[{action:"s3:PutObject"}],DELETE:[{action:"s3:DeleteObject"}]},KEY_ACTIONS={READ:["kms:Decrypt"],WRITE:["kms:Encrypt","kms:GenerateDataKey*"]};class S3BucketOrigin extends cloudfront().OriginBase{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.S3BucketOrigin",version:"2.252.0"};static withOriginAccessControl(bucket,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_S3BucketOriginWithOACProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withOriginAccessControl),error}return new S3BucketOriginWithOAC(bucket,props)}static withOriginAccessIdentity(bucket,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_S3BucketOriginWithOAIProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withOriginAccessIdentity),error}return new S3BucketOriginWithOAI(bucket,props)}static withBucketDefaults(bucket,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_OriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withBucketDefaults),error}return new class extends S3BucketOrigin{constructor(){super(bucket,{...props})}}}constructor(bucket,props){super(bucket.bucketRegionalDomainName,props);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_S3BucketOriginBaseProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,S3BucketOrigin),error}}_bind(scope,options){return super.bind(scope,options)}renderS3OriginConfig(){return{originAccessIdentity:""}}}exports.S3BucketOrigin=S3BucketOrigin;class S3BucketOriginWithOAC extends S3BucketOrigin{bucket;originAccessControl;originAccessLevels;constructor(bucket,props){super(bucket,{...props}),this.bucket=bucket,this.originAccessControl=props?.originAccessControl,this.originAccessLevels=props?.originAccessLevels}bind(scope,options){this.originAccessControl||(this.originAccessControl=new(cloudfront()).S3OriginAccessControl(scope,"S3OriginAccessControl"));const distributionId=options.distributionId,accessLevels=new Set(this.originAccessLevels??[cloudfront().AccessLevel.READ]);accessLevels.has(aws_cloudfront_1().AccessLevel.LIST)&&core_1().Annotations.of(scope).addWarningV2("@aws-cdk/aws-cloudfront-origins:listBucketSecurityRisk",`When the origin with AccessLevel.LIST is associated to the default behavior, it is strongly recommended to ensure the distribution's defaultRootObject is specified,
See the "Setting up OAC with LIST permission" section of module's README for more info.`);const bucketPolicyActions=this.getBucketPolicyActions(accessLevels);if(this.grantDistributionAccessToBucket(distributionId,bucketPolicyActions).statementAdded||core_1().Annotations.of(scope).addWarningV2("@aws-cdk/aws-cloudfront-origins:updateImportedBucketPolicyOac",`Cannot update bucket policy of an imported bucket. You will need to update the policy manually instead.
See the "Setting up OAC with imported S3 buckets" section of module's README for more info.`),this.bucket.encryptionKey){const keyPolicyActions=this.getKeyPolicyActions(accessLevels);this.grantDistributionAccessToKey(keyPolicyActions,this.bucket.encryptionKey).statementAdded||core_1().Annotations.of(scope).addWarningV2("@aws-cdk/aws-cloudfront-origins:updateImportedKeyPolicyOac",`Cannot update key policy of an imported key. You will need to update the policy manually instead.
See the "Updating imported key policies" section of the module's README for more info.`)}const originBindConfig=this._bind(scope,options);return{...originBindConfig,originProperty:{...originBindConfig.originProperty,originAccessControlId:this.originAccessControl.originAccessControlRef.originAccessControlId}}}getBucketPolicyActions(accessLevels){return[...accessLevels].flatMap(accessLevel=>BUCKET_ACTIONS[accessLevel]??[])}getKeyPolicyActions(accessLevels){return[...accessLevels].flatMap(accessLevel=>KEY_ACTIONS[accessLevel]??[])}grantDistributionAccessToBucket(distributionId,policyActions){const resources=[this.bucket.arnForObjects("*")];policyActions.some(pa=>pa.needsBucketArn)&&resources.push(this.bucket.bucketArn);const oacBucketPolicyStatement=new(iam()).PolicyStatement({effect:iam().Effect.ALLOW,principals:[new(iam()).ServicePrincipal("cloudfront.amazonaws.com")],actions:policyActions.map(pa=>pa.action),resources,conditions:{StringEquals:{"AWS:SourceArn":`arn:${core_1().Aws.PARTITION}:cloudfront::${core_1().Aws.ACCOUNT_ID}:distribution/${distributionId}`}}});return this.bucket.addToResourcePolicy(oacBucketPolicyStatement)}grantDistributionAccessToKey(actions,key){const oacKeyPolicyStatement=new(iam()).PolicyStatement({effect:iam().Effect.ALLOW,principals:[new(iam()).ServicePrincipal("cloudfront.amazonaws.com")],actions,resources:["*"],conditions:{ArnLike:{"AWS:SourceArn":`arn:${core_1().Aws.PARTITION}:cloudfront::${core_1().Aws.ACCOUNT_ID}:distribution/*`}}});return core_1().Annotations.of(key.node.scope).addWarningV2("@aws-cdk/aws-cloudfront-origins:wildcardKeyPolicyForOac",`To avoid a circular dependency between the KMS key, Bucket, and Distribution during the initial deployment, a wildcard is used in the Key policy condition to match all Distribution IDs.
After deploying once, it is strongly recommended to further scope down the policy for best security practices by following the guidance in the "Using OAC for a SSE-KMS encrypted S3 origin" section in the module README.`),key.addToResourcePolicy(oacKeyPolicyStatement)}}class S3BucketOriginWithOAI extends S3BucketOrigin{bucket;originAccessIdentity;constructor(bucket,props){super(bucket,{...props}),this.bucket=bucket,this.originAccessIdentity=props?.originAccessIdentity}bind(scope,options){if(!this.originAccessIdentity){const bucketStack=core_1().Stack.of(this.bucket),bucketInDifferentStack=bucketStack!==core_1().Stack.of(scope),oaiScope=bucketInDifferentStack?bucketStack:scope,oaiId=bucketInDifferentStack?`${core_1().Names.uniqueId(scope)}S3Origin`:"S3Origin";this.originAccessIdentity=new(cloudfront()).OriginAccessIdentity(oaiScope,oaiId,{comment:`Identity for ${options.originId}`})}return this.bucket.addToResourcePolicy(new(iam()).PolicyStatement({resources:[this.bucket.arnForObjects("*")],actions:["s3:GetObject"],principals:[this.originAccessIdentity.grantPrincipal]})).statementAdded||core_1().Annotations.of(scope).addWarningV2("@aws-cdk/aws-cloudfront-origins:updateImportedBucketPolicyOai",`Cannot update bucket policy of an imported bucket. You will need to update the policy manually instead.
See the "Setting up OAI with imported S3 buckets (legacy)" section of module's README for more info.`),this._bind(scope,options)}renderS3OriginConfig(){if(!this.originAccessIdentity)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`OriginAccessIdentityCannotBeUndefined`,"Origin access identity cannot be undefined");return{originAccessIdentity:`origin-access-identity/cloudfront/${this.originAccessIdentity.cloudFrontOriginAccessIdentityRef.cloudFrontOriginAccessIdentityId}`}}}

View File

@@ -0,0 +1,29 @@
import type { Construct } from 'constructs';
import * as cloudfront from '../../aws-cloudfront';
import * as iam from '../../aws-iam';
import type * as s3 from '../../aws-s3';
/**
* Properties to use to customize an S3 Origin.
*/
export interface S3OriginProps extends cloudfront.OriginProps {
/**
* An optional Origin Access Identity of the origin identity cloudfront will use when calling your s3 bucket.
*
* @default - An Origin Access Identity will be created.
*/
readonly originAccessIdentity?: cloudfront.ICloudFrontOriginAccessIdentityRef & iam.IGrantable;
}
/**
* An Origin that is backed by an S3 bucket.
*
* If the bucket is configured for website hosting, this origin will be configured to use the bucket as an
* HTTP server origin and will use the bucket's configured website redirects and error handling. Otherwise,
* the origin is created as a bucket origin and will use CloudFront's redirect and error handling.
*
* @deprecated Use `S3BucketOrigin` or `S3StaticWebsiteOrigin` instead.
*/
export declare class S3Origin implements cloudfront.IOrigin {
private readonly origin;
constructor(bucket: s3.IBucket, props?: S3OriginProps);
bind(scope: Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.S3Origin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var http_origin_1=()=>{var tmp=require("./http-origin");return http_origin_1=()=>tmp,tmp},cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>tmp,tmp},cdk=()=>{var tmp=require("../../core");return cdk=()=>tmp,tmp};class S3Origin{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.S3Origin",version:"2.252.0"};origin;constructor(bucket,props={}){try{jsiiDeprecationWarnings().print("aws-cdk-lib.aws_cloudfront_origins.S3Origin","Use `S3BucketOrigin` or `S3StaticWebsiteOrigin` instead."),jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_S3OriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,S3Origin),error}this.origin=bucket.isWebsite?new(http_origin_1()).HttpOrigin(bucket.bucketWebsiteDomainName,{protocolPolicy:cloudfront().OriginProtocolPolicy.HTTP_ONLY,...props}):new S3BucketOrigin(bucket,props)}bind(scope,options){try{jsiiDeprecationWarnings().print("aws-cdk-lib.aws_cloudfront_origins.S3Origin#bind","Use `S3BucketOrigin` or `S3StaticWebsiteOrigin` instead."),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_OriginBindOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.bind),error}return this.origin.bind(scope,options)}}exports.S3Origin=S3Origin;class S3BucketOrigin extends cloudfront().OriginBase{bucket;originAccessIdentity;constructor(bucket,{originAccessIdentity,...props}){super(bucket.bucketRegionalDomainName,props),this.bucket=bucket,originAccessIdentity&&(this.originAccessIdentity=originAccessIdentity)}bind(scope,options){if(!this.originAccessIdentity){const bucketStack=cdk().Stack.of(this.bucket),bucketInDifferentStack=bucketStack!==cdk().Stack.of(scope),oaiScope=bucketInDifferentStack?bucketStack:scope,oaiId=bucketInDifferentStack?`${cdk().Names.uniqueId(scope)}S3Origin`:"S3Origin";this.originAccessIdentity=new(cloudfront()).OriginAccessIdentity(oaiScope,oaiId,{comment:`Identity for ${options.originId}`})}return this.bucket.addToResourcePolicy(new(iam()).PolicyStatement({resources:[this.bucket.arnForObjects("*")],actions:["s3:GetObject"],principals:[this.originAccessIdentity.grantPrincipal]})),super.bind(scope,options)}renderS3OriginConfig(){return{originAccessIdentity:`origin-access-identity/cloudfront/${this.originAccessIdentity.cloudFrontOriginAccessIdentityRef.cloudFrontOriginAccessIdentityId}`}}}

View File

@@ -0,0 +1,14 @@
import type { HttpOriginProps } from './http-origin';
import { HttpOrigin } from './http-origin';
import type { IBucket } from '../../aws-s3';
/**
* Properties for configuring a origin using a S3 bucket configured as a website endpoint
*/
export interface S3StaticWebsiteOriginProps extends HttpOriginProps {
}
/**
* An Origin for a S3 bucket configured as a website endpoint
*/
export declare class S3StaticWebsiteOrigin extends HttpOrigin {
constructor(bucket: IBucket, props?: S3StaticWebsiteOriginProps);
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.S3StaticWebsiteOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var http_origin_1=()=>{var tmp=require("./http-origin");return http_origin_1=()=>tmp,tmp},cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp};class S3StaticWebsiteOrigin extends http_origin_1().HttpOrigin{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.S3StaticWebsiteOrigin",version:"2.252.0"};constructor(bucket,props){super(bucket.bucketWebsiteDomainName,{protocolPolicy:cloudfront().OriginProtocolPolicy.HTTP_ONLY,...props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_s3_IBucket(bucket),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_S3StaticWebsiteOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,S3StaticWebsiteOrigin),error}}}exports.S3StaticWebsiteOrigin=S3StaticWebsiteOrigin;

View File

@@ -0,0 +1,65 @@
import * as cloudfront from '../../aws-cloudfront';
import type { IInstance } from '../../aws-ec2';
import type { IApplicationLoadBalancer, INetworkLoadBalancer } from '../../aws-elasticloadbalancingv2';
import * as cdk from '../../core';
/**
* Properties to define a VPC origin.
*/
export interface VpcOriginProps extends cloudfront.OriginProps {
/**
* The domain name associated with your VPC origin.
* @default - The default domain name of the endpoint.
*/
readonly domainName?: string;
/**
* Specifies how long, in seconds, CloudFront waits for a response from the origin, also known as the origin response timeout.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(30)
*/
readonly readTimeout?: cdk.Duration;
/**
* Specifies how long, in seconds, CloudFront persists its connection to the origin.
* The valid range is from 1 to 180 seconds, inclusive.
*
* Note that values over 60 seconds are possible only after a limit increase request for the origin response timeout quota
* has been approved in the target account; otherwise, values over 60 seconds will produce an error at deploy time.
*
* @default Duration.seconds(5)
*/
readonly keepaliveTimeout?: cdk.Duration;
}
/**
* Properties to define a VPC origin with endpoint.
*/
export interface VpcOriginWithEndpointProps extends VpcOriginProps, cloudfront.VpcOriginOptions {
}
/**
* Represents a distribution's VPC origin.
*/
export declare abstract class VpcOrigin extends cloudfront.OriginBase {
protected readonly props: VpcOriginProps;
/**
* Create a VPC origin with an existing VPC origin resource.
*/
static withVpcOrigin(origin: cloudfront.IVpcOrigin, props?: VpcOriginProps): VpcOrigin;
/**
* Create a VPC origin with an EC2 instance.
*/
static withEc2Instance(instance: IInstance, props?: VpcOriginWithEndpointProps): VpcOrigin;
/**
* Create a VPC origin with an Application Load Balancer.
*/
static withApplicationLoadBalancer(alb: IApplicationLoadBalancer, props?: VpcOriginWithEndpointProps): VpcOrigin;
/**
* Create a VPC origin with a Network Load Balancer.
*/
static withNetworkLoadBalancer(nlb: INetworkLoadBalancer, props?: VpcOriginWithEndpointProps): VpcOrigin;
/** @jsii suppress JSII5019 For historic reasons */
protected vpcOrigin?: cloudfront.IVpcOrigin;
protected constructor(domainName: string, props: VpcOriginProps);
protected renderVpcOriginConfig(): cloudfront.CfnDistribution.VpcOriginConfigProperty | undefined;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VpcOrigin=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var cloudfront=()=>{var tmp=require("../../aws-cloudfront");return cloudfront=()=>tmp,tmp},cdk=()=>{var tmp=require("../../core");return cdk=()=>tmp,tmp},utils_1=()=>{var tmp=require("./private/utils");return utils_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};class VpcOrigin extends cloudfront().OriginBase{props;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_cloudfront_origins.VpcOrigin",version:"2.252.0"};static withVpcOrigin(origin,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_IVpcOrigin(origin),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_VpcOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withVpcOrigin),error}return new VpcOriginWithVpcOrigin(origin,props)}static withEc2Instance(instance,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_IInstance(instance),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_VpcOriginWithEndpointProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withEc2Instance),error}return new VpcOriginWithEndpoint(cloudfront().VpcOriginEndpoint.ec2Instance(instance),props)}static withApplicationLoadBalancer(alb,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancingv2_IApplicationLoadBalancer(alb),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_VpcOriginWithEndpointProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withApplicationLoadBalancer),error}return new VpcOriginWithEndpoint(cloudfront().VpcOriginEndpoint.applicationLoadBalancer(alb),props)}static withNetworkLoadBalancer(nlb,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancingv2_INetworkLoadBalancer(nlb),jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_VpcOriginWithEndpointProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.withNetworkLoadBalancer),error}return new VpcOriginWithEndpoint(cloudfront().VpcOriginEndpoint.networkLoadBalancer(nlb),props)}vpcOrigin;constructor(domainName,props){super(domainName,props),this.props=props;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudfront_origins_VpcOriginProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,VpcOrigin),error}(0,utils_1().validateSecondsInRangeOrUndefined)("readTimeout",1,180,props.readTimeout),(0,utils_1().validateSecondsInRangeOrUndefined)("keepaliveTimeout",1,180,props.keepaliveTimeout)}renderVpcOriginConfig(){if(!this.vpcOrigin)throw new(cdk()).UnscopedValidationError((0,literal_string_1().lit)`VpcOriginCannotBeUndefined`,"VPC origin cannot be undefined.");return{vpcOriginId:this.vpcOrigin.vpcOriginId,originReadTimeout:this.props.readTimeout?.toSeconds(),originKeepaliveTimeout:this.props.keepaliveTimeout?.toSeconds()}}}exports.VpcOrigin=VpcOrigin;class VpcOriginWithVpcOrigin extends VpcOrigin{vpcOrigin;constructor(vpcOrigin,props={}){const domainName=props.domainName??vpcOrigin.domainName;if(!domainName)throw new(cdk()).UnscopedValidationError((0,literal_string_1().lit)`DomainNameMustBeSpecified`,"'domainName' must be specified when no default domain name is defined.");super(domainName,props),this.vpcOrigin=vpcOrigin}}class VpcOriginWithEndpoint extends VpcOrigin{vpcOriginEndpoint;props;constructor(vpcOriginEndpoint,props={}){const domainName=props.domainName??vpcOriginEndpoint.domainName;if(!domainName)throw new(cdk()).UnscopedValidationError((0,literal_string_1().lit)`DomainNameMustBeSpecifiedForEndpoint`,"'domainName' must be specified when no default domain name is defined.");super(domainName,props),this.vpcOriginEndpoint=vpcOriginEndpoint,this.props=props}bind(_scope,options){return this.vpcOrigin??=new(cloudfront()).VpcOrigin(_scope,"VpcOrigin",{endpoint:this.vpcOriginEndpoint,vpcOriginName:this.props.vpcOriginName,httpPort:this.props.httpPort,httpsPort:this.props.httpsPort,protocolPolicy:this.props.protocolPolicy,originSslProtocols:this.props.originSslProtocols}),super.bind(_scope,options)}}