UNPKG

@altostra/core

Version:

Core library for shared types and logic

37 lines (36 loc) 1.83 kB
import type { AnyTypeValidation, ObjectOfTypeValidation } from '@altostra/type-validations'; import type { AwsResourceCommon } from "./common"; import type { CloudFormationString } from "./IntrinsicFunctions"; import type { TemplateParameter } from "./TemplateParameter"; import type { CloudFormationResource } from "./Types"; export interface AwsCfnTemplate<TResources extends AwsResourceCommon = CloudFormationResource> { AWSTemplateFormatVersion?: '2010-09-09'; Transform?: string[] | string; Description?: string; Globals?: { Function?: { Timeout?: number; }; }; Resources: Record<string, TResources>; Parameters?: Record<string, TemplateParameter>; Outputs?: Record<string, AwsTemplateOutput>; Conditions?: Record<string, object>; Metadata?: Record<string, any>; Mappings?: Record<string, Mapping>; } export declare type Mapping = Record<string, TopLevelMap>; export declare type TopLevelMap = Record<string, SecondLevelMap>; export declare type SecondLevelMap = Record<string, MappedValue>; export declare type MappedValue = boolean[] | number[] | string[] | boolean | number | string; export interface AwsTemplateOutput { Description?: string; Value: CloudFormationString; Export?: { Name: CloudFormationString; }; } export declare const isAwsTemplateOutput: ObjectOfTypeValidation<AwsTemplateOutput>; export declare function mergeTemplates(firstTemplate: AwsCfnTemplate, ...templates: AwsCfnTemplate[]): AwsCfnTemplate; export declare function createCFNTemplateValidation<T extends AwsResourceCommon>(isValidResource: AnyTypeValidation<T>, allowedTransforms?: AnyTypeValidation<string>): ObjectOfTypeValidation<AwsCfnTemplate<T>>; export declare const isCfnTemplate: ObjectOfTypeValidation<AwsCfnTemplate<AwsResourceCommon>>;