UNPKG

@altostra/core

Version:

Core library for shared types and logic

126 lines (125 loc) 5.15 kB
import type { Integer } from "../../../common/CustomTypes/Integer"; import type { RootedPath } from "../../../common/CustomTypes/RootedPath"; import type { Maybe } from "../../../common/Maybe"; import type { OriginAccessIdentity } from "../../OriginAccessIdentity"; import type { Path } from "../../Path"; import type { AwsResourceCommon, CloudFormationTags } from "../common"; import type { CloudFormationString } from "../IntrinsicFunctions"; export declare type DistributionType = 'AWS::CloudFront::Distribution'; export interface Distribution extends AwsResourceCommon { Type: DistributionType; Properties: DistributionProperties; } export interface DistributionProperties { DistributionConfig: DistributionConfig; Tags?: CloudFormationTags; } export interface DistributionConfig { Enabled: boolean; Aliases?: string[]; CacheBehaviors?: CacheBehavior[]; Comment?: string; CustomErrorResponses?: CustomErrorResponses[]; DefaultCacheBehavior: DefaultCacheBehavior; DefaultRootObject?: Path | ''; HttpVersion?: HttpVersion; IPV6Enabled?: boolean; Logging?: object; Origins?: DistributionOrigin[]; PriceClass?: PriceClass; Restrictions?: object; ViewerCertificate?: ViewerCertificate; WebACLId?: CloudFormationString; } export interface DistributionOriginBase { DomainName: CloudFormationString; Id: CloudFormationString; OriginCustomHeaders?: OriginCustomHeader[]; OriginPath?: CloudFormationString; OriginAccessControlId?: CloudFormationString; } export interface CustomDistributionOrigin extends DistributionOriginBase { CustomOriginConfig: CustomOriginConfig; } export interface S3DistributionOrigin extends DistributionOriginBase { S3OriginConfig: S3OriginConfig; } export declare type DistributionOrigin = CustomDistributionOrigin | S3DistributionOrigin; export declare type HttpVersion = 'http1.1' | 'http2'; export declare type PriceClass = 'PriceClass_100' | 'PriceClass_200' | 'PriceClass_All'; export interface OriginCustomHeader { HeaderName: string; HeaderValue: CloudFormationString; } export interface CustomOriginConfig { HTTPPort?: Integer; HTTPSPort?: Integer; OriginKeepaliveTimeout?: Integer; OriginProtocolPolicy?: OriginProtocolPolicy; OriginReadTimeout?: Integer; OriginSSLProtocols?: string[]; } export interface S3OriginConfig { OriginAccessIdentity?: OriginAccessIdentity; } export declare type OriginProtocolPolicy = 'http-only' | 'https-only' | 'match-viewer'; export interface DefaultCacheBehavior { AllowedMethods?: string[]; CachedMethods?: string[]; Compress?: boolean; DefaultTTL?: number; FieldLevelEncryptionId?: CloudFormationString; ForwardedValues: ForwardedValues; LambdaFunctionAssociations?: object[]; MaxTTL?: number; MinTTL?: number; SmoothStreaming?: boolean; TargetOriginId: CloudFormationString; TrustedSigners?: string[]; ViewerProtocolPolicy: ViewerProtocolPolicy; } export interface CacheBehavior extends DefaultCacheBehavior { PathPattern: string; } export interface ForwardedValues { QueryString: boolean; QueryStringCacheKeys?: string[]; Cookies?: object; Headers?: string[]; } export declare type ViewerProtocolPolicy = 'allow-all' | 'https-only' | 'redirect-to-https'; export declare type CustomErrorResponses = CustomErrorResponsesBase | CustomErrorResponsesWithRedirect; export interface CustomErrorResponsesBase { ErrorCachingMinTTL?: number; ErrorCode: Integer; } export interface CustomErrorResponsesWithRedirect extends CustomErrorResponsesBase { ResponseCode: Integer; ResponsePagePath: RootedPath | ''; } export interface ViewerCertificateBase { CloudFrontDefaultCertificate?: boolean; MinimumProtocolVersion?: TLSSupportedVersion; SslSupportMethod?: TLSSupportMethod; } export interface DefaultCloudFrontViewerCertificate extends ViewerCertificateBase { CloudFrontDefaultCertificate: true; MinimumProtocolVersion?: undefined; SslSupportMethod?: undefined; } export interface CetificateManagerViewerCertificate extends ViewerCertificateBase { CloudFrontDefaultCertificate?: false; AcmCertificateArn: string; SslSupportMethod: TLSSupportMethod; } export interface IamViewerCertificate extends ViewerCertificateBase { CloudFrontDefaultCertificate?: false; IamCertificateId: string; SslSupportMethod: TLSSupportMethod; } export declare type ViewerCertificate = CetificateManagerViewerCertificate | DefaultCloudFrontViewerCertificate | IamViewerCertificate; export declare type TLSSupportedVersion = 'SSLv3' | 'TLSv1_2016' | 'TLSv1.1_2016' | 'TLSv1.2_2018' | 'TLSv1'; export declare type TLSSupportMethod = 'sni-only' | 'vip'; export declare function isDefaultCloudFrontViewerCertificate(cert: Maybe<ViewerCertificate>): cert is DefaultCloudFrontViewerCertificate; export declare function isCetificateManagerViewerCertificate(cert: Maybe<ViewerCertificate>): cert is CetificateManagerViewerCertificate; export declare function isIamViewerCertificate(cert: Maybe<ViewerCertificate>): cert is IamViewerCertificate;