UNPKG

@altostra/core

Version:

Core library for shared types and logic

135 lines (134 loc) • 13.9 kB
import type { ResourceId } from "../Blueprint"; import type { AccessPolicy, AccessPolicyType } from "./AccessPolicy"; import type { Auth0Application, Auth0ApplicationType } from "./Auth0Application"; import type { CDN, CDNType } from "./CDN"; import type { CloudFormationCustomResources, CloudFormationCustomResourcesType } from "./CloudFormationCustomResources"; import type { CognitoUserPool, CognitoUserPoolType } from "./CognitoUserPool"; import type { ComputeFunction, ComputeFunctionType } from "./ComputeFunction"; import { type DataFirehose, type DataFirehoseType } from "./DataFirehose"; import type { DataStream, DataStreamType } from "./DataStream"; import type { DocDBCluster, DocDBClusterType } from "./DocumentDB/DocDBCluster"; import type { Domain, DomainType } from "./Domain"; import type { DomainName, DomainNameType } from "./DomainName"; import type { EventBridgeRule, EventBridgeRuleType, EventBus, EventBusType } from "./EventBridge"; import type { ExternalResource, ExternalResourceType } from "./ExternalResource"; import type { ExternalSystem, ExternalSystemByType, ExternalSystemType } from "./ExternalSystem"; import type { FargateServerlessContainer, FargateServerlessContainerType } from "./FargateServerlessContainer"; import type { FargateServerlessService, FargateServerlessServiceType } from "./FargateServerlessService"; import type { FileStore, FileStoreType } from "./FileStore"; import type { ManagedKey, ManagedKeyType } from "./ManagedKey"; import type { Queue, QueueByType, QueueType } from "./MessageQueue"; import type { NotificationTopic, NotificationTopicType } from "./NotificationTopic"; import type { OpenSearchResourceType, OpenSearch } from "./OpenSearch"; import type { RelationalDBResourceByType, RelationalDBResourceType, RelationDBResource } from "./RelationalDatabase"; import type { Scheduler, SchedulerType } from "./Scheduler"; import type { SSMResource, SSMResourceType } from "./SSM"; import type { TableResource, TableResourceByType, TableResourceType } from "./Table"; import type { VendorService, VendorServiceType } from "./VendorService"; import type { WebApiResource, WebApiResourceByType, WebApiResourceType } from "./WebApi"; export * from "./AccessPolicy"; export * from "./Auth0Application"; export * from "./CloudFormationCustomResources"; export * from "./CognitoUserPool"; export * from "./Common"; export * from "./ComputeFunction"; export * from "./DataFirehose"; export * from "./DataStream"; export * from "./Domain"; export * from "./DomainName"; export * from "./EventBridge"; export * from "./ExternalSystem"; export * from "./FileStore"; export * from "./ManagedKey"; export * from "./MessageQueue"; export * from "./NotificationTopic"; export * from "./OpenSearch"; export * from "./RelationalDatabase"; export * from "./ResourceId"; export * from "./Scheduler"; export * from "./Table"; export * from "./VendorService"; export * from "./WebApi"; export declare type ResourceTemplate<T extends Resource> = Omit<T, 'id'> & Partial<Pick<T, 'id'>>; export declare type ResourceTemplateByType<T extends ResourceType> = ResourceTemplate<ResourceByType[T]>; export declare type ResourceType = AccessPolicyType | Auth0ApplicationType | CDNType | CloudFormationCustomResourcesType | CognitoUserPoolType | ComputeFunctionType | DataFirehoseType | DataStreamType | DocDBClusterType | DomainNameType | DomainType | EventBridgeRuleType | EventBusType | ExternalResourceType | ExternalSystemType | FargateServerlessContainerType | FargateServerlessServiceType | FileStoreType | ManagedKeyType | NotificationTopicType | OpenSearchResourceType | QueueType | RelationalDBResourceType | SchedulerType | SSMResourceType | TableResourceType | VendorServiceType | WebApiResourceType; export declare type Resource = AccessPolicy | Auth0Application | CDN | CloudFormationCustomResources | CognitoUserPool | ComputeFunction | DataFirehose | DataStream | DocDBCluster | Domain | DomainName | EventBridgeRule | EventBus | ExternalResource | ExternalSystem | FargateServerlessContainer | FargateServerlessService | FileStore | ManagedKey | NotificationTopic | OpenSearch | Queue | RelationDBResource | Scheduler | SSMResource | TableResource | VendorService | WebApiResource; export declare type ResourceByType = ExternalSystemByType & QueueByType & RelationalDBResourceByType & TableResourceByType & WebApiResourceByType & { [K in AccessPolicyType]: AccessPolicy; } & { [K in Auth0ApplicationType]: Auth0Application; } & { [K in CDNType]: CDN; } & { [K in CloudFormationCustomResourcesType]: CloudFormationCustomResources; } & { [K in CognitoUserPoolType]: CognitoUserPool; } & { [K in ComputeFunctionType]: ComputeFunction; } & { [K in DataFirehoseType]: DataFirehose; } & { [K in DataStreamType]: DataStream; } & { [K in DocDBClusterType]: DocDBCluster; } & { [K in DomainNameType]: DomainName; } & { [K in DomainType]: Domain; } & { [K in EventBridgeRuleType]: EventBridgeRule; } & { [K in EventBusType]: EventBus; } & { [K in ExternalResourceType]: ExternalResource; } & { [K in FargateServerlessContainerType]: FargateServerlessContainer; } & { [K in FargateServerlessServiceType]: FargateServerlessService; } & { [K in FileStoreType]: FileStore; } & { [K in ManagedKeyType]: ManagedKey; } & { [K in NotificationTopicType]: NotificationTopic; } & { [K in OpenSearchResourceType]: OpenSearch; } & { [K in SchedulerType]: Scheduler; } & { [K in SSMResourceType]: SSMResource; } & { [K in VendorServiceType]: VendorService; }; export interface Identifiable { id: ResourceId; } export declare type Template<T extends Identifiable> = Omit<T, 'id'>; export declare function isResourceTemplate<T extends Identifiable>(resource: T | Template<T>): resource is Template<T>; export declare function isResource<T extends Identifiable>(resource: T | Template<T>): resource is T; export declare const isAnyResource: import("@altostra/type-validations/lib/taggedUnionOf").TaggedUnionValidation<import("./ComputeFunction").ZipComputeFunction | import("./ComputeFunction").ImageComputeFunction | AccessPolicy | Auth0Application | CDN | CloudFormationCustomResources | CognitoUserPool | DataFirehose | DataStream | DocDBCluster | import("./Domain").SimpleDomain | import("./Domain").RegisteredDomain | DomainName | EventBus | EventBridgeRule | import("./Table").SimpleTable | import("./Table").Table | FileStore | ManagedKey | import("./MessageQueue").FifoMessageQueue | import("./MessageQueue").MessageQueue | NotificationTopic | RelationDBResource | import("./ExternalResource/ExternalDataBase").ExternalRelationalDatabase | import("./ExternalResource/SimpleExternalResource").SimpleExternalResource | import("./ExternalResource/ExternalDynamoTable").ExternalDynamoDBTable | ExternalSystem | FargateServerlessContainer | Scheduler | SSMResource | VendorService | import("./WebApi").Api | import("./WebApi").ApiDomainName | import("./WebApi").ApiEndpoint | import("./WebApi").ApiProxyEndpoint | import("./WebApi/WebSocket/WebSocketApi").WebSocketApi | import("./WebApi/WebSocket/WebSocketRoute").WebSocketRoute | { type: string; requirements: { vCPU: any; memory: any; }; vpcConfig: { vpcId: any; securityGroupIds: any; subnetIds: any; }; scaling: { instances: any; }; image: { name: any; uri: any; port: any; healthCheckPath: any; }; environment: import("./ComputeFunction").FunctionEnvironment | undefined; policies: import("../../aws/Arn").Arn | import("../../aws/IamRoleName").IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | import("../../aws/CloudFormation/PolicyDocument").IamPolicyDocument | (import("../../aws/Arn").Arn | import("../../aws/IamRoleName").IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | import("../../aws/CloudFormation/PolicyDocument").IamPolicyDocument)[] | (import("../../aws/Arn").Arn | import("../../aws/IamRoleName").IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | import("../../aws/CloudFormation/PolicyDocument").IamPolicyDocument | (import("../../aws/Arn").Arn | import("../../aws/IamRoleName").IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | import("../../aws/CloudFormation/PolicyDocument").IamPolicyDocument)[])[] | undefined; description: string | undefined; name: string; id: ResourceId; }, "type", "resource.compute.function" | "resource.access.policy" | "resource.auth0.application" | "resource.cdn" | "resource.cloud-formation.custom-resources" | "resource.cognito.user-pool" | "resource.data-firehose" | "resource.data-stream" | "resource.docdb.cluster" | "resource.domain" | "resource.dns.name" | "resource.event-bridge.event-bus" | "resource.event-bridge.rule" | "resource.table.simple" | "resource.table" | "resource.file-store" | "resource.key-management.key" | "resource.message-queue.fifo" | "resource.message-queue" | "resource.notification-topic" | "resource.rdb.cluster" | "resource.rdb.instance" | "resource.external" | "resource.rdb.proxy" | "resource.rdb.parameters" | "resource.rdb.serverless" | "resource.external.blueprint" | "resource.external.url" | "resource.compute.serverless-container" | "resource.compute.web-service" | "resource.scheduler" | "resource.ssm" | "resource.vendor.service" | "resource.api" | "resource.api.domain-name" | "resource.api.endpoint" | "resource.api.proxy-endpoint" | "resource.web-socket.api" | "resource.web-socket.route">;