@kensio/yulin 1.21.26 → 1.21.27

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 (74) hide show
  1. package/dist/service/eventbridge/bus/sim-event-bus-name.d.ts +4 -0
  2. package/dist/service/eventbridge/bus/sim-event-bus-name.js +17 -12
  3. package/dist/service/eventbridge/cfn/bus/sim-cfn-event-bus-creator.js +8 -1
  4. package/dist/service/eventbridge/cfn/bus/sim-cfn-event-bus-properties.d.ts +5 -0
  5. package/dist/service/eventbridge/cfn/bus/sim-cfn-event-bus-properties.js +14 -1
  6. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-creator.js +2 -0
  7. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-target-delivery.d.ts +15 -0
  8. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-target-delivery.js +53 -0
  9. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-targets.d.ts +4 -0
  10. package/dist/service/eventbridge/cfn/rule/sim-cfn-event-rule-targets.js +7 -3
  11. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +5 -0
  12. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +7 -0
  13. package/dist/service/eventbridge/command/bus/sim-event-bridge-create-event-bus.d.ts +7 -1
  14. package/dist/service/eventbridge/command/bus/sim-event-bridge-create-event-bus.js +7 -1
  15. package/dist/service/eventbridge/command/bus/sim-event-bridge-partner-bus.d.ts +24 -0
  16. package/dist/service/eventbridge/command/bus/sim-event-bridge-partner-bus.js +44 -0
  17. package/dist/service/eventbridge/command/bus/sim-event-bridge-unsimulated-bus-input.js +0 -5
  18. package/dist/service/eventbridge/command/put-events/sim-event-bridge-authorized-entries.js +8 -0
  19. package/dist/service/eventbridge/command/sim-event-bridge-command.types.d.ts +1 -0
  20. package/dist/service/eventbridge/command/sim-event-bridge-commands.d.ts +6 -0
  21. package/dist/service/eventbridge/command/sim-event-bridge-commands.js +19 -1
  22. package/dist/service/eventbridge/command/source/sim-event-bridge-describe-event-source.d.ts +35 -0
  23. package/dist/service/eventbridge/command/source/sim-event-bridge-describe-event-source.js +46 -0
  24. package/dist/service/eventbridge/command/source/sim-event-bridge-put-partner-events.d.ts +41 -0
  25. package/dist/service/eventbridge/command/source/sim-event-bridge-put-partner-events.js +82 -0
  26. package/dist/service/eventbridge/command/source/source.command.d.ts +59 -0
  27. package/dist/service/eventbridge/command/source/source.command.js +1 -0
  28. package/dist/service/eventbridge/command/target/sim-event-bridge-target-commands.js +2 -0
  29. package/dist/service/eventbridge/command/target/sim-event-bridge-unsimulated-target-input.js +2 -12
  30. package/dist/service/eventbridge/command/target/target.command.d.ts +8 -5
  31. package/dist/service/eventbridge/delivery/sim-aws-event-bridge-delivery-targets.d.ts +6 -1
  32. package/dist/service/eventbridge/delivery/sim-aws-event-bridge-delivery-targets.js +16 -0
  33. package/dist/service/eventbridge/delivery/sim-event-bridge-dead-letter-attributes.d.ts +9 -0
  34. package/dist/service/eventbridge/delivery/sim-event-bridge-dead-letter-attributes.js +47 -0
  35. package/dist/service/eventbridge/delivery/sim-event-bridge-dead-letter-queue.d.ts +24 -0
  36. package/dist/service/eventbridge/delivery/sim-event-bridge-dead-letter-queue.js +28 -0
  37. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-attempt.d.ts +41 -0
  38. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-attempt.js +97 -0
  39. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-queue.js +7 -37
  40. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-retries.test-support.d.ts +25 -0
  41. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery-retries.test-support.js +60 -0
  42. package/dist/service/eventbridge/delivery/sim-event-bridge-delivery.d.ts +22 -0
  43. package/dist/service/eventbridge/delivery/sim-event-bridge-failing-targets.test-support.d.ts +23 -0
  44. package/dist/service/eventbridge/delivery/sim-event-bridge-failing-targets.test-support.js +28 -0
  45. package/dist/service/eventbridge/delivery/sim-event-bridge-no-delivery-targets.d.ts +5 -1
  46. package/dist/service/eventbridge/delivery/sim-event-bridge-no-delivery-targets.js +9 -0
  47. package/dist/service/eventbridge/delivery/sim-event-bridge-queue-message.d.ts +28 -0
  48. package/dist/service/eventbridge/delivery/sim-event-bridge-queue-message.js +45 -0
  49. package/dist/service/eventbridge/delivery/sim-event-bridge-target-delivery.d.ts +4 -1
  50. package/dist/service/eventbridge/delivery/sim-event-bridge-target-delivery.js +19 -14
  51. package/dist/service/eventbridge/index.d.ts +2 -0
  52. package/dist/service/eventbridge/index.js +2 -0
  53. package/dist/service/eventbridge/routing/sim-event-bridge-router.js +1 -0
  54. package/dist/service/eventbridge/sdk/sim-event-bridge-sdk-command-router.js +4 -0
  55. package/dist/service/eventbridge/sim-event-bridge-inspection.d.ts +10 -0
  56. package/dist/service/eventbridge/sim-event-bridge-inspection.js +9 -0
  57. package/dist/service/eventbridge/sim-event-bridge-partners.d.ts +38 -0
  58. package/dist/service/eventbridge/sim-event-bridge-partners.js +43 -0
  59. package/dist/service/eventbridge/sim-event-bridge.d.ts +12 -12
  60. package/dist/service/eventbridge/sim-event-bridge.js +14 -11
  61. package/dist/service/eventbridge/source/sim-partner-event-source-name.d.ts +28 -0
  62. package/dist/service/eventbridge/source/sim-partner-event-source-name.js +62 -0
  63. package/dist/service/eventbridge/source/sim-partner-event-source-store.d.ts +18 -0
  64. package/dist/service/eventbridge/source/sim-partner-event-source-store.js +29 -0
  65. package/dist/service/eventbridge/source/sim-partner-event-source.d.ts +46 -0
  66. package/dist/service/eventbridge/source/sim-partner-event-source.js +43 -0
  67. package/dist/service/eventbridge/target/sim-event-target-dead-letter-config.d.ts +28 -0
  68. package/dist/service/eventbridge/target/sim-event-target-dead-letter-config.js +42 -0
  69. package/dist/service/eventbridge/target/sim-event-target-retry-policy.d.ts +28 -0
  70. package/dist/service/eventbridge/target/sim-event-target-retry-policy.js +53 -0
  71. package/dist/service/eventbridge/target/sim-event-target.d.ts +17 -0
  72. package/dist/service/eventbridge/target/sim-event-target.js +19 -0
  73. package/docs/services/eventbridge/README.md +223 -6
  74. package/package.json +1 -1
@@ -0,0 +1,62 @@
1
+ import { SimEventBridgeValidationException } from "../error/sim-event-bridge.error.js";
2
+ const partnerPrefix = "aws.partner/";
3
+ /**
4
+ * The characters one segment of a partner event source name may carry.
5
+ */
6
+ const partnerSegmentPattern = /^[.\-_A-Za-z0-9]+$/;
7
+ /**
8
+ * Real EventBridge wants the partner's own name and at least one more segment
9
+ * after the prefix, such as `aws.partner/stripe.com/ed_test`.
10
+ */
11
+ const minimumPartnerSegments = 2;
12
+ const maximumPartnerEventSourceNameLength = 256;
13
+ const partnerSegmentStart = partnerPrefix.length;
14
+ /**
15
+ * Whether a string has the shape of a partner event source name.
16
+ *
17
+ * A partner event bus takes the name of its source, so this is also the one
18
+ * shape of bus name that may carry a `/`.
19
+ */
20
+ export function isPartnerEventSourceName(value) {
21
+ // Read segment by segment, which is the API's own pattern
22
+ // `aws\.partner(/[\.\-_A-Za-z0-9]+){2,}` without the nested repetition.
23
+ const segments = value.slice(partnerSegmentStart).split("/");
24
+ return (value.length <= maximumPartnerEventSourceNameLength &&
25
+ value.startsWith(partnerPrefix) &&
26
+ segments.length >= minimumPartnerSegments &&
27
+ segments.every((segment) => partnerSegmentPattern.test(segment)));
28
+ }
29
+ /**
30
+ * The name of one partner event source.
31
+ *
32
+ * A SaaS partner names the source when it creates it, in the form
33
+ * `aws.partner/<partner>/<name>`. The receiving Account never chooses the
34
+ * name. It creates a bus under the same one.
35
+ */
36
+ export class SimPartnerEventSourceName {
37
+ value;
38
+ constructor(value) {
39
+ this.value = value;
40
+ }
41
+ /**
42
+ * Read a partner event source name from request input, refusing one real
43
+ * EventBridge would refuse.
44
+ */
45
+ static of(value, parameterName) {
46
+ if (!isPartnerEventSourceName(value)) {
47
+ throw new SimEventBridgeValidationException(`Invalid parameter: ${parameterName} Reason: '${value}' is not a ` +
48
+ `partner event source name, which takes the form ` +
49
+ `aws.partner/<partner>/<name> and is at most ` +
50
+ `${String(maximumPartnerEventSourceNameLength)} characters long.`);
51
+ }
52
+ return new this(value);
53
+ }
54
+ /**
55
+ * The partner that created the source, which is the segment after
56
+ * `aws.partner`.
57
+ */
58
+ get partner() {
59
+ // The pattern guarantees a `/` after the partner segment.
60
+ return this.value.slice(partnerSegmentStart, this.value.indexOf("/", partnerSegmentStart));
61
+ }
62
+ }
@@ -0,0 +1,18 @@
1
+ import type { SimPartnerEventSource } from "./sim-partner-event-source.js";
2
+ /**
3
+ * The partner event sources shared with one simulated EventBridge scope.
4
+ *
5
+ * Sources are keyed by name. A partner names each one uniquely across every
6
+ * Account it serves, so a name is enough to find one.
7
+ */
8
+ export declare class SimPartnerEventSourceStore {
9
+ private readonly sources;
10
+ /**
11
+ * Store a newly created source, refusing a name already taken.
12
+ */
13
+ add(source: SimPartnerEventSource): void;
14
+ /**
15
+ * Resolve a source by name, or refuse.
16
+ */
17
+ require(name: string): SimPartnerEventSource;
18
+ }
@@ -0,0 +1,29 @@
1
+ import { SimEventBridgeResourceAlreadyExistsException, SimEventBridgeResourceNotFoundException, } from "../error/sim-event-bridge.error.js";
2
+ /**
3
+ * The partner event sources shared with one simulated EventBridge scope.
4
+ *
5
+ * Sources are keyed by name. A partner names each one uniquely across every
6
+ * Account it serves, so a name is enough to find one.
7
+ */
8
+ export class SimPartnerEventSourceStore {
9
+ sources = new Map();
10
+ /**
11
+ * Store a newly created source, refusing a name already taken.
12
+ */
13
+ add(source) {
14
+ if (this.sources.has(source.name.value)) {
15
+ throw new SimEventBridgeResourceAlreadyExistsException(`Event source ${source.name.value} already exists.`);
16
+ }
17
+ this.sources.set(source.name.value, source);
18
+ }
19
+ /**
20
+ * Resolve a source by name, or refuse.
21
+ */
22
+ require(name) {
23
+ const found = this.sources.get(name);
24
+ if (found === undefined) {
25
+ throw new SimEventBridgeResourceNotFoundException(`Event source ${name} does not exist.`);
26
+ }
27
+ return found;
28
+ }
29
+ }
@@ -0,0 +1,46 @@
1
+ import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
2
+ import type { SimPartnerEventSourceName } from "./sim-partner-event-source-name.js";
3
+ /**
4
+ * The states a partner event source reports.
5
+ *
6
+ * `DELETED` is absent. It belongs to a source the partner deleted while its
7
+ * bus was still there, and nothing here deletes a source.
8
+ */
9
+ export type SimPartnerEventSourceState = "ACTIVE" | "PENDING";
10
+ /**
11
+ * The ARN of a partner event source, which a request authorizes against
12
+ * before the source is looked up.
13
+ *
14
+ * The ARN carries no Account. The source is the partner's resource, shared
15
+ * with the receiving Account, and real EventBridge writes it with an empty
16
+ * Account field, as the `resources` of a Stripe event show.
17
+ */
18
+ export declare function partnerEventSourceArn(name: SimPartnerEventSourceName, accountRegionScope: SimAwsAccountRegionScope): string;
19
+ interface SimPartnerEventSourceProperties {
20
+ readonly name: SimPartnerEventSourceName;
21
+ readonly accountRegionScope: SimAwsAccountRegionScope;
22
+ readonly createdAt: Date;
23
+ }
24
+ /**
25
+ * One partner event source, shared with a receiving Account and Region.
26
+ *
27
+ * A SaaS partner creates the source from its own Account, naming the Account
28
+ * that may receive from it. The receiving Account activates it by creating a
29
+ * partner event bus under the same name, and the partner's events then land
30
+ * on that bus.
31
+ *
32
+ * The state is worked out from whether that bus exists rather than stored
33
+ * here. Creating the bus is what activates a source on real AWS, and deleting
34
+ * the bus puts it back to pending.
35
+ */
36
+ export declare class SimPartnerEventSource {
37
+ readonly name: SimPartnerEventSourceName;
38
+ readonly arn: string;
39
+ readonly creationTime: Date;
40
+ constructor(properties: SimPartnerEventSourceProperties);
41
+ /**
42
+ * The source's state, given whether a bus of its name exists.
43
+ */
44
+ state(hasBus: boolean): SimPartnerEventSourceState;
45
+ }
46
+ export {};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The ARN of a partner event source, which a request authorizes against
3
+ * before the source is looked up.
4
+ *
5
+ * The ARN carries no Account. The source is the partner's resource, shared
6
+ * with the receiving Account, and real EventBridge writes it with an empty
7
+ * Account field, as the `resources` of a Stripe event show.
8
+ */
9
+ export function partnerEventSourceArn(name, accountRegionScope) {
10
+ return `arn:aws:events:${accountRegionScope.regionName}::event-source/${name.value}`;
11
+ }
12
+ /**
13
+ * One partner event source, shared with a receiving Account and Region.
14
+ *
15
+ * A SaaS partner creates the source from its own Account, naming the Account
16
+ * that may receive from it. The receiving Account activates it by creating a
17
+ * partner event bus under the same name, and the partner's events then land
18
+ * on that bus.
19
+ *
20
+ * The state is worked out from whether that bus exists rather than stored
21
+ * here. Creating the bus is what activates a source on real AWS, and deleting
22
+ * the bus puts it back to pending.
23
+ */
24
+ export class SimPartnerEventSource {
25
+ name;
26
+ arn;
27
+ creationTime;
28
+ constructor(properties) {
29
+ const { name, accountRegionScope } = properties;
30
+ this.name = name;
31
+ this.arn = partnerEventSourceArn(name, accountRegionScope);
32
+ this.creationTime = properties.createdAt;
33
+ }
34
+ /**
35
+ * The source's state, given whether a bus of its name exists.
36
+ */
37
+ state(hasBus) {
38
+ if (hasBus) {
39
+ return "ACTIVE";
40
+ }
41
+ return "PENDING";
42
+ }
43
+ }
@@ -0,0 +1,28 @@
1
+ import { type SimSqsQueueLocation } from "../../sqs/queue/sim-sqs-queue-arn.js";
2
+ /**
3
+ * A target's `DeadLetterConfig`, as a request or a template carries it.
4
+ */
5
+ export interface SimEventTargetDeadLetterConfigInput {
6
+ readonly Arn?: string | undefined;
7
+ }
8
+ /**
9
+ * The standard SQS queue a target sends an event to once EventBridge gives up
10
+ * delivering it.
11
+ */
12
+ export declare class SimEventTargetDeadLetterConfig {
13
+ readonly declared: SimEventTargetDeadLetterConfigInput;
14
+ readonly arn: string;
15
+ readonly queue: SimSqsQueueLocation;
16
+ private constructor();
17
+ /**
18
+ * Read the dead-letter configuration a target may leave out.
19
+ */
20
+ static optional(config: SimEventTargetDeadLetterConfigInput | undefined): SimEventTargetDeadLetterConfig | undefined;
21
+ /**
22
+ * Read a dead-letter configuration, refusing anything but a standard queue.
23
+ *
24
+ * Real EventBridge takes only a standard queue here. A FIFO queue is refused
25
+ * by its name, which always ends `.fifo`.
26
+ */
27
+ static of(config: SimEventTargetDeadLetterConfigInput): SimEventTargetDeadLetterConfig;
28
+ }
@@ -0,0 +1,42 @@
1
+ import { parseSqsQueueArn, } from "../../sqs/queue/sim-sqs-queue-arn.js";
2
+ import { SimEventBridgeValidationException } from "../error/sim-event-bridge.error.js";
3
+ const fifoQueueSuffix = ".fifo";
4
+ /**
5
+ * The standard SQS queue a target sends an event to once EventBridge gives up
6
+ * delivering it.
7
+ */
8
+ export class SimEventTargetDeadLetterConfig {
9
+ declared;
10
+ arn;
11
+ queue;
12
+ constructor(declared, arn, queue) {
13
+ this.declared = { ...declared };
14
+ this.arn = arn;
15
+ this.queue = queue;
16
+ }
17
+ /**
18
+ * Read the dead-letter configuration a target may leave out.
19
+ */
20
+ static optional(config) {
21
+ if (config === undefined) {
22
+ return undefined;
23
+ }
24
+ return this.of(config);
25
+ }
26
+ /**
27
+ * Read a dead-letter configuration, refusing anything but a standard queue.
28
+ *
29
+ * Real EventBridge takes only a standard queue here. A FIFO queue is refused
30
+ * by its name, which always ends `.fifo`.
31
+ */
32
+ static of(config) {
33
+ const arn = config.Arn ?? "";
34
+ const queue = parseSqsQueueArn(arn);
35
+ if (queue === undefined || queue.name.endsWith(fifoQueueSuffix)) {
36
+ throw new SimEventBridgeValidationException(`Invalid parameter: Target DeadLetterConfig Arn Reason: '${arn}' is ` +
37
+ `not a standard SQS queue ARN. One is ` +
38
+ `arn:aws:sqs:<region>:<account-id>:<queue-name>.`);
39
+ }
40
+ return new this(config, arn, queue);
41
+ }
42
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * A target's `RetryPolicy`, as a request or a template carries it.
3
+ */
4
+ export interface SimEventTargetRetryPolicyInput {
5
+ readonly MaximumEventAgeInSeconds?: number | undefined;
6
+ readonly MaximumRetryAttempts?: number | undefined;
7
+ }
8
+ /**
9
+ * The retry limits one target declares, and the values they come to.
10
+ *
11
+ * A limit the policy leaves out takes EventBridge's own default, which is 185
12
+ * retries over at most 24 hours.
13
+ */
14
+ export declare class SimEventTargetRetryPolicy {
15
+ readonly declared: SimEventTargetRetryPolicyInput;
16
+ readonly maximumEventAgeInSeconds: number;
17
+ readonly maximumRetryAttempts: number;
18
+ private constructor();
19
+ /**
20
+ * Read the retry policy a target may leave out.
21
+ */
22
+ static optional(policy: SimEventTargetRetryPolicyInput | undefined): SimEventTargetRetryPolicy | undefined;
23
+ /**
24
+ * Read a retry policy, refusing values outside EventBridge's ranges.
25
+ */
26
+ static of(policy: SimEventTargetRetryPolicyInput): SimEventTargetRetryPolicy;
27
+ private static requireWholeNumber;
28
+ }
@@ -0,0 +1,53 @@
1
+ import { SimEventBridgeValidationException } from "../error/sim-event-bridge.error.js";
2
+ /**
3
+ * The longest EventBridge keeps retrying an event, and the most retries it
4
+ * makes, when a target's retry policy leaves either out.
5
+ */
6
+ const defaultMaximumEventAgeInSeconds = 86_400;
7
+ const defaultMaximumRetryAttempts = 185;
8
+ const minimumEventAgeInSeconds = 60;
9
+ /**
10
+ * The retry limits one target declares, and the values they come to.
11
+ *
12
+ * A limit the policy leaves out takes EventBridge's own default, which is 185
13
+ * retries over at most 24 hours.
14
+ */
15
+ export class SimEventTargetRetryPolicy {
16
+ declared;
17
+ maximumEventAgeInSeconds;
18
+ maximumRetryAttempts;
19
+ constructor(policy) {
20
+ this.declared = { ...policy };
21
+ this.maximumEventAgeInSeconds =
22
+ policy.MaximumEventAgeInSeconds ?? defaultMaximumEventAgeInSeconds;
23
+ this.maximumRetryAttempts =
24
+ policy.MaximumRetryAttempts ?? defaultMaximumRetryAttempts;
25
+ }
26
+ /**
27
+ * Read the retry policy a target may leave out.
28
+ */
29
+ static optional(policy) {
30
+ if (policy === undefined) {
31
+ return undefined;
32
+ }
33
+ return this.of(policy);
34
+ }
35
+ /**
36
+ * Read a retry policy, refusing values outside EventBridge's ranges.
37
+ */
38
+ static of(policy) {
39
+ this.requireWholeNumber("MaximumEventAgeInSeconds", policy.MaximumEventAgeInSeconds, minimumEventAgeInSeconds, defaultMaximumEventAgeInSeconds);
40
+ this.requireWholeNumber("MaximumRetryAttempts", policy.MaximumRetryAttempts, 0, defaultMaximumRetryAttempts);
41
+ return new this(policy);
42
+ }
43
+ static requireWholeNumber(name, value, minimum, maximum) {
44
+ if (value === undefined) {
45
+ return;
46
+ }
47
+ if (!Number.isSafeInteger(value) || value < minimum || value > maximum) {
48
+ throw new SimEventBridgeValidationException(`Invalid parameter: Target RetryPolicy ${name} Reason: it is a whole ` +
49
+ `number between ${String(minimum)} and ${String(maximum)}, and ` +
50
+ `${String(value)} is not.`);
51
+ }
52
+ }
53
+ }
@@ -1,4 +1,6 @@
1
1
  import { SimEventTargetArn } from "./sim-event-target-arn.js";
2
+ import { SimEventTargetDeadLetterConfig, type SimEventTargetDeadLetterConfigInput } from "./sim-event-target-dead-letter-config.js";
3
+ import { SimEventTargetRetryPolicy, type SimEventTargetRetryPolicyInput } from "./sim-event-target-retry-policy.js";
2
4
  import { SimEventTargetEcs, type SimEventTargetTaskProperties } from "./sim-event-target-ecs.js";
3
5
  /**
4
6
  * One place a rule sends the events it matches.
@@ -29,6 +31,19 @@ export declare class SimEventTarget {
29
31
  * is what the task overrides instead.
30
32
  */
31
33
  readonly ecs: SimEventTargetEcs | undefined;
34
+ /**
35
+ * How long and how often a failed delivery is retried, where the target
36
+ * says.
37
+ *
38
+ * A target without one is delivered once. Real EventBridge retries such a
39
+ * target for up to 24 hours by default, and that divergence is documented.
40
+ */
41
+ readonly retryPolicy: SimEventTargetRetryPolicy | undefined;
42
+ /**
43
+ * The queue an event goes to once delivery is given up, where the target
44
+ * names one.
45
+ */
46
+ readonly deadLetterConfig: SimEventTargetDeadLetterConfig | undefined;
32
47
  private constructor();
33
48
  /**
34
49
  * Read a target from request input.
@@ -36,6 +51,8 @@ export declare class SimEventTarget {
36
51
  static of(properties: SimEventTargetTaskProperties & {
37
52
  readonly Id?: string | undefined;
38
53
  readonly Arn?: string | undefined;
54
+ readonly RetryPolicy?: SimEventTargetRetryPolicyInput | undefined;
55
+ readonly DeadLetterConfig?: SimEventTargetDeadLetterConfigInput | undefined;
39
56
  }): SimEventTarget;
40
57
  /**
41
58
  * Read a target's fixed input, which has to be JSON.
@@ -1,5 +1,7 @@
1
1
  import { SimEventBridgeValidationException } from "../error/sim-event-bridge.error.js";
2
2
  import { SimEventTargetArn } from "./sim-event-target-arn.js";
3
+ import { SimEventTargetDeadLetterConfig, } from "./sim-event-target-dead-letter-config.js";
4
+ import { SimEventTargetRetryPolicy, } from "./sim-event-target-retry-policy.js";
3
5
  import { SimEventTargetEcs, } from "./sim-event-target-ecs.js";
4
6
  /**
5
7
  * Real EventBridge allows alphanumerics, full stops, hyphens and underscores,
@@ -35,11 +37,26 @@ export class SimEventTarget {
35
37
  * is what the task overrides instead.
36
38
  */
37
39
  ecs;
40
+ /**
41
+ * How long and how often a failed delivery is retried, where the target
42
+ * says.
43
+ *
44
+ * A target without one is delivered once. Real EventBridge retries such a
45
+ * target for up to 24 hours by default, and that divergence is documented.
46
+ */
47
+ retryPolicy;
48
+ /**
49
+ * The queue an event goes to once delivery is given up, where the target
50
+ * names one.
51
+ */
52
+ deadLetterConfig;
38
53
  constructor(properties) {
39
54
  this.id = properties.id;
40
55
  this.arn = properties.arn;
41
56
  this.input = properties.input;
42
57
  this.ecs = properties.ecs;
58
+ this.retryPolicy = properties.retryPolicy;
59
+ this.deadLetterConfig = properties.deadLetterConfig;
43
60
  }
44
61
  /**
45
62
  * Read a target from request input.
@@ -51,6 +68,8 @@ export class SimEventTarget {
51
68
  arn,
52
69
  input: this.readInput(properties.Input),
53
70
  ecs: SimEventTargetEcs.of(arn, properties),
71
+ retryPolicy: SimEventTargetRetryPolicy.optional(properties.RetryPolicy),
72
+ deadLetterConfig: SimEventTargetDeadLetterConfig.optional(properties.DeadLetterConfig),
54
73
  });
55
74
  }
56
75
  /**