@digitraffic/common 2023.1.23-3 → 2023.1.30-1

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.
@@ -90,9 +90,13 @@ class DigitrafficMethodResponse {
90
90
  [mediaType]: model,
91
91
  },
92
92
  responseParameters: {
93
- "method.response.header.Access-Control-Allow-Origin": !disableCors,
94
- "method.response.header.Deprecation": deprecation,
95
- "method.response.header.Sunset": deprecation,
93
+ ...(!disableCors && {
94
+ "method.response.header.Access-Control-Allow-Origin": true,
95
+ }),
96
+ ...(deprecation && {
97
+ "method.response.header.Deprecation": true,
98
+ "method.response.header.Sunset": true,
99
+ }),
96
100
  },
97
101
  };
98
102
  }
@@ -34,7 +34,7 @@ export declare class ContentChecker {
34
34
  static checkResponse(fn: (body: string, res: IncomingMessage) => void): CheckerFunction;
35
35
  }
36
36
  export declare class ContentTypeChecker {
37
- static checkContentType(contentType: MediaType): (res: IncomingMessage) => void;
37
+ static checkContentType(contentType: MediaType): CheckerFunction;
38
38
  }
39
39
  export declare class GeoJsonChecker {
40
40
  static validFeatureCollection(fn?: (json: FeatureCollection) => void): CheckerFunction;
@@ -233,6 +233,7 @@ class ContentTypeChecker {
233
233
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
234
234
  `Wrong content-type ${res.headers["content-type"]}`);
235
235
  }
236
+ return Promise.resolve();
236
237
  };
237
238
  }
238
239
  }
@@ -1,13 +1,16 @@
1
1
  import { Stack } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
- import { AuroraPostgresEngineVersion, DatabaseCluster } from "aws-cdk-lib/aws-rds";
3
+ import { IVpc } from "aws-cdk-lib/aws-ec2";
4
+ import { AuroraPostgresEngineVersion, DatabaseCluster, DatabaseClusterProps, IParameterGroup } from "aws-cdk-lib/aws-rds";
5
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
4
6
  import { InstanceType } from "aws-cdk-lib/aws-ec2";
5
7
  import { InfraStackConfiguration } from "./intra-stack-configuration";
8
+ import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
6
9
  export interface DbConfiguration {
7
10
  readonly secretArn: string;
8
11
  readonly dbVersion: AuroraPostgresEngineVersion;
9
12
  readonly dbInstanceType: InstanceType;
10
- readonly snapshotIdentifier: string;
13
+ readonly snapshotIdentifier?: string;
11
14
  readonly instances: number;
12
15
  readonly customParameterGroup: boolean;
13
16
  readonly securityGroupId: string;
@@ -27,5 +30,7 @@ export declare class DbStack extends Stack {
27
30
  static CLUSTER_WRITE_ENDPOINT_EXPORT_NAME: string;
28
31
  static CLUSTER_PORT: number;
29
32
  constructor(scope: Construct, id: string, isc: InfraStackConfiguration, configuration: DbConfiguration);
33
+ createParamaterGroup(configuration: DbConfiguration): IParameterGroup;
34
+ createClusterParameters(configuration: DbConfiguration, instanceName: string, vpc: IVpc, securityGroup: ISecurityGroup, parameterGroup: IParameterGroup, secret: ISecret): DatabaseClusterProps;
30
35
  createAuroraCluster(isc: InfraStackConfiguration, configuration: DbConfiguration): DatabaseCluster;
31
36
  }
@@ -24,14 +24,8 @@ class DbStack extends aws_cdk_lib_1.Stack {
24
24
  (0, import_util_1.exportValue)(this, isc.environmentName, DbStack.CLUSTER_WRITE_ENDPOINT_EXPORT_NAME, cluster.clusterEndpoint.hostname);
25
25
  (0, import_util_1.exportValue)(this, isc.environmentName, DbStack.CLUSTER_READ_ENDPOINT_EXPORT_NAME, cluster.clusterReadEndpoint.hostname);
26
26
  }
27
- createAuroraCluster(isc, configuration) {
28
- const instanceName = isc.environmentName + "-db";
29
- const secret = aws_secretsmanager_1.Secret.fromSecretAttributes(this, "db-secret", {
30
- secretCompleteArn: configuration.secretArn,
31
- });
32
- const securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "securitygroup", configuration.securityGroupId);
33
- const vpc = (0, import_util_1.importVpc)(this, isc.environmentName);
34
- const parameterGroup = configuration.customParameterGroup
27
+ createParamaterGroup(configuration) {
28
+ return configuration.customParameterGroup
35
29
  ? new aws_rds_1.ParameterGroup(this, `parameter-group-${configuration.dbVersion.auroraPostgresMajorVersion}`, {
36
30
  engine: aws_rds_1.DatabaseClusterEngine.auroraPostgres({
37
31
  version: configuration.dbVersion,
@@ -43,8 +37,9 @@ class DbStack extends aws_cdk_lib_1.Stack {
43
37
  },
44
38
  })
45
39
  : aws_rds_1.ParameterGroup.fromParameterGroupName(this, "ParameterGroup", `default.aurora-postgresql${configuration.dbVersion.auroraPostgresMajorVersion}`);
46
- const cluster = new aws_rds_1.DatabaseClusterFromSnapshot(this, instanceName, {
47
- snapshotIdentifier: configuration.snapshotIdentifier,
40
+ }
41
+ createClusterParameters(configuration, instanceName, vpc, securityGroup, parameterGroup, secret) {
42
+ return {
48
43
  engine: aws_rds_1.DatabaseClusterEngine.auroraPostgres({
49
44
  version: configuration.dbVersion,
50
45
  }),
@@ -74,7 +69,23 @@ class DbStack extends aws_cdk_lib_1.Stack {
74
69
  },
75
70
  credentials: aws_rds_1.Credentials.fromSecret(secret),
76
71
  parameterGroup,
72
+ };
73
+ }
74
+ createAuroraCluster(isc, configuration) {
75
+ const instanceName = isc.environmentName + "-db";
76
+ const secret = aws_secretsmanager_1.Secret.fromSecretAttributes(this, "db-secret", {
77
+ secretCompleteArn: configuration.secretArn,
77
78
  });
79
+ const securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "securitygroup", configuration.securityGroupId);
80
+ const vpc = (0, import_util_1.importVpc)(this, isc.environmentName);
81
+ const parameterGroup = this.createParamaterGroup(configuration);
82
+ const parameters = this.createClusterParameters(configuration, instanceName, vpc, securityGroup, parameterGroup, secret);
83
+ const cluster = configuration.snapshotIdentifier
84
+ ? new aws_rds_1.DatabaseClusterFromSnapshot(this, instanceName, {
85
+ ...parameters,
86
+ ...{ snapshotIdentifier: configuration.snapshotIdentifier },
87
+ })
88
+ : new aws_rds_1.DatabaseCluster(this, instanceName, parameters);
78
89
  // this workaround should prevent stack failing on version upgrade
79
90
  const cfnInstances = cluster.node.children.filter((child) => child instanceof aws_rds_1.CfnDBInstance);
80
91
  if (cfnInstances.length === 0) {
@@ -18,7 +18,7 @@ class NetworkStack extends aws_cdk_lib_1.Stack {
18
18
  availabilityZones: ["eu-west-1a", "eu-west-1b"],
19
19
  enableDnsHostnames: true,
20
20
  enableDnsSupport: true,
21
- cidr: configuration.cidr,
21
+ ipAddresses: aws_ec2_1.IpAddresses.cidr(configuration.cidr),
22
22
  subnetConfiguration: [
23
23
  {
24
24
  name: "public",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitraffic/common",
3
- "version": "2023.01.23-3",
3
+ "version": "2023.01.30-1",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,13 +17,13 @@
17
17
  "src/**/*.ts"
18
18
  ],
19
19
  "peerDependencies": {
20
- "@aws-cdk/aws-synthetics-alpha": "^2.50.0-alpha.0",
20
+ "@aws-cdk/aws-synthetics-alpha": "2.62.2-alpha.0",
21
21
  "@types/geojson": "^7946.0.10",
22
- "aws-cdk-lib": "^2.51.1",
23
- "aws-sdk": "^2.1241.0",
22
+ "aws-cdk-lib": "^2.62.2",
23
+ "aws-sdk": "^2.1304.0",
24
24
  "axios": "^1.2.0",
25
25
  "change-case": "^4.1.2",
26
- "constructs": "^10.1.131",
26
+ "constructs": "^10.1.235",
27
27
  "geojson-validation": "^1.0.2",
28
28
  "moment": "^2.29.4",
29
29
  "node-ttl": "^0.2.0",
@@ -32,8 +32,8 @@
32
32
  "spex": "^3.0.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@aws-cdk/aws-synthetics-alpha": "2.60.0-alpha.0",
36
- "@types/aws-lambda": "^8.10.109",
35
+ "@aws-cdk/aws-synthetics-alpha": "2.62.2-alpha.0",
36
+ "@types/aws-lambda": "^8.10.110",
37
37
  "@types/geojson": "^7946.0.10",
38
38
  "@types/jest": "^29.2.5",
39
39
  "@types/node": "^18.11.18",
@@ -41,8 +41,8 @@
41
41
  "@types/sinon": "^10.0.13",
42
42
  "@typescript-eslint/eslint-plugin": "^5.48.2",
43
43
  "@typescript-eslint/parser": "^5.48.2",
44
- "aws-cdk-lib": "^2.60.0",
45
- "aws-sdk": "^2.1295.0",
44
+ "aws-cdk-lib": "^2.62.2",
45
+ "aws-sdk": "^2.1304.0",
46
46
  "axios": "^1.2.2",
47
47
  "change-case": "^4.1.2",
48
48
  "constructs": "^10.1.222",
@@ -119,9 +119,13 @@ export class DigitrafficMethodResponse {
119
119
  [mediaType]: model,
120
120
  },
121
121
  responseParameters: {
122
- "method.response.header.Access-Control-Allow-Origin": !disableCors,
123
- "method.response.header.Deprecation": deprecation,
124
- "method.response.header.Sunset": deprecation,
122
+ ...(!disableCors && {
123
+ "method.response.header.Access-Control-Allow-Origin": true,
124
+ }),
125
+ ...(deprecation && {
126
+ "method.response.header.Deprecation": true,
127
+ "method.response.header.Sunset": true,
128
+ }),
125
129
  },
126
130
  };
127
131
  }
@@ -318,7 +318,7 @@ export class ContentChecker {
318
318
  }
319
319
 
320
320
  export class ContentTypeChecker {
321
- static checkContentType(contentType: MediaType) {
321
+ static checkContentType(contentType: MediaType): CheckerFunction {
322
322
  return (res: IncomingMessage) => {
323
323
  if (!res.statusCode) {
324
324
  throw new Error("statusCode missing");
@@ -339,6 +339,8 @@ export class ContentTypeChecker {
339
339
  `Wrong content-type ${res.headers["content-type"]!}`
340
340
  );
341
341
  }
342
+
343
+ return Promise.resolve();
342
344
  };
343
345
  }
344
346
  }
@@ -1,6 +1,6 @@
1
1
  import { Duration, RemovalPolicy, Stack } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
- import { SecurityGroup, SubnetType } from "aws-cdk-lib/aws-ec2";
3
+ import { IVpc, SecurityGroup, SubnetType } from "aws-cdk-lib/aws-ec2";
4
4
  import {
5
5
  AuroraPostgresEngineVersion,
6
6
  CfnDBInstance,
@@ -8,20 +8,23 @@ import {
8
8
  DatabaseCluster,
9
9
  DatabaseClusterEngine,
10
10
  DatabaseClusterFromSnapshot,
11
+ DatabaseClusterProps,
11
12
  InstanceUpdateBehaviour,
13
+ IParameterGroup,
12
14
  ParameterGroup,
13
15
  } from "aws-cdk-lib/aws-rds";
14
- import { Secret } from "aws-cdk-lib/aws-secretsmanager";
16
+ import { ISecret, Secret } from "aws-cdk-lib/aws-secretsmanager";
15
17
  import { exportValue, importVpc } from "../import-util";
16
18
  import { InstanceType } from "aws-cdk-lib/aws-ec2";
17
19
  import { InfraStackConfiguration } from "./intra-stack-configuration";
20
+ import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
18
21
 
19
22
  export interface DbConfiguration {
20
23
  readonly secretArn: string;
21
24
 
22
25
  readonly dbVersion: AuroraPostgresEngineVersion;
23
26
  readonly dbInstanceType: InstanceType;
24
- readonly snapshotIdentifier: string;
27
+ readonly snapshotIdentifier?: string;
25
28
  readonly instances: number;
26
29
  readonly customParameterGroup: boolean;
27
30
  readonly securityGroupId: string;
@@ -79,22 +82,8 @@ export class DbStack extends Stack {
79
82
  );
80
83
  }
81
84
 
82
- createAuroraCluster(
83
- isc: InfraStackConfiguration,
84
- configuration: DbConfiguration
85
- ): DatabaseCluster {
86
- const instanceName = isc.environmentName + "-db";
87
- const secret = Secret.fromSecretAttributes(this, "db-secret", {
88
- secretCompleteArn: configuration.secretArn,
89
- });
90
- const securityGroup = SecurityGroup.fromSecurityGroupId(
91
- this,
92
- "securitygroup",
93
- configuration.securityGroupId
94
- );
95
- const vpc = importVpc(this, isc.environmentName);
96
-
97
- const parameterGroup = configuration.customParameterGroup
85
+ createParamaterGroup(configuration: DbConfiguration) {
86
+ return configuration.customParameterGroup
98
87
  ? new ParameterGroup(
99
88
  this,
100
89
  `parameter-group-${configuration.dbVersion.auroraPostgresMajorVersion}`,
@@ -114,9 +103,17 @@ export class DbStack extends Stack {
114
103
  "ParameterGroup",
115
104
  `default.aurora-postgresql${configuration.dbVersion.auroraPostgresMajorVersion}`
116
105
  );
106
+ }
117
107
 
118
- const cluster = new DatabaseClusterFromSnapshot(this, instanceName, {
119
- snapshotIdentifier: configuration.snapshotIdentifier,
108
+ createClusterParameters(
109
+ configuration: DbConfiguration,
110
+ instanceName: string,
111
+ vpc: IVpc,
112
+ securityGroup: ISecurityGroup,
113
+ parameterGroup: IParameterGroup,
114
+ secret: ISecret
115
+ ): DatabaseClusterProps {
116
+ return {
120
117
  engine: DatabaseClusterEngine.auroraPostgres({
121
118
  version: configuration.dbVersion,
122
119
  }),
@@ -146,7 +143,38 @@ export class DbStack extends Stack {
146
143
  },
147
144
  credentials: Credentials.fromSecret(secret),
148
145
  parameterGroup,
146
+ };
147
+ }
148
+
149
+ createAuroraCluster(
150
+ isc: InfraStackConfiguration,
151
+ configuration: DbConfiguration
152
+ ): DatabaseCluster {
153
+ const instanceName = isc.environmentName + "-db";
154
+ const secret = Secret.fromSecretAttributes(this, "db-secret", {
155
+ secretCompleteArn: configuration.secretArn,
149
156
  });
157
+ const securityGroup = SecurityGroup.fromSecurityGroupId(
158
+ this,
159
+ "securitygroup",
160
+ configuration.securityGroupId
161
+ );
162
+ const vpc = importVpc(this, isc.environmentName);
163
+ const parameterGroup = this.createParamaterGroup(configuration);
164
+ const parameters = this.createClusterParameters(
165
+ configuration,
166
+ instanceName,
167
+ vpc,
168
+ securityGroup,
169
+ parameterGroup,
170
+ secret
171
+ );
172
+ const cluster = configuration.snapshotIdentifier
173
+ ? new DatabaseClusterFromSnapshot(this, instanceName, {
174
+ ...parameters,
175
+ ...{ snapshotIdentifier: configuration.snapshotIdentifier },
176
+ })
177
+ : new DatabaseCluster(this, instanceName, parameters);
150
178
 
151
179
  // this workaround should prevent stack failing on version upgrade
152
180
  const cfnInstances = cluster.node.children.filter(
@@ -1,6 +1,6 @@
1
1
  import { Stack } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
- import { IVpc, SubnetType, Vpc } from "aws-cdk-lib/aws-ec2";
3
+ import { IpAddresses, IVpc, SubnetType, Vpc } from "aws-cdk-lib/aws-ec2";
4
4
  import { InfraStackConfiguration } from "./intra-stack-configuration";
5
5
  import { exportValue } from "../import-util";
6
6
 
@@ -32,7 +32,7 @@ export class NetworkStack extends Stack {
32
32
  availabilityZones: ["eu-west-1a", "eu-west-1b"],
33
33
  enableDnsHostnames: true,
34
34
  enableDnsSupport: true,
35
- cidr: configuration.cidr,
35
+ ipAddresses: IpAddresses.cidr(configuration.cidr),
36
36
  subnetConfiguration: [
37
37
  {
38
38
  name: "public",