@orcabus/platform-cdk-constructs 0.0.8 → 0.0.9

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
@@ -4058,6 +4058,43 @@
4058
4058
  },
4059
4059
  "symbolId": "lambda/index:"
4060
4060
  },
4061
+ "@orcabus/platform-cdk-constructs.namedLambdaRole": {
4062
+ "locationInModule": {
4063
+ "filename": "index.ts",
4064
+ "line": 20
4065
+ },
4066
+ "readme": {
4067
+ "markdown": "# NamedLambdaRole\n\nA construct for naming a role that is assumed by a Lambda function.\n\nUsage example:\n\n```ts\n// This uses `lambda.amazonaws.com' as the `assumedBy` service principal.\nnew NamedLambdaRole(this, id, {\n name: \"role-name\",\n maxSessionDuration: Duration.hours(12),\n});\n```\n"
4068
+ },
4069
+ "symbolId": "named-lambda-role/index:"
4070
+ },
4071
+ "@orcabus/platform-cdk-constructs.provider": {
4072
+ "locationInModule": {
4073
+ "filename": "index.ts",
4074
+ "line": 19
4075
+ },
4076
+ "readme": {
4077
+ "markdown": "# ProviderFunction\n\nThe provider function invokes the provider framework:\nhttps://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#provider-framework.\n\nThis is useful for initiating custom actions that should fail a CloudFormation stack if they do not succeed, such\nas migrating databases.\n\nUsage example:\n\n```ts\n// Create a Lambda function which should conform the to provider framework:\n// https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.Provider.html#example\nconst handler = new lambda.Function(this, \"Handler\", {\n runtime: lambda.Runtime.NODEJS_20_X,\n handler: \"index.handler\",\n code: lambda.Code.fromInline(`\n exports.handler = async (event, context) => {\n return {\n PhysicalResourceId: '1234',\n NoEcho: true,\n Data: {\n hello: 'world',\n },\n };\n };\n `),\n});\n\nconst vpc = Vpc.fromLookup(this, \"Vpc\", {\n vpcName: \"main-vpc\",\n tags: {\n Stack: \"networking\",\n },\n});\n\nnew ProviderFunction(this, \"ProviderFunction\", {\n vpc,\n function: handler,\n});\n```\n"
4078
+ },
4079
+ "symbolId": "provider-function/index:"
4080
+ },
4081
+ "@orcabus/platform-cdk-constructs.sharedConfig": {
4082
+ "locationInModule": {
4083
+ "filename": "index.ts",
4084
+ "line": 21
4085
+ },
4086
+ "readme": {
4087
+ "markdown": "### Shared config\n\nThis package contains the shared config like VPC settings, buckets, roles, etc used across OrcaBus microservices.\n"
4088
+ },
4089
+ "symbolId": "shared-config/index:"
4090
+ },
4091
+ "@orcabus/platform-cdk-constructs.sharedConfig.fileManager": {
4092
+ "locationInModule": {
4093
+ "filename": "shared-config/index.ts",
4094
+ "line": 1
4095
+ },
4096
+ "symbolId": "shared-config/file-manager:"
4097
+ },
4061
4098
  "@orcabus/platform-cdk-constructs.utils": {
4062
4099
  "locationInModule": {
4063
4100
  "filename": "index.ts",
@@ -5849,8 +5886,295 @@
5849
5886
  }
5850
5887
  ],
5851
5888
  "symbolId": "lambda/index:PythonUvFunctionProps"
5889
+ },
5890
+ "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole": {
5891
+ "assembly": "@orcabus/platform-cdk-constructs",
5892
+ "base": "aws-cdk-lib.aws_iam.Role",
5893
+ "docs": {
5894
+ "stability": "experimental",
5895
+ "summary": "A construct which represents a named role that a Lambda function can assume."
5896
+ },
5897
+ "fqn": "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole",
5898
+ "initializer": {
5899
+ "docs": {
5900
+ "stability": "experimental"
5901
+ },
5902
+ "locationInModule": {
5903
+ "filename": "named-lambda-role/index.ts",
5904
+ "line": 27
5905
+ },
5906
+ "parameters": [
5907
+ {
5908
+ "name": "scope",
5909
+ "type": {
5910
+ "fqn": "constructs.Construct"
5911
+ }
5912
+ },
5913
+ {
5914
+ "name": "id",
5915
+ "type": {
5916
+ "primitive": "string"
5917
+ }
5918
+ },
5919
+ {
5920
+ "name": "props",
5921
+ "optional": true,
5922
+ "type": {
5923
+ "fqn": "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRoleProps"
5924
+ }
5925
+ }
5926
+ ]
5927
+ },
5928
+ "kind": "class",
5929
+ "locationInModule": {
5930
+ "filename": "named-lambda-role/index.ts",
5931
+ "line": 26
5932
+ },
5933
+ "name": "NamedLambdaRole",
5934
+ "namespace": "namedLambdaRole",
5935
+ "symbolId": "named-lambda-role/index:NamedLambdaRole"
5936
+ },
5937
+ "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRoleProps": {
5938
+ "assembly": "@orcabus/platform-cdk-constructs",
5939
+ "datatype": true,
5940
+ "docs": {
5941
+ "stability": "experimental",
5942
+ "summary": "Props for the named lambda role construct."
5943
+ },
5944
+ "fqn": "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRoleProps",
5945
+ "kind": "interface",
5946
+ "locationInModule": {
5947
+ "filename": "named-lambda-role/index.ts",
5948
+ "line": 8
5949
+ },
5950
+ "name": "NamedLambdaRoleProps",
5951
+ "namespace": "namedLambdaRole",
5952
+ "properties": [
5953
+ {
5954
+ "abstract": true,
5955
+ "docs": {
5956
+ "stability": "experimental",
5957
+ "summary": "Description for the role."
5958
+ },
5959
+ "immutable": true,
5960
+ "locationInModule": {
5961
+ "filename": "named-lambda-role/index.ts",
5962
+ "line": 16
5963
+ },
5964
+ "name": "description",
5965
+ "optional": true,
5966
+ "type": {
5967
+ "primitive": "string"
5968
+ }
5969
+ },
5970
+ {
5971
+ "abstract": true,
5972
+ "docs": {
5973
+ "stability": "experimental",
5974
+ "summary": "Specify the maximum session duration."
5975
+ },
5976
+ "immutable": true,
5977
+ "locationInModule": {
5978
+ "filename": "named-lambda-role/index.ts",
5979
+ "line": 20
5980
+ },
5981
+ "name": "maxSessionDuration",
5982
+ "optional": true,
5983
+ "type": {
5984
+ "fqn": "aws-cdk-lib.Duration"
5985
+ }
5986
+ },
5987
+ {
5988
+ "abstract": true,
5989
+ "docs": {
5990
+ "stability": "experimental",
5991
+ "summary": "The name of the role, automatically generated if not specified."
5992
+ },
5993
+ "immutable": true,
5994
+ "locationInModule": {
5995
+ "filename": "named-lambda-role/index.ts",
5996
+ "line": 12
5997
+ },
5998
+ "name": "name",
5999
+ "optional": true,
6000
+ "type": {
6001
+ "primitive": "string"
6002
+ }
6003
+ }
6004
+ ],
6005
+ "symbolId": "named-lambda-role/index:NamedLambdaRoleProps"
6006
+ },
6007
+ "@orcabus/platform-cdk-constructs.provider.ProviderFunction": {
6008
+ "assembly": "@orcabus/platform-cdk-constructs",
6009
+ "base": "constructs.Construct",
6010
+ "docs": {
6011
+ "remarks": "This is useful for performing database actions such as migrations during CloudFormation stack creation, where CDK\ndeployment will fail if the function fails. To use this construct the Lambda function must return values according\nto the provider framework.",
6012
+ "stability": "experimental",
6013
+ "summary": "A construct for invoking a Lambda function using the CDK provider framework: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#provider-framework."
6014
+ },
6015
+ "fqn": "@orcabus/platform-cdk-constructs.provider.ProviderFunction",
6016
+ "initializer": {
6017
+ "docs": {
6018
+ "stability": "experimental"
6019
+ },
6020
+ "locationInModule": {
6021
+ "filename": "provider-function/index.ts",
6022
+ "line": 45
6023
+ },
6024
+ "parameters": [
6025
+ {
6026
+ "name": "scope",
6027
+ "type": {
6028
+ "fqn": "constructs.Construct"
6029
+ }
6030
+ },
6031
+ {
6032
+ "name": "id",
6033
+ "type": {
6034
+ "primitive": "string"
6035
+ }
6036
+ },
6037
+ {
6038
+ "name": "props",
6039
+ "type": {
6040
+ "fqn": "@orcabus/platform-cdk-constructs.provider.ProviderFunctionProps"
6041
+ }
6042
+ }
6043
+ ]
6044
+ },
6045
+ "kind": "class",
6046
+ "locationInModule": {
6047
+ "filename": "provider-function/index.ts",
6048
+ "line": 41
6049
+ },
6050
+ "name": "ProviderFunction",
6051
+ "namespace": "provider",
6052
+ "properties": [
6053
+ {
6054
+ "docs": {
6055
+ "stability": "experimental",
6056
+ "summary": "Get the function."
6057
+ },
6058
+ "immutable": true,
6059
+ "locationInModule": {
6060
+ "filename": "provider-function/index.ts",
6061
+ "line": 82
6062
+ },
6063
+ "name": "function",
6064
+ "type": {
6065
+ "fqn": "aws-cdk-lib.aws_lambda.IFunction"
6066
+ }
6067
+ },
6068
+ {
6069
+ "docs": {
6070
+ "stability": "experimental",
6071
+ "summary": "Get the response of the Lambda function."
6072
+ },
6073
+ "immutable": true,
6074
+ "locationInModule": {
6075
+ "filename": "provider-function/index.ts",
6076
+ "line": 75
6077
+ },
6078
+ "name": "response",
6079
+ "type": {
6080
+ "primitive": "string"
6081
+ }
6082
+ }
6083
+ ],
6084
+ "symbolId": "provider-function/index:ProviderFunction"
6085
+ },
6086
+ "@orcabus/platform-cdk-constructs.provider.ProviderFunctionProps": {
6087
+ "assembly": "@orcabus/platform-cdk-constructs",
6088
+ "datatype": true,
6089
+ "docs": {
6090
+ "stability": "experimental",
6091
+ "summary": "Props for the resource invoke construct."
6092
+ },
6093
+ "fqn": "@orcabus/platform-cdk-constructs.provider.ProviderFunctionProps",
6094
+ "kind": "interface",
6095
+ "locationInModule": {
6096
+ "filename": "provider-function/index.ts",
6097
+ "line": 11
6098
+ },
6099
+ "name": "ProviderFunctionProps",
6100
+ "namespace": "provider",
6101
+ "properties": [
6102
+ {
6103
+ "abstract": true,
6104
+ "docs": {
6105
+ "stability": "experimental",
6106
+ "summary": "The provider function."
6107
+ },
6108
+ "immutable": true,
6109
+ "locationInModule": {
6110
+ "filename": "provider-function/index.ts",
6111
+ "line": 19
6112
+ },
6113
+ "name": "function",
6114
+ "type": {
6115
+ "fqn": "aws-cdk-lib.aws_lambda.IFunction"
6116
+ }
6117
+ },
6118
+ {
6119
+ "abstract": true,
6120
+ "docs": {
6121
+ "stability": "experimental",
6122
+ "summary": "Vpc for the function."
6123
+ },
6124
+ "immutable": true,
6125
+ "locationInModule": {
6126
+ "filename": "provider-function/index.ts",
6127
+ "line": 15
6128
+ },
6129
+ "name": "vpc",
6130
+ "type": {
6131
+ "fqn": "aws-cdk-lib.aws_ec2.IVpc"
6132
+ }
6133
+ },
6134
+ {
6135
+ "abstract": true,
6136
+ "docs": {
6137
+ "remarks": "By default,\nthis is the s3Key of the Lambda code asset, which is derived from the asset hash. This is used to ensure that\nthe custom resource is updated whenever the Lambda function changes, so that the function gets called again.\nAdd a constant value here to override this behaviour.",
6138
+ "stability": "experimental",
6139
+ "summary": "An additional hash property that can be used to determine if the custom resource should be updated."
6140
+ },
6141
+ "immutable": true,
6142
+ "locationInModule": {
6143
+ "filename": "provider-function/index.ts",
6144
+ "line": 30
6145
+ },
6146
+ "name": "additionalHash",
6147
+ "optional": true,
6148
+ "type": {
6149
+ "primitive": "string"
6150
+ }
6151
+ },
6152
+ {
6153
+ "abstract": true,
6154
+ "docs": {
6155
+ "stability": "experimental",
6156
+ "summary": "Properties that get defined in the template and passed to the Lambda function via `ResourceProperties`."
6157
+ },
6158
+ "immutable": true,
6159
+ "locationInModule": {
6160
+ "filename": "provider-function/index.ts",
6161
+ "line": 23
6162
+ },
6163
+ "name": "resourceProperties",
6164
+ "optional": true,
6165
+ "type": {
6166
+ "collection": {
6167
+ "elementtype": {
6168
+ "primitive": "any"
6169
+ },
6170
+ "kind": "map"
6171
+ }
6172
+ }
6173
+ }
6174
+ ],
6175
+ "symbolId": "provider-function/index:ProviderFunctionProps"
5852
6176
  }
5853
6177
  },
5854
- "version": "0.0.8",
5855
- "fingerprint": "d/ZEmRuX4QHQ3RDvNPDTEiniAkOJZjLyhGKx3AgYtiI="
6178
+ "version": "0.0.9",
6179
+ "fingerprint": "o1jZ9I/TYPYCUQsSHvuMBS2Y/wJxsz8tnR6u6HAaYcg="
5856
6180
  }
@@ -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.8" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.9" };
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.8" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.9" };
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.8" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.9" };
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.8" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.9" };
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.8" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.9" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/index.js CHANGED
@@ -52,7 +52,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
52
52
  ['ARM64']: lambda.Architecture.ARM_64
53
53
  };
54
54
  class EcsFargateTaskConstruct extends constructs_1.Construct {
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.8" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.9" };
56
56
  cluster;
57
57
  taskDefinition;
58
58
  securityGroup;
package/index.d.ts CHANGED
@@ -4,3 +4,6 @@ export * as apigateway from "./api-gateway";
4
4
  export * as dynamodb from "./dynamodb";
5
5
  export * as ecs from "./ecs";
6
6
  export * as lambda from "./lambda";
7
+ export * as provider from "./provider-function";
8
+ export * as namedLambdaRole from "./named-lambda-role";
9
+ export * as sharedConfig from "./shared-config";
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.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
36
+ 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
@@ -46,4 +46,7 @@ exports.dynamodb = __importStar(require("./dynamodb"));
46
46
  exports.ecs = __importStar(require("./ecs"));
47
47
  // Lambda Constructs
48
48
  exports.lambda = __importStar(require("./lambda"));
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdldCBzdGFnZSBuYW1lXG5leHBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi91dGlsc1wiO1xuXG4vLyBEZXBsb3ltZW50IHBpcGVsaW5lIGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGRlcGxveW1lbnRQaXBlbGluZSBmcm9tIFwiLi9kZXBsb3ltZW50LXN0YWNrLXBpcGVsaW5lXCI7XG5cbi8vIEFwaSBHYXRld2F5IGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSBcIi4vYXBpLWdhdGV3YXlcIjtcblxuLy8gRHluYW1vREIgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZHluYW1vZGIgZnJvbSBcIi4vZHluYW1vZGJcIjtcblxuLy8gRUNTIC8gRmFyZ2F0ZSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBlY3MgZnJvbSBcIi4vZWNzXCI7XG5cbi8vIExhbWJkYSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcIi4vbGFtYmRhXCI7XG4iXX0=
49
+ exports.provider = __importStar(require("./provider-function"));
50
+ exports.namedLambdaRole = __importStar(require("./named-lambda-role"));
51
+ exports.sharedConfig = __importStar(require("./shared-config"));
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdldCBzdGFnZSBuYW1lXG5leHBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi91dGlsc1wiO1xuXG4vLyBEZXBsb3ltZW50IHBpcGVsaW5lIGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGRlcGxveW1lbnRQaXBlbGluZSBmcm9tIFwiLi9kZXBsb3ltZW50LXN0YWNrLXBpcGVsaW5lXCI7XG5cbi8vIEFwaSBHYXRld2F5IGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSBcIi4vYXBpLWdhdGV3YXlcIjtcblxuLy8gRHluYW1vREIgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZHluYW1vZGIgZnJvbSBcIi4vZHluYW1vZGJcIjtcblxuLy8gRUNTIC8gRmFyZ2F0ZSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBlY3MgZnJvbSBcIi4vZWNzXCI7XG5cbi8vIExhbWJkYSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcIi4vbGFtYmRhXCI7XG5cbmV4cG9ydCAqIGFzIHByb3ZpZGVyIGZyb20gXCIuL3Byb3ZpZGVyLWZ1bmN0aW9uXCI7XG5leHBvcnQgKiBhcyBuYW1lZExhbWJkYVJvbGUgZnJvbSBcIi4vbmFtZWQtbGFtYmRhLXJvbGVcIjtcbmV4cG9ydCAqIGFzIHNoYXJlZENvbmZpZyBmcm9tIFwiLi9zaGFyZWQtY29uZmlnXCI7XG4iXX0=
package/index.ts CHANGED
@@ -15,3 +15,7 @@ export * as ecs from "./ecs";
15
15
 
16
16
  // Lambda Constructs
17
17
  export * as lambda from "./lambda";
18
+
19
+ export * as provider from "./provider-function";
20
+ export * as namedLambdaRole from "./named-lambda-role";
21
+ export * as sharedConfig from "./shared-config";
package/jest.config.js ADDED
@@ -0,0 +1,6 @@
1
+ export const testEnvironment = 'node';
2
+ export const roots = ['<rootDir>/test'];
3
+ export const testMatch = ['**/*.test.ts'];
4
+ export const transform = {
5
+ '^.+\\.tsx?$': 'ts-jest',
6
+ };
package/lambda/index.js CHANGED
@@ -54,7 +54,7 @@ function getPythonUvDockerImage() {
54
54
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
55
55
  }
56
56
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
57
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.8" };
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.9" };
58
58
  // Class constructs, to be used for caching the layers
59
59
  // This means that if there are multiple lambdas throughout the stack
60
60
  // They will all use the same layer
@@ -0,0 +1,13 @@
1
+ # NamedLambdaRole
2
+
3
+ A construct for naming a role that is assumed by a Lambda function.
4
+
5
+ Usage example:
6
+
7
+ ```ts
8
+ // This uses `lambda.amazonaws.com' as the `assumedBy` service principal.
9
+ new NamedLambdaRole(this, id, {
10
+ name: "role-name",
11
+ maxSessionDuration: Duration.hours(12),
12
+ });
13
+ ```
@@ -0,0 +1,26 @@
1
+ import { Construct } from "constructs";
2
+ import { Role } from "aws-cdk-lib/aws-iam";
3
+ import { Duration } from "aws-cdk-lib";
4
+ /**
5
+ * Props for the named lambda role construct.
6
+ */
7
+ export interface NamedLambdaRoleProps {
8
+ /**
9
+ * The name of the role, automatically generated if not specified.
10
+ */
11
+ readonly name?: string;
12
+ /**
13
+ * Description for the role.
14
+ */
15
+ readonly description?: string;
16
+ /**
17
+ * Specify the maximum session duration.
18
+ */
19
+ readonly maxSessionDuration?: Duration;
20
+ }
21
+ /**
22
+ * A construct which represents a named role that a Lambda function can assume.
23
+ */
24
+ export declare class NamedLambdaRole extends Role {
25
+ constructor(scope: Construct, id: string, props?: NamedLambdaRoleProps);
26
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NamedLambdaRole = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
+ /**
7
+ * A construct which represents a named role that a Lambda function can assume.
8
+ */
9
+ class NamedLambdaRole extends aws_iam_1.Role {
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.9" };
11
+ constructor(scope, id, props) {
12
+ super(scope, id, {
13
+ assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
14
+ description: props?.description ?? "Lambda execution role",
15
+ roleName: props?.name,
16
+ maxSessionDuration: props?.maxSessionDuration,
17
+ });
18
+ }
19
+ }
20
+ exports.NamedLambdaRole = NamedLambdaRole;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsaURBQTZEO0FBcUI3RDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxjQUFJOztJQUN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksdUJBQXVCO1lBQzFELFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCO1NBQzlDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBUkgsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgbmFtZWQgbGFtYmRhIHJvbGUgY29uc3RydWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkTGFtYmRhUm9sZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByb2xlLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgcm9sZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgbWF4aW11bSBzZXNzaW9uIGR1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U2Vzc2lvbkR1cmF0aW9uPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3Qgd2hpY2ggcmVwcmVzZW50cyBhIG5hbWVkIHJvbGUgdGhhdCBhIExhbWJkYSBmdW5jdGlvbiBjYW4gYXNzdW1lLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRMYW1iZGFSb2xlIGV4dGVuZHMgUm9sZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogTmFtZWRMYW1iZGFSb2xlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8uZGVzY3JpcHRpb24gPz8gXCJMYW1iZGEgZXhlY3V0aW9uIHJvbGVcIixcbiAgICAgIHJvbGVOYW1lOiBwcm9wcz8ubmFtZSxcbiAgICAgIG1heFNlc3Npb25EdXJhdGlvbjogcHJvcHM/Lm1heFNlc3Npb25EdXJhdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -8,7 +8,8 @@
8
8
  "build": "jsii --tsconfig tsconfig.json --validate-tsconfig minimal",
9
9
  "build:watch": "jsii --watch",
10
10
  "package": "jsii-pacmak",
11
- "generate-docs": "typedoc --plugin typedoc-plugin-markdown --out ./docs"
11
+ "generate-docs": "typedoc --gitRevision main --plugin typedoc-plugin-markdown --out ./docs",
12
+ "test": "pnpm jest"
12
13
  },
13
14
  "keywords": [],
14
15
  "repository": {
@@ -31,7 +32,10 @@
31
32
  "jsii-pacmak": "^1.110.0",
32
33
  "publib": "^0.2.965",
33
34
  "typedoc": "^0.28.2",
34
- "typedoc-plugin-markdown": "^4.6.2"
35
+ "typedoc-plugin-markdown": "^4.6.2",
36
+ "@types/jest": "^29.5.14",
37
+ "jest": "^29.7.0",
38
+ "ts-jest": "^29.3.0"
35
39
  },
36
40
  "peerDependencies": {
37
41
  "aws-cdk-lib": "^2.195.0",
@@ -0,0 +1,41 @@
1
+ # ProviderFunction
2
+
3
+ The provider function invokes the provider framework:
4
+ https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#provider-framework.
5
+
6
+ This is useful for initiating custom actions that should fail a CloudFormation stack if they do not succeed, such
7
+ as migrating databases.
8
+
9
+ Usage example:
10
+
11
+ ```ts
12
+ // Create a Lambda function which should conform the to provider framework:
13
+ // https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.Provider.html#example
14
+ const handler = new lambda.Function(this, "Handler", {
15
+ runtime: lambda.Runtime.NODEJS_20_X,
16
+ handler: "index.handler",
17
+ code: lambda.Code.fromInline(`
18
+ exports.handler = async (event, context) => {
19
+ return {
20
+ PhysicalResourceId: '1234',
21
+ NoEcho: true,
22
+ Data: {
23
+ hello: 'world',
24
+ },
25
+ };
26
+ };
27
+ `),
28
+ });
29
+
30
+ const vpc = Vpc.fromLookup(this, "Vpc", {
31
+ vpcName: "main-vpc",
32
+ tags: {
33
+ Stack: "networking",
34
+ },
35
+ });
36
+
37
+ new ProviderFunction(this, "ProviderFunction", {
38
+ vpc,
39
+ function: handler,
40
+ });
41
+ ```
@@ -0,0 +1,48 @@
1
+ import { Construct } from "constructs";
2
+ import { IVpc } from "aws-cdk-lib/aws-ec2";
3
+ import { IFunction } from "aws-cdk-lib/aws-lambda";
4
+ /**
5
+ * Props for the resource invoke construct.
6
+ */
7
+ export interface ProviderFunctionProps {
8
+ /**
9
+ * Vpc for the function.
10
+ */
11
+ readonly vpc: IVpc;
12
+ /**
13
+ * The provider function.
14
+ */
15
+ readonly function: IFunction;
16
+ /**
17
+ * Properties that get defined in the template and passed to the Lambda function via `ResourceProperties`.
18
+ */
19
+ readonly resourceProperties?: Record<string, unknown>;
20
+ /**
21
+ * An additional hash property that can be used to determine if the custom resource should be updated. By default,
22
+ * this is the s3Key of the Lambda code asset, which is derived from the asset hash. This is used to ensure that
23
+ * the custom resource is updated whenever the Lambda function changes, so that the function gets called again.
24
+ * Add a constant value here to override this behaviour.
25
+ */
26
+ readonly additionalHash?: string;
27
+ }
28
+ /**
29
+ * A construct for invoking a Lambda function using the CDK provider framework:
30
+ * https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#provider-framework.
31
+ *
32
+ * This is useful for performing database actions such as migrations during CloudFormation stack creation, where CDK
33
+ * deployment will fail if the function fails. To use this construct the Lambda function must return values according
34
+ * to the provider framework.
35
+ */
36
+ export declare class ProviderFunction extends Construct {
37
+ private readonly _function;
38
+ private readonly _response;
39
+ constructor(scope: Construct, id: string, props: ProviderFunctionProps);
40
+ /**
41
+ * Get the response of the Lambda function.
42
+ */
43
+ get response(): string;
44
+ /**
45
+ * Get the function.
46
+ */
47
+ get function(): IFunction;
48
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderFunction = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const constructs_1 = require("constructs");
6
+ const custom_resources_1 = require("aws-cdk-lib/custom-resources");
7
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
8
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
9
+ /**
10
+ * A construct for invoking a Lambda function using the CDK provider framework:
11
+ * https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#provider-framework.
12
+ *
13
+ * This is useful for performing database actions such as migrations during CloudFormation stack creation, where CDK
14
+ * deployment will fail if the function fails. To use this construct the Lambda function must return values according
15
+ * to the provider framework.
16
+ */
17
+ class ProviderFunction extends constructs_1.Construct {
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.9" };
19
+ _function;
20
+ _response;
21
+ constructor(scope, id, props) {
22
+ super(scope, id);
23
+ this._function = props.function;
24
+ const provider = new custom_resources_1.Provider(this, "Provider", {
25
+ onEventHandler: props.function,
26
+ vpc: props.vpc,
27
+ vpcSubnets: { subnetType: aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS },
28
+ });
29
+ const customResource = new aws_cdk_lib_1.CustomResource(this, "CustomResource", {
30
+ serviceToken: provider.serviceToken,
31
+ properties: props.resourceProperties,
32
+ });
33
+ // Update the custom resource with an additional key.
34
+ customResource.node.defaultChild.addPropertyOverride("S3Key", props.additionalHash ??
35
+ this._function.node.defaultChild.code
36
+ .s3Key);
37
+ this._response = customResource.getAttString("Response");
38
+ }
39
+ /**
40
+ * Get the response of the Lambda function.
41
+ */
42
+ get response() {
43
+ return this._response;
44
+ }
45
+ /**
46
+ * Get the function.
47
+ */
48
+ get function() {
49
+ return this._function;
50
+ }
51
+ }
52
+ exports.ProviderFunction = ProviderFunction;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLG1FQUF3RDtBQUN4RCxpREFBdUQ7QUFFdkQsNkNBQTBEO0FBNEIxRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUzs7SUFDNUIsU0FBUyxDQUFZO0lBQ3JCLFNBQVMsQ0FBUztJQUVuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRWhDLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUM5QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsb0JBQVUsQ0FBQyxtQkFBbUIsRUFBRTtTQUMzRCxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ2hFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtTQUNyQyxDQUFDLENBQUM7UUFFSCxxREFBcUQ7UUFDcEQsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUE0QixDQUFDLG1CQUFtQixDQUNuRSxPQUFPLEVBQ1AsS0FBSyxDQUFDLGNBQWM7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBNEIsQ0FBQyxJQUFxQjtpQkFDckUsS0FBSyxDQUNYLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOztBQTNDSCw0Q0E0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgSVZwYywgU3VibmV0VHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiwgSUZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENmblJlc291cmNlLCBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IENvZGVQcm9wZXJ0eSA9IENmbkZ1bmN0aW9uLkNvZGVQcm9wZXJ0eTtcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIHJlc291cmNlIGludm9rZSBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJGdW5jdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFZwYyBmb3IgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgdGhhdCBnZXQgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGUgYW5kIHBhc3NlZCB0byB0aGUgTGFtYmRhIGZ1bmN0aW9uIHZpYSBgUmVzb3VyY2VQcm9wZXJ0aWVzYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKipcbiAgICogQW4gYWRkaXRpb25hbCBoYXNoIHByb3BlcnR5IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjdXN0b20gcmVzb3VyY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuIEJ5IGRlZmF1bHQsXG4gICAqIHRoaXMgaXMgdGhlIHMzS2V5IG9mIHRoZSBMYW1iZGEgY29kZSBhc3NldCwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBhc3NldCBoYXNoLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXRcbiAgICogdGhlIGN1c3RvbSByZXNvdXJjZSBpcyB1cGRhdGVkIHdoZW5ldmVyIHRoZSBMYW1iZGEgZnVuY3Rpb24gY2hhbmdlcywgc28gdGhhdCB0aGUgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYWdhaW4uXG4gICAqIEFkZCBhIGNvbnN0YW50IHZhbHVlIGhlcmUgdG8gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvdXIuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsSGFzaD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGNvbnN0cnVjdCBmb3IgaW52b2tpbmcgYSBMYW1iZGEgZnVuY3Rpb24gdXNpbmcgdGhlIENESyBwcm92aWRlciBmcmFtZXdvcms6XG4gKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmN1c3RvbV9yZXNvdXJjZXMtcmVhZG1lLmh0bWwjcHJvdmlkZXItZnJhbWV3b3JrLlxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBwZXJmb3JtaW5nIGRhdGFiYXNlIGFjdGlvbnMgc3VjaCBhcyBtaWdyYXRpb25zIGR1cmluZyBDbG91ZEZvcm1hdGlvbiBzdGFjayBjcmVhdGlvbiwgd2hlcmUgQ0RLXG4gKiBkZXBsb3ltZW50IHdpbGwgZmFpbCBpZiB0aGUgZnVuY3Rpb24gZmFpbHMuIFRvIHVzZSB0aGlzIGNvbnN0cnVjdCB0aGUgTGFtYmRhIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHZhbHVlcyBhY2NvcmRpbmdcbiAqIHRvIHRoZSBwcm92aWRlciBmcmFtZXdvcmsuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm92aWRlckZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnVuY3Rpb246IElGdW5jdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvdmlkZXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuX2Z1bmN0aW9uID0gcHJvcHMuZnVuY3Rpb247XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBwcm9wcy5mdW5jdGlvbixcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwiQ3VzdG9tUmVzb3VyY2VcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wcy5yZXNvdXJjZVByb3BlcnRpZXMsXG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGN1c3RvbSByZXNvdXJjZSB3aXRoIGFuIGFkZGl0aW9uYWwga2V5LlxuICAgIChjdXN0b21SZXNvdXJjZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5SZXNvdXJjZSkuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiUzNLZXlcIixcbiAgICAgIHByb3BzLmFkZGl0aW9uYWxIYXNoID8/XG4gICAgICAgICgodGhpcy5fZnVuY3Rpb24ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuRnVuY3Rpb24pLmNvZGUgYXMgQ29kZVByb3BlcnR5KVxuICAgICAgICAgIC5zM0tleSxcbiAgICApO1xuXG4gICAgdGhpcy5fcmVzcG9uc2UgPSBjdXN0b21SZXNvdXJjZS5nZXRBdHRTdHJpbmcoXCJSZXNwb25zZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc3BvbnNlIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBnZXQgcmVzcG9uc2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGdldCBmdW5jdGlvbigpOiBJRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbjtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ ### Shared config
2
+
3
+ This package contains the shared config like VPC settings, buckets, roles, etc used across OrcaBus microservices.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared config for the FileManager.
3
+ */
4
+ import { StageName } from "../utils/index";
5
+ export declare const fileManagerBuckets: Record<StageName, string[]>;
6
+ export declare const fileManagerCacheBuckets: Record<StageName, string[]>;
7
+ export declare const fileManagerPresignUserSecret = "orcabus/file-manager-presign-user";
8
+ export declare const accessKeySecretArn: Record<StageName, string>;
9
+ export declare const fileManagerIngestRoleName = "orcabus-file-manager-ingest-role";
10
+ export declare const fileManagerPresignUser = "orcabus-file-manager-presign-user";
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Shared config for the FileManager.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fileManagerPresignUser = exports.fileManagerIngestRoleName = exports.accessKeySecretArn = exports.fileManagerPresignUserSecret = exports.fileManagerCacheBuckets = exports.fileManagerBuckets = void 0;
7
+ const index_1 = require("../utils/index");
8
+ const deployment_stack_pipeline_1 = require("../deployment-stack-pipeline");
9
+ exports.fileManagerBuckets = {
10
+ ["BETA"]: [
11
+ "umccr-temp-dev",
12
+ `ntsm-fingerprints-${deployment_stack_pipeline_1.BETA_ENVIRONMENT.account}-ap-southeast-2`,
13
+ `data-sharing-artifacts-${deployment_stack_pipeline_1.BETA_ENVIRONMENT.account}-ap-southeast-2`,
14
+ "filemanager-inventory-test",
15
+ ],
16
+ ["GAMMA"]: [
17
+ "umccr-temp-stg",
18
+ `ntsm-fingerprints-${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.account}-ap-southeast-2`,
19
+ `data-sharing-artifacts-${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.account}-ap-southeast-2`,
20
+ ],
21
+ ["PROD"]: [
22
+ "org.umccr.data.oncoanalyser",
23
+ "archive-prod-analysis-503977275616-ap-southeast-2",
24
+ "archive-prod-fastq-503977275616-ap-southeast-2",
25
+ `ntsm-fingerprints-${deployment_stack_pipeline_1.PROD_ENVIRONMENT.account}-ap-southeast-2`,
26
+ `data-sharing-artifacts-${deployment_stack_pipeline_1.PROD_ENVIRONMENT.account}-ap-southeast-2`,
27
+ "pipeline-montauk-977251586657-ap-southeast-2",
28
+ ],
29
+ };
30
+ exports.fileManagerCacheBuckets = {
31
+ ["BETA"]: ["pipeline-dev-cache-503977275616-ap-southeast-2"],
32
+ ["GAMMA"]: ["pipeline-stg-cache-503977275616-ap-southeast-2"],
33
+ ["PROD"]: ["pipeline-prod-cache-503977275616-ap-southeast-2"],
34
+ };
35
+ exports.fileManagerPresignUserSecret = "orcabus/file-manager-presign-user"; // pragma: allowlist secret
36
+ exports.accessKeySecretArn = {
37
+ ["BETA"]: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.BETA_ENVIRONMENT.region}:${deployment_stack_pipeline_1.BETA_ENVIRONMENT.account}:secret:${exports.fileManagerPresignUserSecret}`,
38
+ ["GAMMA"]: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.region}:${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.account}:secret:${exports.fileManagerPresignUserSecret}`,
39
+ ["PROD"]: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.PROD_ENVIRONMENT.region}:${deployment_stack_pipeline_1.PROD_ENVIRONMENT.account}:secret:${exports.fileManagerPresignUserSecret}`,
40
+ };
41
+ exports.fileManagerIngestRoleName = "orcabus-file-manager-ingest-role";
42
+ (0, index_1.validateSecretName)(exports.fileManagerPresignUserSecret);
43
+ exports.fileManagerPresignUser = "orcabus-file-manager-presign-user"; // pragma: allowlist secret
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmlsZS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgsMENBQStEO0FBQy9ELDRFQUlzQztBQUV6QixRQUFBLGtCQUFrQixHQUFnQztJQUM3RCxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ1IsZ0JBQWdCO1FBQ2hCLHFCQUFxQiw0Q0FBZ0IsQ0FBQyxPQUFPLGlCQUFpQjtRQUM5RCwwQkFBMEIsNENBQWdCLENBQUMsT0FBTyxpQkFBaUI7UUFDbkUsNEJBQTRCO0tBQzdCO0lBQ0QsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNULGdCQUFnQjtRQUNoQixxQkFBcUIsNkNBQWlCLENBQUMsT0FBTyxpQkFBaUI7UUFDL0QsMEJBQTBCLDZDQUFpQixDQUFDLE9BQU8saUJBQWlCO0tBQ3JFO0lBQ0QsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNSLDZCQUE2QjtRQUM3QixtREFBbUQ7UUFDbkQsZ0RBQWdEO1FBQ2hELHFCQUFxQiw0Q0FBZ0IsQ0FBQyxPQUFPLGlCQUFpQjtRQUM5RCwwQkFBMEIsNENBQWdCLENBQUMsT0FBTyxpQkFBaUI7UUFDbkUsOENBQThDO0tBQy9DO0NBQ0YsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQWdDO0lBQ2xFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnREFBZ0QsQ0FBQztJQUM1RCxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsZ0RBQWdELENBQUM7SUFDN0QsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGlEQUFpRCxDQUFDO0NBQzlELENBQUM7QUFFVyxRQUFBLDRCQUE0QixHQUFHLG1DQUFtQyxDQUFDLENBQUMsMkJBQTJCO0FBQy9GLFFBQUEsa0JBQWtCLEdBQThCO0lBQzNELENBQUMsTUFBTSxDQUFDLEVBQUUsMEJBQTBCLDRDQUFnQixDQUFDLE1BQU0sSUFBSSw0Q0FBZ0IsQ0FBQyxPQUFPLFdBQVcsb0NBQTRCLEVBQUU7SUFDaEksQ0FBQyxPQUFPLENBQUMsRUFBRSwwQkFBMEIsNkNBQWlCLENBQUMsTUFBTSxJQUFJLDZDQUFpQixDQUFDLE9BQU8sV0FBVyxvQ0FBNEIsRUFBRTtJQUNuSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLDBCQUEwQiw0Q0FBZ0IsQ0FBQyxNQUFNLElBQUksNENBQWdCLENBQUMsT0FBTyxXQUFXLG9DQUE0QixFQUFFO0NBQ2pJLENBQUM7QUFFVyxRQUFBLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBQzVFLElBQUEsMEJBQWtCLEVBQUMsb0NBQTRCLENBQUMsQ0FBQztBQUVwQyxRQUFBLHNCQUFzQixHQUFHLG1DQUFtQyxDQUFDLENBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29uZmlnIGZvciB0aGUgRmlsZU1hbmFnZXIuXG4gKi9cblxuaW1wb3J0IHsgU3RhZ2VOYW1lLCB2YWxpZGF0ZVNlY3JldE5hbWUgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXhcIjtcbmltcG9ydCB7XG4gIEJFVEFfRU5WSVJPTk1FTlQsXG4gIEdBTU1BX0VOVklST05NRU5ULFxuICBQUk9EX0VOVklST05NRU5ULFxufSBmcm9tIFwiLi4vZGVwbG95bWVudC1zdGFjay1waXBlbGluZVwiO1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJCdWNrZXRzOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmdbXT4gPSB7XG4gIFtcIkJFVEFcIl06IFtcbiAgICBcInVtY2NyLXRlbXAtZGV2XCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7QkVUQV9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtCRVRBX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcImZpbGVtYW5hZ2VyLWludmVudG9yeS10ZXN0XCIsXG4gIF0sXG4gIFtcIkdBTU1BXCJdOiBbXG4gICAgXCJ1bWNjci10ZW1wLXN0Z1wiLFxuICAgIGBudHNtLWZpbmdlcnByaW50cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBgZGF0YS1zaGFyaW5nLWFydGlmYWN0cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgXSxcbiAgW1wiUFJPRFwiXTogW1xuICAgIFwib3JnLnVtY2NyLmRhdGEub25jb2FuYWx5c2VyXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtYW5hbHlzaXMtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtZmFzdHEtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7UFJPRF9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtQUk9EX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcInBpcGVsaW5lLW1vbnRhdWstOTc3MjUxNTg2NjU3LWFwLXNvdXRoZWFzdC0yXCIsXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJDYWNoZUJ1Y2tldHM6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZ1tdPiA9IHtcbiAgW1wiQkVUQVwiXTogW1wicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiXSxcbiAgW1wiR0FNTUFcIl06IFtcInBpcGVsaW5lLXN0Zy1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIl0sXG4gIFtcIlBST0RcIl06IFtcInBpcGVsaW5lLXByb2QtY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCJdLFxufTtcblxuZXhwb3J0IGNvbnN0IGZpbGVNYW5hZ2VyUHJlc2lnblVzZXJTZWNyZXQgPSBcIm9yY2FidXMvZmlsZS1tYW5hZ2VyLXByZXNpZ24tdXNlclwiOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbmV4cG9ydCBjb25zdCBhY2Nlc3NLZXlTZWNyZXRBcm46IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIFtcIkJFVEFcIl06IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7QkVUQV9FTlZJUk9OTUVOVC5yZWdpb259OiR7QkVUQV9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG4gIFtcIkdBTU1BXCJdOiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke0dBTU1BX0VOVklST05NRU5ULnJlZ2lvbn06JHtHQU1NQV9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG4gIFtcIlBST0RcIl06IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7UFJPRF9FTlZJUk9OTUVOVC5yZWdpb259OiR7UFJPRF9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG59O1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJJbmdlc3RSb2xlTmFtZSA9IFwib3JjYWJ1cy1maWxlLW1hbmFnZXItaW5nZXN0LXJvbGVcIjtcbnZhbGlkYXRlU2VjcmV0TmFtZShmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0KTtcblxuZXhwb3J0IGNvbnN0IGZpbGVNYW5hZ2VyUHJlc2lnblVzZXIgPSBcIm9yY2FidXMtZmlsZS1tYW5hZ2VyLXByZXNpZ24tdXNlclwiOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbiJdfQ==
@@ -0,0 +1 @@
1
+ export * as fileManager from "./file-manager";
@@ -0,0 +1,38 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.fileManager = void 0;
37
+ exports.fileManager = __importStar(require("./file-manager"));
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBmaWxlTWFuYWdlciBmcm9tIFwiLi9maWxlLW1hbmFnZXJcIjtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const cdk = __importStar(require("aws-cdk-lib"));
37
+ const assertions_1 = require("aws-cdk-lib/assertions");
38
+ const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
39
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
40
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
41
+ const index_1 = require("../provider-function/index");
42
+ let stack;
43
+ let vpc;
44
+ beforeEach(() => {
45
+ stack = new cdk.Stack();
46
+ vpc = new ec2.Vpc(stack, 'MockExistingVPC', {
47
+ subnetConfiguration: [
48
+ {
49
+ cidrMask: 24,
50
+ name: 'publicSubnet',
51
+ subnetType: ec2.SubnetType.PUBLIC,
52
+ },
53
+ {
54
+ cidrMask: 24,
55
+ name: 'privateWithEgressSubnet',
56
+ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
57
+ },
58
+ ],
59
+ });
60
+ });
61
+ function assert_common(template, key) {
62
+ // Contains the provider.
63
+ template.hasResourceProperties('AWS::Lambda::Function', {
64
+ Environment: {
65
+ Variables: {
66
+ USER_ON_EVENT_FUNCTION_ARN: {
67
+ 'Fn::GetAtt': [assertions_1.Match.stringLikeRegexp('TestFunction*'), 'Arn'],
68
+ },
69
+ },
70
+ },
71
+ });
72
+ // Contains the custom resource.
73
+ template.hasResourceProperties('AWS::CloudFormation::CustomResource', {
74
+ S3Key: key,
75
+ });
76
+ }
77
+ test('Test ProviderFunction', () => {
78
+ const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
79
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
80
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
81
+ handler: 'index.handler',
82
+ });
83
+ new index_1.ProviderFunction(stack, 'TestProviderFunction', {
84
+ function: testFunction,
85
+ vpc,
86
+ });
87
+ const template = assertions_1.Template.fromStack(stack);
88
+ assert_common(template, 'key');
89
+ });
90
+ test('Test ProviderFunction additionalHash', () => {
91
+ const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
92
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
93
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
94
+ handler: 'index.handler',
95
+ });
96
+ new index_1.ProviderFunction(stack, 'TestProviderFunction', {
97
+ function: testFunction,
98
+ vpc,
99
+ additionalHash: 'hash',
100
+ });
101
+ const template = assertions_1.Template.fromStack(stack);
102
+ assert_common(template, 'hash');
103
+ });
104
+ test('Test ProviderFunction properties', () => {
105
+ const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
106
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
107
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
108
+ handler: 'index.handler',
109
+ });
110
+ new index_1.ProviderFunction(stack, 'TestProviderFunction', {
111
+ function: testFunction,
112
+ vpc,
113
+ resourceProperties: { Property: 'value' },
114
+ });
115
+ const template = assertions_1.Template.fromStack(stack);
116
+ assert_common(template, 'key');
117
+ template.hasResourceProperties('AWS::CloudFormation::CustomResource', {
118
+ Property: 'value',
119
+ });
120
+ });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJGdW5jdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJvdmlkZXJGdW5jdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBQ25DLHVEQUF5RDtBQUN6RCx5REFBMkM7QUFDM0MsdURBQW1FO0FBQ25FLCtDQUE0QztBQUM1QyxzREFBNEQ7QUFFNUQsSUFBSSxLQUFnQixDQUFDO0FBQ3JCLElBQUksR0FBWSxDQUFDO0FBRWpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7UUFDMUMsbUJBQW1CLEVBQUU7WUFDbkI7Z0JBQ0UsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU07YUFDbEM7WUFDRDtnQkFDRSxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7YUFDL0M7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxhQUFhLENBQUMsUUFBa0IsRUFBRSxHQUFXO0lBQ3BELHlCQUF5QjtJQUN6QixRQUFRLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7UUFDdEQsV0FBVyxFQUFFO1lBQ1gsU0FBUyxFQUFFO2dCQUNULDBCQUEwQixFQUFFO29CQUMxQixZQUFZLEVBQUUsQ0FBQyxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQztpQkFDL0Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxxQ0FBcUMsRUFBRTtRQUNwRSxLQUFLLEVBQUUsR0FBRztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLElBQUkscUJBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO1FBQ3ZELElBQUksRUFBRSxJQUFJLG1CQUFNLENBQUMsSUFBSSxlQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNsRixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1FBQzVCLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksd0JBQWdCLENBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1FBQ2xELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLEdBQUc7S0FDSixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLHFCQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtRQUN2RCxJQUFJLEVBQUUsSUFBSSxtQkFBTSxDQUFDLElBQUksZUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEYsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztRQUM1QixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLHdCQUFnQixDQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtRQUNsRCxRQUFRLEVBQUUsWUFBWTtRQUN0QixHQUFHO1FBQ0gsY0FBYyxFQUFFLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7SUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDdkQsSUFBSSxFQUFFLElBQUksbUJBQU0sQ0FBQyxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7UUFDNUIsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSx3QkFBZ0IsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7UUFDbEQsUUFBUSxFQUFFLFlBQVk7UUFDdEIsR0FBRztRQUNILGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtLQUMxQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9CLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxxQ0FBcUMsRUFBRTtRQUNwRSxRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEZ1bmN0aW9uLCBSdW50aW1lLCBTM0NvZGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge1Byb3ZpZGVyRnVuY3Rpb259IGZyb20gXCIuLi9wcm92aWRlci1mdW5jdGlvbi9pbmRleFwiO1xuXG5sZXQgc3RhY2s6IGNkay5TdGFjaztcbmxldCB2cGM6IGVjMi5WcGM7XG5cbmJlZm9yZUVhY2goKCkgPT4ge1xuICBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgdnBjID0gbmV3IGVjMi5WcGMoc3RhY2ssICdNb2NrRXhpc3RpbmdWUEMnLCB7XG4gICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAge1xuICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgIG5hbWU6ICdwdWJsaWNTdWJuZXQnLFxuICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgIG5hbWU6ICdwcml2YXRlV2l0aEVncmVzc1N1Ym5ldCcsXG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIGFzc2VydF9jb21tb24odGVtcGxhdGU6IFRlbXBsYXRlLCBrZXk6IHN0cmluZykge1xuICAvLyBDb250YWlucyB0aGUgcHJvdmlkZXIuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgIEVudmlyb25tZW50OiB7XG4gICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgVVNFUl9PTl9FVkVOVF9GVU5DVElPTl9BUk46IHtcbiAgICAgICAgICAnRm46OkdldEF0dCc6IFtNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdUZXN0RnVuY3Rpb24qJyksICdBcm4nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gQ29udGFpbnMgdGhlIGN1c3RvbSByZXNvdXJjZS5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZScsIHtcbiAgICBTM0tleToga2V5LFxuICB9KTtcbn1cblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24oc3RhY2ssICdUZXN0RnVuY3Rpb24nLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShuZXcgQnVja2V0KHN0YWNrLCAnVGVzdEJ1Y2tldCcsIHsgYnVja2V0TmFtZTogJ2J1Y2tldCcgfSksICdrZXknKSxcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssICdUZXN0UHJvdmlkZXJGdW5jdGlvbicsIHtcbiAgICBmdW5jdGlvbjogdGVzdEZ1bmN0aW9uLFxuICAgIHZwYyxcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBhc3NlcnRfY29tbW9uKHRlbXBsYXRlLCAna2V5Jyk7XG59KTtcblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uIGFkZGl0aW9uYWxIYXNoJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24oc3RhY2ssICdUZXN0RnVuY3Rpb24nLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShuZXcgQnVja2V0KHN0YWNrLCAnVGVzdEJ1Y2tldCcsIHsgYnVja2V0TmFtZTogJ2J1Y2tldCcgfSksICdrZXknKSxcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssICdUZXN0UHJvdmlkZXJGdW5jdGlvbicsIHtcbiAgICBmdW5jdGlvbjogdGVzdEZ1bmN0aW9uLFxuICAgIHZwYyxcbiAgICBhZGRpdGlvbmFsSGFzaDogJ2hhc2gnLFxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIGFzc2VydF9jb21tb24odGVtcGxhdGUsICdoYXNoJyk7XG59KTtcblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbihzdGFjaywgJ1Rlc3RGdW5jdGlvbicsIHtcbiAgICBjb2RlOiBuZXcgUzNDb2RlKG5ldyBCdWNrZXQoc3RhY2ssICdUZXN0QnVja2V0JywgeyBidWNrZXROYW1lOiAnYnVja2V0JyB9KSwgJ2tleScpLFxuICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICB9KTtcblxuICBuZXcgUHJvdmlkZXJGdW5jdGlvbihzdGFjaywgJ1Rlc3RQcm92aWRlckZ1bmN0aW9uJywge1xuICAgIGZ1bmN0aW9uOiB0ZXN0RnVuY3Rpb24sXG4gICAgdnBjLFxuICAgIHJlc291cmNlUHJvcGVydGllczogeyBQcm9wZXJ0eTogJ3ZhbHVlJyB9LFxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIGFzc2VydF9jb21tb24odGVtcGxhdGUsICdrZXknKTtcblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlJywge1xuICAgIFByb3BlcnR5OiAndmFsdWUnLFxuICB9KTtcbn0pO1xuIl19
package/utils/index.d.ts CHANGED
@@ -1,5 +1,14 @@
1
1
  import { Construct } from "constructs";
2
+ import { SynthesisMessage } from 'aws-cdk-lib/cx-api';
2
3
  export type StageName = "BETA" | "GAMMA" | "PROD";
3
4
  export declare const region = "ap-southeast-2";
4
5
  export declare const accountIdAlias: Record<StageName, string>;
5
6
  export declare function resolveStageName(scope: Construct): StageName;
7
+ /**
8
+ * Stringify the message data.
9
+ */
10
+ export declare function synthesisMessageToString(sm: SynthesisMessage): string;
11
+ /**
12
+ * Validate the secret name so that it doesn't end with 6 characters and a hyphen.
13
+ */
14
+ export declare const validateSecretName: (secretName: string) => void;
package/utils/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.accountIdAlias = exports.region = void 0;
3
+ exports.validateSecretName = exports.accountIdAlias = exports.region = void 0;
4
4
  exports.resolveStageName = resolveStageName;
5
+ exports.synthesisMessageToString = synthesisMessageToString;
5
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
7
  exports.region = 'ap-southeast-2';
7
8
  exports.accountIdAlias = {
@@ -19,4 +20,21 @@ function resolveStageName(scope) {
19
20
  }
20
21
  return match[0];
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFjQSw0Q0FXQztBQXZCRCw2Q0FBa0M7QUFJckIsUUFBQSxNQUFNLEdBQUcsZ0JBQWdCLENBQUM7QUFFMUIsUUFBQSxjQUFjLEdBQThCO0lBQ3ZELElBQUksRUFBRSxjQUFjLEVBQUUsb0JBQW9CO0lBQzFDLEtBQUssRUFBRSxjQUFjLEVBQUUsZ0JBQWdCO0lBQ3ZDLElBQUksRUFBRSxjQUFjLEVBQUUsbUJBQW1CO0NBQzFDLENBQUM7QUFFRixTQUFnQixnQkFBZ0IsQ0FBQyxLQUFnQjtJQUM3QywrREFBK0Q7SUFDL0QsK0RBQStEO0lBQy9ELHFGQUFxRjtJQUNyRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRXBHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLDhCQUE4QixDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBYyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7U3RhY2t9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgdHlwZSBTdGFnZU5hbWUgPSBcIkJFVEFcIiB8IFwiR0FNTUFcIiB8IFwiUFJPRFwiO1xuXG5leHBvcnQgY29uc3QgcmVnaW9uID0gJ2FwLXNvdXRoZWFzdC0yJztcblxuZXhwb3J0IGNvbnN0IGFjY291bnRJZEFsaWFzOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiAnODQzNDA3OTE2NTcwJywgLy8gdW1jY3JfZGV2ZWxvcG1lbnRcbiAgR0FNTUE6ICc0NTU2MzQzNDU0NDYnLCAvLyB1bWNjcl9zdGFnaW5nXG4gIFBST0Q6ICc0NzIwNTc1MDM4MTQnLCAvLyB1bWNjcl9wcm9kdWN0aW9uXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlTmFtZShzY29wZTogQ29uc3RydWN0KTogU3RhZ2VOYW1lIHtcbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE3NTRcbiAgICAvLyBVc2UgU3RhY2sub2Yoc2NvcGUpLmFjY291bnQgdG8gZ2V0IHRoZSBhY2NvdW50IElEIGluc3RlYWQgb2ZcbiAgICAvLyBjZGsuQXdzLkFDQ09VTlRfSUQsIHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIENESyBsaWZlY3ljbGUuXG4gICAgY29uc3QgbWF0Y2ggPSBPYmplY3QuZW50cmllcyhhY2NvdW50SWRBbGlhcykuZmluZCgoW18sIHZhbHVlXSkgPT4gdmFsdWUgPT09IFN0YWNrLm9mKHNjb3BlKS5hY2NvdW50KVxuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjY291bnQgSUQgJHtTdGFjay5vZihzY29wZSkuYWNjb3VudH0gbm90IGZvdW5kIGluIGFjY291bnRJZEFsaWFzYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoWzBdIGFzIFN0YWdlTmFtZTtcbn0iXX0=
23
+ /**
24
+ * Stringify the message data.
25
+ */
26
+ function synthesisMessageToString(sm) {
27
+ return `${JSON.stringify(sm.entry.data)} [${sm.id}]`;
28
+ }
29
+ /**
30
+ * Validate the secret name so that it doesn't end with 6 characters and a hyphen.
31
+ */
32
+ const validateSecretName = (secretName) => {
33
+ // Note, this should not end with a hyphen and 6 characters, otherwise secrets manager won't be
34
+ // able to find the secret using a partial ARN.
35
+ if (/-(.){6}$/.test(secretName)) {
36
+ throw new Error('the secret name should not end with a hyphen and 6 characters');
37
+ }
38
+ };
39
+ exports.validateSecretName = validateSecretName;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFlQSw0Q0FXQztBQUtELDREQUVDO0FBL0JELDZDQUFrQztBQUtyQixRQUFBLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztBQUUxQixRQUFBLGNBQWMsR0FBOEI7SUFDdkQsSUFBSSxFQUFFLGNBQWMsRUFBRSxvQkFBb0I7SUFDMUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0I7SUFDdkMsSUFBSSxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDMUMsQ0FBQztBQUVGLFNBQWdCLGdCQUFnQixDQUFDLEtBQWdCO0lBQzdDLCtEQUErRDtJQUMvRCwrREFBK0Q7SUFDL0QscUZBQXFGO0lBQ3JGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFcEcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sOEJBQThCLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFjLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsRUFBb0I7SUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDekQsQ0FBQztBQUVEOztHQUVHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtJQUNyRCwrRkFBK0Y7SUFDL0YsK0NBQStDO0lBQy9DLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUNyRixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBTlcsUUFBQSxrQkFBa0Isc0JBTTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1N0YWNrfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFN5bnRoZXNpc01lc3NhZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jeC1hcGknO1xuXG5leHBvcnQgdHlwZSBTdGFnZU5hbWUgPSBcIkJFVEFcIiB8IFwiR0FNTUFcIiB8IFwiUFJPRFwiO1xuXG5leHBvcnQgY29uc3QgcmVnaW9uID0gJ2FwLXNvdXRoZWFzdC0yJztcblxuZXhwb3J0IGNvbnN0IGFjY291bnRJZEFsaWFzOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiAnODQzNDA3OTE2NTcwJywgLy8gdW1jY3JfZGV2ZWxvcG1lbnRcbiAgR0FNTUE6ICc0NTU2MzQzNDU0NDYnLCAvLyB1bWNjcl9zdGFnaW5nXG4gIFBST0Q6ICc0NzIwNTc1MDM4MTQnLCAvLyB1bWNjcl9wcm9kdWN0aW9uXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlTmFtZShzY29wZTogQ29uc3RydWN0KTogU3RhZ2VOYW1lIHtcbiAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE3NTRcbiAgICAvLyBVc2UgU3RhY2sub2Yoc2NvcGUpLmFjY291bnQgdG8gZ2V0IHRoZSBhY2NvdW50IElEIGluc3RlYWQgb2ZcbiAgICAvLyBjZGsuQXdzLkFDQ09VTlRfSUQsIHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIENESyBsaWZlY3ljbGUuXG4gICAgY29uc3QgbWF0Y2ggPSBPYmplY3QuZW50cmllcyhhY2NvdW50SWRBbGlhcykuZmluZCgoW18sIHZhbHVlXSkgPT4gdmFsdWUgPT09IFN0YWNrLm9mKHNjb3BlKS5hY2NvdW50KVxuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjY291bnQgSUQgJHtTdGFjay5vZihzY29wZSkuYWNjb3VudH0gbm90IGZvdW5kIGluIGFjY291bnRJZEFsaWFzYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoWzBdIGFzIFN0YWdlTmFtZTtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgdGhlIG1lc3NhZ2UgZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bnRoZXNpc01lc3NhZ2VUb1N0cmluZyhzbTogU3ludGhlc2lzTWVzc2FnZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KHNtLmVudHJ5LmRhdGEpfSBbJHtzbS5pZH1dYDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgc2VjcmV0IG5hbWUgc28gdGhhdCBpdCBkb2Vzbid0IGVuZCB3aXRoIDYgY2hhcmFjdGVycyBhbmQgYSBoeXBoZW4uXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVNlY3JldE5hbWUgPSAoc2VjcmV0TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgLy8gTm90ZSwgdGhpcyBzaG91bGQgbm90IGVuZCB3aXRoIGEgaHlwaGVuIGFuZCA2IGNoYXJhY3RlcnMsIG90aGVyd2lzZSBzZWNyZXRzIG1hbmFnZXIgd29uJ3QgYmVcbiAgICAvLyBhYmxlIHRvIGZpbmQgdGhlIHNlY3JldCB1c2luZyBhIHBhcnRpYWwgQVJOLlxuICAgIGlmICgvLSguKXs2fSQvLnRlc3Qoc2VjcmV0TmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgc2VjcmV0IG5hbWUgc2hvdWxkIG5vdCBlbmQgd2l0aCBhIGh5cGhlbiBhbmQgNiBjaGFyYWN0ZXJzJyk7XG4gICAgfVxufTtcbiJdfQ==