@stacksjs/ts-cloud-core 0.1.1

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 (251) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +321 -0
  3. package/package.json +31 -0
  4. package/src/advanced-features.test.ts +465 -0
  5. package/src/aws/cloudformation.ts +421 -0
  6. package/src/aws/cloudfront.ts +158 -0
  7. package/src/aws/credentials.test.ts +132 -0
  8. package/src/aws/credentials.ts +545 -0
  9. package/src/aws/index.ts +87 -0
  10. package/src/aws/s3.test.ts +188 -0
  11. package/src/aws/s3.ts +1088 -0
  12. package/src/aws/signature.test.ts +670 -0
  13. package/src/aws/signature.ts +1155 -0
  14. package/src/backup/disaster-recovery.test.ts +726 -0
  15. package/src/backup/disaster-recovery.ts +500 -0
  16. package/src/backup/index.ts +34 -0
  17. package/src/backup/manager.test.ts +498 -0
  18. package/src/backup/manager.ts +432 -0
  19. package/src/cicd/circleci.ts +430 -0
  20. package/src/cicd/github-actions.ts +424 -0
  21. package/src/cicd/gitlab-ci.ts +255 -0
  22. package/src/cicd/index.ts +8 -0
  23. package/src/cli/history.ts +396 -0
  24. package/src/cli/index.ts +10 -0
  25. package/src/cli/progress.ts +458 -0
  26. package/src/cli/repl.ts +454 -0
  27. package/src/cli/suggestions.ts +327 -0
  28. package/src/cli/table.test.ts +319 -0
  29. package/src/cli/table.ts +332 -0
  30. package/src/cloudformation/builder.test.ts +327 -0
  31. package/src/cloudformation/builder.ts +378 -0
  32. package/src/cloudformation/builders/api-gateway.ts +449 -0
  33. package/src/cloudformation/builders/cache.ts +334 -0
  34. package/src/cloudformation/builders/cdn.ts +278 -0
  35. package/src/cloudformation/builders/compute.ts +485 -0
  36. package/src/cloudformation/builders/database.ts +392 -0
  37. package/src/cloudformation/builders/functions.ts +343 -0
  38. package/src/cloudformation/builders/messaging.ts +140 -0
  39. package/src/cloudformation/builders/monitoring.ts +300 -0
  40. package/src/cloudformation/builders/network.ts +264 -0
  41. package/src/cloudformation/builders/queue.ts +147 -0
  42. package/src/cloudformation/builders/security.ts +399 -0
  43. package/src/cloudformation/builders/storage.ts +285 -0
  44. package/src/cloudformation/index.ts +30 -0
  45. package/src/cloudformation/types.ts +173 -0
  46. package/src/compliance/aws-config.ts +543 -0
  47. package/src/compliance/cloudtrail.ts +376 -0
  48. package/src/compliance/compliance.test.ts +423 -0
  49. package/src/compliance/guardduty.ts +446 -0
  50. package/src/compliance/index.ts +66 -0
  51. package/src/compliance/security-hub.ts +456 -0
  52. package/src/containers/build-optimization.ts +416 -0
  53. package/src/containers/containers.test.ts +508 -0
  54. package/src/containers/image-scanning.ts +360 -0
  55. package/src/containers/index.ts +9 -0
  56. package/src/containers/registry.ts +293 -0
  57. package/src/containers/service-mesh.ts +520 -0
  58. package/src/database/database.test.ts +762 -0
  59. package/src/database/index.ts +9 -0
  60. package/src/database/migrations.ts +444 -0
  61. package/src/database/performance.ts +528 -0
  62. package/src/database/replicas.ts +534 -0
  63. package/src/database/users.ts +494 -0
  64. package/src/dependency-graph.ts +143 -0
  65. package/src/deployment/ab-testing.ts +582 -0
  66. package/src/deployment/blue-green.ts +452 -0
  67. package/src/deployment/canary.ts +500 -0
  68. package/src/deployment/deployment.test.ts +526 -0
  69. package/src/deployment/index.ts +61 -0
  70. package/src/deployment/progressive.ts +62 -0
  71. package/src/dns/dns.test.ts +641 -0
  72. package/src/dns/dnssec.ts +315 -0
  73. package/src/dns/index.ts +8 -0
  74. package/src/dns/resolver.ts +496 -0
  75. package/src/dns/routing.ts +593 -0
  76. package/src/email/advanced/analytics.ts +445 -0
  77. package/src/email/advanced/index.ts +11 -0
  78. package/src/email/advanced/rules.ts +465 -0
  79. package/src/email/advanced/scheduling.ts +352 -0
  80. package/src/email/advanced/search.ts +412 -0
  81. package/src/email/advanced/shared-mailboxes.ts +404 -0
  82. package/src/email/advanced/templates.ts +455 -0
  83. package/src/email/advanced/threading.ts +281 -0
  84. package/src/email/analytics.ts +467 -0
  85. package/src/email/bounce-handling.ts +425 -0
  86. package/src/email/email.test.ts +431 -0
  87. package/src/email/handlers/__tests__/inbound.test.ts +38 -0
  88. package/src/email/handlers/__tests__/outbound.test.ts +37 -0
  89. package/src/email/handlers/converter.ts +227 -0
  90. package/src/email/handlers/feedback.ts +228 -0
  91. package/src/email/handlers/inbound.ts +169 -0
  92. package/src/email/handlers/outbound.ts +178 -0
  93. package/src/email/index.ts +15 -0
  94. package/src/email/reputation.ts +303 -0
  95. package/src/email/templates.ts +352 -0
  96. package/src/errors/index.test.ts +434 -0
  97. package/src/errors/index.ts +416 -0
  98. package/src/health-checks/index.ts +40 -0
  99. package/src/index.ts +360 -0
  100. package/src/intrinsic-functions.ts +118 -0
  101. package/src/lambda/concurrency.ts +330 -0
  102. package/src/lambda/destinations.ts +345 -0
  103. package/src/lambda/dlq.ts +425 -0
  104. package/src/lambda/index.ts +11 -0
  105. package/src/lambda/lambda.test.ts +840 -0
  106. package/src/lambda/layers.ts +263 -0
  107. package/src/lambda/versions.ts +376 -0
  108. package/src/lambda/vpc.ts +399 -0
  109. package/src/local/config.ts +114 -0
  110. package/src/local/index.ts +6 -0
  111. package/src/local/mock-aws.ts +351 -0
  112. package/src/modules/ai.ts +340 -0
  113. package/src/modules/api.ts +478 -0
  114. package/src/modules/auth.ts +805 -0
  115. package/src/modules/cache.ts +417 -0
  116. package/src/modules/cdn.ts +1062 -0
  117. package/src/modules/communication.ts +1094 -0
  118. package/src/modules/compute.ts +3348 -0
  119. package/src/modules/database.ts +554 -0
  120. package/src/modules/deployment.ts +1079 -0
  121. package/src/modules/dns.ts +337 -0
  122. package/src/modules/email.ts +1538 -0
  123. package/src/modules/filesystem.ts +515 -0
  124. package/src/modules/index.ts +32 -0
  125. package/src/modules/messaging.ts +486 -0
  126. package/src/modules/monitoring.ts +2086 -0
  127. package/src/modules/network.ts +664 -0
  128. package/src/modules/parameter-store.ts +325 -0
  129. package/src/modules/permissions.ts +1081 -0
  130. package/src/modules/phone.ts +494 -0
  131. package/src/modules/queue.ts +1260 -0
  132. package/src/modules/redirects.ts +464 -0
  133. package/src/modules/registry.ts +699 -0
  134. package/src/modules/search.ts +401 -0
  135. package/src/modules/secrets.ts +416 -0
  136. package/src/modules/security.ts +731 -0
  137. package/src/modules/sms.ts +389 -0
  138. package/src/modules/storage.ts +1120 -0
  139. package/src/modules/workflow.ts +680 -0
  140. package/src/multi-account/config.ts +521 -0
  141. package/src/multi-account/index.ts +7 -0
  142. package/src/multi-account/manager.ts +427 -0
  143. package/src/multi-region/cross-region.ts +410 -0
  144. package/src/multi-region/index.ts +8 -0
  145. package/src/multi-region/manager.ts +483 -0
  146. package/src/multi-region/regions.ts +435 -0
  147. package/src/network-security/index.ts +48 -0
  148. package/src/observability/index.ts +9 -0
  149. package/src/observability/logs.ts +522 -0
  150. package/src/observability/metrics.ts +460 -0
  151. package/src/observability/observability.test.ts +782 -0
  152. package/src/observability/synthetics.ts +568 -0
  153. package/src/observability/xray.ts +358 -0
  154. package/src/phone/advanced/analytics.ts +349 -0
  155. package/src/phone/advanced/callbacks.ts +428 -0
  156. package/src/phone/advanced/index.ts +8 -0
  157. package/src/phone/advanced/ivr-builder.ts +504 -0
  158. package/src/phone/advanced/recording.ts +310 -0
  159. package/src/phone/handlers/__tests__/incoming-call.test.ts +40 -0
  160. package/src/phone/handlers/incoming-call.ts +117 -0
  161. package/src/phone/handlers/missed-call.ts +116 -0
  162. package/src/phone/handlers/voicemail.ts +179 -0
  163. package/src/phone/index.ts +9 -0
  164. package/src/presets/api-backend.ts +134 -0
  165. package/src/presets/data-pipeline.ts +204 -0
  166. package/src/presets/extend.test.ts +295 -0
  167. package/src/presets/extend.ts +297 -0
  168. package/src/presets/fullstack-app.ts +144 -0
  169. package/src/presets/index.ts +27 -0
  170. package/src/presets/jamstack.ts +135 -0
  171. package/src/presets/microservices.ts +167 -0
  172. package/src/presets/ml-api.ts +208 -0
  173. package/src/presets/nodejs-server.ts +104 -0
  174. package/src/presets/nodejs-serverless.ts +114 -0
  175. package/src/presets/realtime-app.ts +184 -0
  176. package/src/presets/static-site.ts +64 -0
  177. package/src/presets/traditional-web-app.ts +339 -0
  178. package/src/presets/wordpress.ts +138 -0
  179. package/src/preview/github.test.ts +249 -0
  180. package/src/preview/github.ts +297 -0
  181. package/src/preview/index.ts +37 -0
  182. package/src/preview/manager.test.ts +440 -0
  183. package/src/preview/manager.ts +326 -0
  184. package/src/preview/notifications.test.ts +582 -0
  185. package/src/preview/notifications.ts +341 -0
  186. package/src/queue/batch-processing.ts +402 -0
  187. package/src/queue/dlq-monitoring.ts +402 -0
  188. package/src/queue/fifo.ts +342 -0
  189. package/src/queue/index.ts +9 -0
  190. package/src/queue/management.ts +428 -0
  191. package/src/queue/queue.test.ts +429 -0
  192. package/src/resource-mgmt/index.ts +39 -0
  193. package/src/resource-naming.ts +62 -0
  194. package/src/s3/index.ts +523 -0
  195. package/src/schema/cloud-config.schema.json +554 -0
  196. package/src/schema/index.ts +68 -0
  197. package/src/security/certificate-manager.ts +492 -0
  198. package/src/security/index.ts +9 -0
  199. package/src/security/scanning.ts +545 -0
  200. package/src/security/secrets-manager.ts +476 -0
  201. package/src/security/secrets-rotation.ts +456 -0
  202. package/src/security/security.test.ts +738 -0
  203. package/src/sms/advanced/ab-testing.ts +389 -0
  204. package/src/sms/advanced/analytics.ts +336 -0
  205. package/src/sms/advanced/campaigns.ts +523 -0
  206. package/src/sms/advanced/chatbot.ts +224 -0
  207. package/src/sms/advanced/index.ts +10 -0
  208. package/src/sms/advanced/link-tracking.ts +248 -0
  209. package/src/sms/advanced/mms.ts +308 -0
  210. package/src/sms/handlers/__tests__/send.test.ts +40 -0
  211. package/src/sms/handlers/delivery-status.ts +133 -0
  212. package/src/sms/handlers/receive.ts +162 -0
  213. package/src/sms/handlers/send.ts +174 -0
  214. package/src/sms/index.ts +9 -0
  215. package/src/stack-diff.ts +389 -0
  216. package/src/static-site/index.ts +85 -0
  217. package/src/template-builder.ts +110 -0
  218. package/src/template-validator.ts +574 -0
  219. package/src/utils/cache.ts +291 -0
  220. package/src/utils/diff.ts +269 -0
  221. package/src/utils/hash.ts +227 -0
  222. package/src/utils/index.ts +8 -0
  223. package/src/utils/parallel.ts +294 -0
  224. package/src/validators/credentials.test.ts +274 -0
  225. package/src/validators/credentials.ts +233 -0
  226. package/src/validators/quotas.test.ts +434 -0
  227. package/src/validators/quotas.ts +217 -0
  228. package/test/ai.test.ts +327 -0
  229. package/test/api.test.ts +511 -0
  230. package/test/auth.test.ts +632 -0
  231. package/test/cache.test.ts +406 -0
  232. package/test/cdn.test.ts +247 -0
  233. package/test/compute.test.ts +861 -0
  234. package/test/database.test.ts +523 -0
  235. package/test/deployment.test.ts +499 -0
  236. package/test/dns.test.ts +270 -0
  237. package/test/email.test.ts +439 -0
  238. package/test/filesystem.test.ts +382 -0
  239. package/test/integration.test.ts +350 -0
  240. package/test/messaging.test.ts +514 -0
  241. package/test/monitoring.test.ts +634 -0
  242. package/test/network.test.ts +425 -0
  243. package/test/permissions.test.ts +488 -0
  244. package/test/queue.test.ts +484 -0
  245. package/test/registry.test.ts +306 -0
  246. package/test/security.test.ts +462 -0
  247. package/test/storage.test.ts +463 -0
  248. package/test/template-validator.test.ts +559 -0
  249. package/test/workflow.test.ts +592 -0
  250. package/tsconfig.json +16 -0
  251. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,342 @@
1
+ /**
2
+ * SQS FIFO Queue Management
3
+ * First-In-First-Out queues with message ordering and deduplication
4
+ */
5
+
6
+ export interface FIFOQueue {
7
+ id: string
8
+ name: string
9
+ queueUrl: string
10
+ contentBasedDeduplication: boolean
11
+ deduplicationScope: 'queue' | 'messageGroup'
12
+ fifoThroughputLimit: 'perQueue' | 'perMessageGroupId'
13
+ messageRetentionPeriod: number // seconds
14
+ visibilityTimeout: number
15
+ receiveMessageWaitTime: number
16
+ deadLetterTargetArn?: string
17
+ maxReceiveCount?: number
18
+ }
19
+
20
+ export interface MessageGroup {
21
+ id: string
22
+ messageGroupId: string
23
+ queueId: string
24
+ messagesInFlight: number
25
+ lastMessageTimestamp?: Date
26
+ }
27
+
28
+ export interface DeduplicationConfig {
29
+ id: string
30
+ queueId: string
31
+ deduplicationInterval: number // seconds (up to 5 minutes)
32
+ contentBasedDeduplication: boolean
33
+ deduplicationHashes: Map<string, Date>
34
+ }
35
+
36
+ export interface FIFOMessage {
37
+ id: string
38
+ messageId: string
39
+ messageGroupId: string
40
+ messageDeduplicationId?: string
41
+ body: string
42
+ attributes: Record<string, any>
43
+ sentTimestamp: Date
44
+ sequenceNumber: string
45
+ }
46
+
47
+ /**
48
+ * FIFO queue manager
49
+ */
50
+ export class FIFOQueueManager {
51
+ private queues: Map<string, FIFOQueue> = new Map()
52
+ private messageGroups: Map<string, MessageGroup> = new Map()
53
+ private deduplicationConfigs: Map<string, DeduplicationConfig> = new Map()
54
+ private messages: Map<string, FIFOMessage> = new Map()
55
+ private queueCounter = 0
56
+ private groupCounter = 0
57
+ private deduplicationCounter = 0
58
+ private messageCounter = 0
59
+ private sequenceCounter = 0
60
+
61
+ /**
62
+ * Create FIFO queue
63
+ */
64
+ createFIFOQueue(queue: Omit<FIFOQueue, 'id' | 'queueUrl'>): FIFOQueue {
65
+ const id = `fifo-queue-${Date.now()}-${this.queueCounter++}`
66
+
67
+ // Ensure name ends with .fifo
68
+ const queueName = queue.name.endsWith('.fifo') ? queue.name : `${queue.name}.fifo`
69
+
70
+ const { name, ...restQueue } = queue
71
+
72
+ const fifoQueue: FIFOQueue = {
73
+ id,
74
+ name: queueName,
75
+ queueUrl: `https://sqs.us-east-1.amazonaws.com/123456789012/${queueName}`,
76
+ ...restQueue,
77
+ }
78
+
79
+ this.queues.set(id, fifoQueue)
80
+
81
+ // Create deduplication config
82
+ this.createDeduplicationConfig({
83
+ queueId: id,
84
+ contentBasedDeduplication: queue.contentBasedDeduplication,
85
+ deduplicationInterval: 300, // 5 minutes
86
+ })
87
+
88
+ return fifoQueue
89
+ }
90
+
91
+ /**
92
+ * Create high-throughput FIFO queue
93
+ */
94
+ createHighThroughputFIFO(options: {
95
+ name: string
96
+ contentBasedDeduplication?: boolean
97
+ }): FIFOQueue {
98
+ return this.createFIFOQueue({
99
+ name: options.name,
100
+ contentBasedDeduplication: options.contentBasedDeduplication ?? true,
101
+ deduplicationScope: 'messageGroup',
102
+ fifoThroughputLimit: 'perMessageGroupId',
103
+ messageRetentionPeriod: 345600, // 4 days
104
+ visibilityTimeout: 30,
105
+ receiveMessageWaitTime: 0,
106
+ })
107
+ }
108
+
109
+ /**
110
+ * Create standard FIFO queue
111
+ */
112
+ createStandardFIFO(options: {
113
+ name: string
114
+ contentBasedDeduplication?: boolean
115
+ }): FIFOQueue {
116
+ return this.createFIFOQueue({
117
+ name: options.name,
118
+ contentBasedDeduplication: options.contentBasedDeduplication ?? false,
119
+ deduplicationScope: 'queue',
120
+ fifoThroughputLimit: 'perQueue',
121
+ messageRetentionPeriod: 345600,
122
+ visibilityTimeout: 30,
123
+ receiveMessageWaitTime: 0,
124
+ })
125
+ }
126
+
127
+ /**
128
+ * Create deduplication config
129
+ */
130
+ private createDeduplicationConfig(config: {
131
+ queueId: string
132
+ contentBasedDeduplication: boolean
133
+ deduplicationInterval: number
134
+ }): DeduplicationConfig {
135
+ const id = `dedup-${Date.now()}-${this.deduplicationCounter++}`
136
+
137
+ const deduplicationConfig: DeduplicationConfig = {
138
+ id,
139
+ deduplicationHashes: new Map(),
140
+ ...config,
141
+ }
142
+
143
+ this.deduplicationConfigs.set(config.queueId, deduplicationConfig)
144
+
145
+ return deduplicationConfig
146
+ }
147
+
148
+ /**
149
+ * Send message to FIFO queue
150
+ */
151
+ sendMessage(options: {
152
+ queueId: string
153
+ messageGroupId: string
154
+ messageBody: string
155
+ messageDeduplicationId?: string
156
+ messageAttributes?: Record<string, any>
157
+ }): FIFOMessage | null {
158
+ const queue = this.queues.get(options.queueId)
159
+
160
+ if (!queue) {
161
+ throw new Error(`Queue not found: ${options.queueId}`)
162
+ }
163
+
164
+ // Check deduplication
165
+ const deduplicationConfig = this.deduplicationConfigs.get(options.queueId)
166
+ if (deduplicationConfig) {
167
+ const deduplicationId = options.messageDeduplicationId ||
168
+ (queue.contentBasedDeduplication ? this.generateHash(options.messageBody) : undefined)
169
+
170
+ if (deduplicationId && this.isDuplicate(deduplicationConfig, deduplicationId)) {
171
+ return null // Message deduplicated
172
+ }
173
+
174
+ if (deduplicationId) {
175
+ deduplicationConfig.deduplicationHashes.set(deduplicationId, new Date())
176
+ }
177
+ }
178
+
179
+ const messageId = `msg-${Date.now()}-${this.messageCounter++}`
180
+ const sequenceNumber = this.generateSequenceNumber()
181
+
182
+ const message: FIFOMessage = {
183
+ id: messageId,
184
+ messageId,
185
+ messageGroupId: options.messageGroupId,
186
+ messageDeduplicationId: options.messageDeduplicationId,
187
+ body: options.messageBody,
188
+ attributes: options.messageAttributes || {},
189
+ sentTimestamp: new Date(),
190
+ sequenceNumber,
191
+ }
192
+
193
+ this.messages.set(messageId, message)
194
+
195
+ // Update message group
196
+ this.updateMessageGroup(options.queueId, options.messageGroupId)
197
+
198
+ return message
199
+ }
200
+
201
+ /**
202
+ * Check if message is duplicate
203
+ */
204
+ private isDuplicate(config: DeduplicationConfig, deduplicationId: string): boolean {
205
+ const existing = config.deduplicationHashes.get(deduplicationId)
206
+
207
+ if (!existing) {
208
+ return false
209
+ }
210
+
211
+ const age = (Date.now() - existing.getTime()) / 1000
212
+
213
+ if (age > config.deduplicationInterval) {
214
+ config.deduplicationHashes.delete(deduplicationId)
215
+ return false
216
+ }
217
+
218
+ return true
219
+ }
220
+
221
+ /**
222
+ * Generate message hash
223
+ */
224
+ private generateHash(content: string): string {
225
+ // Simplified hash generation
226
+ let hash = 0
227
+ for (let i = 0; i < content.length; i++) {
228
+ const char = content.charCodeAt(i)
229
+ hash = ((hash << 5) - hash) + char
230
+ hash = hash & hash
231
+ }
232
+ return Math.abs(hash).toString(36)
233
+ }
234
+
235
+ /**
236
+ * Generate sequence number
237
+ */
238
+ private generateSequenceNumber(): string {
239
+ return `${Date.now()}${this.sequenceCounter++}`.padStart(20, '0')
240
+ }
241
+
242
+ /**
243
+ * Update message group
244
+ */
245
+ private updateMessageGroup(queueId: string, messageGroupId: string): void {
246
+ const groupKey = `${queueId}-${messageGroupId}`
247
+ let group = this.messageGroups.get(groupKey)
248
+
249
+ if (!group) {
250
+ const id = `group-${Date.now()}-${this.groupCounter++}`
251
+ group = {
252
+ id,
253
+ messageGroupId,
254
+ queueId,
255
+ messagesInFlight: 0,
256
+ }
257
+ this.messageGroups.set(groupKey, group)
258
+ }
259
+
260
+ group.messagesInFlight++
261
+ group.lastMessageTimestamp = new Date()
262
+ }
263
+
264
+ /**
265
+ * Get message groups for queue
266
+ */
267
+ getMessageGroups(queueId: string): MessageGroup[] {
268
+ return Array.from(this.messageGroups.values()).filter(g => g.queueId === queueId)
269
+ }
270
+
271
+ /**
272
+ * Get queue
273
+ */
274
+ getQueue(id: string): FIFOQueue | undefined {
275
+ return this.queues.get(id)
276
+ }
277
+
278
+ /**
279
+ * List queues
280
+ */
281
+ listQueues(): FIFOQueue[] {
282
+ return Array.from(this.queues.values())
283
+ }
284
+
285
+ /**
286
+ * Get messages
287
+ */
288
+ getMessages(queueId: string, messageGroupId?: string): FIFOMessage[] {
289
+ let messages = Array.from(this.messages.values())
290
+
291
+ if (messageGroupId) {
292
+ messages = messages.filter(m => m.messageGroupId === messageGroupId)
293
+ }
294
+
295
+ return messages.sort((a, b) => a.sequenceNumber.localeCompare(b.sequenceNumber))
296
+ }
297
+
298
+ /**
299
+ * Generate CloudFormation for FIFO queue
300
+ */
301
+ generateFIFOQueueCF(queue: FIFOQueue): any {
302
+ return {
303
+ Type: 'AWS::SQS::Queue',
304
+ Properties: {
305
+ QueueName: queue.name,
306
+ FifoQueue: true,
307
+ ContentBasedDeduplication: queue.contentBasedDeduplication,
308
+ DeduplicationScope: queue.deduplicationScope,
309
+ FifoThroughputLimit: queue.fifoThroughputLimit,
310
+ MessageRetentionPeriod: queue.messageRetentionPeriod,
311
+ VisibilityTimeout: queue.visibilityTimeout,
312
+ ReceiveMessageWaitTimeSeconds: queue.receiveMessageWaitTime,
313
+ ...(queue.deadLetterTargetArn && {
314
+ RedrivePolicy: {
315
+ deadLetterTargetArn: queue.deadLetterTargetArn,
316
+ maxReceiveCount: queue.maxReceiveCount || 3,
317
+ },
318
+ }),
319
+ },
320
+ }
321
+ }
322
+
323
+ /**
324
+ * Clear all data
325
+ */
326
+ clear(): void {
327
+ this.queues.clear()
328
+ this.messageGroups.clear()
329
+ this.deduplicationConfigs.clear()
330
+ this.messages.clear()
331
+ this.queueCounter = 0
332
+ this.groupCounter = 0
333
+ this.deduplicationCounter = 0
334
+ this.messageCounter = 0
335
+ this.sequenceCounter = 0
336
+ }
337
+ }
338
+
339
+ /**
340
+ * Global FIFO queue manager instance
341
+ */
342
+ export const fifoQueueManager: FIFOQueueManager = new FIFOQueueManager()
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Queue Advanced Features
3
+ * FIFO queues, DLQ monitoring, batch processing, and queue management
4
+ */
5
+
6
+ export * from './fifo'
7
+ export * from './dlq-monitoring'
8
+ export * from './batch-processing'
9
+ export * from './management'