@ts-cloud/core 0.2.3 → 0.2.4
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 +1 -0
- package/dist/aws/cloudformation.d.ts +136 -0
- package/dist/aws/cloudfront.d.ts +45 -0
- package/dist/aws/credentials.d.ts +77 -0
- package/dist/aws/credentials.test.d.ts +4 -0
- package/dist/aws/index.d.ts +10 -0
- package/dist/aws/s3.d.ts +256 -0
- package/dist/aws/s3.test.d.ts +4 -0
- package/dist/aws/signature.d.ts +142 -0
- package/dist/aws/signature.test.d.ts +4 -0
- package/dist/backup/disaster-recovery.d.ts +140 -0
- package/dist/backup/disaster-recovery.test.d.ts +1 -0
- package/dist/backup/index.d.ts +8 -0
- package/dist/backup/manager.d.ts +172 -0
- package/dist/backup/manager.test.d.ts +1 -0
- package/dist/cicd/circleci.d.ts +50 -0
- package/dist/cicd/github-actions.d.ts +62 -0
- package/dist/cicd/gitlab-ci.d.ts +50 -0
- package/dist/cicd/index.d.ts +7 -0
- package/dist/cli/history.d.ts +137 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/progress.d.ts +193 -0
- package/dist/cli/repl.d.ts +148 -0
- package/dist/cli/suggestions.d.ts +74 -0
- package/dist/cli/table.d.ts +73 -0
- package/dist/cli/table.test.d.ts +1 -0
- package/dist/cloudformation/builder.d.ts +93 -0
- package/dist/cloudformation/builder.test.d.ts +4 -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 +68 -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 +39 -0
- package/dist/cloudformation/builders/network.d.ts +14 -0
- package/dist/cloudformation/builders/queue.d.ts +16 -0
- package/dist/cloudformation/builders/security.d.ts +31 -0
- package/dist/cloudformation/builders/storage.d.ts +36 -0
- package/dist/cloudformation/index.d.ts +10 -0
- package/dist/cloudformation/types.d.ts +200 -0
- package/dist/compliance/aws-config.d.ts +175 -0
- package/dist/compliance/cloudtrail.d.ts +132 -0
- package/dist/compliance/compliance.test.d.ts +1 -0
- package/dist/compliance/guardduty.d.ts +176 -0
- package/dist/compliance/index.d.ts +12 -0
- package/dist/compliance/security-hub.d.ts +178 -0
- package/dist/containers/build-optimization.d.ts +155 -0
- package/dist/containers/containers.test.d.ts +1 -0
- package/dist/containers/image-scanning.d.ts +144 -0
- package/dist/containers/index.d.ts +8 -0
- package/dist/containers/registry.d.ts +129 -0
- package/dist/containers/service-mesh.d.ts +254 -0
- package/dist/database/database.test.d.ts +1 -0
- package/dist/database/index.d.ts +8 -0
- package/dist/database/migrations.d.ts +153 -0
- package/dist/database/performance.d.ts +219 -0
- package/dist/database/replicas.d.ts +218 -0
- package/dist/database/users.d.ts +165 -0
- package/dist/dependency-graph.d.ts +37 -0
- package/dist/deployment/ab-testing.d.ts +165 -0
- package/dist/deployment/blue-green.d.ts +140 -0
- package/dist/deployment/canary.d.ts +165 -0
- package/dist/deployment/deployment.test.d.ts +1 -0
- package/dist/deployment/index.d.ts +12 -0
- package/dist/deployment/progressive.d.ts +50 -0
- package/dist/dns/dns.test.d.ts +1 -0
- package/dist/dns/dnssec.d.ts +120 -0
- package/dist/dns/index.d.ts +7 -0
- package/dist/dns/resolver.d.ts +216 -0
- package/dist/dns/routing.d.ts +277 -0
- package/dist/email/advanced/analytics.d.ts +107 -0
- package/dist/email/advanced/index.d.ts +10 -0
- package/dist/email/advanced/rules.d.ts +131 -0
- package/dist/email/advanced/scheduling.d.ts +81 -0
- package/dist/email/advanced/search.d.ts +91 -0
- package/dist/email/advanced/shared-mailboxes.d.ts +109 -0
- package/dist/email/advanced/templates.d.ts +95 -0
- package/dist/email/advanced/threading.d.ts +65 -0
- package/dist/email/analytics.d.ts +189 -0
- package/dist/email/bounce-handling.d.ts +171 -0
- package/dist/email/email.test.d.ts +1 -0
- package/dist/email/handlers/__tests__/inbound.test.d.ts +1 -0
- package/dist/email/handlers/__tests__/outbound.test.d.ts +1 -0
- package/dist/email/handlers/converter.d.ts +11 -0
- package/dist/email/handlers/feedback.d.ts +11 -0
- package/dist/email/handlers/inbound.d.ts +13 -0
- package/dist/email/handlers/outbound.d.ts +13 -0
- package/dist/email/index.d.ts +10 -0
- package/dist/email/reputation.d.ts +133 -0
- package/dist/email/templates.d.ts +124 -0
- package/dist/errors/index.d.ts +177 -0
- package/dist/errors/index.test.d.ts +4 -0
- package/dist/health-checks/index.d.ts +35 -0
- package/dist/index.d.ts +15 -256
- package/dist/index.js +228 -80
- package/dist/intrinsic-functions.d.ts +77 -0
- package/dist/lambda/concurrency.d.ts +146 -0
- package/dist/lambda/destinations.d.ts +141 -0
- package/dist/lambda/dlq.d.ts +160 -0
- package/dist/lambda/index.d.ts +10 -0
- package/dist/lambda/lambda.test.d.ts +1 -0
- package/dist/lambda/layers.d.ts +117 -0
- package/dist/lambda/versions.d.ts +145 -0
- package/dist/lambda/vpc.d.ts +164 -0
- package/dist/local/config.d.ts +44 -0
- package/dist/local/index.d.ts +5 -0
- package/dist/local/mock-aws.d.ts +69 -0
- package/dist/modules/ai.d.ts +108 -0
- package/dist/modules/api.d.ts +157 -0
- package/dist/modules/auth.d.ts +262 -0
- package/dist/modules/cache.d.ts +108 -0
- package/dist/modules/cdn.d.ts +305 -0
- package/dist/modules/communication.d.ts +117 -0
- package/dist/modules/compute.d.ts +1376 -0
- package/dist/modules/database.d.ts +144 -0
- package/dist/modules/deployment.d.ts +372 -0
- package/dist/modules/dns.d.ts +143 -0
- package/dist/modules/email.d.ts +314 -0
- package/dist/modules/filesystem.d.ts +132 -0
- package/dist/modules/index.d.ts +31 -0
- package/dist/modules/messaging.d.ts +210 -0
- package/dist/modules/monitoring.d.ts +574 -0
- package/dist/modules/network.d.ts +148 -0
- package/dist/modules/parameter-store.d.ts +143 -0
- package/dist/modules/permissions.d.ts +245 -0
- package/dist/modules/phone.d.ts +125 -0
- package/dist/modules/queue.d.ts +411 -0
- package/dist/modules/redirects.d.ts +140 -0
- package/dist/modules/registry.d.ts +189 -0
- package/dist/modules/search.d.ts +135 -0
- package/dist/modules/secrets.d.ts +149 -0
- package/dist/modules/security.d.ts +219 -0
- package/dist/modules/sms.d.ts +130 -0
- package/dist/modules/storage.d.ts +344 -0
- package/dist/modules/workflow.d.ts +288 -0
- package/dist/multi-account/config.d.ts +166 -0
- package/dist/multi-account/index.d.ts +6 -0
- package/dist/multi-account/manager.d.ts +181 -0
- package/dist/multi-region/cross-region.d.ts +204 -0
- package/dist/multi-region/index.d.ts +7 -0
- package/dist/multi-region/manager.d.ts +136 -0
- package/dist/multi-region/regions.d.ts +98 -0
- package/dist/network-security/index.d.ts +55 -0
- package/dist/observability/index.d.ts +8 -0
- package/dist/observability/logs.d.ts +213 -0
- package/dist/observability/metrics.d.ts +187 -0
- package/dist/observability/observability.test.d.ts +1 -0
- package/dist/observability/synthetics.d.ts +189 -0
- package/dist/observability/xray.d.ts +193 -0
- package/dist/phone/advanced/analytics.d.ts +83 -0
- package/dist/phone/advanced/callbacks.d.ts +67 -0
- package/dist/phone/advanced/index.d.ts +7 -0
- package/dist/phone/advanced/ivr-builder.d.ts +130 -0
- package/dist/phone/advanced/recording.d.ts +62 -0
- package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +1 -0
- package/dist/phone/handlers/incoming-call.d.ts +10 -0
- package/dist/phone/handlers/missed-call.d.ts +9 -0
- package/dist/phone/handlers/voicemail.d.ts +10 -0
- package/dist/phone/index.d.ts +5 -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 +4 -0
- package/dist/presets/fullstack-app.d.ts +12 -0
- package/dist/presets/index.d.ts +13 -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 +1 -0
- package/dist/preview/index.d.ts +10 -0
- package/dist/preview/manager.d.ts +101 -0
- package/dist/preview/manager.test.d.ts +1 -0
- package/dist/preview/notifications.d.ts +89 -0
- package/dist/preview/notifications.test.d.ts +1 -0
- package/dist/queue/batch-processing.d.ts +138 -0
- package/dist/queue/dlq-monitoring.d.ts +143 -0
- package/dist/queue/fifo.d.ts +131 -0
- package/dist/queue/index.d.ts +8 -0
- package/dist/queue/management.d.ts +162 -0
- package/dist/queue/queue.test.d.ts +1 -0
- package/dist/resource-mgmt/index.d.ts +44 -0
- package/dist/resource-naming.d.ts +26 -0
- package/dist/s3/index.d.ts +227 -0
- package/dist/schema/index.d.ts +12 -0
- package/dist/security/certificate-manager.d.ts +184 -0
- package/dist/security/index.d.ts +8 -0
- package/dist/security/scanning.d.ts +196 -0
- package/dist/security/secrets-manager.d.ts +204 -0
- package/dist/security/secrets-rotation.d.ts +167 -0
- package/dist/security/security.test.d.ts +1 -0
- package/dist/sms/advanced/ab-testing.d.ts +74 -0
- package/dist/sms/advanced/analytics.d.ts +75 -0
- package/dist/sms/advanced/campaigns.d.ts +96 -0
- package/dist/sms/advanced/chatbot.d.ts +67 -0
- package/dist/sms/advanced/index.d.ts +9 -0
- package/dist/sms/advanced/link-tracking.d.ts +60 -0
- package/dist/sms/advanced/mms.d.ts +60 -0
- package/dist/sms/handlers/__tests__/send.test.d.ts +1 -0
- package/dist/sms/handlers/delivery-status.d.ts +10 -0
- package/dist/sms/handlers/receive.d.ts +10 -0
- package/dist/sms/handlers/send.d.ts +10 -0
- package/dist/sms/index.d.ts +5 -0
- package/dist/stack-diff.d.ts +38 -0
- package/dist/static-site/index.d.ts +49 -0
- package/dist/template-builder.d.ts +42 -0
- package/dist/template-validator.d.ts +28 -0
- package/dist/types.d.ts +2514 -0
- package/dist/utils/cache.d.ts +117 -0
- package/dist/utils/diff.d.ts +52 -0
- package/dist/utils/hash.d.ts +73 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/parallel.d.ts +78 -0
- package/dist/validators/credentials.d.ts +30 -0
- package/dist/validators/credentials.test.d.ts +4 -0
- package/dist/validators/quotas.d.ts +64 -0
- package/dist/validators/quotas.test.d.ts +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMS Module for CloudFormation
|
|
3
|
+
*
|
|
4
|
+
* Provides CloudFormation resources for AWS Pinpoint SMS infrastructure
|
|
5
|
+
*/
|
|
6
|
+
import { handler as sendHandler } from '../sms/handlers/send';
|
|
7
|
+
import { handler as receiveHandler } from '../sms/handlers/receive';
|
|
8
|
+
import { handler as deliveryStatusHandler } from '../sms/handlers/delivery-status';
|
|
9
|
+
export interface SmsConfig {
|
|
10
|
+
slug: string;
|
|
11
|
+
environment: string;
|
|
12
|
+
senderId?: string;
|
|
13
|
+
originationNumber?: string;
|
|
14
|
+
messageType?: 'TRANSACTIONAL' | 'PROMOTIONAL';
|
|
15
|
+
twoWayEnabled?: boolean;
|
|
16
|
+
webhookUrl?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class SMS {
|
|
19
|
+
/**
|
|
20
|
+
* Lambda code for SMS handlers
|
|
21
|
+
*/
|
|
22
|
+
static LambdaCode: {
|
|
23
|
+
send: typeof sendHandler;
|
|
24
|
+
receive: typeof receiveHandler;
|
|
25
|
+
deliveryStatus: typeof deliveryStatusHandler;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Create Pinpoint application
|
|
29
|
+
*/
|
|
30
|
+
static createPinpointApp(config: {
|
|
31
|
+
slug: string;
|
|
32
|
+
name?: string;
|
|
33
|
+
}): Record<string, any>;
|
|
34
|
+
/**
|
|
35
|
+
* Create SMS channel for Pinpoint app
|
|
36
|
+
*/
|
|
37
|
+
static createSmsChannel(config: {
|
|
38
|
+
slug: string;
|
|
39
|
+
applicationId: string | {
|
|
40
|
+
Ref: string;
|
|
41
|
+
};
|
|
42
|
+
senderId?: string;
|
|
43
|
+
shortCode?: string;
|
|
44
|
+
enabled?: boolean;
|
|
45
|
+
}): Record<string, any>;
|
|
46
|
+
/**
|
|
47
|
+
* Create SMS Lambda role
|
|
48
|
+
*/
|
|
49
|
+
static createSmsLambdaRole(config: {
|
|
50
|
+
slug: string;
|
|
51
|
+
}): Record<string, any>;
|
|
52
|
+
/**
|
|
53
|
+
* Create SMS send Lambda function
|
|
54
|
+
*/
|
|
55
|
+
static createSendLambda(config: {
|
|
56
|
+
slug: string;
|
|
57
|
+
roleArn: string | {
|
|
58
|
+
'Fn::GetAtt': string[];
|
|
59
|
+
};
|
|
60
|
+
pinpointAppId: string | {
|
|
61
|
+
Ref: string;
|
|
62
|
+
};
|
|
63
|
+
messageLogTable?: string | {
|
|
64
|
+
Ref: string;
|
|
65
|
+
};
|
|
66
|
+
senderId?: string;
|
|
67
|
+
originationNumber?: string;
|
|
68
|
+
}): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* Create SMS receive Lambda function
|
|
71
|
+
*/
|
|
72
|
+
static createReceiveLambda(config: {
|
|
73
|
+
slug: string;
|
|
74
|
+
roleArn: string | {
|
|
75
|
+
'Fn::GetAtt': string[];
|
|
76
|
+
};
|
|
77
|
+
optOutTable?: string | {
|
|
78
|
+
Ref: string;
|
|
79
|
+
};
|
|
80
|
+
messageLogTable?: string | {
|
|
81
|
+
Ref: string;
|
|
82
|
+
};
|
|
83
|
+
notificationTopicArn?: string | {
|
|
84
|
+
Ref: string;
|
|
85
|
+
};
|
|
86
|
+
webhookUrl?: string;
|
|
87
|
+
}): Record<string, any>;
|
|
88
|
+
/**
|
|
89
|
+
* Create delivery status Lambda function
|
|
90
|
+
*/
|
|
91
|
+
static createDeliveryStatusLambda(config: {
|
|
92
|
+
slug: string;
|
|
93
|
+
roleArn: string | {
|
|
94
|
+
'Fn::GetAtt': string[];
|
|
95
|
+
};
|
|
96
|
+
messageLogTable?: string | {
|
|
97
|
+
Ref: string;
|
|
98
|
+
};
|
|
99
|
+
notificationTopicArn?: string | {
|
|
100
|
+
Ref: string;
|
|
101
|
+
};
|
|
102
|
+
webhookUrl?: string;
|
|
103
|
+
}): Record<string, any>;
|
|
104
|
+
/**
|
|
105
|
+
* Create message log DynamoDB table
|
|
106
|
+
*/
|
|
107
|
+
static createMessageLogTable(config: {
|
|
108
|
+
slug: string;
|
|
109
|
+
}): Record<string, any>;
|
|
110
|
+
/**
|
|
111
|
+
* Create opt-out DynamoDB table
|
|
112
|
+
*/
|
|
113
|
+
static createOptOutTable(config: {
|
|
114
|
+
slug: string;
|
|
115
|
+
}): Record<string, any>;
|
|
116
|
+
/**
|
|
117
|
+
* Create notification topic for SMS events
|
|
118
|
+
*/
|
|
119
|
+
static createNotificationTopic(config: {
|
|
120
|
+
slug: string;
|
|
121
|
+
}): Record<string, any>;
|
|
122
|
+
/**
|
|
123
|
+
* Create complete SMS setup
|
|
124
|
+
*/
|
|
125
|
+
static createCompleteSetup(config: SmsConfig): {
|
|
126
|
+
resources: Record<string, any>;
|
|
127
|
+
outputs: Record<string, any>;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export default SMS;
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import type { BackupPlan, BackupSelection, BackupVault, S3Bucket, S3BucketPolicy } from '@ts-cloud/aws-types';
|
|
2
|
+
import type { IAMRole } from '@ts-cloud/aws-types';
|
|
3
|
+
import type { EnvironmentType } from '../types';
|
|
4
|
+
export interface BucketOptions {
|
|
5
|
+
name?: string;
|
|
6
|
+
bucketName?: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
environment: EnvironmentType;
|
|
9
|
+
public?: boolean;
|
|
10
|
+
versioning?: boolean;
|
|
11
|
+
website?: boolean;
|
|
12
|
+
encryption?: boolean;
|
|
13
|
+
intelligentTiering?: boolean;
|
|
14
|
+
cors?: CorsRule[];
|
|
15
|
+
lifecycleRules?: LifecycleRule[];
|
|
16
|
+
}
|
|
17
|
+
export interface CorsRule {
|
|
18
|
+
allowedOrigins: string[];
|
|
19
|
+
allowedMethods: string[];
|
|
20
|
+
allowedHeaders?: string[];
|
|
21
|
+
maxAge?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface LifecycleRule {
|
|
24
|
+
id: string;
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
expirationDays?: number;
|
|
27
|
+
transitions?: Array<{
|
|
28
|
+
days: number;
|
|
29
|
+
storageClass: 'GLACIER' | 'DEEP_ARCHIVE' | 'INTELLIGENT_TIERING' | 'STANDARD_IA' | 'ONEZONE_IA';
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
export interface S3NotificationConfig {
|
|
33
|
+
functionArn: string | {
|
|
34
|
+
'Fn::GetAtt': [string, string];
|
|
35
|
+
};
|
|
36
|
+
events: Array<'s3:ObjectCreated:*' | 's3:ObjectCreated:Put' | 's3:ObjectCreated:Post' | 's3:ObjectCreated:Copy' | 's3:ObjectCreated:CompleteMultipartUpload' | 's3:ObjectRemoved:*' | 's3:ObjectRemoved:Delete' | 's3:ObjectRemoved:DeleteMarkerCreated'>;
|
|
37
|
+
filter?: {
|
|
38
|
+
prefix?: string;
|
|
39
|
+
suffix?: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface BackupPlanOptions {
|
|
43
|
+
name: string;
|
|
44
|
+
slug: string;
|
|
45
|
+
environment: EnvironmentType;
|
|
46
|
+
bucketLogicalIds: string[];
|
|
47
|
+
retentionDays: number;
|
|
48
|
+
schedule?: string;
|
|
49
|
+
vaultName?: string;
|
|
50
|
+
enableContinuousBackup?: boolean;
|
|
51
|
+
moveToColdStorageAfterDays?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Storage Module - S3 Bucket Management
|
|
55
|
+
* Provides clean API for creating and configuring S3 buckets
|
|
56
|
+
*/
|
|
57
|
+
export declare class Storage {
|
|
58
|
+
/**
|
|
59
|
+
* Create an S3 bucket with the specified options
|
|
60
|
+
*/
|
|
61
|
+
static createBucket(options: BucketOptions): {
|
|
62
|
+
bucket: S3Bucket;
|
|
63
|
+
bucketPolicy?: S3BucketPolicy;
|
|
64
|
+
logicalId: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Enable versioning on an existing bucket
|
|
68
|
+
*/
|
|
69
|
+
static enableVersioning(bucket: S3Bucket): S3Bucket;
|
|
70
|
+
/**
|
|
71
|
+
* Enable website hosting on an existing bucket
|
|
72
|
+
*/
|
|
73
|
+
static enableWebsiteHosting(bucket: S3Bucket, indexDocument?: string, errorDocument?: string): S3Bucket;
|
|
74
|
+
/**
|
|
75
|
+
* Set lifecycle rules on an existing bucket
|
|
76
|
+
*/
|
|
77
|
+
static setLifecycleRules(bucket: S3Bucket, rules: LifecycleRule[]): S3Bucket;
|
|
78
|
+
/**
|
|
79
|
+
* Enable intelligent tiering on an existing bucket
|
|
80
|
+
*/
|
|
81
|
+
static enableIntelligentTiering(bucket: S3Bucket): S3Bucket;
|
|
82
|
+
/**
|
|
83
|
+
* Add Lambda notification to bucket
|
|
84
|
+
*/
|
|
85
|
+
static addLambdaNotification(bucket: S3Bucket, config: S3NotificationConfig): S3Bucket;
|
|
86
|
+
/**
|
|
87
|
+
* Common notification configurations
|
|
88
|
+
*/
|
|
89
|
+
static readonly Notifications: {
|
|
90
|
+
/**
|
|
91
|
+
* Trigger Lambda on any object creation
|
|
92
|
+
*/
|
|
93
|
+
onObjectCreated: (functionArn: string | {
|
|
94
|
+
"Fn::GetAtt": [string, string];
|
|
95
|
+
}) => {
|
|
96
|
+
functionArn: string | {
|
|
97
|
+
"Fn::GetAtt": [string, string];
|
|
98
|
+
};
|
|
99
|
+
events: readonly ["s3:ObjectCreated:*"];
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Trigger Lambda on object deletion
|
|
103
|
+
*/
|
|
104
|
+
onObjectRemoved: (functionArn: string | {
|
|
105
|
+
"Fn::GetAtt": [string, string];
|
|
106
|
+
}) => {
|
|
107
|
+
functionArn: string | {
|
|
108
|
+
"Fn::GetAtt": [string, string];
|
|
109
|
+
};
|
|
110
|
+
events: readonly ["s3:ObjectRemoved:*"];
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Trigger Lambda on image uploads (jpg, png, gif)
|
|
114
|
+
*/
|
|
115
|
+
onImageUpload: (functionArn: string | {
|
|
116
|
+
"Fn::GetAtt": [string, string];
|
|
117
|
+
}, prefix?: string) => {
|
|
118
|
+
functionArn: string | {
|
|
119
|
+
"Fn::GetAtt": [string, string];
|
|
120
|
+
};
|
|
121
|
+
events: readonly ["s3:ObjectCreated:*"];
|
|
122
|
+
filter: {
|
|
123
|
+
prefix: string | undefined;
|
|
124
|
+
suffix: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Trigger Lambda on specific file type
|
|
129
|
+
*/
|
|
130
|
+
onFileType: (functionArn: string | {
|
|
131
|
+
"Fn::GetAtt": [string, string];
|
|
132
|
+
}, suffix: string, prefix?: string) => {
|
|
133
|
+
functionArn: string | {
|
|
134
|
+
"Fn::GetAtt": [string, string];
|
|
135
|
+
};
|
|
136
|
+
events: readonly ["s3:ObjectCreated:*"];
|
|
137
|
+
filter: {
|
|
138
|
+
prefix: string | undefined;
|
|
139
|
+
suffix: string;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Trigger Lambda on uploads to specific folder
|
|
144
|
+
*/
|
|
145
|
+
onFolderUpload: (functionArn: string | {
|
|
146
|
+
"Fn::GetAtt": [string, string];
|
|
147
|
+
}, folder: string) => {
|
|
148
|
+
functionArn: string | {
|
|
149
|
+
"Fn::GetAtt": [string, string];
|
|
150
|
+
};
|
|
151
|
+
events: readonly ["s3:ObjectCreated:*"];
|
|
152
|
+
filter: {
|
|
153
|
+
prefix: string;
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Create an AWS Backup plan for S3 buckets
|
|
159
|
+
*/
|
|
160
|
+
static createBackupPlan(options: BackupPlanOptions): {
|
|
161
|
+
vault: BackupVault;
|
|
162
|
+
plan: BackupPlan;
|
|
163
|
+
selection: BackupSelection;
|
|
164
|
+
role: IAMRole;
|
|
165
|
+
vaultLogicalId: string;
|
|
166
|
+
planLogicalId: string;
|
|
167
|
+
selectionLogicalId: string;
|
|
168
|
+
roleLogicalId: string;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Common backup schedule expressions
|
|
172
|
+
*/
|
|
173
|
+
static readonly BackupSchedules: {
|
|
174
|
+
HOURLY: string;
|
|
175
|
+
DAILY_5AM: string;
|
|
176
|
+
DAILY_MIDNIGHT: string;
|
|
177
|
+
WEEKLY_SUNDAY: string;
|
|
178
|
+
WEEKLY_SATURDAY: string;
|
|
179
|
+
MONTHLY_FIRST: string;
|
|
180
|
+
EVERY_12_HOURS: string;
|
|
181
|
+
EVERY_6_HOURS: string;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Common backup retention periods (in days)
|
|
185
|
+
*/
|
|
186
|
+
static readonly BackupRetention: {
|
|
187
|
+
ONE_DAY: number;
|
|
188
|
+
ONE_WEEK: number;
|
|
189
|
+
TWO_WEEKS: number;
|
|
190
|
+
ONE_MONTH: number;
|
|
191
|
+
THREE_MONTHS: number;
|
|
192
|
+
SIX_MONTHS: number;
|
|
193
|
+
ONE_YEAR: number;
|
|
194
|
+
TWO_YEARS: number;
|
|
195
|
+
FIVE_YEARS: number;
|
|
196
|
+
SEVEN_YEARS: number;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Create a www redirect bucket
|
|
200
|
+
* This bucket redirects www.domain.com to domain.com (or vice versa)
|
|
201
|
+
*/
|
|
202
|
+
static createWwwRedirectBucket(options: {
|
|
203
|
+
slug: string;
|
|
204
|
+
environment: EnvironmentType;
|
|
205
|
+
sourceDomain: string;
|
|
206
|
+
targetDomain: string;
|
|
207
|
+
protocol?: 'http' | 'https';
|
|
208
|
+
}): {
|
|
209
|
+
bucket: S3Bucket;
|
|
210
|
+
bucketPolicy: S3BucketPolicy;
|
|
211
|
+
logicalId: string;
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* Create a docs bucket (for documentation sites)
|
|
215
|
+
* Conditional creation based on docs presence
|
|
216
|
+
*/
|
|
217
|
+
static createDocsBucket(options: {
|
|
218
|
+
slug: string;
|
|
219
|
+
environment: EnvironmentType;
|
|
220
|
+
domain?: string;
|
|
221
|
+
}): {
|
|
222
|
+
bucket: S3Bucket;
|
|
223
|
+
bucketPolicy?: S3BucketPolicy;
|
|
224
|
+
logicalId: string;
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Create an email bucket for storing emails
|
|
228
|
+
*/
|
|
229
|
+
static createEmailBucket(options: {
|
|
230
|
+
slug: string;
|
|
231
|
+
environment: EnvironmentType;
|
|
232
|
+
}): {
|
|
233
|
+
bucket: S3Bucket;
|
|
234
|
+
bucketPolicy: S3BucketPolicy;
|
|
235
|
+
logicalId: string;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Check if a docs directory exists and has content
|
|
239
|
+
*/
|
|
240
|
+
static docsExist(options?: {
|
|
241
|
+
projectRoot?: string;
|
|
242
|
+
docsPaths?: string[];
|
|
243
|
+
}): {
|
|
244
|
+
exists: boolean;
|
|
245
|
+
path: string | null;
|
|
246
|
+
hasDistFolder: boolean;
|
|
247
|
+
distPath: string | null;
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Conditionally create docs bucket if docs exist
|
|
251
|
+
*/
|
|
252
|
+
static createDocsBucketIfExists(options: {
|
|
253
|
+
slug: string;
|
|
254
|
+
environment: EnvironmentType;
|
|
255
|
+
domain?: string;
|
|
256
|
+
projectRoot?: string;
|
|
257
|
+
docsPaths?: string[];
|
|
258
|
+
}): {
|
|
259
|
+
bucket: S3Bucket | null;
|
|
260
|
+
bucketPolicy?: S3BucketPolicy;
|
|
261
|
+
logicalId: string | null;
|
|
262
|
+
docsInfo: {
|
|
263
|
+
exists: boolean;
|
|
264
|
+
path: string | null;
|
|
265
|
+
hasDistFolder: boolean;
|
|
266
|
+
distPath: string | null;
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* Create private files bucket
|
|
271
|
+
* For storing private/sensitive files not accessible publicly
|
|
272
|
+
*/
|
|
273
|
+
static createPrivateBucket(options: {
|
|
274
|
+
slug: string;
|
|
275
|
+
environment: EnvironmentType;
|
|
276
|
+
enableVersioning?: boolean;
|
|
277
|
+
retentionDays?: number;
|
|
278
|
+
encryptionKeyArn?: string;
|
|
279
|
+
}): {
|
|
280
|
+
bucket: S3Bucket;
|
|
281
|
+
logicalId: string;
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* Check if source paths exist for deployment
|
|
285
|
+
* Common paths: views/web/dist, docs/dist, private
|
|
286
|
+
*/
|
|
287
|
+
static checkSourcePaths(options?: {
|
|
288
|
+
projectRoot?: string;
|
|
289
|
+
paths?: {
|
|
290
|
+
web?: string;
|
|
291
|
+
docs?: string;
|
|
292
|
+
private?: string;
|
|
293
|
+
};
|
|
294
|
+
}): {
|
|
295
|
+
web: {
|
|
296
|
+
exists: boolean;
|
|
297
|
+
path: string;
|
|
298
|
+
};
|
|
299
|
+
docs: {
|
|
300
|
+
exists: boolean;
|
|
301
|
+
path: string;
|
|
302
|
+
};
|
|
303
|
+
private: {
|
|
304
|
+
exists: boolean;
|
|
305
|
+
path: string;
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
/**
|
|
309
|
+
* Create all deployment buckets based on source paths
|
|
310
|
+
* Conditionally creates buckets only for source paths that exist
|
|
311
|
+
*/
|
|
312
|
+
static createDeploymentBuckets(options: {
|
|
313
|
+
slug: string;
|
|
314
|
+
environment: EnvironmentType;
|
|
315
|
+
domain?: string;
|
|
316
|
+
projectRoot?: string;
|
|
317
|
+
paths?: {
|
|
318
|
+
web?: string;
|
|
319
|
+
docs?: string;
|
|
320
|
+
private?: string;
|
|
321
|
+
};
|
|
322
|
+
}): {
|
|
323
|
+
resources: Record<string, S3Bucket | S3BucketPolicy>;
|
|
324
|
+
created: {
|
|
325
|
+
web: boolean;
|
|
326
|
+
docs: boolean;
|
|
327
|
+
private: boolean;
|
|
328
|
+
};
|
|
329
|
+
sourcePaths: {
|
|
330
|
+
web: {
|
|
331
|
+
exists: boolean;
|
|
332
|
+
path: string;
|
|
333
|
+
};
|
|
334
|
+
docs: {
|
|
335
|
+
exists: boolean;
|
|
336
|
+
path: string;
|
|
337
|
+
};
|
|
338
|
+
private: {
|
|
339
|
+
exists: boolean;
|
|
340
|
+
path: string;
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
};
|
|
344
|
+
}
|