@orcabus/platform-cdk-constructs 0.0.30 → 0.0.31

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
@@ -6158,7 +6158,7 @@
6158
6158
  "immutable": true,
6159
6159
  "locationInModule": {
6160
6160
  "filename": "monitored-queue/index.ts",
6161
- "line": 117
6161
+ "line": 120
6162
6162
  },
6163
6163
  "name": "queueArn",
6164
6164
  "type": {
@@ -6786,6 +6786,6 @@
6786
6786
  "symbolId": "shared-config/slack:SlackAlerts"
6787
6787
  }
6788
6788
  },
6789
- "version": "0.0.30",
6790
- "fingerprint": "5855WJdLa3OcuuRpGP6NZ+5ZyVEapVNinVPjXQVSrUU="
6789
+ "version": "0.0.31",
6790
+ "fingerprint": "aCIYm0L3iEOYjQiLW8vdliK7wu0CTi82ZuIeXc8j9P4="
6791
6791
  }
@@ -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.30" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.31" };
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.30" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.31" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -31,7 +31,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
31
31
  * before using this construct.
32
32
  */
33
33
  class DeploymentStackPipeline extends constructs_1.Construct {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.30" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.31" };
35
35
  /**
36
36
  * The code pipeline construct that is created.
37
37
  */
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.30" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.31" };
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.30" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.31" };
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.30" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.31" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  taskExecutionRole;
package/lambda/index.js CHANGED
@@ -56,7 +56,7 @@ function getPythonUvDockerImage() {
56
56
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
57
57
  }
58
58
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
59
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.30" };
59
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.31" };
60
60
  // Class constructs, to be used for caching the layers
61
61
  // This means that if there are multiple lambdas throughout the stack
62
62
  // They will all use the same layer
@@ -5,6 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const constructs_1 = require("constructs");
6
6
  const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
7
7
  const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
8
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
9
  const aws_sns_1 = require("aws-cdk-lib/aws-sns");
9
10
  const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
10
11
  /**
@@ -12,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
12
13
  * SNS topic.
13
14
  */
14
15
  class MonitoredQueue extends constructs_1.Construct {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.30" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.31" };
16
17
  queue;
17
18
  deadLetterQueue;
18
19
  alarm;
@@ -51,7 +52,10 @@ class MonitoredQueue extends constructs_1.Construct {
51
52
  alarmOldestMessage(queue, queueProps) {
52
53
  const seconds = queueProps?.alarmOldestMessageSeconds;
53
54
  if (seconds !== undefined) {
54
- new aws_cloudwatch_1.Alarm(this, `AlarmOldestMessage-${queue.queueName}`, {
55
+ const uniqueId = aws_cdk_lib_1.Names.uniqueResourceName(this, {
56
+ maxLength: 6,
57
+ });
58
+ new aws_cloudwatch_1.Alarm(this, `AlarmOldestMessage-${queueProps?.queueName}-${uniqueId}`, {
55
59
  metric: queue.metricApproximateAgeOfOldestMessage(),
56
60
  comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD,
57
61
  threshold: seconds,
@@ -69,4 +73,4 @@ class MonitoredQueue extends constructs_1.Construct {
69
73
  }
70
74
  }
71
75
  exports.MonitoredQueue = MonitoredQueue;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLGlEQUFrRDtBQUNsRCwrREFBdUU7QUFFdkUsaURBQTRDO0FBQzVDLCtFQUErRDtBQWdEL0Q7OztHQUdHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7O0lBQ2xDLEtBQUssQ0FBUTtJQUNiLGVBQWUsQ0FBUTtJQUN2QixLQUFLLENBQVE7SUFFdEIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsS0FBSyxDQUFDLFFBQVE7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNwQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUU7Z0JBQ2YsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQztnQkFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO2FBQzVCO1lBQ0QsR0FBRyxLQUFLLENBQUMsVUFBVTtTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHNCQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyx3Q0FBd0MsRUFBRTtZQUN2RSxrQkFBa0IsRUFBRSxtQ0FBa0IsQ0FBQyxzQkFBc0I7WUFDN0QsU0FBUyxFQUFFLENBQUM7WUFDWixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxRQUFRO1lBQzFDLGdCQUFnQixFQUFFLHNEQUFzRDtTQUN6RSxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsS0FBYSxFQUFFLFVBQXVCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSx5QkFBeUIsQ0FBQztRQUN0RCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLHNCQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3ZELE1BQU0sRUFBRSxLQUFLLENBQUMsbUNBQW1DLEVBQUU7Z0JBQ25ELGtCQUFrQixFQUFFLG1DQUFrQixDQUFDLHNCQUFzQjtnQkFDN0QsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLHVCQUF1QjtnQkFDcEQsZ0JBQWdCLEVBQUUsOENBQThDLE9BQU8sV0FBVzthQUNuRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDOztBQTdESCx3Q0E4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtJUXVldWUsIFF1ZXVlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgQWxhcm0sIENvbXBhcmlzb25PcGVyYXRvciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFRvcGljIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IFNuc0FjdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIG1vbml0b3JlZCBxdWV1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yZWRRdWV1ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wcyBmb3IgdGhlIG1haW4gU1FTIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcXVldWVQcm9wcz86IFF1ZXVlUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgcHJvcHMgZm9yIHRoZSBkZWFkLWxldHRlciBTUVMgcXVldWUgd2hlbiBhIG1lc3NhZ2UgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBkbHFQcm9wcz86IFF1ZXVlUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBtZXNzYWdlIGNhbiBiZSB1bnN1Y2Nlc3NmdWxseSByZWNlaXZlZCBiZWZvcmVcbiAgICogcHVzaGluZyBpdCB0byB0aGUgRExRLiBEZWZhdWx0cyB0byAzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UmVjZWl2ZUNvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogU2VuZCB0aGUgYWxhcm0gbm90aWZpY2F0aW9uIHRvIHRoZSBTTlMgdG9waWMgd2l0aCB0aGUgQVJOLlxuICAgKi9cbiAgcmVhZG9ubHkgc25zVG9waWNBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gU1FTIHF1ZXVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHF1ZXVlIHRvIGNvbnN0cnVjdC4gRGVmYXVsdHMgdG8gdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBxdWV1ZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3cgbG9uZyBtZXNzYWdlcyBzdGF5IGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblBlcmlvZD86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIHJlbW92YWwgcG9saWN5IG9mIHRoZSBxdWV1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuICAvKipcbiAgICogU2V0IGFuIGFsYXJtIHdoZW4gdGhlIGFnZSBvZiB0aGUgb2xkZXN0IG1lc3NhZ2UgaW4gdGhlIHF1ZXVlIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZC5cbiAgICogRGVmYXVsdHMgdG8gbm8gYWxhcm0gYmFzZWQgb24gdGhlIG9sZGVzdCBtZXNzYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1PbGRlc3RNZXNzYWdlU2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbnN0cnVjdCB0aGF0IGRlZmluZXMgYW4gU1FTIHF1ZXVlLCBhbG9uZyB3aXRoIGEgRExRIGFuZCBDbG91ZFdhdGNoIGFsYXJtcyB0aGF0IGNhbiBub3RpZnkgYW5cbiAqIFNOUyB0b3BpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbml0b3JlZFF1ZXVlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgcXVldWU6IFF1ZXVlO1xuICByZWFkb25seSBkZWFkTGV0dGVyUXVldWU6IFF1ZXVlO1xuICByZWFkb25seSBhbGFybTogQWxhcm07XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1vbml0b3JlZFF1ZXVlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5kZWFkTGV0dGVyUXVldWUgPSBuZXcgUXVldWUodGhpcywgXCJEZWFkTGV0dGVyUXVldWVcIiwge1xuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIC4uLnByb3BzLmRscVByb3BzLFxuICAgIH0pO1xuICAgIHRoaXMuYWxhcm1PbGRlc3RNZXNzYWdlKHRoaXMuZGVhZExldHRlclF1ZXVlLCBwcm9wcy5kbHFQcm9wcyk7XG5cbiAgICB0aGlzLnF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsIFwiUXVldWVcIiwge1xuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIGRlYWRMZXR0ZXJRdWV1ZToge1xuICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IHByb3BzLm1heFJlY2VpdmVDb3VudCA/PyAzLFxuICAgICAgICBxdWV1ZTogdGhpcy5kZWFkTGV0dGVyUXVldWUsXG4gICAgICB9LFxuICAgICAgLi4ucHJvcHMucXVldWVQcm9wcyxcbiAgICB9KTtcbiAgICB0aGlzLmFsYXJtT2xkZXN0TWVzc2FnZSh0aGlzLnF1ZXVlLCBwcm9wcy5xdWV1ZVByb3BzKTtcblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgQWxhcm0odGhpcywgXCJBbGFybVwiLCB7XG4gICAgICBtZXRyaWM6IHRoaXMuZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5xdWV1ZS5xdWV1ZU5hbWV9LWFsYXJtYCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFwiQW4gZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQgaW4gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlLlwiLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnNuc1RvcGljQXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHRvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKHRoaXMsIFwiVG9waWNcIiwgcHJvcHMuc25zVG9waWNBcm4pO1xuICAgICAgdGhpcy5hbGFybS5hZGRBbGFybUFjdGlvbihuZXcgU25zQWN0aW9uKHRvcGljKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBhbGFybSBiYXNlZCBvbiB0aGUgb2xkZXN0IG1lc3NhZ2UgaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgYWxhcm1PbGRlc3RNZXNzYWdlKHF1ZXVlOiBJUXVldWUsIHF1ZXVlUHJvcHM/OiBRdWV1ZVByb3BzKSB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHF1ZXVlUHJvcHM/LmFsYXJtT2xkZXN0TWVzc2FnZVNlY29uZHM7XG4gICAgaWYgKHNlY29uZHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3IEFsYXJtKHRoaXMsIGBBbGFybU9sZGVzdE1lc3NhZ2UtJHtxdWV1ZS5xdWV1ZU5hbWV9YCwge1xuICAgICAgICBtZXRyaWM6IHF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKCksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIHRocmVzaG9sZDogc2Vjb25kcyxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgIGFsYXJtTmFtZTogYCR7cXVldWUucXVldWVOYW1lfS1vbGRlc3QtbWVzc2FnZS1hbGFybWAsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGBUaGUgYWdlIG9mIHRoZSBvbGRlc3QgbWVzc2FnZSBoYXMgZXhjZWVkZWQgJHtzZWNvbmRzfSBzZWNvbmRzLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTUVMgcXVldWUgQVJOLlxuICAgKi9cbiAgZ2V0IHF1ZXVlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUucXVldWVBcm47XG4gIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLGlEQUFrRDtBQUNsRCwrREFBdUU7QUFDdkUsNkNBQTJEO0FBQzNELGlEQUE0QztBQUM1QywrRUFBK0Q7QUFnRC9EOzs7R0FHRztBQUNILE1BQWEsY0FBZSxTQUFRLHNCQUFTOztJQUNsQyxLQUFLLENBQVE7SUFDYixlQUFlLENBQVE7SUFDdkIsS0FBSyxDQUFRO0lBRXRCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN4RCxVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHLEtBQUssQ0FBQyxRQUFRO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDcEMsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFO2dCQUNmLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUM7Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZTthQUM1QjtZQUNELEdBQUcsS0FBSyxDQUFDLFVBQVU7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxzQkFBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsd0NBQXdDLEVBQUU7WUFDdkUsa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsc0JBQXNCO1lBQzdELFNBQVMsRUFBRSxDQUFDO1lBQ1osaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsUUFBUTtZQUMxQyxnQkFBZ0IsRUFBRSxzREFBc0Q7U0FDekUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxrQ0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQixDQUFDLEtBQWEsRUFBRSxVQUF1QjtRQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUseUJBQXlCLENBQUM7UUFDdEQsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsbUJBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQzlDLFNBQVMsRUFBRSxDQUFDO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxzQkFBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsVUFBVSxFQUFFLFNBQVMsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDekUsTUFBTSxFQUFFLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRTtnQkFDbkQsa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsc0JBQXNCO2dCQUM3RCxTQUFTLEVBQUUsT0FBTztnQkFDbEIsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsdUJBQXVCO2dCQUNwRCxnQkFBZ0IsRUFBRSw4Q0FBOEMsT0FBTyxXQUFXO2FBQ25GLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7O0FBaEVILHdDQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lRdWV1ZSwgUXVldWV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3FzXCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQge0R1cmF0aW9uLCBOYW1lcywgUmVtb3ZhbFBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUb3BpYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc25zXCI7XG5pbXBvcnQgeyBTbnNBY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBtb25pdG9yZWQgcXVldWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmVkUXVldWVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcHMgZm9yIHRoZSBtYWluIFNRUyBxdWV1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlUHJvcHM/OiBRdWV1ZVByb3BzO1xuICAvKipcbiAgICogVGhlIHByb3BzIGZvciB0aGUgZGVhZC1sZXR0ZXIgU1FTIHF1ZXVlIHdoZW4gYSBtZXNzYWdlIGZhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGxxUHJvcHM/OiBRdWV1ZVByb3BzO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIGEgbWVzc2FnZSBjYW4gYmUgdW5zdWNjZXNzZnVsbHkgcmVjZWl2ZWQgYmVmb3JlXG4gICAqIHB1c2hpbmcgaXQgdG8gdGhlIERMUS4gRGVmYXVsdHMgdG8gMy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFJlY2VpdmVDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNlbmQgdGhlIGFsYXJtIG5vdGlmaWNhdGlvbiB0byB0aGUgU05TIHRvcGljIHdpdGggdGhlIEFSTi5cbiAgICovXG4gIHJlYWRvbmx5IHNuc1RvcGljQXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIFNRUyBxdWV1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBxdWV1ZSB0byBjb25zdHJ1Y3QuIERlZmF1bHRzIHRvIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcXVldWVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogSG93IGxvbmcgbWVzc2FnZXMgc3RheSBpbiB0aGUgcXVldWUuXG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb25QZXJpb2Q/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBvZiB0aGUgcXVldWUuXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbiAgLyoqXG4gICAqIFNldCBhbiBhbGFybSB3aGVuIHRoZSBhZ2Ugb2YgdGhlIG9sZGVzdCBtZXNzYWdlIGluIHRoZSBxdWV1ZSBleGNlZWRzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQuXG4gICAqIERlZmF1bHRzIHRvIG5vIGFsYXJtIGJhc2VkIG9uIHRoZSBvbGRlc3QgbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtT2xkZXN0TWVzc2FnZVNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIGFuIFNRUyBxdWV1ZSwgYWxvbmcgd2l0aCBhIERMUSBhbmQgQ2xvdWRXYXRjaCBhbGFybXMgdGhhdCBjYW4gbm90aWZ5IGFuXG4gKiBTTlMgdG9waWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yZWRRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBRdWV1ZTtcbiAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlOiBRdWV1ZTtcbiAgcmVhZG9ubHkgYWxhcm06IEFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNb25pdG9yZWRRdWV1ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsIFwiRGVhZExldHRlclF1ZXVlXCIsIHtcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICAuLi5wcm9wcy5kbHFQcm9wcyxcbiAgICB9KTtcbiAgICB0aGlzLmFsYXJtT2xkZXN0TWVzc2FnZSh0aGlzLmRlYWRMZXR0ZXJRdWV1ZSwgcHJvcHMuZGxxUHJvcHMpO1xuXG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCBcIlF1ZXVlXCIsIHtcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBkZWFkTGV0dGVyUXVldWU6IHtcbiAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiBwcm9wcy5tYXhSZWNlaXZlQ291bnQgPz8gMyxcbiAgICAgICAgcXVldWU6IHRoaXMuZGVhZExldHRlclF1ZXVlLFxuICAgICAgfSxcbiAgICAgIC4uLnByb3BzLnF1ZXVlUHJvcHMsXG4gICAgfSk7XG4gICAgdGhpcy5hbGFybU9sZGVzdE1lc3NhZ2UodGhpcy5xdWV1ZSwgcHJvcHMucXVldWVQcm9wcyk7XG5cbiAgICB0aGlzLmFsYXJtID0gbmV3IEFsYXJtKHRoaXMsIFwiQWxhcm1cIiwge1xuICAgICAgbWV0cmljOiB0aGlzLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKCksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICBhbGFybU5hbWU6IGAke3RoaXMucXVldWUucXVldWVOYW1lfS1hbGFybWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBcIkFuIGV2ZW50IGhhcyBiZWVuIHJlY2VpdmVkIGluIHRoZSBkZWFkIGxldHRlciBxdWV1ZS5cIixcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zbnNUb3BpY0FybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0b3BpYyA9IFRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCBcIlRvcGljXCIsIHByb3BzLnNuc1RvcGljQXJuKTtcbiAgICAgIHRoaXMuYWxhcm0uYWRkQWxhcm1BY3Rpb24obmV3IFNuc0FjdGlvbih0b3BpYykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gYWxhcm0gYmFzZWQgb24gdGhlIG9sZGVzdCBtZXNzYWdlIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIGFsYXJtT2xkZXN0TWVzc2FnZShxdWV1ZTogSVF1ZXVlLCBxdWV1ZVByb3BzPzogUXVldWVQcm9wcykge1xuICAgIGNvbnN0IHNlY29uZHMgPSBxdWV1ZVByb3BzPy5hbGFybU9sZGVzdE1lc3NhZ2VTZWNvbmRzO1xuICAgIGlmIChzZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHVuaXF1ZUlkID0gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgbWF4TGVuZ3RoOiA2LFxuICAgICAgfSk7XG4gICAgICBuZXcgQWxhcm0odGhpcywgYEFsYXJtT2xkZXN0TWVzc2FnZS0ke3F1ZXVlUHJvcHM/LnF1ZXVlTmFtZX0tJHt1bmlxdWVJZH1gLCB7XG4gICAgICAgIG1ldHJpYzogcXVldWUubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2UoKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgdGhyZXNob2xkOiBzZWNvbmRzLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtxdWV1ZS5xdWV1ZU5hbWV9LW9sZGVzdC1tZXNzYWdlLWFsYXJtYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFRoZSBhZ2Ugb2YgdGhlIG9sZGVzdCBtZXNzYWdlIGhhcyBleGNlZWRlZCAke3NlY29uZHN9IHNlY29uZHMuYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBBUk4uXG4gICAqL1xuICBnZXQgcXVldWVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZUFybjtcbiAgfVxufVxuIl19
@@ -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.30" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.31" };
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.30",
3
+ "version": "0.0.31",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -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.30" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.31" };
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.30" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.31" };
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.30" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.31" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -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.30" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.31" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack