@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.
Files changed (225) hide show
  1. package/dist/advanced-features.test.d.ts +0 -0
  2. package/dist/aws/cloudformation.d.ts +69 -0
  3. package/dist/aws/cloudfront.d.ts +21 -0
  4. package/dist/aws/credentials.d.ts +66 -0
  5. package/dist/aws/credentials.test.d.ts +0 -0
  6. package/dist/aws/index.d.ts +73 -0
  7. package/dist/aws/s3.d.ts +130 -0
  8. package/dist/aws/s3.test.d.ts +0 -0
  9. package/dist/aws/signature.d.ts +101 -0
  10. package/dist/aws/signature.test.d.ts +0 -0
  11. package/dist/backup/disaster-recovery.d.ts +98 -0
  12. package/dist/backup/disaster-recovery.test.d.ts +0 -0
  13. package/dist/backup/index.d.ts +24 -0
  14. package/dist/backup/manager.d.ts +112 -0
  15. package/dist/backup/manager.test.d.ts +0 -0
  16. package/dist/cicd/circleci.d.ts +47 -0
  17. package/dist/cicd/github-actions.d.ts +55 -0
  18. package/dist/cicd/gitlab-ci.d.ts +46 -0
  19. package/dist/cicd/index.d.ts +3 -0
  20. package/dist/cli/history.d.ts +66 -0
  21. package/dist/cli/index.d.ts +5 -0
  22. package/dist/cli/progress.d.ts +97 -0
  23. package/dist/cli/repl.d.ts +76 -0
  24. package/dist/cli/suggestions.d.ts +67 -0
  25. package/dist/cli/table.d.ts +70 -0
  26. package/dist/cli/table.test.d.ts +0 -0
  27. package/dist/cloudformation/builder.d.ts +59 -0
  28. package/dist/cloudformation/builder.test.d.ts +0 -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 +66 -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 +36 -0
  37. package/dist/cloudformation/builders/network.d.ts +14 -0
  38. package/dist/cloudformation/builders/queue.d.ts +8 -0
  39. package/dist/cloudformation/builders/security.d.ts +31 -0
  40. package/dist/cloudformation/builders/storage.d.ts +8 -0
  41. package/dist/cloudformation/index.d.ts +24 -0
  42. package/dist/cloudformation/types.d.ts +132 -0
  43. package/dist/compliance/aws-config.d.ts +88 -0
  44. package/dist/compliance/cloudtrail.d.ts +96 -0
  45. package/dist/compliance/compliance.test.d.ts +0 -0
  46. package/dist/compliance/guardduty.d.ts +110 -0
  47. package/dist/compliance/index.d.ts +50 -0
  48. package/dist/compliance/security-hub.d.ts +110 -0
  49. package/dist/containers/build-optimization.d.ts +110 -0
  50. package/dist/containers/containers.test.d.ts +0 -0
  51. package/dist/containers/image-scanning.d.ts +96 -0
  52. package/dist/containers/index.d.ts +4 -0
  53. package/dist/containers/registry.d.ts +99 -0
  54. package/dist/containers/service-mesh.d.ts +206 -0
  55. package/dist/database/database.test.d.ts +0 -0
  56. package/dist/database/index.d.ts +4 -0
  57. package/dist/database/migrations.d.ts +102 -0
  58. package/dist/database/performance.d.ts +168 -0
  59. package/dist/database/replicas.d.ts +146 -0
  60. package/dist/database/users.d.ts +102 -0
  61. package/dist/dependency-graph.d.ts +19 -0
  62. package/dist/deployment/ab-testing.d.ts +114 -0
  63. package/dist/deployment/blue-green.d.ts +98 -0
  64. package/dist/deployment/canary.d.ts +103 -0
  65. package/dist/deployment/deployment.test.d.ts +0 -0
  66. package/dist/deployment/index.d.ts +45 -0
  67. package/dist/deployment/progressive.d.ts +34 -0
  68. package/dist/dns/dns.test.d.ts +0 -0
  69. package/dist/dns/dnssec.d.ts +75 -0
  70. package/dist/dns/index.d.ts +3 -0
  71. package/dist/dns/resolver.d.ts +150 -0
  72. package/dist/dns/routing.d.ts +217 -0
  73. package/dist/email/advanced/analytics.d.ts +78 -0
  74. package/dist/email/advanced/index.d.ts +7 -0
  75. package/dist/email/advanced/rules.d.ts +60 -0
  76. package/dist/email/advanced/scheduling.d.ts +63 -0
  77. package/dist/email/advanced/search.d.ts +76 -0
  78. package/dist/email/advanced/shared-mailboxes.d.ts +66 -0
  79. package/dist/email/advanced/templates.d.ts +39 -0
  80. package/dist/email/advanced/threading.d.ts +53 -0
  81. package/dist/email/analytics.d.ts +144 -0
  82. package/dist/email/bounce-handling.d.ts +120 -0
  83. package/dist/email/email.test.d.ts +0 -0
  84. package/dist/email/handlers/__tests__/inbound.test.d.ts +0 -0
  85. package/dist/email/handlers/__tests__/outbound.test.d.ts +0 -0
  86. package/dist/email/handlers/converter.d.ts +225 -0
  87. package/dist/email/handlers/feedback.d.ts +226 -0
  88. package/dist/email/handlers/inbound.d.ts +167 -0
  89. package/dist/email/handlers/outbound.d.ts +176 -0
  90. package/dist/email/index.d.ts +6 -0
  91. package/dist/email/reputation.d.ts +97 -0
  92. package/dist/email/templates.d.ts +82 -0
  93. package/dist/errors/index.d.ts +186 -0
  94. package/dist/errors/index.test.d.ts +0 -0
  95. package/dist/health-checks/index.d.ts +35 -0
  96. package/dist/index.d.ts +256 -0
  97. package/dist/index.js +63499 -0
  98. package/dist/intrinsic-functions.d.ts +37 -0
  99. package/dist/lambda/concurrency.d.ts +98 -0
  100. package/dist/lambda/destinations.d.ts +99 -0
  101. package/dist/lambda/dlq.d.ts +109 -0
  102. package/dist/lambda/index.d.ts +6 -0
  103. package/dist/lambda/lambda.test.d.ts +0 -0
  104. package/dist/lambda/layers.d.ts +81 -0
  105. package/dist/lambda/versions.d.ts +91 -0
  106. package/dist/lambda/vpc.d.ts +116 -0
  107. package/dist/local/config.d.ts +44 -0
  108. package/dist/local/index.d.ts +2 -0
  109. package/dist/local/mock-aws.d.ts +60 -0
  110. package/dist/modules/ai.d.ts +47 -0
  111. package/dist/modules/api.d.ts +98 -0
  112. package/dist/modules/auth.d.ts +165 -0
  113. package/dist/modules/cache.d.ts +73 -0
  114. package/dist/modules/cdn.d.ts +125 -0
  115. package/dist/modules/communication.d.ts +98 -0
  116. package/dist/modules/compute.d.ts +309 -0
  117. package/dist/modules/database.d.ts +105 -0
  118. package/dist/modules/deployment.d.ts +181 -0
  119. package/dist/modules/dns.d.ts +45 -0
  120. package/dist/modules/email.d.ts +217 -0
  121. package/dist/modules/filesystem.d.ts +94 -0
  122. package/dist/modules/index.d.ts +27 -0
  123. package/dist/modules/messaging.d.ts +108 -0
  124. package/dist/modules/monitoring.d.ts +127 -0
  125. package/dist/modules/network.d.ts +102 -0
  126. package/dist/modules/parameter-store.d.ts +33 -0
  127. package/dist/modules/permissions.d.ts +132 -0
  128. package/dist/modules/phone.d.ts +80 -0
  129. package/dist/modules/queue.d.ts +210 -0
  130. package/dist/modules/redirects.d.ts +59 -0
  131. package/dist/modules/registry.d.ts +73 -0
  132. package/dist/modules/search.d.ts +56 -0
  133. package/dist/modules/secrets.d.ts +80 -0
  134. package/dist/modules/security.d.ts +100 -0
  135. package/dist/modules/sms.d.ts +52 -0
  136. package/dist/modules/storage.d.ts +160 -0
  137. package/dist/modules/workflow.d.ts +205 -0
  138. package/dist/multi-account/config.d.ts +315 -0
  139. package/dist/multi-account/index.d.ts +2 -0
  140. package/dist/multi-account/manager.d.ts +100 -0
  141. package/dist/multi-region/cross-region.d.ts +114 -0
  142. package/dist/multi-region/index.d.ts +3 -0
  143. package/dist/multi-region/manager.d.ts +72 -0
  144. package/dist/multi-region/regions.d.ts +98 -0
  145. package/dist/network-security/index.d.ts +39 -0
  146. package/dist/observability/index.d.ts +4 -0
  147. package/dist/observability/logs.d.ts +129 -0
  148. package/dist/observability/metrics.d.ts +153 -0
  149. package/dist/observability/observability.test.d.ts +0 -0
  150. package/dist/observability/synthetics.d.ts +146 -0
  151. package/dist/observability/xray.d.ts +129 -0
  152. package/dist/phone/advanced/analytics.d.ts +66 -0
  153. package/dist/phone/advanced/callbacks.d.ts +50 -0
  154. package/dist/phone/advanced/index.d.ts +4 -0
  155. package/dist/phone/advanced/ivr-builder.d.ts +83 -0
  156. package/dist/phone/advanced/recording.d.ts +48 -0
  157. package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +0 -0
  158. package/dist/phone/handlers/incoming-call.d.ts +115 -0
  159. package/dist/phone/handlers/missed-call.d.ts +114 -0
  160. package/dist/phone/handlers/voicemail.d.ts +177 -0
  161. package/dist/phone/index.d.ts +2 -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 +0 -0
  166. package/dist/presets/fullstack-app.d.ts +12 -0
  167. package/dist/presets/index.d.ts +24 -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 +0 -0
  179. package/dist/preview/index.d.ts +27 -0
  180. package/dist/preview/manager.d.ts +58 -0
  181. package/dist/preview/manager.test.d.ts +0 -0
  182. package/dist/preview/notifications.d.ts +55 -0
  183. package/dist/preview/notifications.test.d.ts +0 -0
  184. package/dist/queue/batch-processing.d.ts +87 -0
  185. package/dist/queue/dlq-monitoring.d.ts +95 -0
  186. package/dist/queue/fifo.d.ts +90 -0
  187. package/dist/queue/index.d.ts +4 -0
  188. package/dist/queue/management.d.ts +105 -0
  189. package/dist/queue/queue.test.d.ts +0 -0
  190. package/dist/resource-mgmt/index.d.ts +29 -0
  191. package/dist/resource-naming.d.ts +26 -0
  192. package/dist/s3/index.d.ts +173 -0
  193. package/dist/schema/index.d.ts +9 -0
  194. package/dist/security/certificate-manager.d.ts +121 -0
  195. package/dist/security/index.d.ts +4 -0
  196. package/dist/security/scanning.d.ts +147 -0
  197. package/dist/security/secrets-manager.d.ts +144 -0
  198. package/dist/security/secrets-rotation.d.ts +115 -0
  199. package/dist/security/security.test.d.ts +0 -0
  200. package/dist/sms/advanced/ab-testing.d.ts +54 -0
  201. package/dist/sms/advanced/analytics.d.ts +56 -0
  202. package/dist/sms/advanced/campaigns.d.ts +82 -0
  203. package/dist/sms/advanced/chatbot.d.ts +48 -0
  204. package/dist/sms/advanced/index.d.ts +6 -0
  205. package/dist/sms/advanced/link-tracking.d.ts +42 -0
  206. package/dist/sms/advanced/mms.d.ts +35 -0
  207. package/dist/sms/handlers/__tests__/send.test.d.ts +0 -0
  208. package/dist/sms/handlers/delivery-status.d.ts +131 -0
  209. package/dist/sms/handlers/receive.d.ts +160 -0
  210. package/dist/sms/handlers/send.d.ts +172 -0
  211. package/dist/sms/index.d.ts +2 -0
  212. package/dist/stack-diff.d.ts +34 -0
  213. package/dist/static-site/index.d.ts +49 -0
  214. package/dist/template-builder.d.ts +14 -0
  215. package/dist/template-validator.d.ts +24 -0
  216. package/dist/utils/cache.d.ts +55 -0
  217. package/dist/utils/diff.d.ts +48 -0
  218. package/dist/utils/hash.d.ts +58 -0
  219. package/dist/utils/index.d.ts +4 -0
  220. package/dist/utils/parallel.d.ts +60 -0
  221. package/dist/validators/credentials.d.ts +23 -0
  222. package/dist/validators/credentials.test.d.ts +0 -0
  223. package/dist/validators/quotas.d.ts +60 -0
  224. package/dist/validators/quotas.test.d.ts +0 -0
  225. package/package.json +4 -4
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Outbound Email Lambda Handler
3
+ *
4
+ * Processes outgoing emails:
5
+ * - Accepts JSON email payloads from S3
6
+ * - Generates proper MIME messages
7
+ * - Supports HTML and plain text
8
+ * - Handles attachments (base64 encoded)
9
+ * - Tracks via configuration set
10
+ * - Stores sent emails in S3
11
+ */
12
+ export declare const handler: `
13
+ const { S3Client, GetObjectCommand, PutObjectCommand, DeleteObjectCommand } = require('@aws-sdk/client-s3');
14
+ const { SESClient, SendRawEmailCommand } = require('@aws-sdk/client-ses');
15
+
16
+ const s3 = new S3Client({});
17
+ const ses = new SESClient({});
18
+
19
+ exports.handler = async (event) => {
20
+ console.log('Outbound email event:', JSON.stringify(event, null, 2));
21
+
22
+ const bucket = process.env.EMAIL_BUCKET;
23
+ const configSet = process.env.CONFIG_SET || 'default';
24
+
25
+ for (const record of event.Records) {
26
+ try {
27
+ // Get the email payload from S3
28
+ const s3Event = record.s3 || {};
29
+ const key = decodeURIComponent(s3Event.object?.key?.replace(/\\+/g, ' ') || '');
30
+
31
+ if (!key || !key.startsWith('outbox/')) {
32
+ continue;
33
+ }
34
+
35
+ const getResult = await s3.send(new GetObjectCommand({
36
+ Bucket: bucket,
37
+ Key: key,
38
+ }));
39
+
40
+ const emailData = JSON.parse(await getResult.Body.transformToString());
41
+
42
+ // Build MIME message
43
+ const boundary = \`----=_Part_\${Date.now()}_\${Math.random().toString(36).substr(2)}\`;
44
+ const mixedBoundary = \`----=_Mixed_\${Date.now()}_\${Math.random().toString(36).substr(2)}\`;
45
+
46
+ let rawMessage = '';
47
+
48
+ // Headers
49
+ rawMessage += \`From: \${emailData.from}\\r\\n\`;
50
+ rawMessage += \`To: \${Array.isArray(emailData.to) ? emailData.to.join(', ') : emailData.to}\\r\\n\`;
51
+
52
+ if (emailData.cc) {
53
+ rawMessage += \`Cc: \${Array.isArray(emailData.cc) ? emailData.cc.join(', ') : emailData.cc}\\r\\n\`;
54
+ }
55
+
56
+ if (emailData.replyTo) {
57
+ rawMessage += \`Reply-To: \${emailData.replyTo}\\r\\n\`;
58
+ }
59
+
60
+ rawMessage += \`Subject: =?UTF-8?B?\${Buffer.from(emailData.subject || '').toString('base64')}?=\\r\\n\`;
61
+ rawMessage += \`Date: \${new Date().toUTCString()}\\r\\n\`;
62
+ rawMessage += \`Message-ID: <\${Date.now()}.\${Math.random().toString(36)}@\${emailData.from.split('@')[1] || 'local'}>\\r\\n\`;
63
+ rawMessage += 'MIME-Version: 1.0\\r\\n';
64
+
65
+ const hasAttachments = emailData.attachments && emailData.attachments.length > 0;
66
+
67
+ if (hasAttachments) {
68
+ rawMessage += \`Content-Type: multipart/mixed; boundary="\${mixedBoundary}"\\r\\n\\r\\n\`;
69
+ rawMessage += \`--\${mixedBoundary}\\r\\n\`;
70
+ }
71
+
72
+ // Body (multipart alternative for HTML + text)
73
+ if (emailData.html && emailData.text) {
74
+ rawMessage += \`Content-Type: multipart/alternative; boundary="\${boundary}"\\r\\n\\r\\n\`;
75
+
76
+ // Plain text part
77
+ rawMessage += \`--\${boundary}\\r\\n\`;
78
+ rawMessage += 'Content-Type: text/plain; charset=UTF-8\\r\\n';
79
+ rawMessage += 'Content-Transfer-Encoding: quoted-printable\\r\\n\\r\\n';
80
+ rawMessage += emailData.text + '\\r\\n\\r\\n';
81
+
82
+ // HTML part
83
+ rawMessage += \`--\${boundary}\\r\\n\`;
84
+ rawMessage += 'Content-Type: text/html; charset=UTF-8\\r\\n';
85
+ rawMessage += 'Content-Transfer-Encoding: quoted-printable\\r\\n\\r\\n';
86
+ rawMessage += emailData.html + '\\r\\n\\r\\n';
87
+
88
+ rawMessage += \`--\${boundary}--\\r\\n\`;
89
+ } else if (emailData.html) {
90
+ if (!hasAttachments) {
91
+ rawMessage += 'Content-Type: text/html; charset=UTF-8\\r\\n';
92
+ rawMessage += 'Content-Transfer-Encoding: quoted-printable\\r\\n\\r\\n';
93
+ } else {
94
+ rawMessage += 'Content-Type: text/html; charset=UTF-8\\r\\n\\r\\n';
95
+ }
96
+ rawMessage += emailData.html + '\\r\\n';
97
+ } else {
98
+ if (!hasAttachments) {
99
+ rawMessage += 'Content-Type: text/plain; charset=UTF-8\\r\\n';
100
+ rawMessage += 'Content-Transfer-Encoding: quoted-printable\\r\\n\\r\\n';
101
+ } else {
102
+ rawMessage += 'Content-Type: text/plain; charset=UTF-8\\r\\n\\r\\n';
103
+ }
104
+ rawMessage += (emailData.text || emailData.body || '') + '\\r\\n';
105
+ }
106
+
107
+ // Attachments
108
+ if (hasAttachments) {
109
+ for (const attachment of emailData.attachments) {
110
+ rawMessage += \`--\${mixedBoundary}\\r\\n\`;
111
+ rawMessage += \`Content-Type: \${attachment.contentType || 'application/octet-stream'}; name="\${attachment.filename}"\\r\\n\`;
112
+ rawMessage += 'Content-Transfer-Encoding: base64\\r\\n';
113
+ rawMessage += \`Content-Disposition: attachment; filename="\${attachment.filename}"\\r\\n\\r\\n\`;
114
+ rawMessage += attachment.content + '\\r\\n';
115
+ }
116
+ rawMessage += \`--\${mixedBoundary}--\\r\\n\`;
117
+ }
118
+
119
+ // Send via SES
120
+ const sendResult = await ses.send(new SendRawEmailCommand({
121
+ RawMessage: { Data: Buffer.from(rawMessage) },
122
+ ConfigurationSetName: configSet,
123
+ }));
124
+
125
+ console.log(\`Email sent: \${sendResult.MessageId}\`);
126
+
127
+ // Store in sent folder
128
+ const timestamp = new Date();
129
+ const year = timestamp.getFullYear();
130
+ const month = String(timestamp.getMonth() + 1).padStart(2, '0');
131
+ const day = String(timestamp.getDate()).padStart(2, '0');
132
+
133
+ const fromEmail = emailData.from.match(/<([^>]+)>/) ? emailData.from.match(/<([^>]+)>/)[1] : emailData.from;
134
+ const [localPart, domain] = fromEmail.split('@');
135
+
136
+ const sentPath = \`mailboxes/\${domain}/\${localPart}/sent/\${year}/\${month}/\${day}/\${sendResult.MessageId}\`;
137
+
138
+ // Save sent email metadata
139
+ await s3.send(new PutObjectCommand({
140
+ Bucket: bucket,
141
+ Key: \`\${sentPath}/metadata.json\`,
142
+ Body: JSON.stringify({
143
+ messageId: sendResult.MessageId,
144
+ from: emailData.from,
145
+ to: emailData.to,
146
+ cc: emailData.cc,
147
+ subject: emailData.subject,
148
+ sentAt: timestamp.toISOString(),
149
+ hasAttachments,
150
+ }, null, 2),
151
+ ContentType: 'application/json',
152
+ }));
153
+
154
+ // Save raw message
155
+ await s3.send(new PutObjectCommand({
156
+ Bucket: bucket,
157
+ Key: \`\${sentPath}/raw.eml\`,
158
+ Body: rawMessage,
159
+ ContentType: 'message/rfc822',
160
+ }));
161
+
162
+ // Delete from outbox
163
+ await s3.send(new DeleteObjectCommand({
164
+ Bucket: bucket,
165
+ Key: key,
166
+ }));
167
+
168
+ } catch (error) {
169
+ console.error('Error sending email:', error);
170
+ }
171
+ }
172
+
173
+ return { statusCode: 200, body: 'OK' };
174
+ };
175
+ `;
176
+ export default handler;
@@ -0,0 +1,6 @@
1
+ export * from './bounce-handling';
2
+ export * from './analytics';
3
+ export * from './reputation';
4
+ export * from './templates';
5
+ export * as EmailAdvanced from './advanced';
6
+ export * as EmailHandlers from './handlers/inbound';
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Global sender reputation manager instance
3
+ */
4
+ export declare const senderReputationManager: SenderReputationManager;
5
+ /**
6
+ * SES Sender Reputation Monitoring
7
+ * Reputation tracking, sending limits, and deliverability monitoring
8
+ */
9
+ export declare interface ReputationDashboard {
10
+ id: string
11
+ timestamp: Date
12
+ overallScore: number
13
+ bounceRate: number
14
+ complaintRate: number
15
+ spamReports: number
16
+ blacklistStatus: BlacklistStatus[]
17
+ dkimStatus: 'VERIFIED' | 'PENDING' | 'FAILED'
18
+ spfStatus: 'PASS' | 'FAIL' | 'SOFTFAIL'
19
+ dmarcStatus: 'PASS' | 'FAIL' | 'NONE'
20
+ sendingLimits: SendingLimits
21
+ recommendations: string[]
22
+ }
23
+ export declare interface BlacklistStatus {
24
+ listName: string
25
+ listed: boolean
26
+ listedAt?: Date
27
+ delistUrl?: string
28
+ }
29
+ export declare interface SendingLimits {
30
+ maxSendRate: number
31
+ max24HourSend: number
32
+ sentLast24Hours: number
33
+ remainingQuota: number
34
+ quotaResetTime: Date
35
+ }
36
+ export declare interface WarmupPlan {
37
+ id: string
38
+ name: string
39
+ startDate: Date
40
+ currentDay: number
41
+ totalDays: number
42
+ dailyLimits: number[]
43
+ currentLimit: number
44
+ status: 'active' | 'paused' | 'completed'
45
+ }
46
+ export declare interface DomainReputation {
47
+ id: string
48
+ domain: string
49
+ reputationScore: number
50
+ totalSent: number
51
+ deliveryRate: number
52
+ openRate: number
53
+ clickRate: number
54
+ bounceRate: number
55
+ complaintRate: number
56
+ engagementScore: number
57
+ }
58
+ /**
59
+ * Sender reputation manager
60
+ */
61
+ export declare class SenderReputationManager {
62
+ private dashboards: Map<string, ReputationDashboard>;
63
+ private warmupPlans: Map<string, WarmupPlan>;
64
+ private domainReputations: Map<string, DomainReputation>;
65
+ private dashboardCounter: any;
66
+ private warmupCounter: any;
67
+ private domainCounter: any;
68
+ getReputationDashboard(): ReputationDashboard;
69
+ private checkBlacklists(): BlacklistStatus[];
70
+ createWarmupPlan(options: {
71
+ name: string
72
+ initialDailyLimit: number
73
+ targetDailyLimit: number
74
+ durationDays: number
75
+ }): WarmupPlan;
76
+ createAggressiveWarmupPlan(options: {
77
+ name: string
78
+ }): WarmupPlan;
79
+ createConservativeWarmupPlan(options: {
80
+ name: string
81
+ }): WarmupPlan;
82
+ advanceWarmupPlan(warmupId: string): WarmupPlan;
83
+ trackDomainReputation(options: {
84
+ domain: string
85
+ totalSent: number
86
+ delivered: number
87
+ opened: number
88
+ clicked: number
89
+ bounced: number
90
+ complained: number
91
+ }): DomainReputation;
92
+ getDomainReputation(domain: string): DomainReputation | undefined;
93
+ listDomainReputations(): DomainReputation[];
94
+ getWarmupPlan(id: string): WarmupPlan | undefined;
95
+ listWarmupPlans(): WarmupPlan[];
96
+ clear(): void;
97
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Global email template manager instance
3
+ */
4
+ export declare const emailTemplateManager: EmailTemplateManager;
5
+ /**
6
+ * SES Email Template Management
7
+ * Template versioning, personalization, and testing
8
+ */
9
+ export declare interface EmailTemplate {
10
+ id: string
11
+ name: string
12
+ subject: string
13
+ htmlPart: string
14
+ textPart: string
15
+ variables: string[]
16
+ createdAt: Date
17
+ updatedAt: Date
18
+ version: number
19
+ }
20
+ export declare interface TemplateVersion {
21
+ id: string
22
+ templateId: string
23
+ version: number
24
+ subject: string
25
+ htmlPart: string
26
+ textPart: string
27
+ createdAt: Date
28
+ createdBy: string
29
+ changelog?: string
30
+ }
31
+ export declare interface TemplateTest {
32
+ id: string
33
+ templateId: string
34
+ testData: Record<string, any>
35
+ renderedSubject: string
36
+ renderedHtml: string
37
+ renderedText: string
38
+ timestamp: Date
39
+ }
40
+ /**
41
+ * Email template manager
42
+ */
43
+ export declare class EmailTemplateManager {
44
+ private templates: Map<string, EmailTemplate>;
45
+ private versions: Map<string, TemplateVersion[]>;
46
+ private tests: Map<string, TemplateTest>;
47
+ private templateCounter: any;
48
+ private testCounter: any;
49
+ createTemplate(template: {
50
+ name: string
51
+ subject: string
52
+ htmlPart: string
53
+ textPart: string
54
+ }): EmailTemplate;
55
+ createWelcomeTemplate(options: {
56
+ name: string
57
+ companyName: string
58
+ }): EmailTemplate;
59
+ createPasswordResetTemplate(options: {
60
+ name: string
61
+ companyName: string
62
+ }): EmailTemplate;
63
+ updateTemplate(templateId: string, updates: {
64
+ subject?: string
65
+ htmlPart?: string
66
+ textPart?: string
67
+ }, changelog?: string): EmailTemplate;
68
+ private addVersion(version: Omit<TemplateVersion, 'id' | 'createdAt'>): TemplateVersion;
69
+ private extractVariables(text: string): string[];
70
+ renderTemplate(templateId: string, data: Record<string, any>): {
71
+ subject: string
72
+ html: string
73
+ text: string
74
+ };
75
+ testTemplate(templateId: string, testData: Record<string, any>): TemplateTest;
76
+ getTemplate(id: string): EmailTemplate | undefined;
77
+ listTemplates(): EmailTemplate[];
78
+ getTemplateVersions(templateId: string): TemplateVersion[];
79
+ revertToVersion(templateId: string, versionNumber: number): EmailTemplate;
80
+ generateTemplateCF(template: EmailTemplate): any;
81
+ clear(): void;
82
+ }
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Get error details by code
3
+ */
4
+ export declare function getErrorDetails(code: keyof typeof ErrorCodes): { message: string; solution: string };
5
+ /**
6
+ * Create error from code
7
+ */
8
+ export declare function createError(code: keyof typeof ErrorCodes, additionalDetails?: Record<string, any>): CloudError;
9
+ /**
10
+ * Validate configuration
11
+ */
12
+ export declare function validateConfiguration(config: any): void;
13
+ /**
14
+ * Detect common misconfigurations
15
+ */
16
+ export declare function detectMisconfigurations(config: any): string[];
17
+ /**
18
+ * Common error scenarios with solutions
19
+ */
20
+ export declare const ErrorCodes: {
21
+ // Credential errors
22
+ NO_CREDENTIALS: {
23
+ message: 'AWS credentials not found';
24
+ solution: `Configure AWS credentials using one of these methods:
25
+ 1. Set environment variables: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
26
+ 2. Create ~/.aws/credentials file with your credentials
27
+ 3. Use an IAM role (for EC2 instances)
28
+ 4. Run 'aws configure' if you have AWS CLI installed`
29
+ };
30
+ INVALID_CREDENTIALS: {
31
+ message: 'AWS credentials are invalid';
32
+ solution: 'Verify your AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are correct. Run: aws sts get-caller-identity'
33
+ };
34
+ EXPIRED_CREDENTIALS: {
35
+ message: 'AWS credentials have expired';
36
+ solution: 'Refresh your AWS credentials. If using temporary credentials, generate new ones.'
37
+ };
38
+ // Configuration errors
39
+ MISSING_CONFIG: {
40
+ message: 'Configuration file not found';
41
+ solution: 'Create a cloud.config.ts file in your project root. Use: cloud init'
42
+ };
43
+ INVALID_CONFIG: {
44
+ message: 'Configuration is invalid';
45
+ solution: 'Check your cloud.config.ts file for syntax errors. Use: cloud config:validate'
46
+ };
47
+ MISSING_REQUIRED_FIELD: {
48
+ message: 'Required configuration field is missing';
49
+ solution: 'Add the missing field to your cloud.config.ts file'
50
+ };
51
+ INVALID_REGION: {
52
+ message: 'AWS region is invalid';
53
+ solution: 'Use a valid AWS region like us-east-1, us-west-2, eu-west-1, etc.'
54
+ };
55
+ // Deployment errors
56
+ STACK_ALREADY_EXISTS: {
57
+ message: 'CloudFormation stack already exists';
58
+ solution: 'Use: cloud deploy --update to update the existing stack, or cloud destroy to delete it first'
59
+ };
60
+ STACK_IN_PROGRESS: {
61
+ message: 'Stack operation already in progress';
62
+ solution: 'Wait for the current operation to complete, or cancel it in the AWS Console'
63
+ };
64
+ INSUFFICIENT_PERMISSIONS: {
65
+ message: 'Insufficient IAM permissions';
66
+ solution: 'Ensure your IAM user/role has the necessary permissions for CloudFormation and the resources you\'re deploying'
67
+ };
68
+ RESOURCE_LIMIT_EXCEEDED: {
69
+ message: 'AWS service limit exceeded';
70
+ solution: 'Request a service limit increase in the AWS Console, or clean up unused resources'
71
+ };
72
+ ROLLBACK_COMPLETE: {
73
+ message: 'Stack creation failed and rolled back';
74
+ solution: 'Check the CloudFormation events to see which resource failed. Fix the issue and try again.'
75
+ };
76
+ // Validation errors
77
+ CIRCULAR_DEPENDENCY: {
78
+ message: 'Circular dependency detected in resources';
79
+ solution: 'Review your resource dependencies and remove the circular reference'
80
+ };
81
+ INVALID_RESOURCE_NAME: {
82
+ message: 'Resource name contains invalid characters';
83
+ solution: 'Use only alphanumeric characters and hyphens in resource names'
84
+ };
85
+ DUPLICATE_RESOURCE: {
86
+ message: 'Duplicate resource name detected';
87
+ solution: 'Ensure all resource names are unique in your configuration'
88
+ };
89
+ // Network errors
90
+ VPC_CIDR_CONFLICT: {
91
+ message: 'VPC CIDR block conflicts with existing VPC';
92
+ solution: 'Use a different CIDR block that doesn\'t overlap with existing VPCs'
93
+ };
94
+ SUBNET_CIDR_INVALID: {
95
+ message: 'Subnet CIDR block is invalid or outside VPC range';
96
+ solution: 'Ensure subnet CIDR is within the VPC CIDR range and properly sized'
97
+ };
98
+ // Database errors
99
+ DB_INSTANCE_LIMIT: {
100
+ message: 'RDS instance limit reached';
101
+ solution: 'Delete unused RDS instances or request a limit increase'
102
+ };
103
+ INVALID_DB_NAME: {
104
+ message: 'Database name contains invalid characters';
105
+ solution: 'Use only alphanumeric characters and underscores, starting with a letter'
106
+ };
107
+ // S3 errors
108
+ BUCKET_ALREADY_EXISTS: {
109
+ message: 'S3 bucket name already exists globally';
110
+ solution: 'S3 bucket names must be globally unique. Try a different name with your organization prefix'
111
+ };
112
+ INVALID_BUCKET_NAME: {
113
+ message: 'S3 bucket name is invalid';
114
+ solution: 'Use lowercase letters, numbers, and hyphens. Must start/end with letter/number. 3-63 characters.'
115
+ };
116
+ // CloudFormation errors
117
+ TEMPLATE_TOO_LARGE: {
118
+ message: 'CloudFormation template exceeds size limit';
119
+ solution: 'Split your infrastructure into multiple stacks or use nested stacks'
120
+ };
121
+ INVALID_TEMPLATE: {
122
+ message: 'CloudFormation template is invalid';
123
+ solution: 'Validate your template with: cloud config:validate'
124
+ };
125
+ PARAMETER_NOT_FOUND: {
126
+ message: 'CloudFormation parameter not found';
127
+ solution: 'Check that all referenced parameters are defined in your template'
128
+ }
129
+ };
130
+ /**
131
+ * Error Handling & Debugging
132
+ * Clear error messages with solutions and debugging support
133
+ */
134
+ export declare class CloudError extends Error {
135
+ public code: string;
136
+ public solution?: string | undefined;
137
+ public details?: Record<string, any> | undefined;
138
+ constructor(message: string, code: string, solution?: string | undefined, details?: Record<string, any> | undefined);
139
+ toString(): string;
140
+ }
141
+ /**
142
+ * Configuration errors
143
+ */
144
+ export declare class ConfigurationError extends CloudError {
145
+ constructor(message: string, solution?: string, details?: Record<string, any>);
146
+ }
147
+ /**
148
+ * AWS credential errors
149
+ */
150
+ export declare class CredentialError extends CloudError {
151
+ constructor(message: string, solution?: string, details?: Record<string, any>);
152
+ }
153
+ /**
154
+ * Deployment errors
155
+ */
156
+ export declare class DeploymentError extends CloudError {
157
+ constructor(message: string, solution?: string, details?: Record<string, any>);
158
+ }
159
+ /**
160
+ * Validation errors
161
+ */
162
+ export declare class ValidationError extends CloudError {
163
+ constructor(message: string, solution?: string, details?: Record<string, any>);
164
+ }
165
+ /**
166
+ * AWS API errors
167
+ */
168
+ export declare class AWSAPIError extends CloudError {
169
+ public statusCode?: number;
170
+ constructor(message: string, statusCode?: number, solution?: string, details?: Record<string, any>);
171
+ }
172
+ /**
173
+ * Debug logger
174
+ */
175
+ export declare class DebugLogger {
176
+ static private verboseMode: any;
177
+ static private debugMode: any;
178
+ static setVerbose(enabled: boolean): void;
179
+ static setDebug(enabled: boolean): void;
180
+ static verbose(message: string, args: any[]): void;
181
+ static debug(message: string, args: any[]): void;
182
+ static info(message: string, args: any[]): void;
183
+ static warn(message: string, args: any[]): void;
184
+ static error(message: string, error?: Error): void;
185
+ static success(message: string): void;
186
+ }
File without changes
@@ -0,0 +1,35 @@
1
+ export declare const healthCheckManager: HealthCheckManager;
2
+ /**
3
+ * Health Checks & Monitoring - Endpoint monitoring, synthetic monitoring, uptime tracking
4
+ */
5
+ export declare interface HealthCheck {
6
+ id: string
7
+ url: string
8
+ interval: number
9
+ timeout: number
10
+ status: 'healthy' | 'unhealthy'
11
+ }
12
+ export declare interface SyntheticMonitor {
13
+ id: string
14
+ name: string
15
+ script: string
16
+ frequency: number
17
+ locations: string[]
18
+ }
19
+ export declare interface UptimeTracker {
20
+ id: string
21
+ resource: string
22
+ uptime: number
23
+ downtime: number
24
+ availability: number
25
+ }
26
+ export declare class HealthCheckManager {
27
+ private checks: any;
28
+ private synthetics: any;
29
+ private uptimeTrackers: any;
30
+ private counter: any;
31
+ createHealthCheck(url: string, interval?: any, timeout?: any): HealthCheck;
32
+ createSyntheticMonitor(name: string, script: string, frequency: number, locations: string[]): SyntheticMonitor;
33
+ trackUptime(resource: string, uptime: number, downtime: number): UptimeTracker;
34
+ clear(): void;
35
+ }