@message-queue-toolkit/sns 24.2.0 → 24.4.0
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.
package/README.md
CHANGED
|
@@ -489,6 +489,164 @@ When using `locatorConfig`, you connect to an existing topic without creating it
|
|
|
489
489
|
}
|
|
490
490
|
```
|
|
491
491
|
|
|
492
|
+
### Startup Resource Polling
|
|
493
|
+
|
|
494
|
+
When your SNS topic or SQS queue may not exist at startup (e.g., created by another service or infrastructure-as-code pipeline), you can enable polling to wait for resources to become available instead of failing immediately:
|
|
495
|
+
|
|
496
|
+
```typescript
|
|
497
|
+
{
|
|
498
|
+
locatorConfig: {
|
|
499
|
+
topicName: 'my-topic',
|
|
500
|
+
queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue',
|
|
501
|
+
subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
|
|
502
|
+
|
|
503
|
+
// Enable startup resource polling
|
|
504
|
+
startupResourcePolling: {
|
|
505
|
+
enabled: true,
|
|
506
|
+
pollingIntervalMs: 5000, // Check every 5 seconds (default)
|
|
507
|
+
timeoutMs: 60000, // Timeout after 60 seconds
|
|
508
|
+
// timeoutMs: 'NO_TIMEOUT', // Or poll indefinitely
|
|
509
|
+
|
|
510
|
+
// Optional: Non-blocking mode
|
|
511
|
+
nonBlocking: false, // Default: false (blocking)
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
#### Blocking Mode (Default)
|
|
518
|
+
|
|
519
|
+
In blocking mode, `init()` or `start()` will wait until both the topic and queue are available:
|
|
520
|
+
|
|
521
|
+
```typescript
|
|
522
|
+
const consumer = new MyConsumer(deps, {
|
|
523
|
+
locatorConfig: {
|
|
524
|
+
topicName: 'my-topic',
|
|
525
|
+
queueUrl: 'https://sqs...',
|
|
526
|
+
subscriptionArn: 'arn:aws:sns:...',
|
|
527
|
+
startupResourcePolling: {
|
|
528
|
+
enabled: true,
|
|
529
|
+
pollingIntervalMs: 5000,
|
|
530
|
+
timeoutMs: 60000,
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
})
|
|
534
|
+
|
|
535
|
+
// This will block until topic and queue are available (or timeout)
|
|
536
|
+
await consumer.start()
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
If the timeout is reached before resources are available, a `StartupResourcePollingTimeoutError` is thrown.
|
|
540
|
+
|
|
541
|
+
#### Non-Blocking Mode
|
|
542
|
+
|
|
543
|
+
In non-blocking mode, `init()` returns immediately even if resources aren't available. Background polling continues and you're notified via callbacks:
|
|
544
|
+
|
|
545
|
+
```typescript
|
|
546
|
+
const consumer = new MyConsumer(deps, {
|
|
547
|
+
locatorConfig: {
|
|
548
|
+
topicName: 'my-topic',
|
|
549
|
+
queueUrl: 'https://sqs...',
|
|
550
|
+
subscriptionArn: 'arn:aws:sns:...',
|
|
551
|
+
startupResourcePolling: {
|
|
552
|
+
enabled: true,
|
|
553
|
+
pollingIntervalMs: 5000,
|
|
554
|
+
timeoutMs: 60000,
|
|
555
|
+
nonBlocking: true, // Return immediately
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
})
|
|
559
|
+
|
|
560
|
+
// Returns immediately, even if resources don't exist yet
|
|
561
|
+
await consumer.start()
|
|
562
|
+
|
|
563
|
+
// Check if resources are ready
|
|
564
|
+
if (!consumer.resourcesReady) {
|
|
565
|
+
console.log('Resources not yet available, waiting in background...')
|
|
566
|
+
}
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
#### Callbacks for Non-Blocking Mode
|
|
570
|
+
|
|
571
|
+
When using non-blocking mode, you can provide callbacks to be notified when resources become available or when polling fails:
|
|
572
|
+
|
|
573
|
+
```typescript
|
|
574
|
+
// Using initSnsSqs directly for more control
|
|
575
|
+
import { initSnsSqs } from '@message-queue-toolkit/sns'
|
|
576
|
+
|
|
577
|
+
const result = await initSnsSqs(
|
|
578
|
+
sqsClient,
|
|
579
|
+
snsClient,
|
|
580
|
+
stsClient,
|
|
581
|
+
{
|
|
582
|
+
topicName: 'my-topic',
|
|
583
|
+
queueUrl: 'https://sqs...',
|
|
584
|
+
startupResourcePolling: {
|
|
585
|
+
enabled: true,
|
|
586
|
+
pollingIntervalMs: 5000,
|
|
587
|
+
timeoutMs: 60000,
|
|
588
|
+
nonBlocking: true,
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
creationConfig,
|
|
592
|
+
subscriptionConfig,
|
|
593
|
+
{
|
|
594
|
+
// Called when all resources become available
|
|
595
|
+
onResourcesReady: ({ topicArn, queueUrl }) => {
|
|
596
|
+
console.log('Resources are now available!')
|
|
597
|
+
console.log('Topic ARN:', topicArn)
|
|
598
|
+
console.log('Queue URL:', queueUrl)
|
|
599
|
+
},
|
|
600
|
+
|
|
601
|
+
// Called if background polling fails (e.g., timeout or unexpected error)
|
|
602
|
+
onResourcesError: (error, context) => {
|
|
603
|
+
if (context.isFinal) {
|
|
604
|
+
// Polling has stopped and will not retry
|
|
605
|
+
console.error('Failed to wait for resources:', error.message)
|
|
606
|
+
// Handle error - maybe alert, retry, or graceful degradation
|
|
607
|
+
} else {
|
|
608
|
+
// Transient error, polling will continue
|
|
609
|
+
console.warn('Transient error while polling:', error.message)
|
|
610
|
+
}
|
|
611
|
+
},
|
|
612
|
+
},
|
|
613
|
+
)
|
|
614
|
+
|
|
615
|
+
if (result.resourcesReady) {
|
|
616
|
+
console.log('Resources were immediately available')
|
|
617
|
+
} else {
|
|
618
|
+
console.log('Waiting for resources in background...')
|
|
619
|
+
}
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
#### Subscription Creation Mode
|
|
623
|
+
|
|
624
|
+
When you want to **create** a subscription (no existing `subscriptionArn`), startup resource polling will wait for the topic to exist before attempting to subscribe:
|
|
625
|
+
|
|
626
|
+
```typescript
|
|
627
|
+
const consumer = new MyConsumer(deps, {
|
|
628
|
+
locatorConfig: {
|
|
629
|
+
topicName: 'my-topic', // Topic created by another service
|
|
630
|
+
// No subscriptionArn - we'll create the subscription
|
|
631
|
+
startupResourcePolling: {
|
|
632
|
+
enabled: true,
|
|
633
|
+
pollingIntervalMs: 5000,
|
|
634
|
+
timeoutMs: 60000,
|
|
635
|
+
},
|
|
636
|
+
},
|
|
637
|
+
creationConfig: {
|
|
638
|
+
queue: { QueueName: 'my-consumer-queue' }, // Queue will be created
|
|
639
|
+
},
|
|
640
|
+
})
|
|
641
|
+
|
|
642
|
+
// This will:
|
|
643
|
+
// 1. Poll until the topic exists
|
|
644
|
+
// 2. Create the SQS queue
|
|
645
|
+
// 3. Subscribe the queue to the topic
|
|
646
|
+
// 4. Start consuming
|
|
647
|
+
await consumer.start()
|
|
648
|
+
```
|
|
649
|
+
|
|
492
650
|
### Publisher Options
|
|
493
651
|
|
|
494
652
|
```typescript
|
|
@@ -24,12 +24,39 @@ export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
|
|
|
24
24
|
else if (this.deletionConfig && this.creationConfig) {
|
|
25
25
|
await deleteSqs(this.sqsClient, this.deletionConfig, this.creationConfig);
|
|
26
26
|
}
|
|
27
|
-
const initSnsSqsResult = await initSnsSqs(this.sqsClient, this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, {
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const initSnsSqsResult = await initSnsSqs(this.sqsClient, this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, {
|
|
28
|
+
logger: this.logger,
|
|
29
|
+
// This callback is only invoked in non-blocking mode when resources were NOT
|
|
30
|
+
// immediately available. It will NOT be called if resourcesReady is true.
|
|
31
|
+
onResourcesReady: (result) => {
|
|
32
|
+
// Update values that were empty when resourcesReady was false
|
|
33
|
+
this.topicArn = result.topicArn;
|
|
34
|
+
this.queueUrl = result.queueUrl;
|
|
35
|
+
this.subscriptionArn = result.subscriptionArn;
|
|
36
|
+
this.queueName = result.queueName;
|
|
37
|
+
// Initialize DLQ now that resources are ready (this is mutually exclusive
|
|
38
|
+
// with the synchronous initDeadLetterQueue call below)
|
|
39
|
+
this.initDeadLetterQueue().catch((err) => {
|
|
40
|
+
this.logger.error({
|
|
41
|
+
message: 'Failed to initialize dead letter queue after resources became ready',
|
|
42
|
+
error: err,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
// Always assign topicArn and queueName (always valid in both blocking and non-blocking modes)
|
|
30
48
|
this.topicArn = initSnsSqsResult.topicArn;
|
|
31
|
-
this.
|
|
32
|
-
|
|
49
|
+
this.queueName = initSnsSqsResult.queueName;
|
|
50
|
+
// Only assign queueUrl and subscriptionArn if resources are ready,
|
|
51
|
+
// or if they have valid values (non-blocking mode with locatorConfig provides valid values)
|
|
52
|
+
if (initSnsSqsResult.resourcesReady || initSnsSqsResult.queueUrl) {
|
|
53
|
+
this.queueUrl = initSnsSqsResult.queueUrl;
|
|
54
|
+
this.subscriptionArn = initSnsSqsResult.subscriptionArn;
|
|
55
|
+
}
|
|
56
|
+
// Only initialize DLQ if resources are ready and queueUrl is available
|
|
57
|
+
if (initSnsSqsResult.resourcesReady && initSnsSqsResult.queueUrl) {
|
|
58
|
+
await this.initDeadLetterQueue();
|
|
59
|
+
}
|
|
33
60
|
}
|
|
34
61
|
resolveMessage(message) {
|
|
35
62
|
const result = readSnsMessage(message, this.errorResolver);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AA8B7D,MAAM,OAAgB,sBAIpB,SAAQ,mBAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IACpB,SAAS,CAAW;IAErC,mBAAmB;IACT,QAAQ,CAAQ;IAC1B,mBAAmB;IACT,eAAe,CAAQ;IAEjC,YACE,YAAwC,EACxC,OAAyF,EACzF,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,MAAM,YAAY,CAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,kBAAkB,EACvB,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,UAAU,CACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
|
|
3
3
|
import type { STSClient } from '@aws-sdk/client-sts';
|
|
4
|
-
import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core';
|
|
4
|
+
import type { DeletionConfig, ExtraParams, PollingErrorCallback } from '@message-queue-toolkit/core';
|
|
5
5
|
import { type SQSCreationConfig } from '@message-queue-toolkit/sqs';
|
|
6
6
|
import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService.ts';
|
|
7
7
|
import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer.ts';
|
|
@@ -14,7 +14,14 @@ export type InitSnsSqsExtraParams = ExtraParams & {
|
|
|
14
14
|
onResourcesReady?: (result: {
|
|
15
15
|
topicArn: string;
|
|
16
16
|
queueUrl: string;
|
|
17
|
+
subscriptionArn: string;
|
|
18
|
+
queueName: string;
|
|
17
19
|
}) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Callback invoked when background resource polling or subscription creation fails in non-blocking mode.
|
|
22
|
+
* This can happen due to polling timeout or subscription creation failure.
|
|
23
|
+
*/
|
|
24
|
+
onResourcesError?: PollingErrorCallback;
|
|
18
25
|
};
|
|
19
26
|
export type InitSnsExtraParams = ExtraParams & {
|
|
20
27
|
/**
|
package/dist/utils/snsInitter.js
CHANGED
|
@@ -1,9 +1,109 @@
|
|
|
1
|
+
import { isError } from '@lokalise/node-core';
|
|
1
2
|
import { isProduction, isStartupResourcePollingEnabled, waitForResource, } from '@message-queue-toolkit/core';
|
|
2
3
|
import { deleteQueue, getQueueAttributes, resolveQueueUrlFromLocatorConfig, } from '@message-queue-toolkit/sqs';
|
|
3
4
|
import { isCreateTopicCommand } from "../types/TopicTypes.js";
|
|
4
5
|
import { subscribeToTopic } from "./snsSubscriber.js";
|
|
5
6
|
import { assertTopic, deleteSubscription, deleteTopic, getTopicAttributes } from "./snsUtils.js";
|
|
6
7
|
import { buildTopicArn } from "./stsUtils.js";
|
|
8
|
+
// Helper function to poll for SNS topic availability
|
|
9
|
+
async function pollForTopic(snsClient, topicArn, startupResourcePolling, extraParams, onResourceAvailable, onError) {
|
|
10
|
+
const topicResult = await waitForResource({
|
|
11
|
+
config: startupResourcePolling,
|
|
12
|
+
resourceName: `SNS topic ${topicArn}`,
|
|
13
|
+
logger: extraParams?.logger,
|
|
14
|
+
errorReporter: extraParams?.errorReporter,
|
|
15
|
+
onResourceAvailable,
|
|
16
|
+
onError,
|
|
17
|
+
checkFn: async () => {
|
|
18
|
+
const result = await getTopicAttributes(snsClient, topicArn);
|
|
19
|
+
if (result.error === 'not_found') {
|
|
20
|
+
return { isAvailable: false };
|
|
21
|
+
}
|
|
22
|
+
return { isAvailable: true, result: result.result };
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
return { topicResult, topicArn };
|
|
26
|
+
}
|
|
27
|
+
// Helper function to create subscription
|
|
28
|
+
async function createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams) {
|
|
29
|
+
const { subscriptionArn, topicArn, queueUrl } = await subscribeToTopic(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
|
|
30
|
+
updateAttributesIfExists: creationConfig.updateAttributesIfExists,
|
|
31
|
+
queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
|
|
32
|
+
allowedSourceOwner: creationConfig.allowedSourceOwner,
|
|
33
|
+
topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
|
|
34
|
+
logger: extraParams?.logger,
|
|
35
|
+
forceTagUpdate: creationConfig.forceTagUpdate,
|
|
36
|
+
});
|
|
37
|
+
if (!subscriptionArn) {
|
|
38
|
+
throw new Error('Failed to subscribe');
|
|
39
|
+
}
|
|
40
|
+
return { subscriptionArn, topicArn, queueUrl };
|
|
41
|
+
}
|
|
42
|
+
// Helper to handle subscription creation with optional topic polling (blocking and non-blocking)
|
|
43
|
+
async function createSubscriptionWithPolling(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, topicArn, startupResourcePolling, extraParams) {
|
|
44
|
+
const nonBlocking = startupResourcePolling.nonBlocking === true;
|
|
45
|
+
// biome-ignore lint/style/noNonNullAssertion: QueueName is validated in initSnsSqs before calling this function
|
|
46
|
+
const queueName = creationConfig.queue.QueueName;
|
|
47
|
+
const onTopicReady = async () => {
|
|
48
|
+
try {
|
|
49
|
+
const result = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
|
|
50
|
+
extraParams?.onResourcesReady?.({
|
|
51
|
+
topicArn: result.topicArn,
|
|
52
|
+
queueUrl: result.queueUrl,
|
|
53
|
+
subscriptionArn: result.subscriptionArn,
|
|
54
|
+
queueName,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const error = isError(err) ? err : new Error(String(err));
|
|
59
|
+
extraParams?.logger?.error({
|
|
60
|
+
message: 'Background subscription creation failed',
|
|
61
|
+
topicArn,
|
|
62
|
+
error,
|
|
63
|
+
});
|
|
64
|
+
// Subscription creation failure is final - we don't retry
|
|
65
|
+
extraParams?.onResourcesError?.(error, { isFinal: true });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const { topicResult } = await pollForTopic(snsClient, topicArn, startupResourcePolling, extraParams, nonBlocking ? onTopicReady : undefined, nonBlocking ? extraParams?.onResourcesError : undefined);
|
|
69
|
+
// Non-blocking: return early if topic wasn't immediately available
|
|
70
|
+
if (nonBlocking && topicResult === undefined) {
|
|
71
|
+
return {
|
|
72
|
+
subscriptionArn: '',
|
|
73
|
+
topicArn,
|
|
74
|
+
queueName,
|
|
75
|
+
queueUrl: '',
|
|
76
|
+
resourcesReady: false,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Blocking: topic is now available, create subscription
|
|
80
|
+
const result = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
|
|
81
|
+
return {
|
|
82
|
+
subscriptionArn: result.subscriptionArn,
|
|
83
|
+
topicArn: result.topicArn,
|
|
84
|
+
queueName,
|
|
85
|
+
queueUrl: result.queueUrl,
|
|
86
|
+
resourcesReady: true,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Helper function to poll for SQS queue availability
|
|
90
|
+
async function pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, onResourceAvailable, onError) {
|
|
91
|
+
return await waitForResource({
|
|
92
|
+
config: startupResourcePolling,
|
|
93
|
+
resourceName: `SQS queue ${queueUrl}`,
|
|
94
|
+
logger: extraParams?.logger,
|
|
95
|
+
errorReporter: extraParams?.errorReporter,
|
|
96
|
+
onResourceAvailable,
|
|
97
|
+
onError,
|
|
98
|
+
checkFn: async () => {
|
|
99
|
+
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
100
|
+
if (result.error === 'not_found') {
|
|
101
|
+
return { isAvailable: false };
|
|
102
|
+
}
|
|
103
|
+
return { isAvailable: true, result: result.result };
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
7
107
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: fixme
|
|
8
108
|
export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
|
|
9
109
|
if (!locatorConfig?.subscriptionArn) {
|
|
@@ -23,17 +123,22 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
23
123
|
...locatorConfig,
|
|
24
124
|
...creationConfig.topic,
|
|
25
125
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
126
|
+
// If startup resource polling is enabled and we're not creating the topic (just locating it),
|
|
127
|
+
// we should poll for the topic to exist before attempting to subscribe
|
|
128
|
+
const startupResourcePolling = locatorConfig?.startupResourcePolling;
|
|
129
|
+
if (isStartupResourcePollingEnabled(startupResourcePolling) &&
|
|
130
|
+
!isCreateTopicCommand(topicResolutionOptions)) {
|
|
131
|
+
// Validate that we have either topicArn or topicName to build the ARN
|
|
132
|
+
if (!topicResolutionOptions.topicArn && !topicResolutionOptions.topicName) {
|
|
133
|
+
throw new Error('When startup resource polling is enabled and topic is not being created, either topicArn or topicName must be provided in locatorConfig to identify the topic to poll for');
|
|
134
|
+
}
|
|
135
|
+
// biome-ignore lint/style/noNonNullAssertion: Validated above that at least one of topicArn or topicName is present
|
|
136
|
+
const topicArnToWaitFor = topicResolutionOptions.topicArn ??
|
|
137
|
+
(await buildTopicArn(stsClient, topicResolutionOptions.topicName));
|
|
138
|
+
return await createSubscriptionWithPolling(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, topicArnToWaitFor, startupResourcePolling, extraParams);
|
|
36
139
|
}
|
|
140
|
+
// No polling needed - create subscription immediately
|
|
141
|
+
const { subscriptionArn, topicArn, queueUrl } = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
|
|
37
142
|
return {
|
|
38
143
|
subscriptionArn,
|
|
39
144
|
topicArn,
|
|
@@ -49,31 +154,29 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
49
154
|
// If startup resource polling is enabled, poll for resources to become available
|
|
50
155
|
if (isStartupResourcePollingEnabled(startupResourcePolling)) {
|
|
51
156
|
const nonBlocking = startupResourcePolling.nonBlocking === true;
|
|
157
|
+
// Extract queueName early for use in callbacks
|
|
158
|
+
const splitUrl = queueUrl.split('/');
|
|
159
|
+
// biome-ignore lint/style/noNonNullAssertion: It's ok
|
|
160
|
+
const queueName = splitUrl[splitUrl.length - 1];
|
|
52
161
|
// Track availability for non-blocking mode coordination
|
|
53
162
|
let topicAvailable = false;
|
|
54
163
|
let queueAvailable = false;
|
|
55
164
|
const notifyIfBothReady = () => {
|
|
56
165
|
if (nonBlocking && topicAvailable && queueAvailable) {
|
|
57
|
-
extraParams?.onResourcesReady?.({
|
|
166
|
+
extraParams?.onResourcesReady?.({
|
|
167
|
+
topicArn: subscriptionTopicArn,
|
|
168
|
+
queueUrl,
|
|
169
|
+
subscriptionArn: locatorConfig.subscriptionArn,
|
|
170
|
+
queueName,
|
|
171
|
+
});
|
|
58
172
|
}
|
|
59
173
|
};
|
|
60
174
|
// Wait for topic to become available
|
|
61
|
-
const topicResult = await
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
onResourceAvailable: () => {
|
|
67
|
-
topicAvailable = true;
|
|
68
|
-
notifyIfBothReady();
|
|
69
|
-
},
|
|
70
|
-
checkFn: async () => {
|
|
71
|
-
const result = await getTopicAttributes(snsClient, subscriptionTopicArn);
|
|
72
|
-
if (result.error === 'not_found') {
|
|
73
|
-
return { isAvailable: false };
|
|
74
|
-
}
|
|
75
|
-
return { isAvailable: true, result: result.result };
|
|
76
|
-
},
|
|
175
|
+
const { topicResult } = await pollForTopic(snsClient, subscriptionTopicArn, startupResourcePolling, extraParams, () => {
|
|
176
|
+
topicAvailable = true;
|
|
177
|
+
notifyIfBothReady();
|
|
178
|
+
}, (error, context) => {
|
|
179
|
+
extraParams?.onResourcesError?.(error, context);
|
|
77
180
|
});
|
|
78
181
|
// If topic was immediately available, mark it
|
|
79
182
|
if (topicResult !== undefined) {
|
|
@@ -82,41 +185,30 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
82
185
|
// If non-blocking and topic wasn't immediately available, return early
|
|
83
186
|
// Background polling will continue and call notifyIfBothReady when topic is available
|
|
84
187
|
if (nonBlocking && topicResult === undefined) {
|
|
85
|
-
const splitUrl = queueUrl.split('/');
|
|
86
|
-
// biome-ignore lint/style/noNonNullAssertion: It's ok
|
|
87
|
-
const queueName = splitUrl[splitUrl.length - 1];
|
|
88
188
|
// Also start polling for queue in background so we can notify when both are ready
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
onResourceAvailable: () => {
|
|
95
|
-
queueAvailable = true;
|
|
96
|
-
notifyIfBothReady();
|
|
97
|
-
},
|
|
98
|
-
checkFn: async () => {
|
|
99
|
-
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
100
|
-
if (result.error === 'not_found') {
|
|
101
|
-
return { isAvailable: false };
|
|
102
|
-
}
|
|
103
|
-
return { isAvailable: true, result: result.result };
|
|
104
|
-
},
|
|
189
|
+
pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, () => {
|
|
190
|
+
queueAvailable = true;
|
|
191
|
+
notifyIfBothReady();
|
|
192
|
+
}, (error, context) => {
|
|
193
|
+
extraParams?.onResourcesError?.(error, context);
|
|
105
194
|
})
|
|
106
195
|
.then((result) => {
|
|
107
|
-
// If queue was immediately available,
|
|
196
|
+
// If queue was immediately available, pollForQueue returns the result
|
|
108
197
|
// but doesn't call onResourceAvailable, so we handle it here
|
|
109
198
|
if (result !== undefined) {
|
|
110
199
|
queueAvailable = true;
|
|
111
200
|
notifyIfBothReady();
|
|
112
201
|
}
|
|
113
202
|
})
|
|
114
|
-
.catch((
|
|
203
|
+
.catch((err) => {
|
|
204
|
+
// Handle unexpected errors during background polling
|
|
205
|
+
const error = isError(err) ? err : new Error(String(err));
|
|
115
206
|
extraParams?.logger?.error({
|
|
116
|
-
message: 'Background polling
|
|
207
|
+
message: 'Background queue polling failed unexpectedly',
|
|
117
208
|
queueUrl,
|
|
118
209
|
error,
|
|
119
210
|
});
|
|
211
|
+
extraParams?.onResourcesError?.(error, { isFinal: true });
|
|
120
212
|
});
|
|
121
213
|
return {
|
|
122
214
|
subscriptionArn: locatorConfig.subscriptionArn,
|
|
@@ -127,22 +219,9 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
127
219
|
};
|
|
128
220
|
}
|
|
129
221
|
// Wait for queue to become available
|
|
130
|
-
const queueResult = await
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
logger: extraParams?.logger,
|
|
134
|
-
errorReporter: extraParams?.errorReporter,
|
|
135
|
-
onResourceAvailable: () => {
|
|
136
|
-
queueAvailable = true;
|
|
137
|
-
notifyIfBothReady();
|
|
138
|
-
},
|
|
139
|
-
checkFn: async () => {
|
|
140
|
-
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
141
|
-
if (result.error === 'not_found') {
|
|
142
|
-
return { isAvailable: false };
|
|
143
|
-
}
|
|
144
|
-
return { isAvailable: true, result: result.result };
|
|
145
|
-
},
|
|
222
|
+
const queueResult = await pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, () => {
|
|
223
|
+
queueAvailable = true;
|
|
224
|
+
notifyIfBothReady();
|
|
146
225
|
});
|
|
147
226
|
// If queue was immediately available, mark it
|
|
148
227
|
if (queueResult !== undefined) {
|
|
@@ -150,9 +229,6 @@ export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig,
|
|
|
150
229
|
}
|
|
151
230
|
// If non-blocking and queue wasn't immediately available, return early
|
|
152
231
|
if (nonBlocking && queueResult === undefined) {
|
|
153
|
-
const splitUrl = queueUrl.split('/');
|
|
154
|
-
// biome-ignore lint/style/noNonNullAssertion: It's ok
|
|
155
|
-
const queueName = splitUrl[splitUrl.length - 1];
|
|
156
232
|
return {
|
|
157
233
|
subscriptionArn: locatorConfig.subscriptionArn,
|
|
158
234
|
topicArn: subscriptionTopicArn,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,eAAe,GAChB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,gCAAgC,GAEjC,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,oBAAoB,EAA+B,MAAM,wBAAwB,CAAA;AAE1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAQ7C,qDAAqD;AACrD,KAAK,UAAU,YAAY,CACzB,SAAoB,EACpB,QAAgB,EAChB,sBAAqF,EACrF,WAAyB,EACzB,mBAAgC,EAChC,OAA8B;IAE9B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC;QACxC,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,aAAa,QAAQ,EAAE;QACrC,MAAM,EAAE,WAAW,EAAE,MAAM;QAC3B,aAAa,EAAE,WAAW,EAAE,aAAa;QACzC,mBAAmB;QACnB,OAAO;QACP,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YAC/B,CAAC;YACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;QACrD,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAClC,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,kBAAkB,CAC/B,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,cAAqD,EACrD,sBAA8C,EAC9C,kBAA0C,EAC1C,WAAyB;IAEzB,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CACpE,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,CAAC,KAAK,EACpB,sBAAsB,EACtB,kBAAkB,EAClB;QACE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB;QACjE,uCAAuC,EACrC,cAAc,CAAC,uCAAuC;QACxD,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,qCAAqC,EAAE,cAAc,CAAC,qCAAqC;QAC3F,MAAM,EAAE,WAAW,EAAE,MAAM;QAC3B,cAAc,EAAE,cAAc,CAAC,cAAc;KAC9C,CACF,CAAA;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAChD,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,6BAA6B,CAC1C,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,cAAqD,EACrD,sBAA8C,EAC9C,kBAA0C,EAC1C,QAAgB,EAChB,sBAAqF,EACrF,WAAmC;IAQnC,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,KAAK,IAAI,CAAA;IAC/D,gHAAgH;IAChH,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,SAAU,CAAA;IAEjD,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,CACZ,CAAA;YACD,WAAW,EAAE,gBAAgB,EAAE,CAAC;gBAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,SAAS;aACV,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACzD,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;gBACzB,OAAO,EAAE,yCAAyC;gBAClD,QAAQ;gBACR,KAAK;aACN,CAAC,CAAA;YACF,0DAA0D;YAC1D,WAAW,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC,CAAA;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CACxC,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,WAAW,EACX,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACtC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CACxD,CAAA;IAED,mEAAmE;IACnE,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO;YACL,eAAe,EAAE,EAAE;YACnB,QAAQ;YACR,SAAS;YACT,QAAQ,EAAE,EAAE;YACZ,cAAc,EAAE,KAAK;SACtB,CAAA;IACH,CAAC;IAED,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,CACZ,CAAA;IACD,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc,EAAE,IAAI;KACrB,CAAA;AACH,CAAC;AAED,qDAAqD;AACrD,KAAK,UAAU,YAAY,CACzB,SAAoB,EACpB,QAAgB,EAChB,sBAAqF,EACrF,WAAyB,EACzB,mBAAgC,EAChC,OAA8B;IAE9B,OAAO,MAAM,eAAe,CAAC;QAC3B,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,aAAa,QAAQ,EAAE;QACrC,MAAM,EAAE,WAAW,EAAE,MAAM;QAC3B,aAAa,EAAE,WAAW,EAAE,aAAa;QACzC,mBAAmB;QACnB,OAAO;QACP,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YAC/B,CAAC;YACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;QACrD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AA4BD,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,aAAsC,EACtC,cAAsD,EACtD,kBAA2C,EAC3C,WAAmC;IAQnC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CACb,yQAAyQ,CAC1Q,CAAA;QACH,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,yJAAyJ,CAC1J,CAAA;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,mKAAmK,CACpK,CAAA;QACH,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,8JAA8J,CAC/J,CAAA;QACH,CAAC;QAED,MAAM,sBAAsB,GAA2B;YACrD,GAAI,aAAwC;YAC5C,GAAG,cAAc,CAAC,KAAK;SACxB,CAAA;QAED,8FAA8F;QAC9F,uEAAuE;QACvE,MAAM,sBAAsB,GAAG,aAAa,EAAE,sBAAsB,CAAA;QACpE,IACE,+BAA+B,CAAC,sBAAsB,CAAC;YACvD,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,EAC7C,CAAC;YACD,sEAAsE;YACtE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CACb,2KAA2K,CAC5K,CAAA;YACH,CAAC;YAED,oHAAoH;YACpH,MAAM,iBAAiB,GACrB,sBAAsB,CAAC,QAAQ;gBAC/B,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,sBAAsB,CAAC,SAAU,CAAC,CAAC,CAAA;YAErE,OAAO,MAAM,6BAA6B,CACxC,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,CACZ,CAAA;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAkB,CACtE,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,CACZ,CAAA;QACD,OAAO;YACL,eAAe;YACf,QAAQ;YACR,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS;YACzC,QAAQ;YACR,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gCAAgC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEjF,mDAAmD;IACnD,MAAM,oBAAoB,GACxB,aAAa,CAAC,QAAQ,IAAI,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IAE3F,MAAM,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAA;IAEnE,iFAAiF;IACjF,IAAI,+BAA+B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,KAAK,IAAI,CAAA;QAE/D,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,sDAAsD;QACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;QAEhD,wDAAwD;QACxD,IAAI,cAAc,GAAG,KAAK,CAAA;QAC1B,IAAI,cAAc,GAAG,KAAK,CAAA;QAE1B,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,IAAI,WAAW,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;gBACpD,WAAW,EAAE,gBAAgB,EAAE,CAAC;oBAC9B,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ;oBACR,eAAe,EAAE,aAAa,CAAC,eAAgB;oBAC/C,SAAS;iBACV,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;QAED,qCAAqC;QACrC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CACxC,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,GAAG,EAAE;YACH,cAAc,GAAG,IAAI,CAAA;YACrB,iBAAiB,EAAE,CAAA;QACrB,CAAC,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC,CACF,CAAA;QAED,8CAA8C;QAC9C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC;QAED,uEAAuE;QACvE,sFAAsF;QACtF,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7C,kFAAkF;YAClF,YAAY,CACV,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,WAAW,EACX,GAAG,EAAE;gBACH,cAAc,GAAG,IAAI,CAAA;gBACrB,iBAAiB,EAAE,CAAA;YACrB,CAAC,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACjD,CAAC,CACF;iBACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,sEAAsE;gBACtE,6DAA6D;gBAC7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,cAAc,GAAG,IAAI,CAAA;oBACrB,iBAAiB,EAAE,CAAA;gBACrB,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,qDAAqD;gBACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACzD,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;oBACzB,OAAO,EAAE,8CAA8C;oBACvD,QAAQ;oBACR,KAAK;iBACN,CAAC,CAAA;gBACF,WAAW,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,CAAC,CAAC,CAAA;YAEJ,OAAO;gBACL,eAAe,EAAE,aAAa,CAAC,eAAe;gBAC9C,QAAQ,EAAE,oBAAoB;gBAC9B,QAAQ;gBACR,SAAS;gBACT,cAAc,EAAE,KAAK;aACtB,CAAA;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,WAAW,EACX,GAAG,EAAE;YACH,cAAc,GAAG,IAAI,CAAA;YACrB,iBAAiB,EAAE,CAAA;QACrB,CAAC,CACF,CAAA;QAED,8CAA8C;QAC9C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC;QAED,uEAAuE;QACvE,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO;gBACL,eAAe,EAAE,aAAa,CAAC,eAAe;gBAC9C,QAAQ,EAAE,oBAAoB;gBAC9B,QAAQ;gBACR,SAAS;gBACT,cAAc,EAAE,KAAK;aACtB,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,4EAA4E;QAC5E,MAAM,aAAa,GAA4C,EAAE,CAAA;QACjE,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;QACxE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAEhC,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC5D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAEhC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAE7E,IAAI,gBAAgB,EAAE,KAAK,KAAK,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,kBAAkB,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,gBAAgB,EAAE,KAAK,KAAK,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,uBAAuB,oBAAoB,kBAAkB,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAED,IAAI,SAAiB,CAAA;IACrB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,sDAAsD;QACtD,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;IAC5C,CAAC;SAAM,CAAC;QACN,sDAAsD;QACtD,SAAS,GAAG,cAAe,CAAC,KAAK,CAAC,SAAU,CAAA;IAC9C,CAAC;IAED,OAAO;QACL,eAAe,EAAE,aAAa,CAAC,eAAe;QAC9C,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ;QACR,SAAS;QACT,cAAc,EAAE,IAAI;KACrB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,cAA8B,EAC9B,kBAA2C,EAC3C,kBAAuD,EACvD,yBAAiD,EACjD,WAAyB,EACzB,YAAkC;IAElC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,wMAAwM,CACzM,CAAA;IACH,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,gBAAgB,CAChD,SAAS,EACT,SAAS,EACT,SAAS,EACT,kBAAkB;IAClB,8DAA8D;IAC9D,kBAAkB,IAAI,YAAa,EACnC,yBAAyB,EACzB,WAAW,CACZ,CAAA;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,WAAW,CACf,SAAS;IACT,sDAAsD;IACtD,kBAAkB,CAAC,SAAU,EAC7B,cAAc,CAAC,mBAAmB,KAAK,KAAK,CAC7C,CAAA;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,oBAAoB,CAAC,kBAAkB,CAAC;YACxD,CAAC,CAAC,kBAAkB,CAAC,IAAI;YACzB,CAAC,CAAC,WAAW,CAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAoB,EACpB,SAAoB,EACpB,cAA8B,EAC9B,cAAiC;IAEjC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,wMAAwM,CACzM,CAAA;IACH,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACpE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAoB,EACpB,SAAoB,EACpB,aAAkC,EAClC,WAAgC;IAEhC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GACZ,aAAa,CAAC,QAAQ,IAAI,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IAE3F,MAAM,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAA;IAEnE,6EAA6E;IAC7E,IAAI,+BAA+B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,KAAK,IAAI,CAAA;QAE/D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC;YACxC,MAAM,EAAE,sBAAsB;YAC9B,YAAY,EAAE,aAAa,QAAQ,EAAE;YACrC,MAAM,EAAE,WAAW,EAAE,MAAM;YAC3B,aAAa,EAAE,WAAW,EAAE,aAAa;YACzC,mBAAmB,EAAE,GAAG,EAAE;gBACxB,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;gBAC/B,CAAC;gBACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;YACrD,CAAC;SACF,CAAC,CAAA;QAEF,2EAA2E;QAC3E,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACjE,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,kBAAkB,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAoB,EACpB,SAAoB,EACpB,aAAmC,EACnC,cAAkC,EAClC,WAAgC;IAEhC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;IAC7E,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAA;IACH,CAAC;IACD,sDAAsD;IACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,KAAM,EAAE;QAC9E,uCAAuC,EAAE,cAAc,CAAC,uCAAuC;QAC/F,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,cAAc,EAAE,cAAc,CAAC,cAAc;KAC9C,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC"}
|