UNPKG

@altostra/core

Version:

Core library for shared types and logic

149 lines (148 loc) • 5.22 kB
import type { NonEmptyString } from "../../common/CustomTypes/NonEmptyString"; import type { AwsResourceCommon, Environment, SnapStart, VpcConfig } from "../CloudFormation"; import type { CloudFormationString, CloudFormationValue } from "../CloudFormation/IntrinsicFunctions"; import type { ProvisionedConcurrencyConfiguration } from "../CloudFormation/Lambda/common"; import type { IamPolicyDocument } from "../CloudFormation/PolicyDocument"; import type { FilterPolicy } from "../CloudFormation/SNS/FilterPolicy"; import type { Arn } from "../CustomTypes/Arn"; import type { S3BucketName } from "../CustomTypes/S3BucketName"; import type { ServerlessTags } from "./common"; import type { SAMPolicyTemplate } from "./SAMPolicyTemplates"; export declare type FunctionType = 'AWS::Serverless::Function'; export interface Function extends AwsResourceCommon { Type: FunctionType; Properties: AwsSamServerlessFunctionProperties; } export declare type AwsSamServerlessFunctionProperties = AwsSamServerlessFunctionNoCodeProperties & CodeProvider; interface ZipCodeProviderBase { PackageType?: 'Zip'; Handler: string; Runtime: string; SnapStart?: SnapStart; } export interface S3CodeProvider extends ZipCodeProviderBase { CodeUri: CodeUri; } export declare type CodeUri = CloudFormationString | FunctionCode; export interface FunctionCode { Bucket: CloudFormationValue<S3BucketName>; Key: CloudFormationString<NonEmptyString>; Version?: CloudFormationString; } export interface InlineCodeProvider extends ZipCodeProviderBase { InlineCode: string; } interface ImageCodeProvider { PackageType: 'Image'; ImageConfig?: ImageConfig; ImageUri: string; } export interface ImageConfig { Command?: string[]; EntryPoint?: string[]; WorkingDirectory?: string; } export declare type CodeProvider = ImageCodeProvider | InlineCodeProvider | S3CodeProvider; export declare function isS3CodeProvider(codeProvider: CodeProvider): codeProvider is S3CodeProvider; export declare function isInlineCodeProvider(codeProvider: CodeProvider): codeProvider is InlineCodeProvider; export interface AwsSamServerlessFunctionNoCodeProperties { Layers?: string[]; Description?: string; FunctionName?: string; MemorySize?: CloudFormationValue<number>; Timeout?: CloudFormationValue<number>; Role?: CloudFormationValue<Arn>; Policies?: (CloudFormationValue | IamPolicyDocument | SAMPolicyTemplate)[]; VpcConfig?: VpcConfig; Tags?: ServerlessTags; Tracing?: Tracing; KmsKeyArn?: CloudFormationValue<Arn>; DeadLetterQueue?: { Type: 'SNS' | 'SQS'; TargetArn: string; }; DeploymentPreference?: object; AutoPublishAlias?: string; ReservedConcurrentExecutions?: CloudFormationValue<number>; Environment?: Environment; Events?: Record<string, FunctionEventSource>; AssumeRolePolicyDocument?: object; AutoPublishCodeSha256?: string; CodeSigningConfigArn?: CloudFormationValue<Arn>; EventInvokeConfig?: object; FileSystemConfigs?: object[]; PermissionsBoundary?: CloudFormationValue<Arn>; ProvisionedConcurrencyConfig?: ProvisionedConcurrencyConfiguration; VersionDescription?: string; } export declare type FunctionEventSource = ApiEventSource | KinesisEventSource | QueueEventSource | S3EventSource | SnsEventSource | TableEventSource; export interface ApiEventSource { Type: 'Api'; Properties: { Path: string; Method: ApiHttpMethod; RestApiId?: CloudFormationString; Auth?: { Authorizer: string; }; }; } export declare type StartingPosition = 'LATEST' | 'TRIM_HORIZON'; export interface KinesisEventSource { Type: 'Kinesis'; Properties: { Stream: CloudFormationString; StartingPosition: StartingPosition; BatchSize?: number; MaximumBatchingWindowInSeconds?: number; MaximumRecordAgeInSeconds?: number; MaximumRetryAttempts?: number; ParallelizationFactor?: number; TumblingWindowInSeconds?: number; }; } export interface TableEventSource { Type: 'DynamoDB'; Properties: { Stream: CloudFormationString; StartingPosition: StartingPosition; BatchSize?: number; }; } export interface QueueEventSource { Type: 'SQS'; Properties: { Queue: CloudFormationString; BatchSize?: number; }; } export declare type ApiHttpMethod = 'any' | 'delete' | 'get' | 'options' | 'post' | 'put'; export interface SnsEventSource { Type: 'SNS'; Properties: { Topic: CloudFormationValue<Arn>; Region?: CloudFormationString; SqsSubscription?: boolean; FilterPolicy?: FilterPolicy; }; } export interface S3EventSource { Type: 'S3'; Properties: { Bucket: CloudFormationValue; Events: string[] | string; Filter?: NotificationFilter; }; } export interface NotificationFilter { S3Key: { Rules: FilterRule[]; }; } export interface FilterRule { Name: 'prefix' | 'suffix'; Value: string; } export declare type PackageType = 'Image' | 'Zip'; export declare type Tracing = 'Active' | 'PassThrough'; export {};