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