@stacksjs/ts-cloud-core 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-features.test.d.ts +0 -0
- package/dist/aws/cloudformation.d.ts +69 -0
- package/dist/aws/cloudfront.d.ts +21 -0
- package/dist/aws/credentials.d.ts +66 -0
- package/dist/aws/credentials.test.d.ts +0 -0
- package/dist/aws/index.d.ts +73 -0
- package/dist/aws/s3.d.ts +130 -0
- package/dist/aws/s3.test.d.ts +0 -0
- package/dist/aws/signature.d.ts +101 -0
- package/dist/aws/signature.test.d.ts +0 -0
- package/dist/backup/disaster-recovery.d.ts +98 -0
- package/dist/backup/disaster-recovery.test.d.ts +0 -0
- package/dist/backup/index.d.ts +24 -0
- package/dist/backup/manager.d.ts +112 -0
- package/dist/backup/manager.test.d.ts +0 -0
- package/dist/cicd/circleci.d.ts +47 -0
- package/dist/cicd/github-actions.d.ts +55 -0
- package/dist/cicd/gitlab-ci.d.ts +46 -0
- package/dist/cicd/index.d.ts +3 -0
- package/dist/cli/history.d.ts +66 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/progress.d.ts +97 -0
- package/dist/cli/repl.d.ts +76 -0
- package/dist/cli/suggestions.d.ts +67 -0
- package/dist/cli/table.d.ts +70 -0
- package/dist/cli/table.test.d.ts +0 -0
- package/dist/cloudformation/builder.d.ts +59 -0
- package/dist/cloudformation/builder.test.d.ts +0 -0
- package/dist/cloudformation/builders/api-gateway.d.ts +30 -0
- package/dist/cloudformation/builders/cache.d.ts +35 -0
- package/dist/cloudformation/builders/cdn.d.ts +34 -0
- package/dist/cloudformation/builders/compute.d.ts +66 -0
- package/dist/cloudformation/builders/database.d.ts +61 -0
- package/dist/cloudformation/builders/functions.d.ts +32 -0
- package/dist/cloudformation/builders/messaging.d.ts +17 -0
- package/dist/cloudformation/builders/monitoring.d.ts +36 -0
- package/dist/cloudformation/builders/network.d.ts +14 -0
- package/dist/cloudformation/builders/queue.d.ts +8 -0
- package/dist/cloudformation/builders/security.d.ts +31 -0
- package/dist/cloudformation/builders/storage.d.ts +8 -0
- package/dist/cloudformation/index.d.ts +24 -0
- package/dist/cloudformation/types.d.ts +132 -0
- package/dist/compliance/aws-config.d.ts +88 -0
- package/dist/compliance/cloudtrail.d.ts +96 -0
- package/dist/compliance/compliance.test.d.ts +0 -0
- package/dist/compliance/guardduty.d.ts +110 -0
- package/dist/compliance/index.d.ts +50 -0
- package/dist/compliance/security-hub.d.ts +110 -0
- package/dist/containers/build-optimization.d.ts +110 -0
- package/dist/containers/containers.test.d.ts +0 -0
- package/dist/containers/image-scanning.d.ts +96 -0
- package/dist/containers/index.d.ts +4 -0
- package/dist/containers/registry.d.ts +99 -0
- package/dist/containers/service-mesh.d.ts +206 -0
- package/dist/database/database.test.d.ts +0 -0
- package/dist/database/index.d.ts +4 -0
- package/dist/database/migrations.d.ts +102 -0
- package/dist/database/performance.d.ts +168 -0
- package/dist/database/replicas.d.ts +146 -0
- package/dist/database/users.d.ts +102 -0
- package/dist/dependency-graph.d.ts +19 -0
- package/dist/deployment/ab-testing.d.ts +114 -0
- package/dist/deployment/blue-green.d.ts +98 -0
- package/dist/deployment/canary.d.ts +103 -0
- package/dist/deployment/deployment.test.d.ts +0 -0
- package/dist/deployment/index.d.ts +45 -0
- package/dist/deployment/progressive.d.ts +34 -0
- package/dist/dns/dns.test.d.ts +0 -0
- package/dist/dns/dnssec.d.ts +75 -0
- package/dist/dns/index.d.ts +3 -0
- package/dist/dns/resolver.d.ts +150 -0
- package/dist/dns/routing.d.ts +217 -0
- package/dist/email/advanced/analytics.d.ts +78 -0
- package/dist/email/advanced/index.d.ts +7 -0
- package/dist/email/advanced/rules.d.ts +60 -0
- package/dist/email/advanced/scheduling.d.ts +63 -0
- package/dist/email/advanced/search.d.ts +76 -0
- package/dist/email/advanced/shared-mailboxes.d.ts +66 -0
- package/dist/email/advanced/templates.d.ts +39 -0
- package/dist/email/advanced/threading.d.ts +53 -0
- package/dist/email/analytics.d.ts +144 -0
- package/dist/email/bounce-handling.d.ts +120 -0
- package/dist/email/email.test.d.ts +0 -0
- package/dist/email/handlers/__tests__/inbound.test.d.ts +0 -0
- package/dist/email/handlers/__tests__/outbound.test.d.ts +0 -0
- package/dist/email/handlers/converter.d.ts +225 -0
- package/dist/email/handlers/feedback.d.ts +226 -0
- package/dist/email/handlers/inbound.d.ts +167 -0
- package/dist/email/handlers/outbound.d.ts +176 -0
- package/dist/email/index.d.ts +6 -0
- package/dist/email/reputation.d.ts +97 -0
- package/dist/email/templates.d.ts +82 -0
- package/dist/errors/index.d.ts +186 -0
- package/dist/errors/index.test.d.ts +0 -0
- package/dist/health-checks/index.d.ts +35 -0
- package/dist/index.d.ts +256 -0
- package/dist/index.js +63499 -0
- package/dist/intrinsic-functions.d.ts +37 -0
- package/dist/lambda/concurrency.d.ts +98 -0
- package/dist/lambda/destinations.d.ts +99 -0
- package/dist/lambda/dlq.d.ts +109 -0
- package/dist/lambda/index.d.ts +6 -0
- package/dist/lambda/lambda.test.d.ts +0 -0
- package/dist/lambda/layers.d.ts +81 -0
- package/dist/lambda/versions.d.ts +91 -0
- package/dist/lambda/vpc.d.ts +116 -0
- package/dist/local/config.d.ts +44 -0
- package/dist/local/index.d.ts +2 -0
- package/dist/local/mock-aws.d.ts +60 -0
- package/dist/modules/ai.d.ts +47 -0
- package/dist/modules/api.d.ts +98 -0
- package/dist/modules/auth.d.ts +165 -0
- package/dist/modules/cache.d.ts +73 -0
- package/dist/modules/cdn.d.ts +125 -0
- package/dist/modules/communication.d.ts +98 -0
- package/dist/modules/compute.d.ts +309 -0
- package/dist/modules/database.d.ts +105 -0
- package/dist/modules/deployment.d.ts +181 -0
- package/dist/modules/dns.d.ts +45 -0
- package/dist/modules/email.d.ts +217 -0
- package/dist/modules/filesystem.d.ts +94 -0
- package/dist/modules/index.d.ts +27 -0
- package/dist/modules/messaging.d.ts +108 -0
- package/dist/modules/monitoring.d.ts +127 -0
- package/dist/modules/network.d.ts +102 -0
- package/dist/modules/parameter-store.d.ts +33 -0
- package/dist/modules/permissions.d.ts +132 -0
- package/dist/modules/phone.d.ts +80 -0
- package/dist/modules/queue.d.ts +210 -0
- package/dist/modules/redirects.d.ts +59 -0
- package/dist/modules/registry.d.ts +73 -0
- package/dist/modules/search.d.ts +56 -0
- package/dist/modules/secrets.d.ts +80 -0
- package/dist/modules/security.d.ts +100 -0
- package/dist/modules/sms.d.ts +52 -0
- package/dist/modules/storage.d.ts +160 -0
- package/dist/modules/workflow.d.ts +205 -0
- package/dist/multi-account/config.d.ts +315 -0
- package/dist/multi-account/index.d.ts +2 -0
- package/dist/multi-account/manager.d.ts +100 -0
- package/dist/multi-region/cross-region.d.ts +114 -0
- package/dist/multi-region/index.d.ts +3 -0
- package/dist/multi-region/manager.d.ts +72 -0
- package/dist/multi-region/regions.d.ts +98 -0
- package/dist/network-security/index.d.ts +39 -0
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/logs.d.ts +129 -0
- package/dist/observability/metrics.d.ts +153 -0
- package/dist/observability/observability.test.d.ts +0 -0
- package/dist/observability/synthetics.d.ts +146 -0
- package/dist/observability/xray.d.ts +129 -0
- package/dist/phone/advanced/analytics.d.ts +66 -0
- package/dist/phone/advanced/callbacks.d.ts +50 -0
- package/dist/phone/advanced/index.d.ts +4 -0
- package/dist/phone/advanced/ivr-builder.d.ts +83 -0
- package/dist/phone/advanced/recording.d.ts +48 -0
- package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +0 -0
- package/dist/phone/handlers/incoming-call.d.ts +115 -0
- package/dist/phone/handlers/missed-call.d.ts +114 -0
- package/dist/phone/handlers/voicemail.d.ts +177 -0
- package/dist/phone/index.d.ts +2 -0
- package/dist/presets/api-backend.d.ts +11 -0
- package/dist/presets/data-pipeline.d.ts +11 -0
- package/dist/presets/extend.d.ts +194 -0
- package/dist/presets/extend.test.d.ts +0 -0
- package/dist/presets/fullstack-app.d.ts +12 -0
- package/dist/presets/index.d.ts +24 -0
- package/dist/presets/jamstack.d.ts +12 -0
- package/dist/presets/microservices.d.ts +18 -0
- package/dist/presets/ml-api.d.ts +13 -0
- package/dist/presets/nodejs-server.d.ts +14 -0
- package/dist/presets/nodejs-serverless.d.ts +14 -0
- package/dist/presets/realtime-app.d.ts +11 -0
- package/dist/presets/static-site.d.ts +12 -0
- package/dist/presets/traditional-web-app.d.ts +16 -0
- package/dist/presets/wordpress.d.ts +12 -0
- package/dist/preview/github.d.ts +32 -0
- package/dist/preview/github.test.d.ts +0 -0
- package/dist/preview/index.d.ts +27 -0
- package/dist/preview/manager.d.ts +58 -0
- package/dist/preview/manager.test.d.ts +0 -0
- package/dist/preview/notifications.d.ts +55 -0
- package/dist/preview/notifications.test.d.ts +0 -0
- package/dist/queue/batch-processing.d.ts +87 -0
- package/dist/queue/dlq-monitoring.d.ts +95 -0
- package/dist/queue/fifo.d.ts +90 -0
- package/dist/queue/index.d.ts +4 -0
- package/dist/queue/management.d.ts +105 -0
- package/dist/queue/queue.test.d.ts +0 -0
- package/dist/resource-mgmt/index.d.ts +29 -0
- package/dist/resource-naming.d.ts +26 -0
- package/dist/s3/index.d.ts +173 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/security/certificate-manager.d.ts +121 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/scanning.d.ts +147 -0
- package/dist/security/secrets-manager.d.ts +144 -0
- package/dist/security/secrets-rotation.d.ts +115 -0
- package/dist/security/security.test.d.ts +0 -0
- package/dist/sms/advanced/ab-testing.d.ts +54 -0
- package/dist/sms/advanced/analytics.d.ts +56 -0
- package/dist/sms/advanced/campaigns.d.ts +82 -0
- package/dist/sms/advanced/chatbot.d.ts +48 -0
- package/dist/sms/advanced/index.d.ts +6 -0
- package/dist/sms/advanced/link-tracking.d.ts +42 -0
- package/dist/sms/advanced/mms.d.ts +35 -0
- package/dist/sms/handlers/__tests__/send.test.d.ts +0 -0
- package/dist/sms/handlers/delivery-status.d.ts +131 -0
- package/dist/sms/handlers/receive.d.ts +160 -0
- package/dist/sms/handlers/send.d.ts +172 -0
- package/dist/sms/index.d.ts +2 -0
- package/dist/stack-diff.d.ts +34 -0
- package/dist/static-site/index.d.ts +49 -0
- package/dist/template-builder.d.ts +14 -0
- package/dist/template-validator.d.ts +24 -0
- package/dist/utils/cache.d.ts +55 -0
- package/dist/utils/diff.d.ts +48 -0
- package/dist/utils/hash.d.ts +58 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/parallel.d.ts +60 -0
- package/dist/validators/credentials.d.ts +23 -0
- package/dist/validators/credentials.test.d.ts +0 -0
- package/dist/validators/quotas.d.ts +60 -0
- package/dist/validators/quotas.test.d.ts +0 -0
- package/package.json +4 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { addApiGatewayResources } from './builders/api-gateway';
|
|
2
|
+
import { addCacheResources } from './builders/cache';
|
|
3
|
+
import { addCDNResources } from './builders/cdn';
|
|
4
|
+
import { addComputeResources } from './builders/compute';
|
|
5
|
+
import { addDatabaseResources } from './builders/database';
|
|
6
|
+
import { addFunctionResources } from './builders/functions';
|
|
7
|
+
import { addMessagingResources } from './builders/messaging';
|
|
8
|
+
import { addMonitoringResources } from './builders/monitoring';
|
|
9
|
+
import { addNetworkResources } from './builders/network';
|
|
10
|
+
import { addQueueResources } from './builders/queue';
|
|
11
|
+
import { addSecurityResources } from './builders/security';
|
|
12
|
+
import { addStorageResources } from './builders/storage';
|
|
13
|
+
import type { CloudConfig } from '@stacksjs/ts-cloud-types';
|
|
14
|
+
import type { CloudFormationTemplate, CloudFormationResource } from './types';
|
|
15
|
+
/**
|
|
16
|
+
* Main function to convert CloudConfig to CloudFormation template
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildCloudFormationTemplate(config: CloudConfig): CloudFormationTemplate;
|
|
19
|
+
/**
|
|
20
|
+
* CloudFormation Template Builder
|
|
21
|
+
* Converts-cloudConfig to CloudFormation templates
|
|
22
|
+
*/
|
|
23
|
+
export declare class CloudFormationBuilder {
|
|
24
|
+
protected template: CloudFormationTemplate;
|
|
25
|
+
private config: CloudConfig;
|
|
26
|
+
private resourceDependencies: Map<string, Set<string>>;
|
|
27
|
+
constructor(config: CloudConfig);
|
|
28
|
+
build(): CloudFormationTemplate;
|
|
29
|
+
private addParameters(): void;
|
|
30
|
+
private addMappings(): void;
|
|
31
|
+
private addConditions(): void;
|
|
32
|
+
private addResources(): void;
|
|
33
|
+
private initializeOutputs(): void;
|
|
34
|
+
addResource(logicalId: string, type: string, properties: Record<string, any>, options?: {
|
|
35
|
+
dependsOn?: string | string[]
|
|
36
|
+
condition?: string
|
|
37
|
+
deletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
38
|
+
updateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
39
|
+
}): void;
|
|
40
|
+
addOutputs(outputs: Record<string, any>): void;
|
|
41
|
+
getOutputs(): Record<string, any>;
|
|
42
|
+
hasResource(logicalId: string): boolean;
|
|
43
|
+
getResource(logicalId: string): CloudFormationResource | undefined;
|
|
44
|
+
private trackDependency(resource: string, dependencies: string | string[]): void;
|
|
45
|
+
private resolveDependencies(): void;
|
|
46
|
+
toLogicalId(name: string): string;
|
|
47
|
+
private addNetworkResources(network: any): void;
|
|
48
|
+
private addStorageResources(storage: any): void;
|
|
49
|
+
private addComputeResources(compute: any): void;
|
|
50
|
+
private addDatabaseResources(database: any): void;
|
|
51
|
+
private addFunctionResources(functions: any): void;
|
|
52
|
+
private addCacheResources(cache: any): void;
|
|
53
|
+
private addQueueResources(queue: any): void;
|
|
54
|
+
private addMessagingResources(messaging: any): void;
|
|
55
|
+
private addCDNResources(cdn: any): void;
|
|
56
|
+
private addApiGatewayResources(apiGateway: any): void;
|
|
57
|
+
private addMonitoringResources(monitoring: any): void;
|
|
58
|
+
private addSecurityResources(security: any): void;
|
|
59
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add API Gateway resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addApiGatewayResources(builder: CloudFormationBuilder, config: ApiGatewayConfig): void;
|
|
6
|
+
export declare interface ApiGatewayConfig {
|
|
7
|
+
type: 'http' | 'rest' | 'websocket'
|
|
8
|
+
customDomain?: {
|
|
9
|
+
domain: string
|
|
10
|
+
certificateArn: string
|
|
11
|
+
}
|
|
12
|
+
cors?: {
|
|
13
|
+
allowOrigins: string[]
|
|
14
|
+
allowMethods: string[]
|
|
15
|
+
allowHeaders?: string[]
|
|
16
|
+
maxAge?: number
|
|
17
|
+
}
|
|
18
|
+
throttling?: {
|
|
19
|
+
rateLimit: number
|
|
20
|
+
burstLimit: number
|
|
21
|
+
}
|
|
22
|
+
routes?: any
|
|
23
|
+
authorizer?: {
|
|
24
|
+
type: 'jwt' | 'lambda' | 'cognito'
|
|
25
|
+
identitySource?: string
|
|
26
|
+
authorizerUri?: string
|
|
27
|
+
issuer?: string
|
|
28
|
+
audience?: string[]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add ElastiCache resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addCacheResources(builder: CloudFormationBuilder, config: CacheConfig): void;
|
|
6
|
+
export declare interface CacheConfig {
|
|
7
|
+
redis?: {
|
|
8
|
+
nodeType: string
|
|
9
|
+
numCacheNodes: number
|
|
10
|
+
engine: 'redis'
|
|
11
|
+
engineVersion: string
|
|
12
|
+
port?: number
|
|
13
|
+
parameterGroup?: {
|
|
14
|
+
maxmemoryPolicy?: string
|
|
15
|
+
timeout?: string
|
|
16
|
+
[key: string]: string | undefined
|
|
17
|
+
}
|
|
18
|
+
snapshotRetentionLimit?: number
|
|
19
|
+
snapshotWindow?: string
|
|
20
|
+
automaticFailoverEnabled?: boolean
|
|
21
|
+
}
|
|
22
|
+
memcached?: {
|
|
23
|
+
nodeType: string
|
|
24
|
+
numCacheNodes: number
|
|
25
|
+
engine: 'memcached'
|
|
26
|
+
engineVersion: string
|
|
27
|
+
port?: number
|
|
28
|
+
}
|
|
29
|
+
elasticache?: {
|
|
30
|
+
nodeType: string
|
|
31
|
+
numCacheNodes: number
|
|
32
|
+
engine: string
|
|
33
|
+
engineVersion: string
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add CloudFront distribution to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addCDNResources(builder: CloudFormationBuilder, config: CDNConfig): void;
|
|
6
|
+
export declare interface CDNConfig {
|
|
7
|
+
enabled: boolean
|
|
8
|
+
origins?: Array<{
|
|
9
|
+
id: string
|
|
10
|
+
domainName: string
|
|
11
|
+
pathPattern?: string
|
|
12
|
+
originPath?: string
|
|
13
|
+
}>
|
|
14
|
+
customDomain?: {
|
|
15
|
+
domain: string
|
|
16
|
+
certificateArn: string
|
|
17
|
+
}
|
|
18
|
+
cachePolicy?: {
|
|
19
|
+
minTTL?: number
|
|
20
|
+
defaultTTL?: number
|
|
21
|
+
maxTTL?: number
|
|
22
|
+
}
|
|
23
|
+
compress?: boolean
|
|
24
|
+
http3?: boolean
|
|
25
|
+
errorPages?: {
|
|
26
|
+
[code: string]: string
|
|
27
|
+
}
|
|
28
|
+
edgeFunctions?: Array<{
|
|
29
|
+
eventType: 'viewer-request' | 'viewer-response' | 'origin-request' | 'origin-response'
|
|
30
|
+
functionArn: string
|
|
31
|
+
name: string
|
|
32
|
+
}>
|
|
33
|
+
priceClass?: 'PriceClass_All' | 'PriceClass_200' | 'PriceClass_100'
|
|
34
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add compute resources (EC2, ECS, ALB) to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addComputeResources(builder: CloudFormationBuilder, config: ComputeConfig): void;
|
|
6
|
+
export declare interface LoadBalancerConfig {
|
|
7
|
+
type: 'application' | 'network'
|
|
8
|
+
healthCheck?: {
|
|
9
|
+
path?: string
|
|
10
|
+
interval?: number
|
|
11
|
+
timeout?: number
|
|
12
|
+
healthyThreshold?: number
|
|
13
|
+
unhealthyThreshold?: number
|
|
14
|
+
}
|
|
15
|
+
stickySession?: {
|
|
16
|
+
enabled: boolean
|
|
17
|
+
duration?: number
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export declare interface ServerConfig {
|
|
21
|
+
instanceType: string
|
|
22
|
+
ami?: string
|
|
23
|
+
autoScaling?: {
|
|
24
|
+
min: number
|
|
25
|
+
max: number
|
|
26
|
+
targetCPU?: number
|
|
27
|
+
scaleUpCooldown?: number
|
|
28
|
+
scaleDownCooldown?: number
|
|
29
|
+
}
|
|
30
|
+
loadBalancer?: LoadBalancerConfig
|
|
31
|
+
userData?: string
|
|
32
|
+
}
|
|
33
|
+
export declare interface ComputeConfig {
|
|
34
|
+
server?: ServerConfig
|
|
35
|
+
fargate?: {
|
|
36
|
+
taskDefinition: {
|
|
37
|
+
cpu: string
|
|
38
|
+
memory: string
|
|
39
|
+
containerDefinitions?: Array<{
|
|
40
|
+
name: string
|
|
41
|
+
image: string
|
|
42
|
+
portMappings?: Array<{ containerPort: number }>
|
|
43
|
+
environment?: Record<string, string>
|
|
44
|
+
healthCheck?: any
|
|
45
|
+
}>
|
|
46
|
+
}
|
|
47
|
+
service: {
|
|
48
|
+
desiredCount: number
|
|
49
|
+
serviceDiscovery?: {
|
|
50
|
+
enabled: boolean
|
|
51
|
+
namespace?: string
|
|
52
|
+
}
|
|
53
|
+
autoScaling?: {
|
|
54
|
+
min: number
|
|
55
|
+
max: number
|
|
56
|
+
targetCPU?: number
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
services?: Array<{
|
|
61
|
+
name: string
|
|
62
|
+
type: 'fargate' | 'ec2'
|
|
63
|
+
taskDefinition: any
|
|
64
|
+
service: any
|
|
65
|
+
}>
|
|
66
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add database resources (RDS, DynamoDB) to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addDatabaseResources(builder: CloudFormationBuilder, config: DatabaseConfig): void;
|
|
6
|
+
export declare interface DatabaseConfig {
|
|
7
|
+
postgres?: {
|
|
8
|
+
engine: 'postgres'
|
|
9
|
+
version: string
|
|
10
|
+
instanceClass: string
|
|
11
|
+
allocatedStorage: number
|
|
12
|
+
maxAllocatedStorage?: number
|
|
13
|
+
multiAZ?: boolean
|
|
14
|
+
backupRetentionDays?: number
|
|
15
|
+
preferredBackupWindow?: string
|
|
16
|
+
preferredMaintenanceWindow?: string
|
|
17
|
+
enablePerformanceInsights?: boolean
|
|
18
|
+
performanceInsightsRetention?: number
|
|
19
|
+
deletionProtection?: boolean
|
|
20
|
+
parameters?: Record<string, string>
|
|
21
|
+
}
|
|
22
|
+
mysql?: {
|
|
23
|
+
engine: 'mysql'
|
|
24
|
+
version: string
|
|
25
|
+
instanceClass: string
|
|
26
|
+
allocatedStorage: number
|
|
27
|
+
maxAllocatedStorage?: number
|
|
28
|
+
multiAZ?: boolean
|
|
29
|
+
backupRetentionDays?: number
|
|
30
|
+
preferredBackupWindow?: string
|
|
31
|
+
preferredMaintenanceWindow?: string
|
|
32
|
+
enablePerformanceInsights?: boolean
|
|
33
|
+
performanceInsightsRetention?: number
|
|
34
|
+
deletionProtection?: boolean
|
|
35
|
+
parameters?: Record<string, string>
|
|
36
|
+
}
|
|
37
|
+
dynamodb?: {
|
|
38
|
+
tables: DynamoDBTableConfig[]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export declare interface DynamoDBTableConfig {
|
|
42
|
+
name: string
|
|
43
|
+
partitionKey: string
|
|
44
|
+
sortKey?: string
|
|
45
|
+
billingMode?: 'PROVISIONED' | 'PAY_PER_REQUEST'
|
|
46
|
+
readCapacity?: number
|
|
47
|
+
writeCapacity?: number
|
|
48
|
+
streamEnabled?: boolean
|
|
49
|
+
pointInTimeRecovery?: boolean
|
|
50
|
+
ttl?: {
|
|
51
|
+
enabled: boolean
|
|
52
|
+
attributeName: string
|
|
53
|
+
}
|
|
54
|
+
globalSecondaryIndexes?: Array<{
|
|
55
|
+
name: string
|
|
56
|
+
partitionKey: string
|
|
57
|
+
sortKey?: string
|
|
58
|
+
projectionType?: 'ALL' | 'KEYS_ONLY' | 'INCLUDE'
|
|
59
|
+
nonKeyAttributes?: string[]
|
|
60
|
+
}>
|
|
61
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add Lambda function resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addFunctionResources(builder: CloudFormationBuilder, config: FunctionsConfig): void;
|
|
6
|
+
export declare interface FunctionEvent {
|
|
7
|
+
type: 'http' | 's3' | 'sqs' | 'sns' | 'kinesis' | 'dynamodb-stream' | 'schedule'
|
|
8
|
+
path?: string
|
|
9
|
+
method?: string
|
|
10
|
+
bucket?: string
|
|
11
|
+
filterPrefix?: string
|
|
12
|
+
filterSuffix?: string
|
|
13
|
+
queueName?: string
|
|
14
|
+
streamName?: string
|
|
15
|
+
tableName?: string
|
|
16
|
+
batchSize?: number
|
|
17
|
+
startingPosition?: 'LATEST' | 'TRIM_HORIZON'
|
|
18
|
+
parallelizationFactor?: number
|
|
19
|
+
expression?: string
|
|
20
|
+
}
|
|
21
|
+
export declare interface FunctionItem {
|
|
22
|
+
name: string
|
|
23
|
+
runtime: string
|
|
24
|
+
handler: string
|
|
25
|
+
memory: number
|
|
26
|
+
timeout: number
|
|
27
|
+
events?: FunctionEvent[]
|
|
28
|
+
environment?: Record<string, string>
|
|
29
|
+
}
|
|
30
|
+
export declare interface FunctionsConfig {
|
|
31
|
+
|
|
32
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add SNS topic resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addMessagingResources(builder: CloudFormationBuilder, config: MessagingConfig): void;
|
|
6
|
+
export declare interface TopicConfig {
|
|
7
|
+
name: string
|
|
8
|
+
displayName?: string
|
|
9
|
+
subscriptions?: Array<{
|
|
10
|
+
protocol: 'http' | 'https' | 'email' | 'email-json' | 'sms' | 'sqs' | 'lambda'
|
|
11
|
+
endpoint: string
|
|
12
|
+
filterPolicy?: Record<string, any>
|
|
13
|
+
}>
|
|
14
|
+
}
|
|
15
|
+
export declare interface MessagingConfig {
|
|
16
|
+
topics?: TopicConfig[]
|
|
17
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add CloudWatch monitoring resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addMonitoringResources(builder: CloudFormationBuilder, config: MonitoringConfig): void;
|
|
6
|
+
export declare interface AlarmConfig {
|
|
7
|
+
name?: string
|
|
8
|
+
metric: string
|
|
9
|
+
threshold: number
|
|
10
|
+
evaluationPeriods?: number
|
|
11
|
+
comparisonOperator?: 'GreaterThanThreshold' | 'LessThanThreshold' | 'GreaterThanOrEqualToThreshold' | 'LessThanOrEqualToThreshold'
|
|
12
|
+
statistic?: 'Average' | 'Sum' | 'Minimum' | 'Maximum' | 'SampleCount'
|
|
13
|
+
period?: number
|
|
14
|
+
treatMissingData?: 'breaching' | 'notBreaching' | 'ignore' | 'missing'
|
|
15
|
+
service?: string
|
|
16
|
+
namespace?: string
|
|
17
|
+
dimensions?: Record<string, string>
|
|
18
|
+
}
|
|
19
|
+
export declare interface MonitoringConfig {
|
|
20
|
+
dashboard?: {
|
|
21
|
+
name: string
|
|
22
|
+
widgets?: Array<{
|
|
23
|
+
type: 'metric' | 'log' | 'text'
|
|
24
|
+
metrics?: string[] | Array<{ service?: string, metric: string }>
|
|
25
|
+
logGroup?: string
|
|
26
|
+
text?: string
|
|
27
|
+
width?: number
|
|
28
|
+
height?: number
|
|
29
|
+
}>
|
|
30
|
+
}
|
|
31
|
+
alarms?: AlarmConfig[]
|
|
32
|
+
logs?: {
|
|
33
|
+
retention?: number
|
|
34
|
+
groups?: string[]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add VPC and networking resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addNetworkResources(builder: CloudFormationBuilder, config: NetworkConfig): void;
|
|
6
|
+
export declare interface NetworkConfig {
|
|
7
|
+
vpc?: {
|
|
8
|
+
cidr?: string
|
|
9
|
+
availabilityZones?: number
|
|
10
|
+
natGateways?: number
|
|
11
|
+
enableDnsHostnames?: boolean
|
|
12
|
+
enableDnsSupport?: boolean
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add SQS queue resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addQueueResources(builder: CloudFormationBuilder, config: QueueConfig): void;
|
|
6
|
+
export declare interface QueueConfig {
|
|
7
|
+
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add security resources (ACM certificates, WAF, security groups) to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addSecurityResources(builder: CloudFormationBuilder, config: SecurityConfig): void;
|
|
6
|
+
export declare interface SecurityConfig {
|
|
7
|
+
certificate?: {
|
|
8
|
+
domain: string
|
|
9
|
+
subdomains?: string[]
|
|
10
|
+
validationMethod?: 'DNS' | 'EMAIL'
|
|
11
|
+
}
|
|
12
|
+
waf?: {
|
|
13
|
+
enabled: boolean
|
|
14
|
+
rules?: string[]
|
|
15
|
+
rateLimit?: number
|
|
16
|
+
scope?: 'REGIONAL' | 'CLOUDFRONT'
|
|
17
|
+
}
|
|
18
|
+
securityGroups?: Record<string, {
|
|
19
|
+
ingress?: Array<{
|
|
20
|
+
port: number
|
|
21
|
+
protocol: string
|
|
22
|
+
cidr?: string
|
|
23
|
+
source?: string
|
|
24
|
+
}>
|
|
25
|
+
egress?: Array<{
|
|
26
|
+
port: number
|
|
27
|
+
protocol: string
|
|
28
|
+
cidr?: string
|
|
29
|
+
}>
|
|
30
|
+
}>
|
|
31
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CloudFormationBuilder } from '../builder';
|
|
2
|
+
/**
|
|
3
|
+
* Add S3 and EFS storage resources to CloudFormation template
|
|
4
|
+
*/
|
|
5
|
+
export declare function addStorageResources(builder: CloudFormationBuilder, config: StorageConfig): void;
|
|
6
|
+
export declare interface StorageConfig {
|
|
7
|
+
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
CloudFormationTemplate,
|
|
3
|
+
CloudFormationResource,
|
|
4
|
+
CloudFormationParameter,
|
|
5
|
+
CloudFormationOutput,
|
|
6
|
+
CloudFormationCondition,
|
|
7
|
+
CloudFormationIntrinsicFunction,
|
|
8
|
+
} from './types';
|
|
9
|
+
export type { QueueConfig } from './builders/queue';
|
|
10
|
+
export {
|
|
11
|
+
CloudFormationBuilder,
|
|
12
|
+
buildCloudFormationTemplate,
|
|
13
|
+
} from './builder';
|
|
14
|
+
export {
|
|
15
|
+
Fn,
|
|
16
|
+
Arn,
|
|
17
|
+
AWS_PSEUDO_PARAMETERS,
|
|
18
|
+
} from './types';
|
|
19
|
+
export { addNetworkResources } from './builders/network';
|
|
20
|
+
export { addStorageResources } from './builders/storage';
|
|
21
|
+
export { addComputeResources } from './builders/compute';
|
|
22
|
+
export { addDatabaseResources } from './builders/database';
|
|
23
|
+
export { addFunctionResources } from './builders/functions';
|
|
24
|
+
export { addQueueResources } from './builders/queue';
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for creating CloudFormation intrinsic functions
|
|
3
|
+
*/
|
|
4
|
+
export declare const Fn: {
|
|
5
|
+
ref: (logicalId: string) => unknown;
|
|
6
|
+
getAtt: (logicalId: string, attribute: string) => unknown;
|
|
7
|
+
join: (delimiter: string, values: any[]) => unknown;
|
|
8
|
+
sub: (template: string, variables?: Record<string, any>) => unknown;
|
|
9
|
+
select: (index: number, list: any[] | CloudFormationIntrinsicFunction) => unknown;
|
|
10
|
+
split: (delimiter: string, source: string) => unknown;
|
|
11
|
+
getAZs: (region: string?) => unknown;
|
|
12
|
+
importValue: (name: any) => unknown;
|
|
13
|
+
findInMap: (mapName: string, topLevelKey: any, secondLevelKey: any) => unknown;
|
|
14
|
+
base64: (value: any) => unknown;
|
|
15
|
+
cidr: (ipBlock: any, count: number, cidrBits: number) => unknown;
|
|
16
|
+
equals: (value1: any, value2: any) => unknown;
|
|
17
|
+
if: (conditionName: string, trueValue: any, falseValue: any) => unknown;
|
|
18
|
+
not: (condition: any) => unknown;
|
|
19
|
+
and: (...conditions: any[]) => unknown;
|
|
20
|
+
or: (...conditions: any[]) => unknown
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Common AWS resource ARN patterns
|
|
24
|
+
*/
|
|
25
|
+
export declare const Arn: {
|
|
26
|
+
s3Bucket: (bucketName: any) => unknown;
|
|
27
|
+
s3Object: (bucketName: any, key: string?) => unknown;
|
|
28
|
+
lambda: (functionName: string, region?: string, account?: string) => unknown;
|
|
29
|
+
dynamodb: (tableName: string) => unknown;
|
|
30
|
+
sqs: (queueName: string) => unknown;
|
|
31
|
+
sns: (topicName: string) => unknown;
|
|
32
|
+
kinesis: (streamName: string) => unknown;
|
|
33
|
+
iam: (resourceType: 'role' | 'policy' | 'user' | 'group', name: string) => unknown;
|
|
34
|
+
secretsManager: (secretName: string) => unknown;
|
|
35
|
+
cloudwatch: (logGroup: string) => unknown
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Common CloudFormation pseudo parameters
|
|
39
|
+
*/
|
|
40
|
+
export declare const AWS_PSEUDO_PARAMETERS: {
|
|
41
|
+
ACCOUNT_ID: {
|
|
42
|
+
Ref: 'AWS::AccountId'
|
|
43
|
+
};
|
|
44
|
+
NOTIFICATION_ARNS: {
|
|
45
|
+
Ref: 'AWS::NotificationARNs'
|
|
46
|
+
};
|
|
47
|
+
NO_VALUE: {
|
|
48
|
+
Ref: 'AWS::NoValue'
|
|
49
|
+
};
|
|
50
|
+
PARTITION: {
|
|
51
|
+
Ref: 'AWS::Partition'
|
|
52
|
+
};
|
|
53
|
+
REGION: {
|
|
54
|
+
Ref: 'AWS::Region'
|
|
55
|
+
};
|
|
56
|
+
STACK_ID: {
|
|
57
|
+
Ref: 'AWS::StackId'
|
|
58
|
+
};
|
|
59
|
+
STACK_NAME: {
|
|
60
|
+
Ref: 'AWS::StackName'
|
|
61
|
+
};
|
|
62
|
+
URL_SUFFIX: {
|
|
63
|
+
Ref: 'AWS::URLSuffix'
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* CloudFormation Template Types
|
|
68
|
+
* Based on AWS CloudFormation Resource Specification
|
|
69
|
+
*/
|
|
70
|
+
export declare interface CloudFormationTemplate {
|
|
71
|
+
AWSTemplateFormatVersion: '2010-09-09'
|
|
72
|
+
Description?: string
|
|
73
|
+
Metadata?: Record<string, any>
|
|
74
|
+
Parameters?: Record<string, CloudFormationParameter>
|
|
75
|
+
Mappings?: Record<string, Record<string, Record<string, string>>>
|
|
76
|
+
Conditions?: Record<string, CloudFormationCondition>
|
|
77
|
+
Resources: Record<string, CloudFormationResource>
|
|
78
|
+
Outputs?: Record<string, CloudFormationOutput>
|
|
79
|
+
}
|
|
80
|
+
export declare interface CloudFormationParameter {
|
|
81
|
+
Type: 'String' | 'Number' | 'List<Number>' | 'CommaDelimitedList' | 'AWS::EC2::AvailabilityZone::Name' | 'AWS::EC2::Image::Id' | 'AWS::EC2::Instance::Id' | 'AWS::EC2::KeyPair::KeyName' | 'AWS::EC2::SecurityGroup::GroupName' | 'AWS::EC2::SecurityGroup::Id' | 'AWS::EC2::Subnet::Id' | 'AWS::EC2::Volume::Id' | 'AWS::EC2::VPC::Id' | 'AWS::Route53::HostedZone::Id' | 'List<AWS::EC2::AvailabilityZone::Name>' | 'List<AWS::EC2::Image::Id>' | 'List<AWS::EC2::Instance::Id>' | 'List<AWS::EC2::SecurityGroup::GroupName>' | 'List<AWS::EC2::SecurityGroup::Id>' | 'List<AWS::EC2::Subnet::Id>' | 'List<AWS::EC2::Volume::Id>' | 'List<AWS::EC2::VPC::Id>' | 'List<AWS::Route53::HostedZone::Id>'
|
|
82
|
+
Default?: string | number
|
|
83
|
+
Description?: string
|
|
84
|
+
AllowedValues?: string[]
|
|
85
|
+
AllowedPattern?: string
|
|
86
|
+
MinLength?: number
|
|
87
|
+
MaxLength?: number
|
|
88
|
+
MinValue?: number
|
|
89
|
+
MaxValue?: number
|
|
90
|
+
ConstraintDescription?: string
|
|
91
|
+
NoEcho?: boolean
|
|
92
|
+
}
|
|
93
|
+
export declare interface CloudFormationResource {
|
|
94
|
+
Type: string
|
|
95
|
+
Properties?: Record<string, any>
|
|
96
|
+
DependsOn?: string | string[]
|
|
97
|
+
Condition?: string
|
|
98
|
+
Metadata?: Record<string, any>
|
|
99
|
+
CreationPolicy?: Record<string, any>
|
|
100
|
+
UpdatePolicy?: Record<string, any>
|
|
101
|
+
DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
102
|
+
UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
103
|
+
}
|
|
104
|
+
export declare interface CloudFormationOutput {
|
|
105
|
+
Value: any
|
|
106
|
+
Description?: string
|
|
107
|
+
Export?: {
|
|
108
|
+
Name: any
|
|
109
|
+
}
|
|
110
|
+
Condition?: string
|
|
111
|
+
}
|
|
112
|
+
export type CloudFormationCondition = | CloudFormationIntrinsicFunction
|
|
113
|
+
| boolean
|
|
114
|
+
/**
|
|
115
|
+
* CloudFormation Intrinsic Functions
|
|
116
|
+
*/
|
|
117
|
+
export type CloudFormationIntrinsicFunction = | { Ref: string }
|
|
118
|
+
| { 'Fn::GetAtt': [string, string] }
|
|
119
|
+
| { 'Fn::Join': [string, any[]] }
|
|
120
|
+
| { 'Fn::Sub': string | [string, Record<string, any>] }
|
|
121
|
+
| { 'Fn::Select': [number, any[] | CloudFormationIntrinsicFunction] }
|
|
122
|
+
| { 'Fn::Split': [string, string] }
|
|
123
|
+
| { 'Fn::GetAZs': string }
|
|
124
|
+
| { 'Fn::ImportValue': any }
|
|
125
|
+
| { 'Fn::FindInMap': [string, any, any] }
|
|
126
|
+
| { 'Fn::Base64': any }
|
|
127
|
+
| { 'Fn::Cidr': [any, number, number] }
|
|
128
|
+
| { 'Fn::Equals': [any, any] }
|
|
129
|
+
| { 'Fn::If': [string, any, any] }
|
|
130
|
+
| { 'Fn::Not': [any] }
|
|
131
|
+
| { 'Fn::And': any[] }
|
|
132
|
+
| { 'Fn::Or': any[] }
|