@ts-cloud/core 0.2.2 → 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.
Files changed (226) hide show
  1. package/dist/advanced-features.test.d.ts +1 -0
  2. package/dist/aws/cloudformation.d.ts +136 -0
  3. package/dist/aws/cloudfront.d.ts +45 -0
  4. package/dist/aws/credentials.d.ts +77 -0
  5. package/dist/aws/credentials.test.d.ts +4 -0
  6. package/dist/aws/index.d.ts +10 -0
  7. package/dist/aws/s3.d.ts +256 -0
  8. package/dist/aws/s3.test.d.ts +4 -0
  9. package/dist/aws/signature.d.ts +142 -0
  10. package/dist/aws/signature.test.d.ts +4 -0
  11. package/dist/backup/disaster-recovery.d.ts +140 -0
  12. package/dist/backup/disaster-recovery.test.d.ts +1 -0
  13. package/dist/backup/index.d.ts +8 -0
  14. package/dist/backup/manager.d.ts +172 -0
  15. package/dist/backup/manager.test.d.ts +1 -0
  16. package/dist/cicd/circleci.d.ts +50 -0
  17. package/dist/cicd/github-actions.d.ts +62 -0
  18. package/dist/cicd/gitlab-ci.d.ts +50 -0
  19. package/dist/cicd/index.d.ts +7 -0
  20. package/dist/cli/history.d.ts +137 -0
  21. package/dist/cli/index.d.ts +9 -0
  22. package/dist/cli/progress.d.ts +193 -0
  23. package/dist/cli/repl.d.ts +148 -0
  24. package/dist/cli/suggestions.d.ts +74 -0
  25. package/dist/cli/table.d.ts +73 -0
  26. package/dist/cli/table.test.d.ts +1 -0
  27. package/dist/cloudformation/builder.d.ts +93 -0
  28. package/dist/cloudformation/builder.test.d.ts +4 -0
  29. package/dist/cloudformation/builders/api-gateway.d.ts +30 -0
  30. package/dist/cloudformation/builders/cache.d.ts +35 -0
  31. package/dist/cloudformation/builders/cdn.d.ts +34 -0
  32. package/dist/cloudformation/builders/compute.d.ts +68 -0
  33. package/dist/cloudformation/builders/database.d.ts +61 -0
  34. package/dist/cloudformation/builders/functions.d.ts +32 -0
  35. package/dist/cloudformation/builders/messaging.d.ts +17 -0
  36. package/dist/cloudformation/builders/monitoring.d.ts +39 -0
  37. package/dist/cloudformation/builders/network.d.ts +14 -0
  38. package/dist/cloudformation/builders/queue.d.ts +16 -0
  39. package/dist/cloudformation/builders/security.d.ts +31 -0
  40. package/dist/cloudformation/builders/storage.d.ts +36 -0
  41. package/dist/cloudformation/index.d.ts +10 -0
  42. package/dist/cloudformation/types.d.ts +200 -0
  43. package/dist/compliance/aws-config.d.ts +175 -0
  44. package/dist/compliance/cloudtrail.d.ts +132 -0
  45. package/dist/compliance/compliance.test.d.ts +1 -0
  46. package/dist/compliance/guardduty.d.ts +176 -0
  47. package/dist/compliance/index.d.ts +12 -0
  48. package/dist/compliance/security-hub.d.ts +178 -0
  49. package/dist/containers/build-optimization.d.ts +155 -0
  50. package/dist/containers/containers.test.d.ts +1 -0
  51. package/dist/containers/image-scanning.d.ts +144 -0
  52. package/dist/containers/index.d.ts +8 -0
  53. package/dist/containers/registry.d.ts +129 -0
  54. package/dist/containers/service-mesh.d.ts +254 -0
  55. package/dist/database/database.test.d.ts +1 -0
  56. package/dist/database/index.d.ts +8 -0
  57. package/dist/database/migrations.d.ts +153 -0
  58. package/dist/database/performance.d.ts +219 -0
  59. package/dist/database/replicas.d.ts +218 -0
  60. package/dist/database/users.d.ts +165 -0
  61. package/dist/dependency-graph.d.ts +37 -0
  62. package/dist/deployment/ab-testing.d.ts +165 -0
  63. package/dist/deployment/blue-green.d.ts +140 -0
  64. package/dist/deployment/canary.d.ts +165 -0
  65. package/dist/deployment/deployment.test.d.ts +1 -0
  66. package/dist/deployment/index.d.ts +12 -0
  67. package/dist/deployment/progressive.d.ts +50 -0
  68. package/dist/dns/dns.test.d.ts +1 -0
  69. package/dist/dns/dnssec.d.ts +120 -0
  70. package/dist/dns/index.d.ts +7 -0
  71. package/dist/dns/resolver.d.ts +216 -0
  72. package/dist/dns/routing.d.ts +277 -0
  73. package/dist/email/advanced/analytics.d.ts +107 -0
  74. package/dist/email/advanced/index.d.ts +10 -0
  75. package/dist/email/advanced/rules.d.ts +131 -0
  76. package/dist/email/advanced/scheduling.d.ts +81 -0
  77. package/dist/email/advanced/search.d.ts +91 -0
  78. package/dist/email/advanced/shared-mailboxes.d.ts +109 -0
  79. package/dist/email/advanced/templates.d.ts +95 -0
  80. package/dist/email/advanced/threading.d.ts +65 -0
  81. package/dist/email/analytics.d.ts +189 -0
  82. package/dist/email/bounce-handling.d.ts +171 -0
  83. package/dist/email/email.test.d.ts +1 -0
  84. package/dist/email/handlers/__tests__/inbound.test.d.ts +1 -0
  85. package/dist/email/handlers/__tests__/outbound.test.d.ts +1 -0
  86. package/dist/email/handlers/converter.d.ts +11 -0
  87. package/dist/email/handlers/feedback.d.ts +11 -0
  88. package/dist/email/handlers/inbound.d.ts +13 -0
  89. package/dist/email/handlers/outbound.d.ts +13 -0
  90. package/dist/email/index.d.ts +10 -0
  91. package/dist/email/reputation.d.ts +133 -0
  92. package/dist/email/templates.d.ts +124 -0
  93. package/dist/errors/index.d.ts +177 -0
  94. package/dist/errors/index.test.d.ts +4 -0
  95. package/dist/health-checks/index.d.ts +35 -0
  96. package/dist/index.d.ts +15 -256
  97. package/dist/index.js +228 -80
  98. package/dist/intrinsic-functions.d.ts +77 -0
  99. package/dist/lambda/concurrency.d.ts +146 -0
  100. package/dist/lambda/destinations.d.ts +141 -0
  101. package/dist/lambda/dlq.d.ts +160 -0
  102. package/dist/lambda/index.d.ts +10 -0
  103. package/dist/lambda/lambda.test.d.ts +1 -0
  104. package/dist/lambda/layers.d.ts +117 -0
  105. package/dist/lambda/versions.d.ts +145 -0
  106. package/dist/lambda/vpc.d.ts +164 -0
  107. package/dist/local/config.d.ts +44 -0
  108. package/dist/local/index.d.ts +5 -0
  109. package/dist/local/mock-aws.d.ts +69 -0
  110. package/dist/modules/ai.d.ts +108 -0
  111. package/dist/modules/api.d.ts +157 -0
  112. package/dist/modules/auth.d.ts +262 -0
  113. package/dist/modules/cache.d.ts +108 -0
  114. package/dist/modules/cdn.d.ts +305 -0
  115. package/dist/modules/communication.d.ts +117 -0
  116. package/dist/modules/compute.d.ts +1376 -0
  117. package/dist/modules/database.d.ts +144 -0
  118. package/dist/modules/deployment.d.ts +372 -0
  119. package/dist/modules/dns.d.ts +143 -0
  120. package/dist/modules/email.d.ts +314 -0
  121. package/dist/modules/filesystem.d.ts +132 -0
  122. package/dist/modules/index.d.ts +31 -0
  123. package/dist/modules/messaging.d.ts +210 -0
  124. package/dist/modules/monitoring.d.ts +574 -0
  125. package/dist/modules/network.d.ts +148 -0
  126. package/dist/modules/parameter-store.d.ts +143 -0
  127. package/dist/modules/permissions.d.ts +245 -0
  128. package/dist/modules/phone.d.ts +125 -0
  129. package/dist/modules/queue.d.ts +411 -0
  130. package/dist/modules/redirects.d.ts +140 -0
  131. package/dist/modules/registry.d.ts +189 -0
  132. package/dist/modules/search.d.ts +135 -0
  133. package/dist/modules/secrets.d.ts +149 -0
  134. package/dist/modules/security.d.ts +219 -0
  135. package/dist/modules/sms.d.ts +130 -0
  136. package/dist/modules/storage.d.ts +344 -0
  137. package/dist/modules/workflow.d.ts +288 -0
  138. package/dist/multi-account/config.d.ts +166 -0
  139. package/dist/multi-account/index.d.ts +6 -0
  140. package/dist/multi-account/manager.d.ts +181 -0
  141. package/dist/multi-region/cross-region.d.ts +204 -0
  142. package/dist/multi-region/index.d.ts +7 -0
  143. package/dist/multi-region/manager.d.ts +136 -0
  144. package/dist/multi-region/regions.d.ts +98 -0
  145. package/dist/network-security/index.d.ts +55 -0
  146. package/dist/observability/index.d.ts +8 -0
  147. package/dist/observability/logs.d.ts +213 -0
  148. package/dist/observability/metrics.d.ts +187 -0
  149. package/dist/observability/observability.test.d.ts +1 -0
  150. package/dist/observability/synthetics.d.ts +189 -0
  151. package/dist/observability/xray.d.ts +193 -0
  152. package/dist/phone/advanced/analytics.d.ts +83 -0
  153. package/dist/phone/advanced/callbacks.d.ts +67 -0
  154. package/dist/phone/advanced/index.d.ts +7 -0
  155. package/dist/phone/advanced/ivr-builder.d.ts +130 -0
  156. package/dist/phone/advanced/recording.d.ts +62 -0
  157. package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +1 -0
  158. package/dist/phone/handlers/incoming-call.d.ts +10 -0
  159. package/dist/phone/handlers/missed-call.d.ts +9 -0
  160. package/dist/phone/handlers/voicemail.d.ts +10 -0
  161. package/dist/phone/index.d.ts +5 -0
  162. package/dist/presets/api-backend.d.ts +11 -0
  163. package/dist/presets/data-pipeline.d.ts +11 -0
  164. package/dist/presets/extend.d.ts +194 -0
  165. package/dist/presets/extend.test.d.ts +4 -0
  166. package/dist/presets/fullstack-app.d.ts +12 -0
  167. package/dist/presets/index.d.ts +13 -0
  168. package/dist/presets/jamstack.d.ts +12 -0
  169. package/dist/presets/microservices.d.ts +18 -0
  170. package/dist/presets/ml-api.d.ts +13 -0
  171. package/dist/presets/nodejs-server.d.ts +14 -0
  172. package/dist/presets/nodejs-serverless.d.ts +14 -0
  173. package/dist/presets/realtime-app.d.ts +11 -0
  174. package/dist/presets/static-site.d.ts +12 -0
  175. package/dist/presets/traditional-web-app.d.ts +16 -0
  176. package/dist/presets/wordpress.d.ts +12 -0
  177. package/dist/preview/github.d.ts +32 -0
  178. package/dist/preview/github.test.d.ts +1 -0
  179. package/dist/preview/index.d.ts +10 -0
  180. package/dist/preview/manager.d.ts +101 -0
  181. package/dist/preview/manager.test.d.ts +1 -0
  182. package/dist/preview/notifications.d.ts +89 -0
  183. package/dist/preview/notifications.test.d.ts +1 -0
  184. package/dist/queue/batch-processing.d.ts +138 -0
  185. package/dist/queue/dlq-monitoring.d.ts +143 -0
  186. package/dist/queue/fifo.d.ts +131 -0
  187. package/dist/queue/index.d.ts +8 -0
  188. package/dist/queue/management.d.ts +162 -0
  189. package/dist/queue/queue.test.d.ts +1 -0
  190. package/dist/resource-mgmt/index.d.ts +44 -0
  191. package/dist/resource-naming.d.ts +26 -0
  192. package/dist/s3/index.d.ts +227 -0
  193. package/dist/schema/index.d.ts +12 -0
  194. package/dist/security/certificate-manager.d.ts +184 -0
  195. package/dist/security/index.d.ts +8 -0
  196. package/dist/security/scanning.d.ts +196 -0
  197. package/dist/security/secrets-manager.d.ts +204 -0
  198. package/dist/security/secrets-rotation.d.ts +167 -0
  199. package/dist/security/security.test.d.ts +1 -0
  200. package/dist/sms/advanced/ab-testing.d.ts +74 -0
  201. package/dist/sms/advanced/analytics.d.ts +75 -0
  202. package/dist/sms/advanced/campaigns.d.ts +96 -0
  203. package/dist/sms/advanced/chatbot.d.ts +67 -0
  204. package/dist/sms/advanced/index.d.ts +9 -0
  205. package/dist/sms/advanced/link-tracking.d.ts +60 -0
  206. package/dist/sms/advanced/mms.d.ts +60 -0
  207. package/dist/sms/handlers/__tests__/send.test.d.ts +1 -0
  208. package/dist/sms/handlers/delivery-status.d.ts +10 -0
  209. package/dist/sms/handlers/receive.d.ts +10 -0
  210. package/dist/sms/handlers/send.d.ts +10 -0
  211. package/dist/sms/index.d.ts +5 -0
  212. package/dist/stack-diff.d.ts +38 -0
  213. package/dist/static-site/index.d.ts +49 -0
  214. package/dist/template-builder.d.ts +42 -0
  215. package/dist/template-validator.d.ts +28 -0
  216. package/dist/types.d.ts +2514 -0
  217. package/dist/utils/cache.d.ts +117 -0
  218. package/dist/utils/diff.d.ts +52 -0
  219. package/dist/utils/hash.d.ts +73 -0
  220. package/dist/utils/index.d.ts +7 -0
  221. package/dist/utils/parallel.d.ts +78 -0
  222. package/dist/validators/credentials.d.ts +30 -0
  223. package/dist/validators/credentials.test.d.ts +4 -0
  224. package/dist/validators/quotas.d.ts +64 -0
  225. package/dist/validators/quotas.test.d.ts +4 -0
  226. 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
+ }