@stacksjs/ts-cloud 0.2.3 → 0.2.6

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 (76) hide show
  1. package/dist/aws/acm.d.ts +215 -0
  2. package/dist/aws/application-autoscaling.d.ts +345 -0
  3. package/dist/aws/bedrock.d.ts +2672 -0
  4. package/dist/aws/client.d.ts +181 -0
  5. package/dist/aws/cloudformation.d.ts +187 -0
  6. package/dist/aws/cloudfront.d.ts +416 -0
  7. package/dist/aws/cloudwatch-logs.d.ts +70 -0
  8. package/dist/aws/comprehend.d.ts +616 -0
  9. package/dist/aws/connect.d.ts +533 -0
  10. package/dist/aws/deploy-imap.d.ts +26 -0
  11. package/dist/aws/dynamodb.d.ts +270 -0
  12. package/dist/aws/ec2.d.ts +545 -0
  13. package/dist/aws/ecr.d.ts +240 -0
  14. package/dist/aws/ecs.d.ts +267 -0
  15. package/dist/aws/efs.d.ts +36 -0
  16. package/dist/aws/elasticache.d.ts +112 -0
  17. package/dist/aws/elbv2.d.ts +389 -0
  18. package/dist/aws/email.d.ts +260 -0
  19. package/dist/aws/eventbridge.d.ts +197 -0
  20. package/dist/aws/iam.d.ts +1013 -0
  21. package/dist/aws/imap-server.d.ts +298 -0
  22. package/dist/aws/index.d.ts +53 -0
  23. package/dist/aws/kendra.d.ts +831 -0
  24. package/dist/aws/lambda.d.ts +319 -0
  25. package/dist/aws/opensearch.d.ts +121 -0
  26. package/dist/aws/personalize.d.ts +586 -0
  27. package/dist/aws/polly.d.ts +243 -0
  28. package/dist/aws/rds.d.ts +346 -0
  29. package/dist/aws/rekognition.d.ts +691 -0
  30. package/dist/aws/route53-domains.d.ts +161 -0
  31. package/dist/aws/route53.d.ts +330 -0
  32. package/dist/aws/s3.d.ts +535 -0
  33. package/dist/aws/scheduler.d.ts +224 -0
  34. package/dist/aws/secrets-manager.d.ts +267 -0
  35. package/dist/aws/ses.d.ts +441 -0
  36. package/dist/aws/setup-phone.d.ts +1 -0
  37. package/dist/aws/setup-sms.d.ts +116 -0
  38. package/dist/aws/sms.d.ts +477 -0
  39. package/dist/aws/smtp-server.d.ts +108 -0
  40. package/dist/aws/sns.d.ts +224 -0
  41. package/dist/aws/sqs.d.ts +107 -0
  42. package/dist/aws/ssm.d.ts +311 -0
  43. package/dist/aws/sts.d.ts +21 -0
  44. package/dist/aws/support.d.ts +139 -0
  45. package/dist/aws/test-imap.d.ts +15 -0
  46. package/dist/aws/textract.d.ts +477 -0
  47. package/dist/aws/transcribe.d.ts +79 -0
  48. package/dist/aws/translate.d.ts +424 -0
  49. package/dist/aws/voice.d.ts +361 -0
  50. package/dist/bin/cli.js +4480 -804
  51. package/dist/config.d.ts +5 -0
  52. package/dist/deploy/index.d.ts +6 -0
  53. package/dist/deploy/static-site-external-dns.d.ts +70 -0
  54. package/dist/deploy/static-site.d.ts +110 -0
  55. package/dist/dns/cloudflare.d.ts +74 -0
  56. package/dist/dns/godaddy.d.ts +63 -0
  57. package/dist/dns/index.d.ts +67 -0
  58. package/dist/dns/porkbun.d.ts +43 -0
  59. package/dist/dns/route53-adapter.d.ts +67 -0
  60. package/dist/dns/types.d.ts +100 -0
  61. package/dist/dns/validator.d.ts +105 -0
  62. package/dist/generators/index.d.ts +4 -0
  63. package/dist/generators/infrastructure.d.ts +115 -0
  64. package/dist/index.d.ts +9 -165
  65. package/dist/index.js +4971 -6013
  66. package/dist/push/apns.d.ts +140 -0
  67. package/dist/push/fcm.d.ts +205 -0
  68. package/dist/push/index.d.ts +44 -0
  69. package/dist/security/pre-deploy-scanner.d.ts +97 -0
  70. package/dist/ssl/acme-client.d.ts +133 -0
  71. package/dist/ssl/index.d.ts +6 -0
  72. package/dist/ssl/letsencrypt.d.ts +96 -0
  73. package/dist/utils/cli.d.ts +121 -0
  74. package/dist/validation/index.d.ts +4 -0
  75. package/dist/validation/template.d.ts +27 -0
  76. package/package.json +6 -6
@@ -0,0 +1,441 @@
1
+ /**
2
+ * AWS SES (Simple Email Service) Operations
3
+ * Direct API calls without AWS SDK dependency
4
+ */
5
+ export interface EmailIdentity {
6
+ IdentityType?: 'EMAIL_ADDRESS' | 'DOMAIN' | 'MANAGED_DOMAIN';
7
+ IdentityName?: string;
8
+ SendingEnabled?: boolean;
9
+ VerificationStatus?: 'PENDING' | 'SUCCESS' | 'FAILED' | 'TEMPORARY_FAILURE' | 'NOT_STARTED';
10
+ DkimAttributes?: {
11
+ SigningEnabled?: boolean;
12
+ Status?: 'PENDING' | 'SUCCESS' | 'FAILED' | 'TEMPORARY_FAILURE' | 'NOT_STARTED';
13
+ Tokens?: string[];
14
+ SigningAttributesOrigin?: 'AWS_SES' | 'EXTERNAL';
15
+ };
16
+ MailFromAttributes?: {
17
+ MailFromDomain?: string;
18
+ MailFromDomainStatus?: 'PENDING' | 'SUCCESS' | 'FAILED' | 'TEMPORARY_FAILURE';
19
+ BehaviorOnMxFailure?: 'USE_DEFAULT_VALUE' | 'REJECT_MESSAGE';
20
+ };
21
+ }
22
+ export interface SendEmailResult {
23
+ MessageId?: string;
24
+ }
25
+ /**
26
+ * SES email service management using direct API calls
27
+ */
28
+ export declare class SESClient {
29
+ private client;
30
+ private region;
31
+ constructor(region?: string);
32
+ /**
33
+ * Create email identity (domain or email address)
34
+ * Uses SES v2 API
35
+ */
36
+ createEmailIdentity(params: {
37
+ EmailIdentity: string;
38
+ DkimSigningAttributes?: {
39
+ DomainSigningSelector?: string;
40
+ DomainSigningPrivateKey?: string;
41
+ };
42
+ Tags?: Array<{
43
+ Key: string;
44
+ Value: string;
45
+ }>;
46
+ }): Promise<{
47
+ IdentityType?: string;
48
+ VerifiedForSendingStatus?: boolean;
49
+ DkimAttributes?: {
50
+ SigningEnabled?: boolean;
51
+ Status?: string;
52
+ Tokens?: string[];
53
+ SigningAttributesOrigin?: string;
54
+ };
55
+ }>;
56
+ /**
57
+ * Get email identity details
58
+ */
59
+ getEmailIdentity(emailIdentity: string): Promise<EmailIdentity>;
60
+ /**
61
+ * Configure MAIL FROM domain for an email identity
62
+ */
63
+ putEmailIdentityMailFromAttributes(emailIdentity: string, params: {
64
+ MailFromDomain?: string;
65
+ BehaviorOnMxFailure?: 'USE_DEFAULT_VALUE' | 'REJECT_MESSAGE';
66
+ }): Promise<void>;
67
+ /**
68
+ * List email identities
69
+ */
70
+ listEmailIdentities(params?: {
71
+ PageSize?: number;
72
+ NextToken?: string;
73
+ }): Promise<{
74
+ EmailIdentities?: Array<{
75
+ IdentityType?: string;
76
+ IdentityName?: string;
77
+ SendingEnabled?: boolean;
78
+ }>;
79
+ NextToken?: string;
80
+ }>;
81
+ /**
82
+ * Delete email identity
83
+ */
84
+ deleteEmailIdentity(emailIdentity: string): Promise<void>;
85
+ /**
86
+ * Enable/disable DKIM signing for identity
87
+ */
88
+ putEmailIdentityDkimAttributes(params: {
89
+ EmailIdentity: string;
90
+ SigningEnabled: boolean;
91
+ }): Promise<void>;
92
+ /**
93
+ * Send email
94
+ */
95
+ sendEmail(params: {
96
+ FromEmailAddress: string;
97
+ Destination: {
98
+ ToAddresses?: string[];
99
+ CcAddresses?: string[];
100
+ BccAddresses?: string[];
101
+ };
102
+ Content: {
103
+ Simple?: {
104
+ Subject: {
105
+ Data: string;
106
+ Charset?: string;
107
+ };
108
+ Body: {
109
+ Text?: {
110
+ Data: string;
111
+ Charset?: string;
112
+ };
113
+ Html?: {
114
+ Data: string;
115
+ Charset?: string;
116
+ };
117
+ };
118
+ };
119
+ Raw?: {
120
+ Data: string;
121
+ };
122
+ Template?: {
123
+ TemplateName: string;
124
+ TemplateData?: string;
125
+ };
126
+ };
127
+ ReplyToAddresses?: string[];
128
+ ConfigurationSetName?: string;
129
+ }): Promise<SendEmailResult>;
130
+ /**
131
+ * Send bulk email
132
+ */
133
+ sendBulkEmail(params: {
134
+ FromEmailAddress: string;
135
+ BulkEmailEntries: Array<{
136
+ Destination: {
137
+ ToAddresses?: string[];
138
+ CcAddresses?: string[];
139
+ BccAddresses?: string[];
140
+ };
141
+ ReplacementEmailContent?: {
142
+ ReplacementTemplate?: {
143
+ ReplacementTemplateData?: string;
144
+ };
145
+ };
146
+ }>;
147
+ DefaultContent: {
148
+ Template: {
149
+ TemplateName: string;
150
+ TemplateData?: string;
151
+ };
152
+ };
153
+ ConfigurationSetName?: string;
154
+ }): Promise<{
155
+ BulkEmailEntryResults?: Array<{
156
+ Status?: string;
157
+ Error?: string;
158
+ MessageId?: string;
159
+ }>;
160
+ }>;
161
+ /**
162
+ * Create email template
163
+ */
164
+ createEmailTemplate(params: {
165
+ TemplateName: string;
166
+ TemplateContent: {
167
+ Subject?: string;
168
+ Text?: string;
169
+ Html?: string;
170
+ };
171
+ }): Promise<void>;
172
+ /**
173
+ * Get email template
174
+ */
175
+ getEmailTemplate(templateName: string): Promise<{
176
+ TemplateName?: string;
177
+ TemplateContent?: {
178
+ Subject?: string;
179
+ Text?: string;
180
+ Html?: string;
181
+ };
182
+ }>;
183
+ /**
184
+ * Delete email template
185
+ */
186
+ deleteEmailTemplate(templateName: string): Promise<void>;
187
+ /**
188
+ * List email templates
189
+ */
190
+ listEmailTemplates(params?: {
191
+ PageSize?: number;
192
+ NextToken?: string;
193
+ }): Promise<{
194
+ TemplatesMetadata?: Array<{
195
+ TemplateName?: string;
196
+ CreatedTimestamp?: string;
197
+ }>;
198
+ NextToken?: string;
199
+ }>;
200
+ /**
201
+ * Get sending statistics
202
+ */
203
+ getSendStatistics(): Promise<{
204
+ SendDataPoints?: Array<{
205
+ Timestamp?: string;
206
+ DeliveryAttempts?: number;
207
+ Bounces?: number;
208
+ Complaints?: number;
209
+ Rejects?: number;
210
+ }>;
211
+ }>;
212
+ /**
213
+ * Get sending quota
214
+ */
215
+ getSendQuota(): Promise<{
216
+ Max24HourSend?: number;
217
+ MaxSendRate?: number;
218
+ SentLast24Hours?: number;
219
+ }>;
220
+ /**
221
+ * Verify a domain identity
222
+ */
223
+ verifyDomain(domain: string): Promise<{
224
+ dkimTokens?: string[];
225
+ verificationStatus?: string;
226
+ }>;
227
+ /**
228
+ * Send a simple text email
229
+ */
230
+ sendSimpleEmail(params: {
231
+ from: string;
232
+ to: string | string[];
233
+ subject: string;
234
+ text?: string;
235
+ html?: string;
236
+ replyTo?: string | string[];
237
+ }): Promise<SendEmailResult>;
238
+ /**
239
+ * Send a templated email
240
+ */
241
+ sendTemplatedEmail(params: {
242
+ from: string;
243
+ to: string | string[];
244
+ templateName: string;
245
+ templateData: Record<string, any>;
246
+ replyTo?: string | string[];
247
+ }): Promise<SendEmailResult>;
248
+ /**
249
+ * Get DKIM DNS records for a domain
250
+ */
251
+ getDkimRecords(domain: string): Promise<Array<{
252
+ name: string;
253
+ type: string;
254
+ value: string;
255
+ }>>;
256
+ /**
257
+ * Check if domain is verified
258
+ */
259
+ isDomainVerified(domain: string): Promise<boolean>;
260
+ /**
261
+ * Wait for domain verification
262
+ */
263
+ waitForDomainVerification(domain: string, maxAttempts?: number, delayMs?: number): Promise<boolean>;
264
+ /**
265
+ * Build form-encoded body for SES v1 API
266
+ */
267
+ private buildFormBody;
268
+ /**
269
+ * Create a receipt rule set
270
+ * Uses SES v1 API
271
+ */
272
+ createReceiptRuleSet(ruleSetName: string): Promise<void>;
273
+ /**
274
+ * Delete a receipt rule set
275
+ */
276
+ deleteReceiptRuleSet(ruleSetName: string): Promise<void>;
277
+ /**
278
+ * Set the active receipt rule set
279
+ */
280
+ setActiveReceiptRuleSet(ruleSetName: string): Promise<void>;
281
+ /**
282
+ * List receipt rule sets
283
+ */
284
+ listReceiptRuleSets(nextToken?: string): Promise<{
285
+ RuleSets?: Array<{
286
+ Name?: string;
287
+ CreatedTimestamp?: string;
288
+ }>;
289
+ NextToken?: string;
290
+ }>;
291
+ /**
292
+ * Describe a receipt rule set
293
+ */
294
+ describeReceiptRuleSet(ruleSetName: string): Promise<{
295
+ Metadata?: {
296
+ Name?: string;
297
+ CreatedTimestamp?: string;
298
+ };
299
+ Rules?: Array<{
300
+ Name?: string;
301
+ Enabled?: boolean;
302
+ Recipients?: string[];
303
+ Actions?: Array<{
304
+ S3Action?: {
305
+ BucketName?: string;
306
+ ObjectKeyPrefix?: string;
307
+ };
308
+ LambdaAction?: {
309
+ FunctionArn?: string;
310
+ InvocationType?: string;
311
+ };
312
+ SNSAction?: {
313
+ TopicArn?: string;
314
+ };
315
+ }>;
316
+ }>;
317
+ }>;
318
+ /**
319
+ * Create a receipt rule
320
+ */
321
+ createReceiptRule(params: {
322
+ RuleSetName: string;
323
+ Rule: {
324
+ Name: string;
325
+ Enabled?: boolean;
326
+ TlsPolicy?: 'Require' | 'Optional';
327
+ Recipients?: string[];
328
+ ScanEnabled?: boolean;
329
+ Actions: Array<{
330
+ S3Action?: {
331
+ BucketName: string;
332
+ ObjectKeyPrefix?: string;
333
+ KmsKeyArn?: string;
334
+ };
335
+ LambdaAction?: {
336
+ FunctionArn: string;
337
+ InvocationType?: 'Event' | 'RequestResponse';
338
+ };
339
+ SNSAction?: {
340
+ TopicArn: string;
341
+ Encoding?: 'UTF-8' | 'Base64';
342
+ };
343
+ StopAction?: {
344
+ Scope: 'RuleSet';
345
+ TopicArn?: string;
346
+ };
347
+ }>;
348
+ };
349
+ After?: string;
350
+ }): Promise<void>;
351
+ /**
352
+ * Delete a receipt rule
353
+ */
354
+ deleteReceiptRule(ruleSetName: string, ruleName: string): Promise<void>;
355
+ /**
356
+ * Check if receipt rule set exists
357
+ */
358
+ receiptRuleSetExists(ruleSetName: string): Promise<boolean>;
359
+ /**
360
+ * Get the active receipt rule set
361
+ */
362
+ getActiveReceiptRuleSet(): Promise<{
363
+ Metadata?: {
364
+ Name?: string;
365
+ CreatedTimestamp?: string;
366
+ };
367
+ Rules?: Array<{
368
+ Name?: string;
369
+ Enabled?: boolean;
370
+ Recipients?: string[];
371
+ Actions?: Array<{
372
+ S3Action?: {
373
+ BucketName?: string;
374
+ ObjectKeyPrefix?: string;
375
+ };
376
+ LambdaAction?: {
377
+ FunctionArn?: string;
378
+ InvocationType?: string;
379
+ };
380
+ SNSAction?: {
381
+ TopicArn?: string;
382
+ };
383
+ }>;
384
+ }>;
385
+ } | null>;
386
+ /**
387
+ * Update a receipt rule
388
+ */
389
+ updateReceiptRule(params: {
390
+ RuleSetName: string;
391
+ Rule: {
392
+ Name: string;
393
+ Enabled?: boolean;
394
+ TlsPolicy?: 'Require' | 'Optional';
395
+ Recipients?: string[];
396
+ ScanEnabled?: boolean;
397
+ Actions: Array<{
398
+ S3Action?: {
399
+ BucketName: string;
400
+ ObjectKeyPrefix?: string;
401
+ KmsKeyArn?: string;
402
+ };
403
+ LambdaAction?: {
404
+ FunctionArn: string;
405
+ InvocationType?: 'Event' | 'RequestResponse';
406
+ };
407
+ SNSAction?: {
408
+ TopicArn: string;
409
+ Encoding?: 'UTF-8' | 'Base64';
410
+ };
411
+ StopAction?: {
412
+ Scope: 'RuleSet';
413
+ TopicArn?: string;
414
+ };
415
+ }>;
416
+ };
417
+ }): Promise<void>;
418
+ /**
419
+ * Send raw email (for SMTP relay)
420
+ * Uses SES v1 API SendRawEmail action
421
+ */
422
+ sendRawEmail(params: {
423
+ source: string;
424
+ destinations: string[];
425
+ rawMessage: string;
426
+ }): Promise<{
427
+ MessageId?: string;
428
+ }>;
429
+ /**
430
+ * Get a suppressed destination from the account suppression list (SESv2)
431
+ */
432
+ getSuppressedDestination(emailAddress: string): Promise<{
433
+ EmailAddress: string;
434
+ Reason: string;
435
+ LastUpdateTime: string;
436
+ } | null>;
437
+ /**
438
+ * Remove an email address from the account suppression list (SESv2)
439
+ */
440
+ deleteSuppressedDestination(emailAddress: string): Promise<void>;
441
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,116 @@
1
+ /**
2
+ * SMS Setup Automation Module
3
+ * Handles complete SMS infrastructure setup during deploy
4
+ *
5
+ * This module automates:
6
+ * - S3 inbox setup for incoming messages
7
+ * - SNS topics for two-way messaging
8
+ * - Spending limit management
9
+ * - Sandbox exit requests via AWS Support
10
+ * - Delivery receipt configuration
11
+ *
12
+ * Note: Phone number provisioning requires AWS End User Messaging console.
13
+ * SNS uses a shared pool for sending unless you configure an origination number.
14
+ */
15
+ export interface SmsSetupConfig {
16
+ region?: string;
17
+ accountName?: string;
18
+ accountId?: string;
19
+ inbox?: {
20
+ enabled?: boolean;
21
+ bucket?: string;
22
+ prefix?: string;
23
+ retentionDays?: number;
24
+ };
25
+ twoWay?: {
26
+ enabled?: boolean;
27
+ topicName?: string;
28
+ };
29
+ spending?: {
30
+ monthlyLimit?: number;
31
+ autoRequestIncrease?: boolean;
32
+ };
33
+ sandbox?: {
34
+ autoRequestExit?: boolean;
35
+ companyName?: string;
36
+ useCase?: string;
37
+ expectedMonthlyVolume?: number;
38
+ websiteUrl?: string;
39
+ };
40
+ deliveryReceipts?: {
41
+ enabled?: boolean;
42
+ topicName?: string;
43
+ s3Bucket?: string;
44
+ s3Prefix?: string;
45
+ };
46
+ inboxLambda?: {
47
+ enabled?: boolean;
48
+ functionName?: string;
49
+ codeS3Bucket?: string;
50
+ codeS3Key?: string;
51
+ };
52
+ }
53
+ export interface SmsSetupResult {
54
+ success: boolean;
55
+ inboxBucket?: string;
56
+ inboxPrefix?: string;
57
+ twoWayTopicArn?: string;
58
+ deliveryReceiptTopicArn?: string;
59
+ inboxLambdaArn?: string;
60
+ spendingLimit?: number;
61
+ sandboxStatus?: 'IN_SANDBOX' | 'OUT_OF_SANDBOX' | 'EXIT_REQUESTED';
62
+ supportCaseId?: string;
63
+ errors: string[];
64
+ warnings: string[];
65
+ }
66
+ /**
67
+ * Set up complete SMS infrastructure
68
+ * Called automatically during `buddy deploy` when SMS is enabled
69
+ */
70
+ export declare function setupSmsInfrastructure(config: SmsSetupConfig): Promise<SmsSetupResult>;
71
+ /**
72
+ * Get complete SMS infrastructure status
73
+ */
74
+ export declare function getSmsInfrastructureStatus(config: {
75
+ region?: string;
76
+ accountName?: string;
77
+ }): Promise<{
78
+ sandboxStatus: 'IN_SANDBOX' | 'OUT_OF_SANDBOX' | 'UNKNOWN';
79
+ spendingLimit: number;
80
+ topics: Array<{
81
+ name: string;
82
+ arn: string;
83
+ }>;
84
+ }>;
85
+ /**
86
+ * Create SMS infrastructure for Stacks deploy
87
+ * This is the main entry point called by the deploy command
88
+ */
89
+ export declare function createSmsInfrastructure(smsConfig: {
90
+ enabled: boolean;
91
+ provider: 'sns';
92
+ originationNumber?: string;
93
+ defaultCountryCode: string;
94
+ messageType: 'TRANSACTIONAL' | 'PROMOTIONAL';
95
+ maxSpendPerMonth?: number;
96
+ inbox?: {
97
+ enabled: boolean;
98
+ bucket: string;
99
+ prefix?: string;
100
+ retentionDays?: number;
101
+ };
102
+ twoWay?: {
103
+ enabled: boolean;
104
+ snsTopicArn?: string;
105
+ };
106
+ optOut: {
107
+ enabled: boolean;
108
+ keywords: string[];
109
+ };
110
+ }): Promise<SmsSetupResult>;
111
+ declare const _default: {
112
+ setupSmsInfrastructure: typeof setupSmsInfrastructure;
113
+ getSmsInfrastructureStatus: typeof getSmsInfrastructureStatus;
114
+ createSmsInfrastructure: typeof createSmsInfrastructure;
115
+ };
116
+ export default _default;