@stacksjs/ts-cloud 0.1.2 → 0.1.5

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 (187) hide show
  1. package/README.md +98 -13
  2. package/dist/aws/acm.d.ts +129 -0
  3. package/dist/aws/application-autoscaling.d.ts +282 -0
  4. package/dist/aws/bedrock.d.ts +2292 -0
  5. package/dist/aws/client.d.ts +79 -0
  6. package/dist/aws/cloudformation.d.ts +105 -0
  7. package/dist/aws/cloudfront.d.ts +265 -0
  8. package/dist/aws/cloudwatch-logs.d.ts +48 -0
  9. package/dist/aws/comprehend.d.ts +505 -0
  10. package/dist/aws/connect.d.ts +377 -0
  11. package/dist/aws/deploy-imap.d.ts +14 -0
  12. package/dist/aws/dynamodb.d.ts +176 -0
  13. package/dist/aws/ec2.d.ts +272 -0
  14. package/dist/aws/ecr.d.ts +149 -0
  15. package/dist/aws/ecs.d.ts +162 -0
  16. package/dist/aws/elasticache.d.ts +71 -0
  17. package/dist/aws/elbv2.d.ts +248 -0
  18. package/dist/aws/email.d.ts +175 -0
  19. package/dist/aws/eventbridge.d.ts +142 -0
  20. package/dist/aws/iam.d.ts +638 -0
  21. package/dist/aws/imap-server.d.ts +119 -0
  22. package/{src/aws/index.ts → dist/aws/index.d.ts} +62 -83
  23. package/{src/aws/kendra.ts → dist/aws/kendra.d.ts} +71 -386
  24. package/dist/aws/lambda.d.ts +232 -0
  25. package/dist/aws/opensearch.d.ts +87 -0
  26. package/dist/aws/personalize.d.ts +516 -0
  27. package/dist/aws/polly.d.ts +214 -0
  28. package/dist/aws/rds.d.ts +240 -0
  29. package/dist/aws/rekognition.d.ts +543 -0
  30. package/dist/aws/route53-domains.d.ts +113 -0
  31. package/dist/aws/route53.d.ts +215 -0
  32. package/dist/aws/s3.d.ts +212 -0
  33. package/dist/aws/scheduler.d.ts +140 -0
  34. package/dist/aws/secrets-manager.d.ts +170 -0
  35. package/dist/aws/ses.d.ts +288 -0
  36. package/dist/aws/setup-phone.d.ts +0 -0
  37. package/dist/aws/setup-sms.d.ts +115 -0
  38. package/dist/aws/sms.d.ts +304 -0
  39. package/dist/aws/smtp-server.d.ts +61 -0
  40. package/dist/aws/sns.d.ts +117 -0
  41. package/dist/aws/sqs.d.ts +65 -0
  42. package/dist/aws/ssm.d.ts +179 -0
  43. package/dist/aws/sts.d.ts +15 -0
  44. package/dist/aws/support.d.ts +104 -0
  45. package/dist/aws/test-imap.d.ts +0 -0
  46. package/dist/aws/textract.d.ts +403 -0
  47. package/dist/aws/transcribe.d.ts +60 -0
  48. package/dist/aws/translate.d.ts +358 -0
  49. package/dist/aws/voice.d.ts +219 -0
  50. package/dist/bin/cli.js +1724 -0
  51. package/dist/config.d.ts +7 -0
  52. package/dist/deploy/index.d.ts +2 -0
  53. package/dist/deploy/static-site-external-dns.d.ts +51 -0
  54. package/dist/deploy/static-site.d.ts +71 -0
  55. package/dist/dns/cloudflare.d.ts +52 -0
  56. package/dist/dns/godaddy.d.ts +38 -0
  57. package/dist/dns/index.d.ts +45 -0
  58. package/dist/dns/porkbun.d.ts +18 -0
  59. package/dist/dns/route53-adapter.d.ts +38 -0
  60. package/{src/dns/types.ts → dist/dns/types.d.ts} +26 -63
  61. package/dist/dns/validator.d.ts +78 -0
  62. package/dist/generators/index.d.ts +1 -0
  63. package/dist/generators/infrastructure.d.ts +30 -0
  64. package/{src/index.ts → dist/index.d.ts} +70 -93
  65. package/dist/index.js +7881 -0
  66. package/dist/push/apns.d.ts +60 -0
  67. package/dist/push/fcm.d.ts +117 -0
  68. package/dist/push/index.d.ts +14 -0
  69. package/dist/security/pre-deploy-scanner.d.ts +69 -0
  70. package/dist/ssl/acme-client.d.ts +67 -0
  71. package/dist/ssl/index.d.ts +2 -0
  72. package/dist/ssl/letsencrypt.d.ts +48 -0
  73. package/dist/types.d.ts +1 -0
  74. package/dist/utils/cli.d.ts +123 -0
  75. package/dist/validation/index.d.ts +1 -0
  76. package/dist/validation/template.d.ts +23 -0
  77. package/package.json +8 -8
  78. package/bin/cli.ts +0 -133
  79. package/bin/commands/analytics.ts +0 -328
  80. package/bin/commands/api.ts +0 -379
  81. package/bin/commands/assets.ts +0 -221
  82. package/bin/commands/audit.ts +0 -501
  83. package/bin/commands/backup.ts +0 -682
  84. package/bin/commands/cache.ts +0 -294
  85. package/bin/commands/cdn.ts +0 -281
  86. package/bin/commands/config.ts +0 -202
  87. package/bin/commands/container.ts +0 -105
  88. package/bin/commands/cost.ts +0 -208
  89. package/bin/commands/database.ts +0 -401
  90. package/bin/commands/deploy.ts +0 -674
  91. package/bin/commands/domain.ts +0 -397
  92. package/bin/commands/email.ts +0 -423
  93. package/bin/commands/environment.ts +0 -285
  94. package/bin/commands/events.ts +0 -424
  95. package/bin/commands/firewall.ts +0 -145
  96. package/bin/commands/function.ts +0 -116
  97. package/bin/commands/generate.ts +0 -280
  98. package/bin/commands/git.ts +0 -139
  99. package/bin/commands/iam.ts +0 -464
  100. package/bin/commands/index.ts +0 -48
  101. package/bin/commands/init.ts +0 -120
  102. package/bin/commands/logs.ts +0 -148
  103. package/bin/commands/network.ts +0 -579
  104. package/bin/commands/notify.ts +0 -489
  105. package/bin/commands/queue.ts +0 -407
  106. package/bin/commands/scheduler.ts +0 -370
  107. package/bin/commands/secrets.ts +0 -54
  108. package/bin/commands/server.ts +0 -629
  109. package/bin/commands/shared.ts +0 -97
  110. package/bin/commands/ssl.ts +0 -138
  111. package/bin/commands/stack.ts +0 -325
  112. package/bin/commands/status.ts +0 -385
  113. package/bin/commands/storage.ts +0 -450
  114. package/bin/commands/team.ts +0 -96
  115. package/bin/commands/tunnel.ts +0 -489
  116. package/bin/commands/utils.ts +0 -202
  117. package/build.ts +0 -15
  118. package/cloud +0 -2
  119. package/src/aws/acm.ts +0 -768
  120. package/src/aws/application-autoscaling.ts +0 -845
  121. package/src/aws/bedrock.ts +0 -4074
  122. package/src/aws/client.ts +0 -878
  123. package/src/aws/cloudformation.ts +0 -896
  124. package/src/aws/cloudfront.ts +0 -1531
  125. package/src/aws/cloudwatch-logs.ts +0 -154
  126. package/src/aws/comprehend.ts +0 -839
  127. package/src/aws/connect.ts +0 -1056
  128. package/src/aws/deploy-imap.ts +0 -384
  129. package/src/aws/dynamodb.ts +0 -340
  130. package/src/aws/ec2.ts +0 -1385
  131. package/src/aws/ecr.ts +0 -621
  132. package/src/aws/ecs.ts +0 -615
  133. package/src/aws/elasticache.ts +0 -301
  134. package/src/aws/elbv2.ts +0 -942
  135. package/src/aws/email.ts +0 -928
  136. package/src/aws/eventbridge.ts +0 -248
  137. package/src/aws/iam.ts +0 -1689
  138. package/src/aws/imap-server.ts +0 -2100
  139. package/src/aws/lambda.ts +0 -786
  140. package/src/aws/opensearch.ts +0 -158
  141. package/src/aws/personalize.ts +0 -977
  142. package/src/aws/polly.ts +0 -559
  143. package/src/aws/rds.ts +0 -888
  144. package/src/aws/rekognition.ts +0 -846
  145. package/src/aws/route53-domains.ts +0 -359
  146. package/src/aws/route53.ts +0 -1046
  147. package/src/aws/s3.ts +0 -2318
  148. package/src/aws/scheduler.ts +0 -571
  149. package/src/aws/secrets-manager.ts +0 -769
  150. package/src/aws/ses.ts +0 -1081
  151. package/src/aws/setup-phone.ts +0 -104
  152. package/src/aws/setup-sms.ts +0 -580
  153. package/src/aws/sms.ts +0 -1735
  154. package/src/aws/smtp-server.ts +0 -531
  155. package/src/aws/sns.ts +0 -758
  156. package/src/aws/sqs.ts +0 -382
  157. package/src/aws/ssm.ts +0 -807
  158. package/src/aws/sts.ts +0 -92
  159. package/src/aws/support.ts +0 -391
  160. package/src/aws/test-imap.ts +0 -86
  161. package/src/aws/textract.ts +0 -780
  162. package/src/aws/transcribe.ts +0 -108
  163. package/src/aws/translate.ts +0 -641
  164. package/src/aws/voice.ts +0 -1379
  165. package/src/config.ts +0 -35
  166. package/src/deploy/index.ts +0 -7
  167. package/src/deploy/static-site-external-dns.ts +0 -906
  168. package/src/deploy/static-site.ts +0 -1125
  169. package/src/dns/godaddy.ts +0 -412
  170. package/src/dns/index.ts +0 -183
  171. package/src/dns/porkbun.ts +0 -362
  172. package/src/dns/route53-adapter.ts +0 -414
  173. package/src/dns/validator.ts +0 -369
  174. package/src/generators/index.ts +0 -5
  175. package/src/generators/infrastructure.ts +0 -1660
  176. package/src/push/apns.ts +0 -452
  177. package/src/push/fcm.ts +0 -506
  178. package/src/push/index.ts +0 -58
  179. package/src/ssl/acme-client.ts +0 -478
  180. package/src/ssl/index.ts +0 -7
  181. package/src/ssl/letsencrypt.ts +0 -747
  182. package/src/types.ts +0 -2
  183. package/src/utils/cli.ts +0 -398
  184. package/src/validation/index.ts +0 -5
  185. package/src/validation/template.ts +0 -405
  186. package/test/index.test.ts +0 -128
  187. package/tsconfig.json +0 -18
@@ -1,407 +0,0 @@
1
- import type { CLI } from '@stacksjs/clapp'
2
- import * as cli from '../../src/utils/cli'
3
- import { SQSClient } from '../../src/aws/sqs'
4
- import { loadValidatedConfig } from './shared'
5
-
6
- export function registerQueueCommands(app: CLI): void {
7
- app
8
- .command('queue:list', 'List all SQS queues')
9
- .option('--region <region>', 'AWS region')
10
- .action(async (options: { region?: string }) => {
11
- cli.header('SQS Queues')
12
-
13
- try {
14
- const config = await loadValidatedConfig()
15
- const region = options.region || config.project.region || 'us-east-1'
16
- const sqs = new SQSClient(region)
17
-
18
- const spinner = new cli.Spinner('Fetching queues...')
19
- spinner.start()
20
-
21
- const result = await sqs.listQueues()
22
- const queues = result.QueueUrls || []
23
-
24
- spinner.succeed(`Found ${queues.length} queue(s)`)
25
-
26
- if (queues.length === 0) {
27
- cli.info('No SQS queues found')
28
- cli.info('Use `cloud queue:create` to create a new queue')
29
- return
30
- }
31
-
32
- // Get attributes for each queue
33
- const queueData: { url: string; name: string; messages: string; type: string }[] = []
34
-
35
- for (const queueUrl of queues) {
36
- try {
37
- const attrs = await sqs.getQueueAttributes(queueUrl)
38
-
39
- const name = queueUrl.split('/').pop() || queueUrl
40
- queueData.push({
41
- url: queueUrl,
42
- name,
43
- messages: attrs.Attributes?.ApproximateNumberOfMessages || '0',
44
- type: attrs.Attributes?.FifoQueue === 'true' ? 'FIFO' : 'Standard',
45
- })
46
- }
47
- catch {
48
- const name = queueUrl.split('/').pop() || queueUrl
49
- queueData.push({
50
- url: queueUrl,
51
- name,
52
- messages: 'N/A',
53
- type: 'Unknown',
54
- })
55
- }
56
- }
57
-
58
- cli.table(
59
- ['Queue Name', 'Messages', 'Type'],
60
- queueData.map(q => [q.name, q.messages, q.type]),
61
- )
62
- }
63
- catch (error: any) {
64
- cli.error(`Failed to list queues: ${error.message}`)
65
- process.exit(1)
66
- }
67
- })
68
-
69
- app
70
- .command('queue:create <name>', 'Create a new SQS queue')
71
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
72
- .option('--fifo', 'Create a FIFO queue')
73
- .option('--dlq <queueArn>', 'Dead letter queue ARN')
74
- .option('--max-retries <number>', 'Max receive count before DLQ', { default: '3' })
75
- .option('--visibility <seconds>', 'Visibility timeout in seconds', { default: '30' })
76
- .option('--retention <days>', 'Message retention in days', { default: '4' })
77
- .action(async (name: string, options: {
78
- region: string
79
- fifo?: boolean
80
- dlq?: string
81
- maxRetries: string
82
- visibility: string
83
- retention: string
84
- }) => {
85
- cli.header('Create SQS Queue')
86
-
87
- try {
88
- const sqs = new SQSClient(options.region)
89
-
90
- // FIFO queues must end with .fifo
91
- const queueName = options.fifo && !name.endsWith('.fifo') ? `${name}.fifo` : name
92
-
93
- cli.info(`Queue name: ${queueName}`)
94
- cli.info(`Type: ${options.fifo ? 'FIFO' : 'Standard'}`)
95
- cli.info(`Visibility timeout: ${options.visibility} seconds`)
96
- cli.info(`Message retention: ${options.retention} days`)
97
- if (options.dlq) {
98
- cli.info(`Dead letter queue: ${options.dlq}`)
99
- cli.info(`Max retries: ${options.maxRetries}`)
100
- }
101
-
102
- const confirmed = await cli.confirm('\nCreate this queue?', true)
103
- if (!confirmed) {
104
- cli.info('Operation cancelled')
105
- return
106
- }
107
-
108
- const spinner = new cli.Spinner('Creating queue...')
109
- spinner.start()
110
-
111
- const result = await sqs.createQueue({
112
- queueName,
113
- fifo: options.fifo,
114
- visibilityTimeout: Number.parseInt(options.visibility),
115
- messageRetentionPeriod: Number.parseInt(options.retention) * 24 * 60 * 60,
116
- contentBasedDeduplication: options.fifo ? true : undefined,
117
- deadLetterTargetArn: options.dlq,
118
- maxReceiveCount: options.dlq ? Number.parseInt(options.maxRetries) : undefined,
119
- })
120
-
121
- spinner.succeed('Queue created')
122
-
123
- cli.success(`\nQueue URL: ${result.QueueUrl}`)
124
- cli.info('\nTo send a message:')
125
- cli.info(` cloud queue:send ${queueName} --message "Hello World"`)
126
- }
127
- catch (error: any) {
128
- cli.error(`Failed to create queue: ${error.message}`)
129
- process.exit(1)
130
- }
131
- })
132
-
133
- app
134
- .command('queue:delete <name>', 'Delete an SQS queue')
135
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
136
- .action(async (name: string, options: { region: string }) => {
137
- cli.header('Delete SQS Queue')
138
-
139
- try {
140
- const sqs = new SQSClient(options.region)
141
-
142
- cli.warn(`This will permanently delete queue: ${name}`)
143
- cli.warn('All messages in the queue will be lost!')
144
-
145
- const confirmed = await cli.confirm('\nDelete this queue?', false)
146
- if (!confirmed) {
147
- cli.info('Operation cancelled')
148
- return
149
- }
150
-
151
- const spinner = new cli.Spinner('Getting queue URL...')
152
- spinner.start()
153
-
154
- const urlResult = await sqs.getQueueUrl(name)
155
-
156
- if (!urlResult.QueueUrl) {
157
- spinner.fail('Queue not found')
158
- return
159
- }
160
-
161
- spinner.text = 'Deleting queue...'
162
-
163
- await sqs.deleteQueue(urlResult.QueueUrl)
164
-
165
- spinner.succeed('Queue deleted')
166
- }
167
- catch (error: any) {
168
- cli.error(`Failed to delete queue: ${error.message}`)
169
- process.exit(1)
170
- }
171
- })
172
-
173
- app
174
- .command('queue:send <name>', 'Send a message to an SQS queue')
175
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
176
- .option('--message <body>', 'Message body')
177
- .option('--file <path>', 'Read message body from file')
178
- .option('--group <id>', 'Message group ID (for FIFO queues)')
179
- .option('--dedup <id>', 'Deduplication ID (for FIFO queues)')
180
- .option('--delay <seconds>', 'Delay delivery in seconds', { default: '0' })
181
- .action(async (name: string, options: {
182
- region: string
183
- message?: string
184
- file?: string
185
- group?: string
186
- dedup?: string
187
- delay: string
188
- }) => {
189
- cli.header('Send SQS Message')
190
-
191
- try {
192
- const sqs = new SQSClient(options.region)
193
-
194
- // Get message body
195
- let messageBody: string
196
-
197
- if (options.file) {
198
- const file = Bun.file(options.file)
199
- messageBody = await file.text()
200
- }
201
- else if (options.message) {
202
- messageBody = options.message
203
- }
204
- else {
205
- messageBody = await cli.prompt('Message body')
206
- }
207
-
208
- if (!messageBody) {
209
- cli.error('Message body is required')
210
- return
211
- }
212
-
213
- const spinner = new cli.Spinner('Getting queue URL...')
214
- spinner.start()
215
-
216
- const urlResult = await sqs.getQueueUrl(name)
217
-
218
- if (!urlResult.QueueUrl) {
219
- spinner.fail('Queue not found')
220
- return
221
- }
222
-
223
- spinner.text = 'Sending message...'
224
-
225
- const result = await sqs.sendMessage({
226
- queueUrl: urlResult.QueueUrl,
227
- messageBody,
228
- delaySeconds: Number.parseInt(options.delay),
229
- messageGroupId: options.group,
230
- messageDeduplicationId: options.dedup,
231
- })
232
-
233
- spinner.succeed('Message sent')
234
-
235
- cli.success(`\nMessage ID: ${result.MessageId}`)
236
- }
237
- catch (error: any) {
238
- cli.error(`Failed to send message: ${error.message}`)
239
- process.exit(1)
240
- }
241
- })
242
-
243
- app
244
- .command('queue:receive <name>', 'Receive messages from an SQS queue')
245
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
246
- .option('--max <number>', 'Maximum number of messages', { default: '1' })
247
- .option('--wait <seconds>', 'Long polling wait time', { default: '0' })
248
- .option('--delete', 'Delete messages after receiving')
249
- .action(async (name: string, options: {
250
- region: string
251
- max: string
252
- wait: string
253
- delete?: boolean
254
- }) => {
255
- cli.header('Receive SQS Messages')
256
-
257
- try {
258
- const sqs = new SQSClient(options.region)
259
-
260
- const spinner = new cli.Spinner('Getting queue URL...')
261
- spinner.start()
262
-
263
- const urlResult = await sqs.getQueueUrl(name)
264
-
265
- if (!urlResult.QueueUrl) {
266
- spinner.fail('Queue not found')
267
- return
268
- }
269
-
270
- spinner.text = 'Receiving messages...'
271
-
272
- const result = await sqs.receiveMessages({
273
- queueUrl: urlResult.QueueUrl,
274
- maxMessages: Number.parseInt(options.max),
275
- waitTimeSeconds: Number.parseInt(options.wait),
276
- })
277
-
278
- const messages = result.Messages || []
279
-
280
- spinner.succeed(`Received ${messages.length} message(s)`)
281
-
282
- if (messages.length === 0) {
283
- cli.info('No messages available')
284
- return
285
- }
286
-
287
- for (const msg of messages) {
288
- cli.info(`\n--- Message: ${msg.MessageId} ---`)
289
- cli.info(`Body: ${msg.Body}`)
290
-
291
- if (msg.Attributes) {
292
- cli.info(`Sent: ${msg.Attributes.SentTimestamp ? new Date(Number.parseInt(msg.Attributes.SentTimestamp)).toISOString() : 'N/A'}`)
293
- cli.info(`Receive Count: ${msg.Attributes.ApproximateReceiveCount || 'N/A'}`)
294
- }
295
-
296
- if (options.delete && msg.ReceiptHandle) {
297
- await sqs.deleteMessage(urlResult.QueueUrl, msg.ReceiptHandle)
298
- cli.info('(Deleted)')
299
- }
300
- }
301
- }
302
- catch (error: any) {
303
- cli.error(`Failed to receive messages: ${error.message}`)
304
- process.exit(1)
305
- }
306
- })
307
-
308
- app
309
- .command('queue:purge <name>', 'Purge all messages from an SQS queue')
310
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
311
- .action(async (name: string, options: { region: string }) => {
312
- cli.header('Purge SQS Queue')
313
-
314
- try {
315
- const sqs = new SQSClient(options.region)
316
-
317
- cli.warn(`This will delete ALL messages in queue: ${name}`)
318
- cli.warn('This action cannot be undone!')
319
-
320
- const confirmed = await cli.confirm('\nPurge this queue?', false)
321
- if (!confirmed) {
322
- cli.info('Operation cancelled')
323
- return
324
- }
325
-
326
- const spinner = new cli.Spinner('Getting queue URL...')
327
- spinner.start()
328
-
329
- const urlResult = await sqs.getQueueUrl(name)
330
-
331
- if (!urlResult.QueueUrl) {
332
- spinner.fail('Queue not found')
333
- return
334
- }
335
-
336
- spinner.text = 'Purging queue...'
337
-
338
- await sqs.purgeQueue(urlResult.QueueUrl)
339
-
340
- spinner.succeed('Queue purged')
341
-
342
- cli.info('\nNote: It may take up to 60 seconds for the purge to complete.')
343
- }
344
- catch (error: any) {
345
- cli.error(`Failed to purge queue: ${error.message}`)
346
- process.exit(1)
347
- }
348
- })
349
-
350
- app
351
- .command('queue:stats <name>', 'Show SQS queue statistics')
352
- .option('--region <region>', 'AWS region', { default: 'us-east-1' })
353
- .action(async (name: string, options: { region: string }) => {
354
- cli.header(`SQS Queue Stats: ${name}`)
355
-
356
- try {
357
- const sqs = new SQSClient(options.region)
358
-
359
- const spinner = new cli.Spinner('Fetching queue stats...')
360
- spinner.start()
361
-
362
- const urlResult = await sqs.getQueueUrl(name)
363
-
364
- if (!urlResult.QueueUrl) {
365
- spinner.fail('Queue not found')
366
- return
367
- }
368
-
369
- const attrs = await sqs.getQueueAttributes(urlResult.QueueUrl)
370
-
371
- spinner.succeed('Stats loaded')
372
-
373
- const a = attrs.Attributes || {}
374
-
375
- cli.info('\nQueue Information:')
376
- cli.info(` URL: ${urlResult.QueueUrl}`)
377
- cli.info(` ARN: ${a.QueueArn || 'N/A'}`)
378
- cli.info(` Type: ${a.FifoQueue === 'true' ? 'FIFO' : 'Standard'}`)
379
-
380
- cli.info('\nMessages:')
381
- cli.info(` Available: ${a.ApproximateNumberOfMessages || '0'}`)
382
- cli.info(` In Flight: ${a.ApproximateNumberOfMessagesNotVisible || '0'}`)
383
- cli.info(` Delayed: ${a.ApproximateNumberOfMessagesDelayed || '0'}`)
384
-
385
- cli.info('\nConfiguration:')
386
- cli.info(` Visibility Timeout: ${a.VisibilityTimeout || '30'} seconds`)
387
- cli.info(` Message Retention: ${Number.parseInt(a.MessageRetentionPeriod || '345600') / 86400} days`)
388
- cli.info(` Max Message Size: ${Number.parseInt(a.MaximumMessageSize || '262144') / 1024} KB`)
389
- cli.info(` Receive Wait Time: ${a.ReceiveMessageWaitTimeSeconds || '0'} seconds`)
390
-
391
- if (a.RedrivePolicy) {
392
- const dlqPolicy = JSON.parse(a.RedrivePolicy)
393
- cli.info('\nDead Letter Queue:')
394
- cli.info(` Target ARN: ${dlqPolicy.deadLetterTargetArn}`)
395
- cli.info(` Max Receives: ${dlqPolicy.maxReceiveCount}`)
396
- }
397
-
398
- cli.info('\nTimestamps:')
399
- cli.info(` Created: ${a.CreatedTimestamp ? new Date(Number.parseInt(a.CreatedTimestamp) * 1000).toISOString() : 'N/A'}`)
400
- cli.info(` Last Modified: ${a.LastModifiedTimestamp ? new Date(Number.parseInt(a.LastModifiedTimestamp) * 1000).toISOString() : 'N/A'}`)
401
- }
402
- catch (error: any) {
403
- cli.error(`Failed to get queue stats: ${error.message}`)
404
- process.exit(1)
405
- }
406
- })
407
- }