@orcabus/platform-cdk-constructs 0.0.68 → 0.0.70

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/.jsii CHANGED
@@ -7,8 +7,8 @@
7
7
  ]
8
8
  },
9
9
  "dependencies": {
10
- "@aws-cdk/aws-lambda-python-alpha": "^2.211.0-alpha.0",
11
- "aws-cdk-lib": "^2.211.0",
10
+ "@aws-cdk/aws-lambda-python-alpha": "^2.213.0-alpha.0",
11
+ "aws-cdk-lib": "^2.213.0",
12
12
  "constructs": "^10.4.2"
13
13
  },
14
14
  "dependencyClosure": {
@@ -4142,6 +4142,16 @@
4142
4142
  },
4143
4143
  "symbolId": "ecs/index:"
4144
4144
  },
4145
+ "@orcabus/platform-cdk-constructs.eventbridgeRule": {
4146
+ "locationInModule": {
4147
+ "filename": "index.ts",
4148
+ "line": 23
4149
+ },
4150
+ "readme": {
4151
+ "markdown": "# EventBridge Rules\n\n## SfnSlackNotification\n\nThis CDK construct sends Slack notifications when your Step Functions state machine changes status.\n\n### Example\n\n```typescript\nnew SfnSlackNotification(this, \"SfnSlackNotification\", {\n stateMachine: myDev,\n eventStatus: [SfnEventStatus.SUCCEEDED],\n title: `JOB-A: ${EventField.fromPath(\"$.detail.input.jobId\")}`,\n message: [\n \"*Execution Details:*\",\n `• ARN: ${EventField.fromPath(\"$.detail.executionArn\")}`,\n `• Status: ${EventField.fromPath(\"$.detail.status\")}`,\n ],\n includeConsoleLink: true,\n});\n```\n\n### Notes\n\n- Use `EventField.fromPath(\"$.jsonpath\")` to include dynamic event data in your title or message.\n- `includeConsoleLink` adds a link to the AWS Console for the execution.\n"
4152
+ },
4153
+ "symbolId": "eventbridge-rules/index:"
4154
+ },
4145
4155
  "@orcabus/platform-cdk-constructs.lambda": {
4146
4156
  "locationInModule": {
4147
4157
  "filename": "index.ts",
@@ -5774,6 +5784,245 @@
5774
5784
  ],
5775
5785
  "symbolId": "ecs/index:FargateEcsTaskConstructProps"
5776
5786
  },
5787
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus": {
5788
+ "assembly": "@orcabus/platform-cdk-constructs",
5789
+ "docs": {
5790
+ "stability": "experimental"
5791
+ },
5792
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus",
5793
+ "kind": "enum",
5794
+ "locationInModule": {
5795
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5796
+ "line": 14
5797
+ },
5798
+ "members": [
5799
+ {
5800
+ "docs": {
5801
+ "stability": "experimental"
5802
+ },
5803
+ "name": "RUNNING"
5804
+ },
5805
+ {
5806
+ "docs": {
5807
+ "stability": "experimental"
5808
+ },
5809
+ "name": "SUCCEEDED"
5810
+ },
5811
+ {
5812
+ "docs": {
5813
+ "stability": "experimental"
5814
+ },
5815
+ "name": "FAILED"
5816
+ },
5817
+ {
5818
+ "docs": {
5819
+ "stability": "experimental"
5820
+ },
5821
+ "name": "TIMED_OUT"
5822
+ },
5823
+ {
5824
+ "docs": {
5825
+ "stability": "experimental"
5826
+ },
5827
+ "name": "ABORTED"
5828
+ }
5829
+ ],
5830
+ "name": "SfnEventStatus",
5831
+ "namespace": "eventbridgeRule",
5832
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnEventStatus"
5833
+ },
5834
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification": {
5835
+ "assembly": "@orcabus/platform-cdk-constructs",
5836
+ "base": "constructs.Construct",
5837
+ "docs": {
5838
+ "stability": "experimental"
5839
+ },
5840
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification",
5841
+ "initializer": {
5842
+ "docs": {
5843
+ "stability": "experimental"
5844
+ },
5845
+ "locationInModule": {
5846
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5847
+ "line": 85
5848
+ },
5849
+ "parameters": [
5850
+ {
5851
+ "name": "scope",
5852
+ "type": {
5853
+ "fqn": "constructs.Construct"
5854
+ }
5855
+ },
5856
+ {
5857
+ "name": "id",
5858
+ "type": {
5859
+ "primitive": "string"
5860
+ }
5861
+ },
5862
+ {
5863
+ "name": "props",
5864
+ "type": {
5865
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps"
5866
+ }
5867
+ }
5868
+ ]
5869
+ },
5870
+ "kind": "class",
5871
+ "locationInModule": {
5872
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5873
+ "line": 83
5874
+ },
5875
+ "name": "SfnSlackNotification",
5876
+ "namespace": "eventbridgeRule",
5877
+ "properties": [
5878
+ {
5879
+ "docs": {
5880
+ "stability": "experimental"
5881
+ },
5882
+ "immutable": true,
5883
+ "locationInModule": {
5884
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5885
+ "line": 84
5886
+ },
5887
+ "name": "rule",
5888
+ "type": {
5889
+ "fqn": "aws-cdk-lib.aws_events.Rule"
5890
+ }
5891
+ }
5892
+ ],
5893
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnSlackNotification"
5894
+ },
5895
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps": {
5896
+ "assembly": "@orcabus/platform-cdk-constructs",
5897
+ "datatype": true,
5898
+ "docs": {
5899
+ "stability": "experimental"
5900
+ },
5901
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps",
5902
+ "kind": "interface",
5903
+ "locationInModule": {
5904
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5905
+ "line": 22
5906
+ },
5907
+ "name": "SfnSlackNotificationProps",
5908
+ "namespace": "eventbridgeRule",
5909
+ "properties": [
5910
+ {
5911
+ "abstract": true,
5912
+ "docs": {
5913
+ "stability": "experimental",
5914
+ "summary": "The event statuses to listen for."
5915
+ },
5916
+ "immutable": true,
5917
+ "locationInModule": {
5918
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5919
+ "line": 36
5920
+ },
5921
+ "name": "eventStatus",
5922
+ "type": {
5923
+ "collection": {
5924
+ "elementtype": {
5925
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus"
5926
+ },
5927
+ "kind": "array"
5928
+ }
5929
+ }
5930
+ },
5931
+ {
5932
+ "abstract": true,
5933
+ "docs": {
5934
+ "remarks": "Each array element represents a separate line in the message.\nSupports Slack's message formatting syntax:\nhttps://api.slack.com/reference/surfaces/formatting\n\n**Dynamic Content:**\nTo include dynamic event data, embed JSONPath expressions in strings using `EventField.fromPath`.\nFor example, `EventField.fromPath(\"$.detail.executionArn\")` references the `executionArn` field from the event payload.\nThe `EventField` is imported from `aws-cdk-lib/aws-events`.\n\nExample:\n\n```typescript\nmessage: [\n \"*Execution Details:*\",\n `• ARN: ${EventField.fromPath(\"$.detail.executionArn\")}`,\n `• Status: ${EventField.fromPath(\"$.detail.status\")}`,\n \"\",\n]\n```",
5935
+ "stability": "experimental",
5936
+ "summary": "The detailed message content for the Slack notification."
5937
+ },
5938
+ "immutable": true,
5939
+ "locationInModule": {
5940
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5941
+ "line": 69
5942
+ },
5943
+ "name": "message",
5944
+ "type": {
5945
+ "collection": {
5946
+ "elementtype": {
5947
+ "primitive": "string"
5948
+ },
5949
+ "kind": "array"
5950
+ }
5951
+ }
5952
+ },
5953
+ {
5954
+ "abstract": true,
5955
+ "docs": {
5956
+ "stability": "experimental",
5957
+ "summary": "The step function state machine to listen to."
5958
+ },
5959
+ "immutable": true,
5960
+ "locationInModule": {
5961
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5962
+ "line": 26
5963
+ },
5964
+ "name": "stateMachine",
5965
+ "type": {
5966
+ "fqn": "aws-cdk-lib.aws_stepfunctions.IStateMachine"
5967
+ }
5968
+ },
5969
+ {
5970
+ "abstract": true,
5971
+ "docs": {
5972
+ "remarks": "Can include dynamic content from the event payload using JSONPath expressions.\nTo reference event fields, you must use `EventField.fromPath`, e.g.,\n`Job-alpha: ${EventField.fromPath(\"$.detail.input.destinationId\")}`.\nThe `EventField` import is required from `aws-cdk-lib/aws-events`.",
5973
+ "stability": "experimental",
5974
+ "summary": "The title for the Slack notification."
5975
+ },
5976
+ "immutable": true,
5977
+ "locationInModule": {
5978
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5979
+ "line": 45
5980
+ },
5981
+ "name": "title",
5982
+ "type": {
5983
+ "primitive": "string"
5984
+ }
5985
+ },
5986
+ {
5987
+ "abstract": true,
5988
+ "docs": {
5989
+ "remarks": "Default: The default AWS event bus",
5990
+ "stability": "experimental",
5991
+ "summary": "The event statuses to listen for."
5992
+ },
5993
+ "immutable": true,
5994
+ "locationInModule": {
5995
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5996
+ "line": 32
5997
+ },
5998
+ "name": "eventBus",
5999
+ "optional": true,
6000
+ "type": {
6001
+ "fqn": "aws-cdk-lib.aws_events.IEventBus"
6002
+ }
6003
+ },
6004
+ {
6005
+ "abstract": true,
6006
+ "docs": {
6007
+ "default": "false",
6008
+ "remarks": "When enabled, adds a clickable console link at the beginning of the Slack message.\nThe link is constructed using the execution ARN from the event payload.\n\nRef: https://stackoverflow.com/a/76008805",
6009
+ "stability": "experimental",
6010
+ "summary": "Whether to include a link to the Step Function execution in the AWS Console."
6011
+ },
6012
+ "immutable": true,
6013
+ "locationInModule": {
6014
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
6015
+ "line": 80
6016
+ },
6017
+ "name": "includeConsoleLink",
6018
+ "optional": true,
6019
+ "type": {
6020
+ "primitive": "boolean"
6021
+ }
6022
+ }
6023
+ ],
6024
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnSlackNotificationProps"
6025
+ },
5777
6026
  "@orcabus/platform-cdk-constructs.lambda.Icav2ResourcesProps": {
5778
6027
  "assembly": "@orcabus/platform-cdk-constructs",
5779
6028
  "datatype": true,
@@ -6914,6 +7163,6 @@
6914
7163
  "symbolId": "shared-config/slack:SlackAlerts"
6915
7164
  }
6916
7165
  },
6917
- "version": "0.0.68",
6918
- "fingerprint": "w5rZvc55nWmsmHV8DOtEwFvLLI78onbGMV8SWS3n3rc="
7166
+ "version": "0.0.70",
7167
+ "fingerprint": "8G/0MzBl8Iium2sgBYIoZrJgl/9VCcfqW1DijaLXxOg="
6919
7168
  }
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
15
15
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
16
16
  const config_1 = require("./config");
17
17
  class OrcaBusApiGateway extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.68" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.70" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
13
13
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
14
14
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
15
15
  class CrossDeploymentArtifactBucket extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.68" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.70" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -32,7 +32,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
32
32
  * before using this construct.
33
33
  */
34
34
  class DeploymentStackPipeline extends constructs_1.Construct {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.68" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.70" };
36
36
  /**
37
37
  * The code pipeline construct that is created.
38
38
  */
package/dynamodb/index.js CHANGED
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const config_1 = require("./config");
42
42
  class DynamoDbPartitionedConstruct extends constructs_1.Construct {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.68" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.70" };
44
44
  table;
45
45
  constructor(scope, id, props) {
46
46
  super(scope, id);
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
75
75
  }
76
76
  exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
77
77
  class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.68" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.70" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/index.js CHANGED
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
55
55
  ['ARM64']: lambda.Architecture.ARM_64
56
56
  };
57
57
  class EcsFargateTaskConstruct extends constructs_1.Construct {
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.68" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.70" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  taskExecutionRole;
@@ -90,7 +90,7 @@ class EcsFargateTaskConstruct extends constructs_1.Construct {
90
90
  runtimePlatform: {
91
91
  cpuArchitecture: props.runtimePlatform ?? exports.CPU_ARCHITECTURE_MAP[architecture],
92
92
  },
93
- executionRole: this.taskExecutionRole
93
+ executionRole: this.taskExecutionRole,
94
94
  });
95
95
  // Set up the security group
96
96
  this.securityGroup = new ec2.SecurityGroup(this, 'FargateSecurityGroup', {
@@ -113,4 +113,4 @@ class EcsFargateTaskConstruct extends constructs_1.Construct {
113
113
  }
114
114
  }
115
115
  exports.EcsFargateTaskConstruct = EcsFargateTaskConstruct;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXFDO0FBQ3JDLHFDQUFnRjtBQUNoRix5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLGlEQUFzRDtBQUN0RCwrREFBaUQ7QUFDakQsc0VBQXdEO0FBQ3hELHlEQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsNERBQXFEO0FBQ3JELGlEQUF5RDtBQXFCNUMsUUFBQSxvQkFBb0IsR0FBOEM7SUFDM0UsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU07SUFDdEMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUs7Q0FDdkMsQ0FBQTtBQUVZLFFBQUEsdUJBQXVCLEdBQThDO0lBQzlFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0lBQ3RDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ3hDLENBQUE7QUEwQ0QsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDbEMsT0FBTyxDQUFjO0lBQ3JCLGNBQWMsQ0FBMkI7SUFDekMsaUJBQWlCLENBQU87SUFDeEIsYUFBYSxDQUFvQjtJQUNqQyxtQkFBbUIsQ0FBeUI7SUFFNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBaUIsS0FBSyxDQUFDLFlBQVksSUFBSSw2QkFBb0IsQ0FBQTtRQUU3RSxzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQzlCLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxxQkFBUTtTQUNyQyxDQUNKLENBQUE7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ25ELEdBQUcsRUFBRSxPQUFPO1lBQ1osOEJBQThCLEVBQUUsSUFBSTtZQUNwQyxtQkFBbUIsRUFBRSwyQkFBaUIsQ0FBQyxPQUFPO1NBQ2pELENBQUMsQ0FBQTtRQUVGLG1FQUFtRTtRQUNuRSxrSUFBa0k7UUFDbEksOEdBQThHO1FBQzlHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQy9ELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUM5RCxlQUFlLEVBQUUsQ0FBQyx1QkFBYSxDQUFDLHdCQUF3QixDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDM0csQ0FBQyxDQUFBO1FBRUYscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3hFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksc0JBQWEsQ0FBQyxHQUFHLElBQUk7WUFDMUMsMERBQTBEO1lBQzFELGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksMEJBQWlCLENBQUMsR0FBRyxJQUFJO1lBQ2xFLGVBQWUsRUFBRTtnQkFDYixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSw0QkFBb0IsQ0FBQyxZQUFZLENBQUM7YUFDL0U7WUFDRCxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUN4QyxDQUFDLENBQUE7UUFFRiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFLEdBQUcsRUFBRSxPQUFPO1lBQ1osV0FBVyxFQUFFLGtDQUFrQztTQUNsRCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7WUFDNUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUMxQyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7Z0JBQ3ZELFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDM0IsU0FBUyxFQUFFO29CQUNQLGNBQWMsRUFBRSwrQkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjO2lCQUN2RTthQUNKLENBQUMsQ0FDTDtZQUNELE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDM0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dCQUNqQyxZQUFZLEVBQUUsd0JBQWEsQ0FBQyxRQUFRO2FBQ3ZDLENBQUM7U0FDTCxDQUFDLENBQUM7SUFDUCxDQUFDOztBQW5FTCwwREFvRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7REVGQVVMVF9BUkNISVRFQ1RVUkUsIERFRkFVTFRfTUVNT1JZX0dCLCBERUZBVUxUX1ZDUFVTfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQge0NvbnRhaW5lckluc2lnaHRzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgKiBhcyBlY3JBc3NldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge1ZQQ19OQU1FfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9uZXR3b3JraW5nXCI7XG5pbXBvcnQge0lSb2xlLCBNYW5hZ2VkUG9saWN5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG4vLyBNZW1vcnkgYW5kIENQVSBsaW1pdHMgZm9yIEZhcmdhdGUgdGFza3Ncbi8qXG4yNTYgKC4yNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiA1MTIgKDAuNSBHQiksIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKVxuXG41MTIgKC41IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpXG5cbjEwMjQgKDEgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQilcblxuMjA0OCAoMiB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuNDA5NiAoNCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuODE5MiAoOCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDE2Mzg0ICgxNiBHQikgYW5kIDYxNDQwICg2MCBHQikgaW4gaW5jcmVtZW50cyBvZiA0MDk2ICg0IEdCKVxuXG4xNjM4NCAoMTYgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiAzMjc2OCAoMzIgR0IpIGFuZCAxMjI4ODAgKDEyMCBHQikgaW4gaW5jcmVtZW50cyBvZiA4MTkyICg4IEdCKVxuKi9cblxuZXhwb3J0IHR5cGUgQXJjaGl0ZWN0dXJlID0gJ1g4Nl82NCcgfCAnQVJNNjQnXG5cbmV4cG9ydCBjb25zdCBDUFVfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgZWNzLkNwdUFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0XG59XG5cbmV4cG9ydCBjb25zdCBMQU1CREFfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgbGFtYmRhLkFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogbGFtYmRhLkFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhcmdhdGVFY3NUYXNrQ29uc3RydWN0UHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBWUEMgdG8gdXNlLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBAREVGQVVMVF9NQUlOX1ZQQ19OQU1FIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcnVudGltZSBDUFUgYXJjaGl0ZWN0dXJlLCBlaXRoZXIgWDg2XzY0IG9yIEFSTTY0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX0FSQ0hJVEVDVFVSRS5cbiAgICAgKi9cbiAgICByZWFkb25seSBydW50aW1lUGxhdGZvcm0/OiBlY3MuQ3B1QXJjaGl0ZWN0dXJlXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIENQVXMgdG8gdXNlLCBiZXR3ZWVuIDAuMjUgYW5kIDE2LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX1ZDUFVTLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5DcHVzOiBudW1iZXIgLy8gTnVtYmVyIG9mIENQVXMgKDAuMjUsIDAuNSwgMSwgMiwgNCwgOCwgMTYpXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWVtb3J5IGxpbWl0IGluIEdpQi4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBAREVGQVVMVF9NRU1PUllfR0IuXG4gICAgICogVGhlIG1lbW9yeSBsaW1pdCBtdXN0IGJlIGJldHdlZW4gMC41IGFuZCAxMjAgR2lCLlxuICAgICAqIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBtZW1vcnkgbGltaXQgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIENQVXMsIHBsZWFzZSByZWZlciB0byB0aGUgdGFibGUgYWJvdmUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWVtb3J5TGltaXRHaUI6IG51bWJlclxuXG4gICAgLyoqXG4gICAgICogVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29udGFpbmVyLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX0FSQ0hJVEVDVFVSRS5cbiAgICAgKi9cbiAgICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmVcblxuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lci4gVGhpcyBpcyBhIHJlcXVpcmVkIHByb3BlcnR5XG4gICAgICovXG4gICAgcmVhZG9ubHkgY29udGFpbmVyTmFtZTogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB0byB0aGUgRG9ja2VyZmlsZS4gVGhpcyBpcyBhIHJlcXVpcmVkIHByb3BlcnR5XG4gICAgICovXG4gICAgcmVhZG9ubHkgZG9ja2VyUGF0aDogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBFY3NGYXJnYXRlVGFza0NvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICAgIHB1YmxpYyByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvblxuICAgIHB1YmxpYyByZWFkb25seSB0YXNrRXhlY3V0aW9uUm9sZTogSVJvbGVcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb246IGVjcy5Db250YWluZXJEZWZpbml0aW9uXG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmFyZ2F0ZUVjc1Rhc2tDb25zdHJ1Y3RQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgIC8vIFNldCBhcmNoaXRlY3R1cmUgaWYgbm90IHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IERFRkFVTFRfQVJDSElURUNUVVJFXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBtYWluIHZwY1xuICAgICAgICBjb25zdCBtYWluVnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKFxuICAgICAgICAgICAgdGhpcywgJ01haW5WcGMnLCB7XG4gICAgICAgICAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSA/PyBWUENfTkFNRVxuICAgICAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBFQ1MgY2x1c3RlclxuICAgICAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0ZhcmdhdGVDbHVzdGVyJywge1xuICAgICAgICAgICAgdnBjOiBtYWluVnBjLFxuICAgICAgICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVySW5zaWdodHNWMjogQ29udGFpbmVySW5zaWdodHMuRU5BQkxFRFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFsbG93IHRoZSB0YXNrIGRlZmluaXRpb24gcm9sZSBlY3IgYWNjZXNzIHRvIHRoZSBndWFyZGR1dHkgYWdlbnRcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2d1YXJkZHV0eS9sYXRlc3QvdWcvcHJlcmVxLXJ1bnRpbWUtbW9uaXRvcmluZy1lY3Mtc3VwcG9ydC5odG1sI2JlZm9yZS1lbmFibGUtcnVudGltZS1tb25pdG9yaW5nLWVjc1xuICAgICAgICAvLyBXaGljaCBpcyBpbiBhbm90aGVyIGFjY291bnQgLSAwMDUyNTc4MjU0NzEuZGtyLmVjci5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2F3cy1ndWFyZGR1dHktYWdlbnQtZmFyZ2F0ZVxuICAgICAgICB0aGlzLnRhc2tFeGVjdXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIGBUYXNrRXhlY3V0aW9uUm9sZWAsIHtcbiAgICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWNzLXRhc2tzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5JyldLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgRmFyZ2F0ZSB0YXNrIGRlZmluaXRpb25cbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsICdGYXJnYXRlVGFza0RlZicsIHtcbiAgICAgICAgICAgIGNwdTogKHByb3BzLm5DcHVzID8/IERFRkFVTFRfVkNQVVMpICogMTAyNCxcbiAgICAgICAgICAgIC8vIENvbnZlcnQgbWVtb3J5IGxpbWl0IGZyb20gR2lCIHRvIE1pQiAoMSBHaUIgPSAxMDI0IE1pQilcbiAgICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAocHJvcHMubWVtb3J5TGltaXRHaUIgPz8gREVGQVVMVF9NRU1PUllfR0IpICogMTAyNCxcbiAgICAgICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTogcHJvcHMucnVudGltZVBsYXRmb3JtID8/IENQVV9BUkNISVRFQ1RVUkVfTUFQW2FyY2hpdGVjdHVyZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy50YXNrRXhlY3V0aW9uUm9sZVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICAgICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdGYXJnYXRlU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgICAgIHZwYzogbWFpblZwYyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VjdXJpdHkgZ3JvdXAgZm9yIEZhcmdhdGUgdGFza3MnXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5jb250YWluZXJEZWZpbml0aW9uID0gdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoJ0ZhcmdhdGVDb250YWluZXInLCB7XG4gICAgICAgICAgICBjb250YWluZXJOYW1lOiBwcm9wcy5jb250YWluZXJOYW1lLFxuICAgICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySW1hZ2VBc3NldChcbiAgICAgICAgICAgICAgICBuZXcgZWNyQXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ0ZhcmdhdGVEb2NrZXJJbWFnZScsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OiBwcm9wcy5kb2NrZXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRBUkdFVFBMQVRGT1JNOiBMQU1CREFfQVJDSElURUNUVVJFX01BUFthcmNoaXRlY3R1cmVdLmRvY2tlclBsYXRmb3JtXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ2dpbmc6IGVjcy5Mb2dEcml2ZXIuYXdzTG9ncyh7XG4gICAgICAgICAgICAgICAgc3RyZWFtUHJlZml4OiBwcm9wcy5jb250YWluZXJOYW1lLFxuICAgICAgICAgICAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfV0VFS1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXFDO0FBQ3JDLHFDQUFnRjtBQUNoRix5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLGlEQUFzRDtBQUN0RCwrREFBaUQ7QUFDakQsc0VBQXdEO0FBQ3hELHlEQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsNERBQXFEO0FBQ3JELGlEQUF5RDtBQXFCNUMsUUFBQSxvQkFBb0IsR0FBOEM7SUFDM0UsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU07SUFDdEMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUs7Q0FDdkMsQ0FBQTtBQUVZLFFBQUEsdUJBQXVCLEdBQThDO0lBQzlFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0lBQ3RDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ3hDLENBQUE7QUEwQ0QsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDbEMsT0FBTyxDQUFjO0lBQ3JCLGNBQWMsQ0FBMkI7SUFDekMsaUJBQWlCLENBQU87SUFDeEIsYUFBYSxDQUFvQjtJQUNqQyxtQkFBbUIsQ0FBeUI7SUFFNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBaUIsS0FBSyxDQUFDLFlBQVksSUFBSSw2QkFBb0IsQ0FBQTtRQUU3RSxzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQzlCLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxxQkFBUTtTQUNyQyxDQUNKLENBQUE7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ25ELEdBQUcsRUFBRSxPQUFPO1lBQ1osOEJBQThCLEVBQUUsSUFBSTtZQUNwQyxtQkFBbUIsRUFBRSwyQkFBaUIsQ0FBQyxPQUFPO1NBQ2pELENBQUMsQ0FBQTtRQUVGLG1FQUFtRTtRQUNuRSxrSUFBa0k7UUFDbEksOEdBQThHO1FBQzlHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQy9ELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUM5RCxlQUFlLEVBQUUsQ0FBQyx1QkFBYSxDQUFDLHdCQUF3QixDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDM0csQ0FBQyxDQUFBO1FBRUYscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3hFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksc0JBQWEsQ0FBQyxHQUFHLElBQUk7WUFDMUMsMERBQTBEO1lBQzFELGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksMEJBQWlCLENBQUMsR0FBRyxJQUFJO1lBQ2xFLGVBQWUsRUFBRTtnQkFDYixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSw0QkFBb0IsQ0FBQyxZQUFZLENBQUM7YUFDL0U7WUFDRCxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUN4QyxDQUFDLENBQUE7UUFFRiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFLEdBQUcsRUFBRSxPQUFPO1lBQ1osV0FBVyxFQUFFLGtDQUFrQztTQUNsRCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7WUFDNUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUMxQyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7Z0JBQ3ZELFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDM0IsU0FBUyxFQUFFO29CQUNQLGNBQWMsRUFBRSwrQkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjO2lCQUN2RTthQUNKLENBQUMsQ0FDTDtZQUNELE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDM0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dCQUNqQyxZQUFZLEVBQUUsd0JBQWEsQ0FBQyxRQUFRO2FBQ3ZDLENBQUM7U0FDTCxDQUFDLENBQUM7SUFDUCxDQUFDOztBQW5FTCwwREFvRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7REVGQVVMVF9BUkNISVRFQ1RVUkUsIERFRkFVTFRfTUVNT1JZX0dCLCBERUZBVUxUX1ZDUFVTfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQge0NvbnRhaW5lckluc2lnaHRzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgKiBhcyBlY3JBc3NldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge1ZQQ19OQU1FfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9uZXR3b3JraW5nXCI7XG5pbXBvcnQge0lSb2xlLCBNYW5hZ2VkUG9saWN5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG4vLyBNZW1vcnkgYW5kIENQVSBsaW1pdHMgZm9yIEZhcmdhdGUgdGFza3Ncbi8qXG4yNTYgKC4yNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiA1MTIgKDAuNSBHQiksIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKVxuXG41MTIgKC41IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpXG5cbjEwMjQgKDEgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQilcblxuMjA0OCAoMiB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuNDA5NiAoNCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuODE5MiAoOCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDE2Mzg0ICgxNiBHQikgYW5kIDYxNDQwICg2MCBHQikgaW4gaW5jcmVtZW50cyBvZiA0MDk2ICg0IEdCKVxuXG4xNjM4NCAoMTYgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiAzMjc2OCAoMzIgR0IpIGFuZCAxMjI4ODAgKDEyMCBHQikgaW4gaW5jcmVtZW50cyBvZiA4MTkyICg4IEdCKVxuKi9cblxuZXhwb3J0IHR5cGUgQXJjaGl0ZWN0dXJlID0gJ1g4Nl82NCcgfCAnQVJNNjQnXG5cbmV4cG9ydCBjb25zdCBDUFVfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgZWNzLkNwdUFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0XG59XG5cbmV4cG9ydCBjb25zdCBMQU1CREFfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgbGFtYmRhLkFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogbGFtYmRhLkFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhcmdhdGVFY3NUYXNrQ29uc3RydWN0UHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBWUEMgdG8gdXNlLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBAREVGQVVMVF9NQUlOX1ZQQ19OQU1FIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcnVudGltZSBDUFUgYXJjaGl0ZWN0dXJlLCBlaXRoZXIgWDg2XzY0IG9yIEFSTTY0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX0FSQ0hJVEVDVFVSRS5cbiAgICAgKi9cbiAgICByZWFkb25seSBydW50aW1lUGxhdGZvcm0/OiBlY3MuQ3B1QXJjaGl0ZWN0dXJlXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIENQVXMgdG8gdXNlLCBiZXR3ZWVuIDAuMjUgYW5kIDE2LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX1ZDUFVTLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5DcHVzOiBudW1iZXIgLy8gTnVtYmVyIG9mIENQVXMgKDAuMjUsIDAuNSwgMSwgMiwgNCwgOCwgMTYpXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWVtb3J5IGxpbWl0IGluIEdpQi4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBAREVGQVVMVF9NRU1PUllfR0IuXG4gICAgICogVGhlIG1lbW9yeSBsaW1pdCBtdXN0IGJlIGJldHdlZW4gMC41IGFuZCAxMjAgR2lCLlxuICAgICAqIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBtZW1vcnkgbGltaXQgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIENQVXMsIHBsZWFzZSByZWZlciB0byB0aGUgdGFibGUgYWJvdmUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWVtb3J5TGltaXRHaUI6IG51bWJlclxuXG4gICAgLyoqXG4gICAgICogVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgY29udGFpbmVyLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX0FSQ0hJVEVDVFVSRS5cbiAgICAgKi9cbiAgICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmVcblxuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lci4gVGhpcyBpcyBhIHJlcXVpcmVkIHByb3BlcnR5XG4gICAgICovXG4gICAgcmVhZG9ubHkgY29udGFpbmVyTmFtZTogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB0byB0aGUgRG9ja2VyZmlsZS4gVGhpcyBpcyBhIHJlcXVpcmVkIHByb3BlcnR5XG4gICAgICovXG4gICAgcmVhZG9ubHkgZG9ja2VyUGF0aDogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBFY3NGYXJnYXRlVGFza0NvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICAgIHB1YmxpYyByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvblxuICAgIHB1YmxpYyByZWFkb25seSB0YXNrRXhlY3V0aW9uUm9sZTogSVJvbGVcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb246IGVjcy5Db250YWluZXJEZWZpbml0aW9uXG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmFyZ2F0ZUVjc1Rhc2tDb25zdHJ1Y3RQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgIC8vIFNldCBhcmNoaXRlY3R1cmUgaWYgbm90IHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IERFRkFVTFRfQVJDSElURUNUVVJFXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBtYWluIHZwY1xuICAgICAgICBjb25zdCBtYWluVnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKFxuICAgICAgICAgICAgdGhpcywgJ01haW5WcGMnLCB7XG4gICAgICAgICAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSA/PyBWUENfTkFNRVxuICAgICAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBFQ1MgY2x1c3RlclxuICAgICAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0ZhcmdhdGVDbHVzdGVyJywge1xuICAgICAgICAgICAgdnBjOiBtYWluVnBjLFxuICAgICAgICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVySW5zaWdodHNWMjogQ29udGFpbmVySW5zaWdodHMuRU5BQkxFRFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFsbG93IHRoZSB0YXNrIGRlZmluaXRpb24gcm9sZSBlY3IgYWNjZXNzIHRvIHRoZSBndWFyZGR1dHkgYWdlbnRcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2d1YXJkZHV0eS9sYXRlc3QvdWcvcHJlcmVxLXJ1bnRpbWUtbW9uaXRvcmluZy1lY3Mtc3VwcG9ydC5odG1sI2JlZm9yZS1lbmFibGUtcnVudGltZS1tb25pdG9yaW5nLWVjc1xuICAgICAgICAvLyBXaGljaCBpcyBpbiBhbm90aGVyIGFjY291bnQgLSAwMDUyNTc4MjU0NzEuZGtyLmVjci5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2F3cy1ndWFyZGR1dHktYWdlbnQtZmFyZ2F0ZVxuICAgICAgICB0aGlzLnRhc2tFeGVjdXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIGBUYXNrRXhlY3V0aW9uUm9sZWAsIHtcbiAgICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWNzLXRhc2tzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5JyldLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgRmFyZ2F0ZSB0YXNrIGRlZmluaXRpb25cbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsICdGYXJnYXRlVGFza0RlZicsIHtcbiAgICAgICAgICAgIGNwdTogKHByb3BzLm5DcHVzID8/IERFRkFVTFRfVkNQVVMpICogMTAyNCxcbiAgICAgICAgICAgIC8vIENvbnZlcnQgbWVtb3J5IGxpbWl0IGZyb20gR2lCIHRvIE1pQiAoMSBHaUIgPSAxMDI0IE1pQilcbiAgICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAocHJvcHMubWVtb3J5TGltaXRHaUIgPz8gREVGQVVMVF9NRU1PUllfR0IpICogMTAyNCxcbiAgICAgICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTogcHJvcHMucnVudGltZVBsYXRmb3JtID8/IENQVV9BUkNISVRFQ1RVUkVfTUFQW2FyY2hpdGVjdHVyZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy50YXNrRXhlY3V0aW9uUm9sZSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTZXQgdXAgdGhlIHNlY3VyaXR5IGdyb3VwXG4gICAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnRmFyZ2F0ZVNlY3VyaXR5R3JvdXAnLCB7XG4gICAgICAgICAgICB2cGM6IG1haW5WcGMsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlY3VyaXR5IGdyb3VwIGZvciBGYXJnYXRlIHRhc2tzJ1xuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdGYXJnYXRlQ29udGFpbmVyJywge1xuICAgICAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckltYWdlQXNzZXQoXG4gICAgICAgICAgICAgICAgbmV3IGVjckFzc2V0cy5Eb2NrZXJJbWFnZUFzc2V0KHRoaXMsICdGYXJnYXRlRG9ja2VySW1hZ2UnLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogcHJvcHMuZG9ja2VyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRQTEFURk9STTogTEFNQkRBX0FSQ0hJVEVDVFVSRV9NQVBbYXJjaGl0ZWN0dXJlXS5kb2NrZXJQbGF0Zm9ybVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dnaW5nOiBlY3MuTG9nRHJpdmVyLmF3c0xvZ3Moe1xuICAgICAgICAgICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICAgICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ # EventBridge Rules
2
+
3
+ ## SfnSlackNotification
4
+
5
+ This CDK construct sends Slack notifications when your Step Functions state machine changes status.
6
+
7
+ ### Example
8
+
9
+ ```typescript
10
+ new SfnSlackNotification(this, "SfnSlackNotification", {
11
+ stateMachine: myDev,
12
+ eventStatus: [SfnEventStatus.SUCCEEDED],
13
+ title: `JOB-A: ${EventField.fromPath("$.detail.input.jobId")}`,
14
+ message: [
15
+ "*Execution Details:*",
16
+ `• ARN: ${EventField.fromPath("$.detail.executionArn")}`,
17
+ `• Status: ${EventField.fromPath("$.detail.status")}`,
18
+ ],
19
+ includeConsoleLink: true,
20
+ });
21
+ ```
22
+
23
+ ### Notes
24
+
25
+ - Use `EventField.fromPath("$.jsonpath")` to include dynamic event data in your title or message.
26
+ - `includeConsoleLink` adds a link to the AWS Console for the execution.
@@ -0,0 +1 @@
1
+ export declare const SNS_ALERTS_TOPIC_ARN = "/chatbot/slack/umccr/alerts-topic-arn";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SNS_ALERTS_TOPIC_ARN = void 0;
4
+ exports.SNS_ALERTS_TOPIC_ARN = "/chatbot/slack/umccr/alerts-topic-arn";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsb0JBQW9CLEdBQUcsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU05TX0FMRVJUU19UT1BJQ19BUk4gPSBcIi9jaGF0Ym90L3NsYWNrL3VtY2NyL2FsZXJ0cy10b3BpYy1hcm5cIjtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from "./config";
2
+ export * from "./sfn-slack-notification";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./config"), exports);
18
+ __exportStar(require("./sfn-slack-notification"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLDJEQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2ZuLXNsYWNrLW5vdGlmaWNhdGlvblwiO1xuIl19
@@ -0,0 +1,74 @@
1
+ import { IEventBus, Rule } from "aws-cdk-lib/aws-events";
2
+ import { IStateMachine } from "aws-cdk-lib/aws-stepfunctions";
3
+ import { Construct } from "constructs";
4
+ export declare enum SfnEventStatus {
5
+ RUNNING = "RUNNING",
6
+ SUCCEEDED = "SUCCEEDED",
7
+ FAILED = "FAILED",
8
+ TIMED_OUT = "TIMED_OUT",
9
+ ABORTED = "ABORTED"
10
+ }
11
+ export interface SfnSlackNotificationProps {
12
+ /**
13
+ * The step function state machine to listen to.
14
+ */
15
+ readonly stateMachine: IStateMachine;
16
+ /**
17
+ * The event statuses to listen for.
18
+ *
19
+ * Default: The default AWS event bus
20
+ */
21
+ readonly eventBus?: IEventBus;
22
+ /**
23
+ * The event statuses to listen for.
24
+ */
25
+ readonly eventStatus: SfnEventStatus[];
26
+ /**
27
+ * The title for the Slack notification.
28
+ *
29
+ * Can include dynamic content from the event payload using JSONPath expressions.
30
+ * To reference event fields, you must use `EventField.fromPath`, e.g.,
31
+ * `Job-alpha: ${EventField.fromPath("$.detail.input.destinationId")}`.
32
+ * The `EventField` import is required from `aws-cdk-lib/aws-events`.
33
+ */
34
+ readonly title: string;
35
+ /**
36
+ * The detailed message content for the Slack notification.
37
+ *
38
+ * Each array element represents a separate line in the message.
39
+ * Supports Slack's message formatting syntax:
40
+ * https://api.slack.com/reference/surfaces/formatting
41
+ *
42
+ * **Dynamic Content:**
43
+ * To include dynamic event data, embed JSONPath expressions in strings using `EventField.fromPath`.
44
+ * For example, `EventField.fromPath("$.detail.executionArn")` references the `executionArn` field from the event payload.
45
+ * The `EventField` is imported from `aws-cdk-lib/aws-events`.
46
+ *
47
+ * Example:
48
+ *
49
+ * ```typescript
50
+ * message: [
51
+ * "*Execution Details:*",
52
+ * `• ARN: ${EventField.fromPath("$.detail.executionArn")}`,
53
+ * `• Status: ${EventField.fromPath("$.detail.status")}`,
54
+ * "",
55
+ * ]
56
+ * ```
57
+ */
58
+ readonly message: string[];
59
+ /**
60
+ * Whether to include a link to the Step Function execution in the AWS Console.
61
+ *
62
+ * When enabled, adds a clickable console link at the beginning of the Slack message.
63
+ * The link is constructed using the execution ARN from the event payload.
64
+ *
65
+ * Ref: https://stackoverflow.com/a/76008805
66
+ *
67
+ * @default false
68
+ */
69
+ readonly includeConsoleLink?: boolean;
70
+ }
71
+ export declare class SfnSlackNotification extends Construct {
72
+ readonly rule: Rule;
73
+ constructor(scope: Construct, id: string, props: SfnSlackNotificationProps);
74
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SfnSlackNotification = exports.SfnEventStatus = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_events_1 = require("aws-cdk-lib/aws-events");
6
+ const aws_sns_1 = require("aws-cdk-lib/aws-sns");
7
+ const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
8
+ const constructs_1 = require("constructs");
9
+ const config_1 = require("./config");
10
+ const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
11
+ var SfnEventStatus;
12
+ (function (SfnEventStatus) {
13
+ SfnEventStatus["RUNNING"] = "RUNNING";
14
+ SfnEventStatus["SUCCEEDED"] = "SUCCEEDED";
15
+ SfnEventStatus["FAILED"] = "FAILED";
16
+ SfnEventStatus["TIMED_OUT"] = "TIMED_OUT";
17
+ SfnEventStatus["ABORTED"] = "ABORTED";
18
+ })(SfnEventStatus || (exports.SfnEventStatus = SfnEventStatus = {}));
19
+ class SfnSlackNotification extends constructs_1.Construct {
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "0.0.70" };
21
+ rule;
22
+ constructor(scope, id, props) {
23
+ super(scope, id);
24
+ this.rule = new aws_events_1.Rule(this, "SfnSlackNotificationRule", {
25
+ eventBus: props.eventBus,
26
+ description: `Slack notification for Step Function state machine `,
27
+ eventPattern: {
28
+ source: ["aws.states"],
29
+ detailType: ["Step Functions Execution Status Change"],
30
+ detail: {
31
+ stateMachineArn: [props.stateMachine.stateMachineArn],
32
+ status: props.eventStatus,
33
+ },
34
+ },
35
+ });
36
+ // get SNS topic ARN from SSM Parameter Store
37
+ const slackTopicArn = aws_ssm_1.StringParameter.valueForStringParameter(this, config_1.SNS_ALERTS_TOPIC_ARN);
38
+ const slackSnsTopic = aws_sns_1.Topic.fromTopicArn(this, "SlackAlertTopic", slackTopicArn);
39
+ this.rule.addTarget(new aws_events_targets_1.SnsTopic(slackSnsTopic, {
40
+ message: aws_events_1.RuleTargetInput.fromObject({
41
+ version: "1.0",
42
+ source: "custom",
43
+ content: {
44
+ textType: "client-markdown",
45
+ title: props.title,
46
+ description: [
47
+ props.includeConsoleLink
48
+ ? `<https://console.aws.amazon.com/states/home?#/v2/executions/details/${aws_events_1.EventField.fromPath("$.detail.executionArn")}|View in Console>\n`
49
+ : "",
50
+ ...props.message,
51
+ ].join("\n"),
52
+ },
53
+ }),
54
+ }));
55
+ }
56
+ }
57
+ exports.SfnSlackNotification = SfnSlackNotification;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZuLXNsYWNrLW5vdGlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNmbi1zbGFjay1ub3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVEQUtnQztBQUNoQyxpREFBNEM7QUFDNUMsaURBQXNEO0FBRXRELDJDQUF1QztBQUN2QyxxQ0FBZ0Q7QUFDaEQsdUVBQTBEO0FBRTFELElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUN4QixxQ0FBbUIsQ0FBQTtJQUNuQix5Q0FBdUIsQ0FBQTtJQUN2QixtQ0FBaUIsQ0FBQTtJQUNqQix5Q0FBdUIsQ0FBQTtJQUN2QixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcsY0FBYyw4QkFBZCxjQUFjLFFBTXpCO0FBK0RELE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7O0lBQ2pDLElBQUksQ0FBTztJQUMzQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3JELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUscURBQXFEO1lBQ2xFLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2dCQUN0RCxNQUFNLEVBQUU7b0JBQ04sZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7b0JBQ3JELE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVztpQkFDMUI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILDZDQUE2QztRQUM3QyxNQUFNLGFBQWEsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUMzRCxJQUFJLEVBQ0osNkJBQW9CLENBQ3JCLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxlQUFLLENBQUMsWUFBWSxDQUN0QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGFBQWEsQ0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ2pCLElBQUksNkJBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDMUIsT0FBTyxFQUFFLDRCQUFlLENBQUMsVUFBVSxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztvQkFDbEIsV0FBVyxFQUFFO3dCQUNYLEtBQUssQ0FBQyxrQkFBa0I7NEJBQ3RCLENBQUMsQ0FBQyx1RUFBdUUsdUJBQVUsQ0FBQyxRQUFRLENBQ3hGLHVCQUF1QixDQUN4QixxQkFBcUI7NEJBQ3hCLENBQUMsQ0FBQyxFQUFFO3dCQUNOLEdBQUcsS0FBSyxDQUFDLE9BQU87cUJBQ2pCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDYjthQUNGLENBQUM7U0FDSCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O0FBakRILG9EQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV2ZW50RmllbGQsXG4gIElFdmVudEJ1cyxcbiAgUnVsZSxcbiAgUnVsZVRhcmdldElucHV0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHsgVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNuc1wiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTTlNfQUxFUlRTX1RPUElDX0FSTiB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU25zVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCI7XG5cbmV4cG9ydCBlbnVtIFNmbkV2ZW50U3RhdHVzIHtcbiAgUlVOTklORyA9IFwiUlVOTklOR1wiLFxuICBTVUNDRUVERUQgPSBcIlNVQ0NFRURFRFwiLFxuICBGQUlMRUQgPSBcIkZBSUxFRFwiLFxuICBUSU1FRF9PVVQgPSBcIlRJTUVEX09VVFwiLFxuICBBQk9SVEVEID0gXCJBQk9SVEVEXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ZuU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RlcCBmdW5jdGlvbiBzdGF0ZSBtYWNoaW5lIHRvIGxpc3RlbiB0by5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZTogSVN0YXRlTWFjaGluZTtcbiAgLyoqXG4gICAqIFRoZSBldmVudCBzdGF0dXNlcyB0byBsaXN0ZW4gZm9yLlxuICAgKlxuICAgKiAgRGVmYXVsdDogVGhlIGRlZmF1bHQgQVdTIGV2ZW50IGJ1c1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM/OiBJRXZlbnRCdXM7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgc3RhdHVzZXMgdG8gbGlzdGVuIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50U3RhdHVzOiBTZm5FdmVudFN0YXR1c1tdO1xuICAvKipcbiAgICogVGhlIHRpdGxlIGZvciB0aGUgU2xhY2sgbm90aWZpY2F0aW9uLlxuICAgKlxuICAgKiBDYW4gaW5jbHVkZSBkeW5hbWljIGNvbnRlbnQgZnJvbSB0aGUgZXZlbnQgcGF5bG9hZCB1c2luZyBKU09OUGF0aCBleHByZXNzaW9ucy5cbiAgICogVG8gcmVmZXJlbmNlIGV2ZW50IGZpZWxkcywgeW91IG11c3QgdXNlIGBFdmVudEZpZWxkLmZyb21QYXRoYCwgZS5nLixcbiAgICogYEpvYi1hbHBoYTogJHtFdmVudEZpZWxkLmZyb21QYXRoKFwiJC5kZXRhaWwuaW5wdXQuZGVzdGluYXRpb25JZFwiKX1gLlxuICAgKiBUaGUgYEV2ZW50RmllbGRgIGltcG9ydCBpcyByZXF1aXJlZCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtZXZlbnRzYC5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGV0YWlsZWQgbWVzc2FnZSBjb250ZW50IGZvciB0aGUgU2xhY2sgbm90aWZpY2F0aW9uLlxuICAgKlxuICAgKiBFYWNoIGFycmF5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlcGFyYXRlIGxpbmUgaW4gdGhlIG1lc3NhZ2UuXG4gICAqIFN1cHBvcnRzIFNsYWNrJ3MgbWVzc2FnZSBmb3JtYXR0aW5nIHN5bnRheDpcbiAgICogaHR0cHM6Ly9hcGkuc2xhY2suY29tL3JlZmVyZW5jZS9zdXJmYWNlcy9mb3JtYXR0aW5nXG4gICAqXG4gICAqICoqRHluYW1pYyBDb250ZW50OioqXG4gICAqIFRvIGluY2x1ZGUgZHluYW1pYyBldmVudCBkYXRhLCBlbWJlZCBKU09OUGF0aCBleHByZXNzaW9ucyBpbiBzdHJpbmdzIHVzaW5nIGBFdmVudEZpZWxkLmZyb21QYXRoYC5cbiAgICogRm9yIGV4YW1wbGUsIGBFdmVudEZpZWxkLmZyb21QYXRoKFwiJC5kZXRhaWwuZXhlY3V0aW9uQXJuXCIpYCByZWZlcmVuY2VzIHRoZSBgZXhlY3V0aW9uQXJuYCBmaWVsZCBmcm9tIHRoZSBldmVudCBwYXlsb2FkLlxuICAgKiBUaGUgYEV2ZW50RmllbGRgIGlzIGltcG9ydGVkIGZyb20gYGF3cy1jZGstbGliL2F3cy1ldmVudHNgLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG1lc3NhZ2U6IFtcbiAgICogICBcIipFeGVjdXRpb24gRGV0YWlsczoqXCIsXG4gICAqICAgYOKAoiBBUk46ICR7RXZlbnRGaWVsZC5mcm9tUGF0aChcIiQuZGV0YWlsLmV4ZWN1dGlvbkFyblwiKX1gLFxuICAgKiAgIGDigKIgU3RhdHVzOiAke0V2ZW50RmllbGQuZnJvbVBhdGgoXCIkLmRldGFpbC5zdGF0dXNcIil9YCxcbiAgICogICBcIlwiLFxuICAgKiBdXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgYSBsaW5rIHRvIHRoZSBTdGVwIEZ1bmN0aW9uIGV4ZWN1dGlvbiBpbiB0aGUgQVdTIENvbnNvbGUuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgYWRkcyBhIGNsaWNrYWJsZSBjb25zb2xlIGxpbmsgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU2xhY2sgbWVzc2FnZS5cbiAgICogVGhlIGxpbmsgaXMgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGV4ZWN1dGlvbiBBUk4gZnJvbSB0aGUgZXZlbnQgcGF5bG9hZC5cbiAgICpcbiAgICogUmVmOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNzYwMDg4MDVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDb25zb2xlTGluaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTZm5TbGFja05vdGlmaWNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBydWxlOiBSdWxlO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2ZuU2xhY2tOb3RpZmljYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJ1bGUgPSBuZXcgUnVsZSh0aGlzLCBcIlNmblNsYWNrTm90aWZpY2F0aW9uUnVsZVwiLCB7XG4gICAgICBldmVudEJ1czogcHJvcHMuZXZlbnRCdXMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNsYWNrIG5vdGlmaWNhdGlvbiBmb3IgU3RlcCBGdW5jdGlvbiBzdGF0ZSBtYWNoaW5lIGAsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbXCJhd3Muc3RhdGVzXCJdLFxuICAgICAgICBkZXRhaWxUeXBlOiBbXCJTdGVwIEZ1bmN0aW9ucyBFeGVjdXRpb24gU3RhdHVzIENoYW5nZVwiXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgc3RhdGVNYWNoaW5lQXJuOiBbcHJvcHMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybl0sXG4gICAgICAgICAgc3RhdHVzOiBwcm9wcy5ldmVudFN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBnZXQgU05TIHRvcGljIEFSTiBmcm9tIFNTTSBQYXJhbWV0ZXIgU3RvcmVcbiAgICBjb25zdCBzbGFja1RvcGljQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFNOU19BTEVSVFNfVE9QSUNfQVJOLFxuICAgICk7XG5cbiAgICBjb25zdCBzbGFja1Nuc1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgdGhpcyxcbiAgICAgIFwiU2xhY2tBbGVydFRvcGljXCIsXG4gICAgICBzbGFja1RvcGljQXJuLFxuICAgICk7XG4gICAgdGhpcy5ydWxlLmFkZFRhcmdldChcbiAgICAgIG5ldyBTbnNUb3BpYyhzbGFja1Nuc1RvcGljLCB7XG4gICAgICAgIG1lc3NhZ2U6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICB2ZXJzaW9uOiBcIjEuMFwiLFxuICAgICAgICAgIHNvdXJjZTogXCJjdXN0b21cIixcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0ZXh0VHlwZTogXCJjbGllbnQtbWFya2Rvd25cIixcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICAgIHByb3BzLmluY2x1ZGVDb25zb2xlTGlua1xuICAgICAgICAgICAgICAgID8gYDxodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vc3RhdGVzL2hvbWU/Iy92Mi9leGVjdXRpb25zL2RldGFpbHMvJHtFdmVudEZpZWxkLmZyb21QYXRoKFxuICAgICAgICAgICAgICAgICAgICBcIiQuZGV0YWlsLmV4ZWN1dGlvbkFyblwiLFxuICAgICAgICAgICAgICAgICAgKX18VmlldyBpbiBDb25zb2xlPlxcbmBcbiAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgIC4uLnByb3BzLm1lc3NhZ2UsXG4gICAgICAgICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
package/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export * as provider from "./provider-function";
8
8
  export * as namedLambdaRole from "./named-lambda-role";
9
9
  export * as sharedConfig from "./shared-config";
10
10
  export * as monitoredQueue from "./monitored-queue";
11
+ export * as eventbridgeRule from "./eventbridge-rules";
package/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.monitoredQueue = exports.sharedConfig = exports.namedLambdaRole = exports.provider = exports.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
36
+ exports.eventbridgeRule = exports.monitoredQueue = exports.sharedConfig = exports.namedLambdaRole = exports.provider = exports.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
37
37
  // Get stage name
38
38
  exports.utils = __importStar(require("./utils"));
39
39
  // Deployment pipeline constructs
@@ -50,4 +50,5 @@ exports.provider = __importStar(require("./provider-function"));
50
50
  exports.namedLambdaRole = __importStar(require("./named-lambda-role"));
51
51
  exports.sharedConfig = __importStar(require("./shared-config"));
52
52
  exports.monitoredQueue = __importStar(require("./monitored-queue"));
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZXQgc3RhZ2UgbmFtZVxuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vdXRpbHNcIjtcblxuLy8gRGVwbG95bWVudCBwaXBlbGluZSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkZXBsb3ltZW50UGlwZWxpbmUgZnJvbSBcIi4vZGVwbG95bWVudC1zdGFjay1waXBlbGluZVwiO1xuXG4vLyBBcGkgR2F0ZXdheSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gXCIuL2FwaS1nYXRld2F5XCI7XG5cbi8vIER5bmFtb0RCIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCIuL2R5bmFtb2RiXCI7XG5cbi8vIEVDUyAvIEZhcmdhdGUgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZWNzIGZyb20gXCIuL2Vjc1wiO1xuXG4vLyBMYW1iZGEgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuL2xhbWJkYVwiO1xuXG5leHBvcnQgKiBhcyBwcm92aWRlciBmcm9tIFwiLi9wcm92aWRlci1mdW5jdGlvblwiO1xuZXhwb3J0ICogYXMgbmFtZWRMYW1iZGFSb2xlIGZyb20gXCIuL25hbWVkLWxhbWJkYS1yb2xlXCI7XG5leHBvcnQgKiBhcyBzaGFyZWRDb25maWcgZnJvbSBcIi4vc2hhcmVkLWNvbmZpZ1wiO1xuZXhwb3J0ICogYXMgbW9uaXRvcmVkUXVldWUgZnJvbSBcIi4vbW9uaXRvcmVkLXF1ZXVlXCI7XG4iXX0=
53
+ exports.eventbridgeRule = __importStar(require("./eventbridge-rules"));
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0Q7QUFDcEQsdUVBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2V0IHN0YWdlIG5hbWVcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vIERlcGxveW1lbnQgcGlwZWxpbmUgY29uc3RydWN0c1xuZXhwb3J0ICogYXMgZGVwbG95bWVudFBpcGVsaW5lIGZyb20gXCIuL2RlcGxveW1lbnQtc3RhY2stcGlwZWxpbmVcIjtcblxuLy8gQXBpIEdhdGV3YXkgY29uc3RydWN0c1xuZXhwb3J0ICogYXMgYXBpZ2F0ZXdheSBmcm9tIFwiLi9hcGktZ2F0ZXdheVwiO1xuXG4vLyBEeW5hbW9EQiBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tIFwiLi9keW5hbW9kYlwiO1xuXG4vLyBFQ1MgLyBGYXJnYXRlIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGVjcyBmcm9tIFwiLi9lY3NcIjtcblxuLy8gTGFtYmRhIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiLi9sYW1iZGFcIjtcblxuZXhwb3J0ICogYXMgcHJvdmlkZXIgZnJvbSBcIi4vcHJvdmlkZXItZnVuY3Rpb25cIjtcbmV4cG9ydCAqIGFzIG5hbWVkTGFtYmRhUm9sZSBmcm9tIFwiLi9uYW1lZC1sYW1iZGEtcm9sZVwiO1xuZXhwb3J0ICogYXMgc2hhcmVkQ29uZmlnIGZyb20gXCIuL3NoYXJlZC1jb25maWdcIjtcbmV4cG9ydCAqIGFzIG1vbml0b3JlZFF1ZXVlIGZyb20gXCIuL21vbml0b3JlZC1xdWV1ZVwiO1xuZXhwb3J0ICogYXMgZXZlbnRicmlkZ2VSdWxlIGZyb20gXCIuL2V2ZW50YnJpZGdlLXJ1bGVzXCI7XG4iXX0=
package/index.ts CHANGED
@@ -20,3 +20,4 @@ export * as provider from "./provider-function";
20
20
  export * as namedLambdaRole from "./named-lambda-role";
21
21
  export * as sharedConfig from "./shared-config";
22
22
  export * as monitoredQueue from "./monitored-queue";
23
+ export * as eventbridgeRule from "./eventbridge-rules";
package/lambda/index.js CHANGED
@@ -57,7 +57,7 @@ function getPythonUvDockerImage() {
57
57
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
58
58
  }
59
59
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
60
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.68" };
60
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.70" };
61
61
  // Class constructs, to be used for caching the layers
62
62
  // This means that if there are multiple lambdas throughout the stack
63
63
  // They will all use the same layer
@@ -15,7 +15,7 @@ repository = "https://github.com/orcabus/platform-cdk-constructs"
15
15
 
16
16
  [tool.poetry.dependencies]
17
17
  python = ">3.12,<3.15"
18
- wrapica = "2.38.0.dev20250818113956"
18
+ wrapica = "2.38.0.dev20250829090236"
19
19
 
20
20
  [tool.poetry.group.dev]
21
21
  optional = true
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
13
  * SNS topic.
14
14
  */
15
15
  class MonitoredQueue extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.68" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.70" };
17
17
  queue;
18
18
  deadLetterQueue;
19
19
  alarm;
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  * A construct which represents a named role that a Lambda function can assume.
8
8
  */
9
9
  class NamedLambdaRole extends aws_iam_1.Role {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.68" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.70" };
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id, {
13
13
  assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "0.0.68",
3
+ "version": "0.0.70",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -23,24 +23,24 @@
23
23
  "organization": true
24
24
  },
25
25
  "devDependencies": {
26
- "@aws-cdk/aws-lambda-python-alpha": "2.211.0-alpha.0",
26
+ "@aws-cdk/aws-lambda-python-alpha": "2.213.0-alpha.0",
27
27
  "@types/jest": "^29.5.14",
28
- "@types/node": "^22.17.2",
29
- "aws-cdk": "^2.1025.0",
30
- "cdk-nag": "^2.37.6",
31
- "aws-cdk-lib": "^2.211.0",
28
+ "@types/node": "^22.18.0",
29
+ "aws-cdk": "^2.1027.0",
30
+ "aws-cdk-lib": "2.213.0",
31
+ "cdk-nag": "^2.37.11",
32
32
  "constructs": "10.4.2",
33
33
  "jest": "^29.7.0",
34
34
  "jsii": "^5.9.3",
35
35
  "jsii-pacmak": "^1.113.0",
36
- "publib": "^0.2.1012",
36
+ "publib": "^0.2.1013",
37
37
  "ts-jest": "^29.4.1",
38
- "typedoc": "^0.28.10",
38
+ "typedoc": "^0.28.11",
39
39
  "typedoc-plugin-markdown": "^4.8.1"
40
40
  },
41
41
  "peerDependencies": {
42
- "@aws-cdk/aws-lambda-python-alpha": "^2.211.0-alpha.0",
43
- "aws-cdk-lib": "^2.211.0",
42
+ "@aws-cdk/aws-lambda-python-alpha": "^2.213.0-alpha.0",
43
+ "aws-cdk-lib": "^2.213.0",
44
44
  "constructs": "^10.4.2"
45
45
  },
46
46
  "stability": "experimental",
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
15
  * to the provider framework.
16
16
  */
17
17
  class ProviderFunction extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.68" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.70" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
23
23
  * Helper for looking up the shared OrcaBus VPC.
24
24
  */
25
25
  class OrcaBusVpc {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.68" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.70" };
27
27
  /**
28
28
  * The shared VPC that is used by OrcaBus.
29
29
  * @param scope
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
42
42
  * Helper for looking up the shared compute security group by name.
43
43
  */
44
44
  class OrcaBusSharedComputeSecurityGroup {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.68" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.70" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -1,16 +1,16 @@
1
1
  import { StageName } from "./accounts";
2
- /**
3
- * @deprecated Use PIPELINE_CACHE_BUCKET instead
4
- */
5
- export declare const pipelineCacheBucket: Record<StageName, string>;
6
2
  /**
7
3
  * The default S3 bucket names used for pipeline data.
8
4
  */
9
5
  export declare const PIPELINE_CACHE_BUCKET: Record<StageName, string>;
10
6
  /**
11
- * @deprecated Use PIPELINE_CACHE_PREFIX instead
7
+ * The reference data bucket
8
+ */
9
+ export declare const REFERENCE_DATA_BUCKET = "reference-data-503977275616-ap-southeast-2";
10
+ /**
11
+ * The test data bucket
12
12
  */
13
- export declare const pipelineCachePrefix: Record<StageName, string>;
13
+ export declare const TEST_DATA_BUCKET = "test-data-503977275616-ap-southeast-2";
14
14
  /**
15
15
  * The default S3 prefixes used for pipeline data.
16
16
  */
@@ -1,14 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PIPELINE_CACHE_PREFIX = exports.pipelineCachePrefix = exports.PIPELINE_CACHE_BUCKET = exports.pipelineCacheBucket = void 0;
4
- /**
5
- * @deprecated Use PIPELINE_CACHE_BUCKET instead
6
- */
7
- exports.pipelineCacheBucket = {
8
- BETA: "pipeline-dev-cache-503977275616-ap-southeast-2",
9
- GAMMA: "pipeline-stg-cache-503977275616-ap-southeast-2",
10
- PROD: "pipeline-prod-cache-503977275616-ap-southeast-2",
11
- };
3
+ exports.PIPELINE_CACHE_PREFIX = exports.TEST_DATA_BUCKET = exports.REFERENCE_DATA_BUCKET = exports.PIPELINE_CACHE_BUCKET = void 0;
12
4
  /**
13
5
  * The default S3 bucket names used for pipeline data.
14
6
  */
@@ -18,13 +10,13 @@ exports.PIPELINE_CACHE_BUCKET = {
18
10
  PROD: "pipeline-prod-cache-503977275616-ap-southeast-2",
19
11
  };
20
12
  /**
21
- * @deprecated Use PIPELINE_CACHE_PREFIX instead
13
+ * The reference data bucket
22
14
  */
23
- exports.pipelineCachePrefix = {
24
- BETA: "byob-icav2/development/",
25
- GAMMA: "byob-icav2/staging/",
26
- PROD: "byob-icav2/production/",
27
- };
15
+ exports.REFERENCE_DATA_BUCKET = "reference-data-503977275616-ap-southeast-2";
16
+ /**
17
+ * The test data bucket
18
+ */
19
+ exports.TEST_DATA_BUCKET = "test-data-503977275616-ap-southeast-2";
28
20
  /**
29
21
  * The default S3 prefixes used for pipeline data.
30
22
  */
@@ -33,4 +25,4 @@ exports.PIPELINE_CACHE_PREFIX = {
33
25
  GAMMA: "byob-icav2/staging/",
34
26
  PROD: "byob-icav2/production/",
35
27
  };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQThCO0lBQzVELElBQUksRUFBRSxnREFBZ0Q7SUFDdEQsS0FBSyxFQUFFLGdEQUFnRDtJQUN2RCxJQUFJLEVBQUUsaURBQWlEO0NBQ3hELENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQThCO0lBQzlELElBQUksRUFBRSxnREFBZ0Q7SUFDdEQsS0FBSyxFQUFFLGdEQUFnRDtJQUN2RCxJQUFJLEVBQUUsaURBQWlEO0NBQ3hELENBQUE7QUFFRDs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQThCO0lBQzVELElBQUksRUFBRSx5QkFBeUI7SUFDL0IsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixJQUFJLEVBQUUsd0JBQXdCO0NBQy9CLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQThCO0lBQzlELElBQUksRUFBRSx5QkFBeUI7SUFDL0IsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixJQUFJLEVBQUUsd0JBQXdCO0NBQy9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0YWdlTmFtZX0gZnJvbSBcIi4vYWNjb3VudHNcIjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUElQRUxJTkVfQ0FDSEVfQlVDS0VUIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lQ2FjaGVCdWNrZXQ6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiLFxuICBHQU1NQTogXCJwaXBlbGluZS1zdGctY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gIFBST0Q6IFwicGlwZWxpbmUtcHJvZC1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIixcbn07XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgUzMgYnVja2V0IG5hbWVzIHVzZWQgZm9yIHBpcGVsaW5lIGRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBQSVBFTElORV9DQUNIRV9CVUNLRVQ6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiLFxuICBHQU1NQTogXCJwaXBlbGluZS1zdGctY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gIFBST0Q6IFwicGlwZWxpbmUtcHJvZC1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIixcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUElQRUxJTkVfQ0FDSEVfUFJFRklYIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lQ2FjaGVQcmVmaXg6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwiYnlvYi1pY2F2Mi9kZXZlbG9wbWVudC9cIixcbiAgR0FNTUE6IFwiYnlvYi1pY2F2Mi9zdGFnaW5nL1wiLFxuICBQUk9EOiBcImJ5b2ItaWNhdjIvcHJvZHVjdGlvbi9cIixcbn07XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgUzMgcHJlZml4ZXMgdXNlZCBmb3IgcGlwZWxpbmUgZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBJUEVMSU5FX0NBQ0hFX1BSRUZJWDogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogXCJieW9iLWljYXYyL2RldmVsb3BtZW50L1wiLFxuICBHQU1NQTogXCJieW9iLWljYXYyL3N0YWdpbmcvXCIsXG4gIFBST0Q6IFwiYnlvYi1pY2F2Mi9wcm9kdWN0aW9uL1wiLFxufVxuXG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQThCO0lBQzlELElBQUksRUFBRSxnREFBZ0Q7SUFDdEQsS0FBSyxFQUFFLGdEQUFnRDtJQUN2RCxJQUFJLEVBQUUsaURBQWlEO0NBQ3hELENBQUE7QUFFRDs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsNENBQTRDLENBQUE7QUFFakY7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHLHVDQUF1QyxDQUFBO0FBRXZFOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBOEI7SUFDOUQsSUFBSSxFQUFFLHlCQUF5QjtJQUMvQixLQUFLLEVBQUUscUJBQXFCO0lBQzVCLElBQUksRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RhZ2VOYW1lfSBmcm9tIFwiLi9hY2NvdW50c1wiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IFMzIGJ1Y2tldCBuYW1lcyB1c2VkIGZvciBwaXBlbGluZSBkYXRhLlxuICovXG5leHBvcnQgY29uc3QgUElQRUxJTkVfQ0FDSEVfQlVDS0VUOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiBcInBpcGVsaW5lLWRldi1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIixcbiAgR0FNTUE6IFwicGlwZWxpbmUtc3RnLWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiLFxuICBQUk9EOiBcInBpcGVsaW5lLXByb2QtY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG59XG5cbi8qKlxuICogVGhlIHJlZmVyZW5jZSBkYXRhIGJ1Y2tldFxuICovXG5leHBvcnQgY29uc3QgUkVGRVJFTkNFX0RBVEFfQlVDS0VUID0gXCJyZWZlcmVuY2UtZGF0YS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIlxuXG4vKipcbiAqIFRoZSB0ZXN0IGRhdGEgYnVja2V0XG4gKi9cbmV4cG9ydCBjb25zdCBURVNUX0RBVEFfQlVDS0VUID0gXCJ0ZXN0LWRhdGEtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCJcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBTMyBwcmVmaXhlcyB1c2VkIGZvciBwaXBlbGluZSBkYXRhLlxuICovXG5leHBvcnQgY29uc3QgUElQRUxJTkVfQ0FDSEVfUFJFRklYOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiBcImJ5b2ItaWNhdjIvZGV2ZWxvcG1lbnQvXCIsXG4gIEdBTU1BOiBcImJ5b2ItaWNhdjIvc3RhZ2luZy9cIixcbiAgUFJPRDogXCJieW9iLWljYXYyL3Byb2R1Y3Rpb24vXCIsXG59XG5cbiJdfQ==
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
11
11
  * A helper class to construct the arn for the slack SNS topic.
12
12
  */
13
13
  class SlackAlerts {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.68" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.70" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack