UNPKG

@altostra/core

Version:

Core library for shared types and logic

42 lines (41 loc) 2.1 kB
import type { NonEmptyString } from "../../../../common/CustomTypes/NonEmptyString"; import type { SubnetId } from "../../../../common/CustomTypes/SubnetId"; import type { Maybe } from "../../../../common/Maybe"; import type { TypeValidation } from '@altostra/type-validations'; import type { ConfigurationBase, ConfigurationDataBase } from "./common"; export declare type VPCConfigurationType = 'vpc'; export interface VPCConfiguration extends ConfigurationBase { type: VPCConfigurationType; configurations: VPCParams; } export declare enum VPCDataKeys { VPCId = "ALTOSTRA__DEFAULT_VPC_ID", PrivateSubnets = "ALTOSTRA__PRIVATE_SUBNETS", PublicSubnets = "ALTOSTRA__PUBLIC_SUBNETS", Subnets = "ALTOSTRA__SUBNETS" } export interface VPCParams extends ConfigurationDataBase { [VPCDataKeys.VPCId]: NonEmptyString; [VPCDataKeys.PrivateSubnets]?: string | null; [VPCDataKeys.PublicSubnets]?: string | null; [VPCDataKeys.Subnets]?: string | null; } export declare type ReservedVPCKey = VPCDataKeys; export declare const reservedVPCKeys: VPCDataKeys[]; export declare type VPCData = PrivateVPCData | PublicVPCData; export interface VPCDataBase { vpcId: NonEmptyString; privateSubnets?: SubnetId[]; publicSubnets?: SubnetId[]; } export interface PrivateVPCData extends VPCDataBase { privateSubnets: [SubnetId, ...SubnetId[]]; } export interface PublicVPCData extends VPCDataBase { publicSubnets: [SubnetId, ...SubnetId[]]; } export declare const isVPCData: TypeValidation<PrivateVPCData | PublicVPCData>; export declare const isVPCParams: import("@altostra/type-validations").ObjectOfTypeValidation<VPCParams>; export declare const isVPCConfiguration: import("@altostra/type-validations").ObjectOfTypeValidation<VPCConfiguration>; export declare function configurationFromVPCData({ vpcId, privateSubnets, publicSubnets, }: VPCData): VPCParams; export declare function vpcDataFromConfiguration({ [VPCDataKeys.VPCId]: vpcId, [VPCDataKeys.PrivateSubnets]: privateSubnets, [VPCDataKeys.PublicSubnets]: publicSubnets, }?: Partial<VPCParams>): Maybe<VPCData>;