@altostra/core
Version:
Core library for shared types and logic
37 lines (36 loc) • 1.83 kB
TypeScript
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>>;