truemark-cdk-lib 1.26.0 → 1.27.0

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.
@@ -0,0 +1 @@
1
+ export * from './lib/index';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/index"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzLXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './postgres-props';
2
+ export * from './standard-postgres-aurora-serverless-cluster';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./postgres-props"), exports);
18
+ __exportStar(require("./standard-postgres-aurora-serverless-cluster"), exports);
19
+ // StandardPostgresAuroraCluster, StandardPostgresCluster and
20
+ // StandardPostgresInstance are unimplemented stubs and are deliberately not
21
+ // exported until they synthesize resources.
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxnRkFBOEQ7QUFDOUQsNkRBQTZEO0FBQzdELDRFQUE0RTtBQUM1RSw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLXNlcnZlcmxlc3MtY2x1c3Rlcic7XG4vLyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhQ2x1c3RlciwgU3RhbmRhcmRQb3N0Z3Jlc0NsdXN0ZXIgYW5kXG4vLyBTdGFuZGFyZFBvc3RncmVzSW5zdGFuY2UgYXJlIHVuaW1wbGVtZW50ZWQgc3R1YnMgYW5kIGFyZSBkZWxpYmVyYXRlbHkgbm90XG4vLyBleHBvcnRlZCB1bnRpbCB0aGV5IHN5bnRoZXNpemUgcmVzb3VyY2VzLlxuIl19
@@ -0,0 +1,178 @@
1
+ import type { Duration, RemovalPolicy } from 'aws-cdk-lib';
2
+ import type { IConnectable, ISecurityGroup, IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2';
3
+ import type { IKey } from 'aws-cdk-lib/aws-kms';
4
+ import type { RetentionDays } from 'aws-cdk-lib/aws-logs';
5
+ import type { CaCertificate, Credentials, IParameterGroup, ISubnetGroup, NetworkType, PerformanceInsightRetention } from 'aws-cdk-lib/aws-rds';
6
+ import type { ExtendedConstructProps } from '../../aws-cdk';
7
+ /**
8
+ * Common properties shared by all standard PostgreSQL constructs in this module.
9
+ */
10
+ export interface StandardPostgresProps extends ExtendedConstructProps {
11
+ /**
12
+ * The VPC to place the database in.
13
+ */
14
+ readonly vpc: IVpc;
15
+ /**
16
+ * The subnets to place the database in.
17
+ *
18
+ * @default the private isolated subnets of the VPC
19
+ */
20
+ readonly vpcSubnets?: SubnetSelection;
21
+ /**
22
+ * An existing subnet group to place the database in. When provided,
23
+ * vpcSubnets is ignored.
24
+ *
25
+ * @default a subnet group is created
26
+ */
27
+ readonly subnetGroup?: ISubnetGroup;
28
+ /**
29
+ * Security groups to attach to the database.
30
+ *
31
+ * @default a security group is created
32
+ */
33
+ readonly securityGroups?: ISecurityGroup[];
34
+ /**
35
+ * Peers allowed to connect to the database on the database port.
36
+ *
37
+ * @default no ingress is added
38
+ */
39
+ readonly allowFrom?: IConnectable[];
40
+ /**
41
+ * The name of the database created when the instance or cluster is created.
42
+ *
43
+ * @default no database is created
44
+ */
45
+ readonly databaseName?: string;
46
+ /**
47
+ * Credentials for the administrative user.
48
+ *
49
+ * @default a secret is generated for the "postgres" user
50
+ */
51
+ readonly credentials?: Credentials;
52
+ /**
53
+ * The port the database listens on.
54
+ *
55
+ * @default 5432
56
+ */
57
+ readonly port?: number;
58
+ /**
59
+ * The parameter group to associate with the database.
60
+ *
61
+ * @default the default parameter group for the engine version
62
+ */
63
+ readonly parameterGroup?: IParameterGroup;
64
+ /**
65
+ * Parameters for a parameter group created by the construct. Cannot be
66
+ * combined with parameterGroup: an existing group's parameters are not
67
+ * readable, so they cannot be merged.
68
+ *
69
+ * @default no parameters; the engine default parameter group is used
70
+ */
71
+ readonly parameters?: Record<string, string>;
72
+ /**
73
+ * The network type of the database.
74
+ *
75
+ * @default NetworkType.IPV4
76
+ */
77
+ readonly networkType?: NetworkType;
78
+ /**
79
+ * The CA certificate used for the database.
80
+ *
81
+ * @default the RDS default for the region
82
+ */
83
+ readonly caCertificate?: CaCertificate;
84
+ /**
85
+ * Whether storage is encrypted at rest.
86
+ *
87
+ * @default true
88
+ */
89
+ readonly storageEncrypted?: boolean;
90
+ /**
91
+ * The KMS key used to encrypt storage at rest.
92
+ *
93
+ * @default the default RDS managed key
94
+ */
95
+ readonly storageEncryptionKey?: IKey;
96
+ /**
97
+ * How long automated backups are retained.
98
+ *
99
+ * @default Duration.days(7)
100
+ */
101
+ readonly backupRetention?: Duration;
102
+ /**
103
+ * The daily UTC time window automated backups are taken in, in the
104
+ * format "hh24:mi-hh24:mi".
105
+ *
106
+ * @default a window is selected at random
107
+ */
108
+ readonly preferredBackupWindow?: string;
109
+ /**
110
+ * The weekly UTC time window maintenance is performed in, in the
111
+ * format "ddd:hh24:mi-ddd:hh24:mi".
112
+ *
113
+ * @default a window is selected at random
114
+ */
115
+ readonly preferredMaintenanceWindow?: string;
116
+ /**
117
+ * Whether minor engine version upgrades are applied automatically during
118
+ * the maintenance window.
119
+ *
120
+ * @default true
121
+ */
122
+ readonly autoMinorVersionUpgrade?: boolean;
123
+ /**
124
+ * Whether deletion protection is enabled.
125
+ *
126
+ * @default true
127
+ */
128
+ readonly deletionProtection?: boolean;
129
+ /**
130
+ * The removal policy applied to the database.
131
+ *
132
+ * @default RemovalPolicy.RETAIN
133
+ */
134
+ readonly removalPolicy?: RemovalPolicy;
135
+ /**
136
+ * Whether a final snapshot is skipped when the database is deleted.
137
+ *
138
+ * @default false
139
+ */
140
+ readonly skipFinalSnapshot?: boolean;
141
+ /**
142
+ * The interval enhanced monitoring metrics are collected at.
143
+ *
144
+ * @default no enhanced monitoring
145
+ */
146
+ readonly monitoringInterval?: Duration;
147
+ /**
148
+ * Whether Performance Insights is enabled.
149
+ *
150
+ * @default false
151
+ */
152
+ readonly enablePerformanceInsights?: boolean;
153
+ /**
154
+ * How long Performance Insights data is retained.
155
+ *
156
+ * @default PerformanceInsightRetention.DEFAULT
157
+ */
158
+ readonly performanceInsightRetention?: PerformanceInsightRetention;
159
+ /**
160
+ * The log types exported to CloudWatch Logs.
161
+ *
162
+ * @default ["postgresql"]
163
+ */
164
+ readonly cloudwatchLogsExports?: string[];
165
+ /**
166
+ * How long exported logs are retained in CloudWatch Logs.
167
+ *
168
+ * @default RetentionDays.ONE_MONTH
169
+ */
170
+ readonly cloudwatchLogsRetention?: RetentionDays;
171
+ /**
172
+ * Setting this to true will suppress the creation of default tags on resources
173
+ * created by this construct. Default is false.
174
+ *
175
+ * @default false
176
+ */
177
+ readonly suppressTagging?: boolean;
178
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyZXMtcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvcG9zdGdyZXMtcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeX0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUge1xuICBJQ29ubmVjdGFibGUsXG4gIElTZWN1cml0eUdyb3VwLFxuICBJVnBjLFxuICBTdWJuZXRTZWxlY3Rpb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge0lLZXl9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUge1JldGVudGlvbkRheXN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FDZXJ0aWZpY2F0ZSxcbiAgQ3JlZGVudGlhbHMsXG4gIElQYXJhbWV0ZXJHcm91cCxcbiAgSVN1Ym5ldEdyb3VwLFxuICBOZXR3b3JrVHlwZSxcbiAgUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtFeHRlbmRlZENvbnN0cnVjdFByb3BzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBzaGFyZWQgYnkgYWxsIHN0YW5kYXJkIFBvc3RncmVTUUwgY29uc3RydWN0cyBpbiB0aGlzIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFBvc3RncmVzUHJvcHMgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdG8gcGxhY2UgdGhlIGRhdGFiYXNlIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyB0byBwbGFjZSB0aGUgZGF0YWJhc2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBwcml2YXRlIGlzb2xhdGVkIHN1Ym5ldHMgb2YgdGhlIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IFN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogQW4gZXhpc3Rpbmcgc3VibmV0IGdyb3VwIHRvIHBsYWNlIHRoZSBkYXRhYmFzZSBpbi4gV2hlbiBwcm92aWRlZCxcbiAgICogdnBjU3VibmV0cyBpcyBpZ25vcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIHN1Ym5ldCBncm91cCBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRHcm91cD86IElTdWJuZXRHcm91cDtcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIHRvIGF0dGFjaCB0byB0aGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBQZWVycyBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIG9uIHRoZSBkYXRhYmFzZSBwb3J0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBpbmdyZXNzIGlzIGFkZGVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0Zyb20/OiBJQ29ubmVjdGFibGVbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNyZWF0ZWQgd2hlbiB0aGUgaW5zdGFuY2Ugb3IgY2x1c3RlciBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBkYXRhYmFzZSBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWxzIGZvciB0aGUgYWRtaW5pc3RyYXRpdmUgdXNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBzZWNyZXQgaXMgZ2VuZXJhdGVkIGZvciB0aGUgXCJwb3N0Z3Jlc1wiIHVzZXJcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRoZSBkYXRhYmFzZSBsaXN0ZW5zIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1NDMyXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVyIGdyb3VwIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGZvciB0aGUgZW5naW5lIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwPzogSVBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXJzIGZvciBhIHBhcmFtZXRlciBncm91cCBjcmVhdGVkIGJ5IHRoZSBjb25zdHJ1Y3QuIENhbm5vdCBiZVxuICAgKiBjb21iaW5lZCB3aXRoIHBhcmFtZXRlckdyb3VwOiBhbiBleGlzdGluZyBncm91cCdzIHBhcmFtZXRlcnMgYXJlIG5vdFxuICAgKiByZWFkYWJsZSwgc28gdGhleSBjYW5ub3QgYmUgbWVyZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBwYXJhbWV0ZXJzOyB0aGUgZW5naW5lIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmV0d29yayB0eXBlIG9mIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTmV0d29ya1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1R5cGU/OiBOZXR3b3JrVHlwZTtcblxuICAvKipcbiAgICogVGhlIENBIGNlcnRpZmljYXRlIHVzZWQgZm9yIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIFJEUyBkZWZhdWx0IGZvciB0aGUgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSBjYUNlcnRpZmljYXRlPzogQ2FDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogV2hldGhlciBzdG9yYWdlIGlzIGVuY3J5cHRlZCBhdCByZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHN0b3JhZ2UgYXQgcmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgUkRTIG1hbmFnZWQga2V5XG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGlvbktleT86IElLZXk7XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSByZXRhaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cyg3KVxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUmV0ZW50aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkYWlseSBVVEMgdGltZSB3aW5kb3cgYXV0b21hdGVkIGJhY2t1cHMgYXJlIHRha2VuIGluLCBpbiB0aGVcbiAgICogZm9ybWF0IFwiaGgyNDptaS1oaDI0Om1pXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgd2luZG93IGlzIHNlbGVjdGVkIGF0IHJhbmRvbVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkQmFja3VwV2luZG93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd2Vla2x5IFVUQyB0aW1lIHdpbmRvdyBtYWludGVuYW5jZSBpcyBwZXJmb3JtZWQgaW4sIGluIHRoZVxuICAgKiBmb3JtYXQgXCJkZGQ6aGgyNDptaS1kZGQ6aGgyNDptaVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIHdpbmRvdyBpcyBzZWxlY3RlZCBhdCByYW5kb21cbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG1pbm9yIGVuZ2luZSB2ZXJzaW9uIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgZHVyaW5nXG4gICAqIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NaW5vclZlcnNpb25VcGdyYWRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBkZWxldGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZmluYWwgc25hcHNob3QgaXMgc2tpcHBlZCB3aGVuIHRoZSBkYXRhYmFzZSBpcyBkZWxldGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEZpbmFsU25hcHNob3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJ2YWwgZW5oYW5jZWQgbW9uaXRvcmluZyBtZXRyaWNzIGFyZSBjb2xsZWN0ZWQgYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGVuaGFuY2VkIG1vbml0b3JpbmdcbiAgICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIFBlcmZvcm1hbmNlIEluc2lnaHRzIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgUGVyZm9ybWFuY2UgSW5zaWdodHMgZGF0YSBpcyByZXRhaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkRFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbj86IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvZyB0eXBlcyBleHBvcnRlZCB0byBDbG91ZFdhdGNoIExvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtcInBvc3RncmVzcWxcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBleHBvcnRlZCBsb2dzIGFyZSByZXRhaW5lZCBpbiBDbG91ZFdhdGNoIExvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuT05FX01PTlRIXG4gICAqL1xuICByZWFkb25seSBjbG91ZHdhdGNoTG9nc1JldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHByZXNzVGFnZ2luZz86IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
2
+ import type { AuroraPostgresEngineVersion, IParameterGroup } from 'aws-cdk-lib/aws-rds';
3
+ import type { Construct } from 'constructs';
4
+ import { ExtendedConstruct } from '../../aws-cdk';
5
+ import type { StandardPostgresProps } from './postgres-props';
6
+ /**
7
+ * Properties for a StandardPostgresAuroraCluster.
8
+ */
9
+ export interface StandardPostgresAuroraClusterProps extends StandardPostgresProps {
10
+ /**
11
+ * The Aurora PostgreSQL engine version to use.
12
+ *
13
+ * @default the latest version supported by this library
14
+ */
15
+ readonly engineVersion?: AuroraPostgresEngineVersion;
16
+ /**
17
+ * The name given to the cluster.
18
+ *
19
+ * @default CloudFormation-generated name
20
+ */
21
+ readonly clusterIdentifier?: string;
22
+ /**
23
+ * The instance type of the writer instance.
24
+ *
25
+ * @default t4g.medium
26
+ */
27
+ readonly writerInstanceType?: InstanceType;
28
+ /**
29
+ * The instance type of the reader instances.
30
+ *
31
+ * @default same as writerInstanceType
32
+ */
33
+ readonly readerInstanceType?: InstanceType;
34
+ /**
35
+ * The number of reader instances to create.
36
+ *
37
+ * @default 1
38
+ */
39
+ readonly readers?: number;
40
+ /**
41
+ * Whether reader instances are promoted to writer in the same tier as the
42
+ * writer instance during a failover.
43
+ *
44
+ * @default true
45
+ */
46
+ readonly readersInFailoverTier?: boolean;
47
+ /**
48
+ * The parameter group associated with the instances in the cluster. Distinct
49
+ * from the cluster level parameterGroup.
50
+ *
51
+ * @default the default parameter group for the engine version
52
+ */
53
+ readonly instanceParameterGroup?: IParameterGroup;
54
+ /**
55
+ * The backtrack window length in days. Set to 0 to disable
56
+ * backtrack.
57
+ *
58
+ * @default 0
59
+ */
60
+ readonly backtrackWindowDays?: number;
61
+ /**
62
+ * Whether the storage of the cluster uses Aurora I/O-Optimized.
63
+ *
64
+ * @default false
65
+ */
66
+ readonly ioOptimized?: boolean;
67
+ /**
68
+ * Whether the instances in the cluster are publicly accessible.
69
+ *
70
+ * @default false
71
+ */
72
+ readonly publiclyAccessible?: boolean;
73
+ }
74
+ /**
75
+ * A standard provisioned Aurora PostgreSQL database cluster.
76
+ */
77
+ export declare class StandardPostgresAuroraCluster extends ExtendedConstruct {
78
+ constructor(scope: Construct, id: string, props: StandardPostgresAuroraClusterProps);
79
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardPostgresAuroraCluster = void 0;
4
+ const aws_cdk_1 = require("../../aws-cdk");
5
+ const truemark_1 = require("../../truemark");
6
+ /**
7
+ * A standard provisioned Aurora PostgreSQL database cluster.
8
+ */
9
+ class StandardPostgresAuroraCluster extends aws_cdk_1.ExtendedConstruct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, {
12
+ standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
13
+ });
14
+ // TODO Implementation
15
+ }
16
+ }
17
+ exports.StandardPostgresAuroraCluster = StandardPostgresAuroraCluster;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLWNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvc3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLWNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsMkNBQThEO0FBQzlELDZDQUErQztBQWtGL0M7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLDJCQUFpQjtJQUNsRSxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF5QztRQUV6QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxzQkFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLDBCQUFlLENBQUM7U0FDdEUsQ0FBQyxDQUFDO1FBQ0gsc0JBQXNCO0lBQ3hCLENBQUM7Q0FDRjtBQVhELHNFQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0luc3RhbmNlVHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbixcbiAgSVBhcmFtZXRlckdyb3VwLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyUHJvcHNcbiAgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIEF1cm9yYSBQb3N0Z3JlU1FMIGVuZ2luZSB2ZXJzaW9uIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGxhdGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGdpdmVuIHRvIHRoZSBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDbG91ZEZvcm1hdGlvbi1nZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIHRoZSB3cml0ZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHQ0Zy5tZWRpdW1cbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlckluc3RhbmNlVHlwZT86IEluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgb2YgdGhlIHJlYWRlciBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHNhbWUgYXMgd3JpdGVySW5zdGFuY2VUeXBlXG4gICAqL1xuICByZWFkb25seSByZWFkZXJJbnN0YW5jZVR5cGU/OiBJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVhZGVyIGluc3RhbmNlcyB0byBjcmVhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRlcnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcmVhZGVyIGluc3RhbmNlcyBhcmUgcHJvbW90ZWQgdG8gd3JpdGVyIGluIHRoZSBzYW1lIHRpZXIgYXMgdGhlXG4gICAqIHdyaXRlciBpbnN0YW5jZSBkdXJpbmcgYSBmYWlsb3Zlci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGVyc0luRmFpbG92ZXJUaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhcmFtZXRlciBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIGluc3RhbmNlcyBpbiB0aGUgY2x1c3Rlci4gRGlzdGluY3RcbiAgICogZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBwYXJhbWV0ZXJHcm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGZvciB0aGUgZW5naW5lIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUGFyYW1ldGVyR3JvdXA/OiBJUGFyYW1ldGVyR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBiYWNrdHJhY2sgd2luZG93IGxlbmd0aCBpbiBkYXlzLiBTZXQgdG8gMCB0byBkaXNhYmxlXG4gICAqIGJhY2t0cmFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3RyYWNrV2luZG93RGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RvcmFnZSBvZiB0aGUgY2x1c3RlciB1c2VzIEF1cm9yYSBJL08tT3B0aW1pemVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW9PcHRpbWl6ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnN0YW5jZXMgaW4gdGhlIGNsdXN0ZXIgYXJlIHB1YmxpY2x5IGFjY2Vzc2libGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgc3RhbmRhcmQgcHJvdmlzaW9uZWQgQXVyb3JhIFBvc3RncmVTUUwgZGF0YWJhc2UgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc3RhbmRhcmRUYWdzOiBTdGFuZGFyZFRhZ3MubWVyZ2UocHJvcHMuc3RhbmRhcmRUYWdzLCBMaWJTdGFuZGFyZFRhZ3MpLFxuICAgIH0pO1xuICAgIC8vIFRPRE8gSW1wbGVtZW50YXRpb25cbiAgfVxufVxuIl19
@@ -0,0 +1,161 @@
1
+ import { RemovalPolicy, type ResourceEnvironment, type Stack } from 'aws-cdk-lib';
2
+ import type { Metric, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
3
+ import { type Connections } from 'aws-cdk-lib/aws-ec2';
4
+ import type { Grant, IGrantable } from 'aws-cdk-lib/aws-iam';
5
+ import { AuroraPostgresEngineVersion, DatabaseCluster, type DatabaseProxy, type DatabaseProxyOptions, type DBClusterReference, type Endpoint, type IClusterEngine, type IDatabaseCluster, type IParameterGroup } from 'aws-cdk-lib/aws-rds';
6
+ import type { ISecret, SecretAttachmentTargetProps } from 'aws-cdk-lib/aws-secretsmanager';
7
+ import type { Construct } from 'constructs';
8
+ import { ExtendedConstruct } from '../../aws-cdk';
9
+ import type { StandardPostgresProps } from './postgres-props';
10
+ /**
11
+ * Properties for a StandardPostgresAuroraServerlessCluster.
12
+ */
13
+ export interface StandardPostgresAuroraServerlessClusterProps extends StandardPostgresProps {
14
+ /**
15
+ * The Aurora PostgreSQL engine version to use.
16
+ *
17
+ * @default the latest version supported by this library
18
+ */
19
+ readonly engineVersion?: AuroraPostgresEngineVersion;
20
+ /**
21
+ * The name given to the cluster.
22
+ *
23
+ * @default CloudFormation-generated name
24
+ */
25
+ readonly clusterIdentifier?: string;
26
+ /**
27
+ * The minimum number of Aurora capacity units the cluster may scale down to.
28
+ * Half-step increments; 0 enables automatic pause on engine versions that
29
+ * support it.
30
+ *
31
+ * @default 0.5
32
+ */
33
+ readonly minCapacity?: number;
34
+ /**
35
+ * The maximum number of Aurora capacity units the cluster may scale up to.
36
+ * Half-step increments, greater than 0.5 and at most 256.
37
+ *
38
+ * @default 4
39
+ */
40
+ readonly maxCapacity?: number;
41
+ /**
42
+ * The time in seconds the cluster may remain idle before it is paused,
43
+ * between 300 (5 minutes) and 86400 (24 hours). Only supported when
44
+ * minCapacity is 0.
45
+ *
46
+ * @default no automatic pause
47
+ */
48
+ readonly secondsUntilAutoPause?: number;
49
+ /**
50
+ * The number of reader instances to create.
51
+ *
52
+ * @default 1
53
+ */
54
+ readonly readers?: number;
55
+ /**
56
+ * Whether reader instances are promoted to writer in the same tier as the
57
+ * writer instance during a failover.
58
+ *
59
+ * @default true
60
+ */
61
+ readonly readersInFailoverTier?: boolean;
62
+ /**
63
+ * The parameter group associated with the instances in the cluster. Distinct
64
+ * from the cluster level parameterGroup.
65
+ *
66
+ * @default the default parameter group for the engine version
67
+ */
68
+ readonly instanceParameterGroup?: IParameterGroup;
69
+ /**
70
+ * Whether the storage of the cluster uses Aurora I/O-Optimized.
71
+ *
72
+ * @default false
73
+ */
74
+ readonly ioOptimized?: boolean;
75
+ /**
76
+ * Whether the instances in the cluster are publicly accessible.
77
+ *
78
+ * @default false
79
+ */
80
+ readonly publiclyAccessible?: boolean;
81
+ /**
82
+ * Whether IAM database authentication is enabled. Required for
83
+ * `grantConnect` to have any effect and for RDS Proxy IAM authentication.
84
+ *
85
+ * @default true
86
+ */
87
+ readonly iamAuthentication?: boolean;
88
+ /**
89
+ * The removal policy applied to the generated master credentials secret.
90
+ *
91
+ * @default - follows the cluster: RETAIN unless the cluster's removal
92
+ * policy is DESTROY
93
+ */
94
+ readonly secretRemovalPolicy?: RemovalPolicy;
95
+ }
96
+ /**
97
+ * A standard Aurora Serverless v2 PostgreSQL database cluster.
98
+ *
99
+ * The construct implements IDatabaseCluster by delegating to the underlying
100
+ * DatabaseCluster exposed as `cluster`. CDK APIs that inspect the construct
101
+ * tree rather than the interface, such as `ProxyTarget.fromCluster`, do not
102
+ * find the cluster's instances through this wrapper and would create a proxy
103
+ * target group without waiting for them; hand those APIs `cluster` instead,
104
+ * or use `addProxy`, which does so internally.
105
+ */
106
+ export declare class StandardPostgresAuroraServerlessCluster extends ExtendedConstruct implements IDatabaseCluster {
107
+ /** The engine version used when props.engineVersion is not provided. */
108
+ static readonly DEFAULT_ENGINE_VERSION: AuroraPostgresEngineVersion;
109
+ static readonly DEFAULT_MIN_CAPACITY = 0.5;
110
+ static readonly DEFAULT_MAX_CAPACITY = 4;
111
+ static readonly DEFAULT_READERS = 1;
112
+ static readonly MAX_CAPACITY_LIMIT = 256;
113
+ static readonly MIN_AUTO_PAUSE_SECONDS = 300;
114
+ static readonly MAX_AUTO_PAUSE_SECONDS = 86400;
115
+ /** The underlying Aurora Serverless v2 cluster. */
116
+ readonly cluster: DatabaseCluster;
117
+ /** The generated (or provided) master credentials secret, if any. */
118
+ readonly secret?: ISecret;
119
+ readonly clusterIdentifier: string;
120
+ readonly clusterResourceIdentifier: string;
121
+ readonly instanceIdentifiers: string[];
122
+ readonly clusterEndpoint: Endpoint;
123
+ readonly clusterReadEndpoint: Endpoint;
124
+ readonly instanceEndpoints: Endpoint[];
125
+ readonly engine?: IClusterEngine;
126
+ readonly clusterArn: string;
127
+ readonly connections: Connections;
128
+ readonly dbClusterRef: DBClusterReference;
129
+ readonly stack: Stack;
130
+ readonly env: ResourceEnvironment;
131
+ constructor(scope: Construct, id: string, props: StandardPostgresAuroraServerlessClusterProps);
132
+ /**
133
+ * Validates the capacity range, reader count and auto-pause setting.
134
+ *
135
+ * @param minCapacity minimum ACUs
136
+ * @param maxCapacity maximum ACUs
137
+ * @param readers number of reader instances
138
+ * @param secondsUntilAutoPause idle time before pause, if any
139
+ */
140
+ static validate(minCapacity: number, maxCapacity: number, readers: number, secondsUntilAutoPause?: number): void;
141
+ addProxy(id: string, options: DatabaseProxyOptions): DatabaseProxy;
142
+ grantConnect(grantee: IGrantable, dbUser: string): Grant;
143
+ grantDataApiAccess(grantee: IGrantable): Grant;
144
+ asSecretAttachmentTarget(): SecretAttachmentTargetProps;
145
+ applyRemovalPolicy(policy: RemovalPolicy): void;
146
+ metric(metricName: string, props?: MetricOptions): Metric;
147
+ metricCPUUtilization(props?: MetricOptions): Metric;
148
+ metricDatabaseConnections(props?: MetricOptions): Metric;
149
+ metricDeadlocks(props?: MetricOptions): Metric;
150
+ metricEngineUptime(props?: MetricOptions): Metric;
151
+ metricFreeableMemory(props?: MetricOptions): Metric;
152
+ metricFreeLocalStorage(props?: MetricOptions): Metric;
153
+ metricNetworkReceiveThroughput(props?: MetricOptions): Metric;
154
+ metricNetworkThroughput(props?: MetricOptions): Metric;
155
+ metricNetworkTransmitThroughput(props?: MetricOptions): Metric;
156
+ metricSnapshotStorageUsed(props?: MetricOptions): Metric;
157
+ metricTotalBackupStorageBilled(props?: MetricOptions): Metric;
158
+ metricVolumeBytesUsed(props?: MetricOptions): Metric;
159
+ metricVolumeReadIOPs(props?: MetricOptions): Metric;
160
+ metricVolumeWriteIOPs(props?: MetricOptions): Metric;
161
+ }
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardPostgresAuroraServerlessCluster = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
6
+ const aws_logs_1 = require("aws-cdk-lib/aws-logs");
7
+ const aws_rds_1 = require("aws-cdk-lib/aws-rds");
8
+ const aws_cdk_1 = require("../../aws-cdk");
9
+ const truemark_1 = require("../../truemark");
10
+ /**
11
+ * A standard Aurora Serverless v2 PostgreSQL database cluster.
12
+ *
13
+ * The construct implements IDatabaseCluster by delegating to the underlying
14
+ * DatabaseCluster exposed as `cluster`. CDK APIs that inspect the construct
15
+ * tree rather than the interface, such as `ProxyTarget.fromCluster`, do not
16
+ * find the cluster's instances through this wrapper and would create a proxy
17
+ * target group without waiting for them; hand those APIs `cluster` instead,
18
+ * or use `addProxy`, which does so internally.
19
+ */
20
+ class StandardPostgresAuroraServerlessCluster extends aws_cdk_1.ExtendedConstruct {
21
+ constructor(scope, id, props) {
22
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
23
+ super(scope, id, {
24
+ standardTags: aws_cdk_1.StandardTags.merge({
25
+ ...((_a = props.standardTags) !== null && _a !== void 0 ? _a : {}),
26
+ suppressTagging: (_b = props.suppressTagging) !== null && _b !== void 0 ? _b : (_c = props.standardTags) === null || _c === void 0 ? void 0 : _c.suppressTagging,
27
+ }, truemark_1.LibStandardTags),
28
+ });
29
+ if (props.parameterGroup && props.parameters) {
30
+ throw new Error('parameterGroup and parameters cannot be combined; pass either an existing group or parameters for a new one');
31
+ }
32
+ const engine = aws_rds_1.DatabaseClusterEngine.auroraPostgres({
33
+ version: (_d = props.engineVersion) !== null && _d !== void 0 ? _d : StandardPostgresAuroraServerlessCluster.DEFAULT_ENGINE_VERSION,
34
+ });
35
+ // caCertificate, instanceParameterGroup and publiclyAccessible are
36
+ // per-instance settings in the CDK API, applied to the writer and every
37
+ // reader.
38
+ const instanceOptions = {
39
+ parameterGroup: props.instanceParameterGroup,
40
+ caCertificate: props.caCertificate,
41
+ publiclyAccessible: (_e = props.publiclyAccessible) !== null && _e !== void 0 ? _e : false,
42
+ };
43
+ const readerCount = (_f = props.readers) !== null && _f !== void 0 ? _f : StandardPostgresAuroraServerlessCluster.DEFAULT_READERS;
44
+ const readersInFailoverTier = (_g = props.readersInFailoverTier) !== null && _g !== void 0 ? _g : true;
45
+ const minCapacity = (_h = props.minCapacity) !== null && _h !== void 0 ? _h : StandardPostgresAuroraServerlessCluster.DEFAULT_MIN_CAPACITY;
46
+ const maxCapacity = (_j = props.maxCapacity) !== null && _j !== void 0 ? _j : StandardPostgresAuroraServerlessCluster.DEFAULT_MAX_CAPACITY;
47
+ StandardPostgresAuroraServerlessCluster.validate(minCapacity, maxCapacity, readerCount, props.secondsUntilAutoPause);
48
+ // removalPolicy is the CDK-native control. skipFinalSnapshot has no
49
+ // direct CDK equivalent - it only downgrades a SNAPSHOT removal policy
50
+ // to DESTROY (no-op otherwise).
51
+ const removalPolicy = (_k = props.removalPolicy) !== null && _k !== void 0 ? _k : aws_cdk_lib_1.RemovalPolicy.RETAIN;
52
+ const effectiveRemovalPolicy = props.skipFinalSnapshot && removalPolicy === aws_cdk_lib_1.RemovalPolicy.SNAPSHOT
53
+ ? aws_cdk_lib_1.RemovalPolicy.DESTROY
54
+ : removalPolicy;
55
+ this.cluster = new aws_rds_1.DatabaseCluster(this, 'Default', {
56
+ engine,
57
+ clusterIdentifier: props.clusterIdentifier,
58
+ credentials: props.credentials,
59
+ defaultDatabaseName: props.databaseName,
60
+ port: props.port,
61
+ vpc: props.vpc,
62
+ vpcSubnets: props.subnetGroup
63
+ ? undefined
64
+ : ((_l = props.vpcSubnets) !== null && _l !== void 0 ? _l : { subnetType: aws_ec2_1.SubnetType.PRIVATE_ISOLATED }),
65
+ subnetGroup: props.subnetGroup,
66
+ securityGroups: props.securityGroups,
67
+ parameterGroup: props.parameterGroup,
68
+ parameters: props.parameters,
69
+ networkType: props.networkType,
70
+ writer: aws_rds_1.ClusterInstance.serverlessV2('Writer', {
71
+ ...instanceOptions,
72
+ scaleWithWriter: true,
73
+ }),
74
+ readers: Array.from({ length: readerCount }, (_, i) => aws_rds_1.ClusterInstance.serverlessV2(`Reader${i + 1}`, {
75
+ ...instanceOptions,
76
+ // scaleWithWriter: true puts the reader in promotion tier 1 and
77
+ // scales it to match the writer; false puts it in tier 2 and lets
78
+ // it scale independently with its own read workload. This is the
79
+ // real CDK mechanism behind readersInFailoverTier - there is no
80
+ // separate promotionTier field on serverless v2 instances.
81
+ scaleWithWriter: readersInFailoverTier,
82
+ })),
83
+ serverlessV2MinCapacity: minCapacity,
84
+ serverlessV2MaxCapacity: maxCapacity,
85
+ serverlessV2AutoPauseDuration: props.secondsUntilAutoPause === undefined
86
+ ? undefined
87
+ : aws_cdk_lib_1.Duration.seconds(props.secondsUntilAutoPause),
88
+ storageType: props.ioOptimized
89
+ ? aws_rds_1.DBClusterStorageType.AURORA_IOPT1
90
+ : aws_rds_1.DBClusterStorageType.AURORA,
91
+ storageEncrypted: (_m = props.storageEncrypted) !== null && _m !== void 0 ? _m : true,
92
+ storageEncryptionKey: props.storageEncryptionKey,
93
+ backup: {
94
+ retention: (_o = props.backupRetention) !== null && _o !== void 0 ? _o : aws_cdk_lib_1.Duration.days(7),
95
+ preferredWindow: props.preferredBackupWindow,
96
+ },
97
+ preferredMaintenanceWindow: props.preferredMaintenanceWindow,
98
+ autoMinorVersionUpgrade: (_p = props.autoMinorVersionUpgrade) !== null && _p !== void 0 ? _p : true,
99
+ deletionProtection: (_q = props.deletionProtection) !== null && _q !== void 0 ? _q : true,
100
+ removalPolicy: effectiveRemovalPolicy,
101
+ iamAuthentication: (_r = props.iamAuthentication) !== null && _r !== void 0 ? _r : true,
102
+ monitoringInterval: props.monitoringInterval,
103
+ enablePerformanceInsights: (_s = props.enablePerformanceInsights) !== null && _s !== void 0 ? _s : false,
104
+ performanceInsightRetention: props.performanceInsightRetention,
105
+ cloudwatchLogsExports: (_t = props.cloudwatchLogsExports) !== null && _t !== void 0 ? _t : ['postgresql'],
106
+ cloudwatchLogsRetention: (_u = props.cloudwatchLogsRetention) !== null && _u !== void 0 ? _u : aws_logs_1.RetentionDays.ONE_MONTH,
107
+ });
108
+ for (const peer of (_v = props.allowFrom) !== null && _v !== void 0 ? _v : []) {
109
+ this.cluster.connections.allowDefaultPortFrom(peer);
110
+ }
111
+ this.secret = this.cluster.secret;
112
+ // A retained cluster is useless without its credentials: keep the generated
113
+ // secret unless the cluster itself is destroyed. DatabaseCluster creates
114
+ // the generated secret as its 'Secret' child; user-supplied secrets are
115
+ // left alone.
116
+ const generatedSecret = this.cluster.node.tryFindChild('Secret');
117
+ if (generatedSecret instanceof aws_cdk_lib_1.Resource) {
118
+ generatedSecret.applyRemovalPolicy((_w = props.secretRemovalPolicy) !== null && _w !== void 0 ? _w : (effectiveRemovalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY
119
+ ? aws_cdk_lib_1.RemovalPolicy.DESTROY
120
+ : aws_cdk_lib_1.RemovalPolicy.RETAIN));
121
+ }
122
+ this.clusterIdentifier = this.cluster.clusterIdentifier;
123
+ this.clusterResourceIdentifier = this.cluster.clusterResourceIdentifier;
124
+ this.instanceIdentifiers = this.cluster.instanceIdentifiers;
125
+ this.clusterEndpoint = this.cluster.clusterEndpoint;
126
+ this.clusterReadEndpoint = this.cluster.clusterReadEndpoint;
127
+ this.instanceEndpoints = this.cluster.instanceEndpoints;
128
+ this.engine = this.cluster.engine;
129
+ this.clusterArn = this.cluster.clusterArn;
130
+ this.connections = this.cluster.connections;
131
+ this.dbClusterRef = this.cluster.dbClusterRef;
132
+ this.stack = this.cluster.stack;
133
+ this.env = this.cluster.env;
134
+ }
135
+ /**
136
+ * Validates the capacity range, reader count and auto-pause setting.
137
+ *
138
+ * @param minCapacity minimum ACUs
139
+ * @param maxCapacity maximum ACUs
140
+ * @param readers number of reader instances
141
+ * @param secondsUntilAutoPause idle time before pause, if any
142
+ */
143
+ static validate(minCapacity, maxCapacity, readers, secondsUntilAutoPause) {
144
+ const isHalfStep = (value) => Number.isInteger(value * 2);
145
+ if (minCapacity < 0 || !isHalfStep(minCapacity)) {
146
+ throw new Error(`minCapacity must be 0 or a positive half-step value, got ${minCapacity}`);
147
+ }
148
+ if (maxCapacity <= 0.5 ||
149
+ maxCapacity >
150
+ StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT ||
151
+ !isHalfStep(maxCapacity)) {
152
+ throw new Error(`maxCapacity must be a half-step value greater than 0.5 and at most ${StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT}, got ${maxCapacity}`);
153
+ }
154
+ if (minCapacity > maxCapacity) {
155
+ throw new Error(`minCapacity (${minCapacity}) must not exceed maxCapacity (${maxCapacity})`);
156
+ }
157
+ if (!Number.isInteger(readers) || readers < 0) {
158
+ throw new Error(`readers must be a non-negative integer, got ${readers}`);
159
+ }
160
+ if (secondsUntilAutoPause !== undefined) {
161
+ if (minCapacity !== 0) {
162
+ throw new Error('secondsUntilAutoPause requires minCapacity to be 0');
163
+ }
164
+ if (!Number.isInteger(secondsUntilAutoPause) ||
165
+ secondsUntilAutoPause <
166
+ StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS ||
167
+ secondsUntilAutoPause >
168
+ StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS) {
169
+ throw new Error(`secondsUntilAutoPause must be an integer between ${StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS} and ${StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS}, got ${secondsUntilAutoPause}`);
170
+ }
171
+ }
172
+ }
173
+ // From IDatabaseCluster
174
+ addProxy(id, options) {
175
+ return this.cluster.addProxy(id, options);
176
+ }
177
+ grantConnect(grantee, dbUser) {
178
+ return this.cluster.grantConnect(grantee, dbUser);
179
+ }
180
+ grantDataApiAccess(grantee) {
181
+ return this.cluster.grantDataApiAccess(grantee);
182
+ }
183
+ // From ISecretAttachmentTarget
184
+ asSecretAttachmentTarget() {
185
+ return this.cluster.asSecretAttachmentTarget();
186
+ }
187
+ // From IResource
188
+ applyRemovalPolicy(policy) {
189
+ this.cluster.applyRemovalPolicy(policy);
190
+ }
191
+ // From IDatabaseCluster (metrics)
192
+ metric(metricName, props) {
193
+ return this.cluster.metric(metricName, props);
194
+ }
195
+ metricCPUUtilization(props) {
196
+ return this.cluster.metricCPUUtilization(props);
197
+ }
198
+ metricDatabaseConnections(props) {
199
+ return this.cluster.metricDatabaseConnections(props);
200
+ }
201
+ metricDeadlocks(props) {
202
+ return this.cluster.metricDeadlocks(props);
203
+ }
204
+ metricEngineUptime(props) {
205
+ return this.cluster.metricEngineUptime(props);
206
+ }
207
+ metricFreeableMemory(props) {
208
+ return this.cluster.metricFreeableMemory(props);
209
+ }
210
+ metricFreeLocalStorage(props) {
211
+ return this.cluster.metricFreeLocalStorage(props);
212
+ }
213
+ metricNetworkReceiveThroughput(props) {
214
+ return this.cluster.metricNetworkReceiveThroughput(props);
215
+ }
216
+ metricNetworkThroughput(props) {
217
+ return this.cluster.metricNetworkThroughput(props);
218
+ }
219
+ metricNetworkTransmitThroughput(props) {
220
+ return this.cluster.metricNetworkTransmitThroughput(props);
221
+ }
222
+ metricSnapshotStorageUsed(props) {
223
+ return this.cluster.metricSnapshotStorageUsed(props);
224
+ }
225
+ metricTotalBackupStorageBilled(props) {
226
+ return this.cluster.metricTotalBackupStorageBilled(props);
227
+ }
228
+ metricVolumeBytesUsed(props) {
229
+ return this.cluster.metricVolumeBytesUsed(props);
230
+ }
231
+ metricVolumeReadIOPs(props) {
232
+ return this.cluster.metricVolumeReadIOPs(props);
233
+ }
234
+ metricVolumeWriteIOPs(props) {
235
+ return this.cluster.metricVolumeWriteIOPs(props);
236
+ }
237
+ }
238
+ exports.StandardPostgresAuroraServerlessCluster = StandardPostgresAuroraServerlessCluster;
239
+ /** The engine version used when props.engineVersion is not provided. */
240
+ StandardPostgresAuroraServerlessCluster.DEFAULT_ENGINE_VERSION = aws_rds_1.AuroraPostgresEngineVersion.VER_17_4;
241
+ StandardPostgresAuroraServerlessCluster.DEFAULT_MIN_CAPACITY = 0.5;
242
+ StandardPostgresAuroraServerlessCluster.DEFAULT_MAX_CAPACITY = 4;
243
+ StandardPostgresAuroraServerlessCluster.DEFAULT_READERS = 1;
244
+ StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT = 256;
245
+ StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS = 300;
246
+ StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS = 86400;
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLXNlcnZlcmxlc3MtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MtcmRzL2xpYi9zdGFuZGFyZC1wb3N0Z3Jlcy1hdXJvcmEtc2VydmVybGVzcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQU1xQjtBQUVyQixpREFBaUU7QUFFakUsbURBQW1EO0FBQ25ELGlEQWE2QjtBQU03QiwyQ0FBOEQ7QUFDOUQsNkNBQStDO0FBc0cvQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHVDQUNYLFNBQVEsMkJBQWlCO0lBa0N6QixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtRDs7UUFFbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQzlCO2dCQUNFLEdBQUcsQ0FBQyxNQUFBLEtBQUssQ0FBQyxZQUFZLG1DQUFJLEVBQUUsQ0FBQztnQkFDN0IsZUFBZSxFQUNiLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxlQUFlO2FBQy9ELEVBQ0QsMEJBQWUsQ0FDaEI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkdBQTZHLENBQzlHLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsK0JBQXFCLENBQUMsY0FBYyxDQUFDO1lBQ2xELE9BQU8sRUFDTCxNQUFBLEtBQUssQ0FBQyxhQUFhLG1DQUNuQix1Q0FBdUMsQ0FBQyxzQkFBc0I7U0FDakUsQ0FBQyxDQUFDO1FBRUgsbUVBQW1FO1FBQ25FLHdFQUF3RTtRQUN4RSxVQUFVO1FBQ1YsTUFBTSxlQUFlLEdBQUc7WUFDdEIsY0FBYyxFQUFF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QUM7SUFDckQsQ0FBQztJQUVELCtCQUErQixDQUFDLEtBQXFCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBcUI7UUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFxQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQXFCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBcUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFxQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFqVkgsMEZBa1ZDO0FBOVVDLHdFQUF3RTtBQUN4RCw4REFBc0IsR0FBRyxxQ0FBMkIsQ0FBQyxRQUFRLENBQUM7QUFDOUQsNERBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQzNCLDREQUFvQixHQUFHLENBQUMsQ0FBQztBQUN6Qix1REFBZSxHQUFHLENBQUMsQ0FBQztBQUNwQiwwREFBa0IsR0FBRyxHQUFHLENBQUM7QUFDekIsOERBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzdCLDhEQUFzQixHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBSZW1vdmFsUG9saWN5LFxuICBSZXNvdXJjZSxcbiAgdHlwZSBSZXNvdXJjZUVudmlyb25tZW50LFxuICB0eXBlIFN0YWNrLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7TWV0cmljLCBNZXRyaWNPcHRpb25zfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQge3R5cGUgQ29ubmVjdGlvbnMsIFN1Ym5ldFR5cGV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge0dyYW50LCBJR3JhbnRhYmxlfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBDbHVzdGVySW5zdGFuY2UsXG4gIERhdGFiYXNlQ2x1c3RlcixcbiAgRGF0YWJhc2VDbHVzdGVyRW5naW5lLFxuICB0eXBlIERhdGFiYXNlUHJveHksXG4gIHR5cGUgRGF0YWJhc2VQcm94eU9wdGlvbnMsXG4gIHR5cGUgREJDbHVzdGVyUmVmZXJlbmNlLFxuICBEQkNsdXN0ZXJTdG9yYWdlVHlwZSxcbiAgdHlwZSBFbmRwb2ludCxcbiAgdHlwZSBJQ2x1c3RlckVuZ2luZSxcbiAgdHlwZSBJRGF0YWJhc2VDbHVzdGVyLFxuICB0eXBlIElQYXJhbWV0ZXJHcm91cCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgdHlwZSB7XG4gIElTZWNyZXQsXG4gIFNlY3JldEF0dGFjaG1lbnRUYXJnZXRQcm9wcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJQcm9wc1xuICBleHRlbmRzIFN0YW5kYXJkUG9zdGdyZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXVyb3JhIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyB0aGUgY2x1c3RlciBtYXkgc2NhbGUgZG93biB0by5cbiAgICogSGFsZi1zdGVwIGluY3JlbWVudHM7IDAgZW5hYmxlcyBhdXRvbWF0aWMgcGF1c2Ugb24gZW5naW5lIHZlcnNpb25zIHRoYXRcbiAgICogc3VwcG9ydCBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgMC41XG4gICAqL1xuICByZWFkb25seSBtaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyB0aGUgY2x1c3RlciBtYXkgc2NhbGUgdXAgdG8uXG4gICAqIEhhbGYtc3RlcCBpbmNyZW1lbnRzLCBncmVhdGVyIHRoYW4gMC41IGFuZCBhdCBtb3N0IDI1Ni5cbiAgICpcbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIHNlY29uZHMgdGhlIGNsdXN0ZXIgbWF5IHJlbWFpbiBpZGxlIGJlZm9yZSBpdCBpcyBwYXVzZWQsXG4gICAqIGJldHdlZW4gMzAwICg1IG1pbnV0ZXMpIGFuZCA4NjQwMCAoMjQgaG91cnMpLiBPbmx5IHN1cHBvcnRlZCB3aGVuXG4gICAqIG1pbkNhcGFjaXR5IGlzIDAuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGF1dG9tYXRpYyBwYXVzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlYWRlciBpbnN0YW5jZXMgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSByZWFkZXJzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHJlYWRlciBpbnN0YW5jZXMgYXJlIHByb21vdGVkIHRvIHdyaXRlciBpbiB0aGUgc2FtZSB0aWVyIGFzIHRoZVxuICAgKiB3cml0ZXIgaW5zdGFuY2UgZHVyaW5nIGEgZmFpbG92ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRlcnNJbkZhaWxvdmVyVGllcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJhbWV0ZXIgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZXMgaW4gdGhlIGNsdXN0ZXIuIERpc3RpbmN0XG4gICAqIGZyb20gdGhlIGNsdXN0ZXIgbGV2ZWwgcGFyYW1ldGVyR3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHBhcmFtZXRlciBncm91cCBmb3IgdGhlIGVuZ2luZSB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVBhcmFtZXRlckdyb3VwPzogSVBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdG9yYWdlIG9mIHRoZSBjbHVzdGVyIHVzZXMgQXVyb3JhIEkvTy1PcHRpbWl6ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpb09wdGltaXplZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGluc3RhbmNlcyBpbiB0aGUgY2x1c3RlciBhcmUgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgSUFNIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuIFJlcXVpcmVkIGZvclxuICAgKiBgZ3JhbnRDb25uZWN0YCB0byBoYXZlIGFueSBlZmZlY3QgYW5kIGZvciBSRFMgUHJveHkgSUFNIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpYW1BdXRoZW50aWNhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBnZW5lcmF0ZWQgbWFzdGVyIGNyZWRlbnRpYWxzIHNlY3JldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmb2xsb3dzIHRoZSBjbHVzdGVyOiBSRVRBSU4gdW5sZXNzIHRoZSBjbHVzdGVyJ3MgcmVtb3ZhbFxuICAgKiBwb2xpY3kgaXMgREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0UmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBzdGFuZGFyZCBBdXJvcmEgU2VydmVybGVzcyB2MiBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0ZXIuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBpbXBsZW1lbnRzIElEYXRhYmFzZUNsdXN0ZXIgYnkgZGVsZWdhdGluZyB0byB0aGUgdW5kZXJseWluZ1xuICogRGF0YWJhc2VDbHVzdGVyIGV4cG9zZWQgYXMgYGNsdXN0ZXJgLiBDREsgQVBJcyB0aGF0IGluc3BlY3QgdGhlIGNvbnN0cnVjdFxuICogdHJlZSByYXRoZXIgdGhhbiB0aGUgaW50ZXJmYWNlLCBzdWNoIGFzIGBQcm94eVRhcmdldC5mcm9tQ2x1c3RlcmAsIGRvIG5vdFxuICogZmluZCB0aGUgY2x1c3RlcidzIGluc3RhbmNlcyB0aHJvdWdoIHRoaXMgd3JhcHBlciBhbmQgd291bGQgY3JlYXRlIGEgcHJveHlcbiAqIHRhcmdldCBncm91cCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZW07IGhhbmQgdGhvc2UgQVBJcyBgY2x1c3RlcmAgaW5zdGVhZCxcbiAqIG9yIHVzZSBgYWRkUHJveHlgLCB3aGljaCBkb2VzIHNvIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJcbiAgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElEYXRhYmFzZUNsdXN0ZXJcbntcbiAgLyoqIFRoZSBlbmdpbmUgdmVyc2lvbiB1c2VkIHdoZW4gcHJvcHMuZW5naW5lVmVyc2lvbiBpcyBub3QgcHJvdmlkZWQuICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0VOR0lORV9WRVJTSU9OID0gQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uLlZFUl8xN180O1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NSU5fQ0FQQUNJVFkgPSAwLjU7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9DQVBBQ0lUWSA9IDQ7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1JFQURFUlMgPSAxO1xuICBzdGF0aWMgcmVhZG9ubHkgTUFYX0NBUEFDSVRZX0xJTUlUID0gMjU2O1xuICBzdGF0aWMgcmVhZG9ubHkgTUlOX0FVVE9fUEFVU0VfU0VDT05EUyA9IDMwMDtcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9BVVRPX1BBVVNFX1NFQ09ORFMgPSA4NjQwMDtcblxuICAvKiogVGhlIHVuZGVybHlpbmcgQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgY2x1c3RlcjogRGF0YWJhc2VDbHVzdGVyO1xuXG4gIC8qKiBUaGUgZ2VuZXJhdGVkIChvciBwcm92aWRlZCkgbWFzdGVyIGNyZWRlbnRpYWxzIHNlY3JldCwgaWYgYW55LiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBJU2VjcmV0O1xuXG4gIC8vIEZyb20gSURhdGFiYXNlQ2x1c3RlclxuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcjogc3RyaW5nO1xuICByZWFkb25seSBjbHVzdGVyUmVzb3VyY2VJZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbmNlSWRlbnRpZmllcnM6IHN0cmluZ1tdO1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnQ6IEVuZHBvaW50O1xuICByZWFkb25seSBjbHVzdGVyUmVhZEVuZHBvaW50OiBFbmRwb2ludDtcbiAgcmVhZG9ubHkgaW5zdGFuY2VFbmRwb2ludHM6IEVuZHBvaW50W107XG4gIHJlYWRvbmx5IGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICByZWFkb25seSBjbHVzdGVyQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcmVhZG9ubHkgZGJDbHVzdGVyUmVmOiBEQkNsdXN0ZXJSZWZlcmVuY2U7XG5cbiAgLy8gRnJvbSBJUmVzb3VyY2VcbiAgcmVhZG9ubHkgc3RhY2s6IFN0YWNrO1xuICByZWFkb25seSBlbnY6IFJlc291cmNlRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShcbiAgICAgICAge1xuICAgICAgICAgIC4uLihwcm9wcy5zdGFuZGFyZFRhZ3MgPz8ge30pLFxuICAgICAgICAgIHN1cHByZXNzVGFnZ2luZzpcbiAgICAgICAgICAgIHByb3BzLnN1cHByZXNzVGFnZ2luZyA/PyBwcm9wcy5zdGFuZGFyZFRhZ3M/LnN1cHByZXNzVGFnZ2luZyxcbiAgICAgICAgfSxcbiAgICAgICAgTGliU3RhbmRhcmRUYWdzLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5wYXJhbWV0ZXJHcm91cCAmJiBwcm9wcy5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdwYXJhbWV0ZXJHcm91cCBhbmQgcGFyYW1ldGVycyBjYW5ub3QgYmUgY29tYmluZWQ7IHBhc3MgZWl0aGVyIGFuIGV4aXN0aW5nIGdyb3VwIG9yIHBhcmFtZXRlcnMgZm9yIGEgbmV3IG9uZScsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGVuZ2luZSA9IERhdGFiYXNlQ2x1c3RlckVuZ2luZS5hdXJvcmFQb3N0Z3Jlcyh7XG4gICAgICB2ZXJzaW9uOlxuICAgICAgICBwcm9wcy5lbmdpbmVWZXJzaW9uID8/XG4gICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5ERUZBVUxUX0VOR0lORV9WRVJTSU9OLFxuICAgIH0pO1xuXG4gICAgLy8gY2FDZXJ0aWZpY2F0ZSwgaW5zdGFuY2VQYXJhbWV0ZXJHcm91cCBhbmQgcHVibGljbHlBY2Nlc3NpYmxlIGFyZVxuICAgIC8vIHBlci1pbnN0YW5jZSBzZXR0aW5ncyBpbiB0aGUgQ0RLIEFQSSwgYXBwbGllZCB0byB0aGUgd3JpdGVyIGFuZCBldmVyeVxuICAgIC8vIHJlYWRlci5cbiAgICBjb25zdCBpbnN0YW5jZU9wdGlvbnMgPSB7XG4gICAgICBwYXJhbWV0ZXJHcm91cDogcHJvcHMuaW5zdGFuY2VQYXJhbWV0ZXJHcm91cCxcbiAgICAgIGNhQ2VydGlmaWNhdGU6IHByb3BzLmNhQ2VydGlmaWNhdGUsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSA/PyBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVhZGVyQ291bnQgPVxuICAgICAgcHJvcHMucmVhZGVycyA/PyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuREVGQVVMVF9SRUFERVJTO1xuICAgIGNvbnN0IHJlYWRlcnNJbkZhaWxvdmVyVGllciA9IHByb3BzLnJlYWRlcnNJbkZhaWxvdmVyVGllciA/PyB0cnVlO1xuICAgIGNvbnN0IG1pbkNhcGFjaXR5ID1cbiAgICAgIHByb3BzLm1pbkNhcGFjaXR5ID8/XG4gICAgICBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuREVGQVVMVF9NSU5fQ0FQQUNJVFk7XG4gICAgY29uc3QgbWF4Q2FwYWNpdHkgPVxuICAgICAgcHJvcHMubWF4Q2FwYWNpdHkgPz9cbiAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5ERUZBVUxUX01BWF9DQVBBQ0lUWTtcbiAgICBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIudmFsaWRhdGUoXG4gICAgICBtaW5DYXBhY2l0eSxcbiAgICAgIG1heENhcGFjaXR5LFxuICAgICAgcmVhZGVyQ291bnQsXG4gICAgICBwcm9wcy5zZWNvbmRzVW50aWxBdXRvUGF1c2UsXG4gICAgKTtcblxuICAgIC8vIHJlbW92YWxQb2xpY3kgaXMgdGhlIENESy1uYXRpdmUgY29udHJvbC4gc2tpcEZpbmFsU25hcHNob3QgaGFzIG5vXG4gICAgLy8gZGlyZWN0IENESyBlcXVpdmFsZW50IC0gaXQgb25seSBkb3duZ3JhZGVzIGEgU05BUFNIT1QgcmVtb3ZhbCBwb2xpY3lcbiAgICAvLyB0byBERVNUUk9ZIChuby1vcCBvdGhlcndpc2UpLlxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IGVmZmVjdGl2ZVJlbW92YWxQb2xpY3kgPVxuICAgICAgcHJvcHMuc2tpcEZpbmFsU25hcHNob3QgJiYgcmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5TTkFQU0hPVFxuICAgICAgICA/IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICA6IHJlbW92YWxQb2xpY3k7XG5cbiAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgRGF0YWJhc2VDbHVzdGVyKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgZW5naW5lLFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmNsdXN0ZXJJZGVudGlmaWVyLFxuICAgICAgY3JlZGVudGlhbHM6IHByb3BzLmNyZWRlbnRpYWxzLFxuICAgICAgZGVmYXVsdERhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgcG9ydDogcHJvcHMucG9ydCxcblxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy5zdWJuZXRHcm91cFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IChwcm9wcy52cGNTdWJuZXRzID8/IHtzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUR9KSxcbiAgICAgIHN1Ym5ldEdyb3VwOiBwcm9wcy5zdWJuZXRHcm91cCxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyxcblxuICAgICAgcGFyYW1ldGVyR3JvdXA6IHByb3BzLnBhcmFtZXRlckdyb3VwLFxuICAgICAgcGFyYW1ldGVyczogcHJvcHMucGFyYW1ldGVycyxcbiAgICAgIG5ldHdvcmtUeXBlOiBwcm9wcy5uZXR3b3JrVHlwZSxcblxuICAgICAgd3JpdGVyOiBDbHVzdGVySW5zdGFuY2Uuc2VydmVybGVzc1YyKCdXcml0ZXInLCB7XG4gICAgICAgIC4uLmluc3RhbmNlT3B0aW9ucyxcbiAgICAgICAgc2NhbGVXaXRoV3JpdGVyOiB0cnVlLFxuICAgICAgfSksXG4gICAgICByZWFkZXJzOiBBcnJheS5mcm9tKHtsZW5ndGg6IHJlYWRlckNvdW50fSwgKF8sIGkpID0+XG4gICAgICAgIENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoYFJlYWRlciR7aSArIDF9YCwge1xuICAgICAgICAgIC4uLmluc3RhbmNlT3B0aW9ucyxcbiAgICAgICAgICAvLyBzY2FsZVdpdGhXcml0ZXI6IHRydWUgcHV0cyB0aGUgcmVhZGVyIGluIHByb21vdGlvbiB0aWVyIDEgYW5kXG4gICAgICAgICAgLy8gc2NhbGVzIGl0IHRvIG1hdGNoIHRoZSB3cml0ZXI7IGZhbHNlIHB1dHMgaXQgaW4gdGllciAyIGFuZCBsZXRzXG4gICAgICAgICAgLy8gaXQgc2NhbGUgaW5kZXBlbmRlbnRseSB3aXRoIGl0cyBvd24gcmVhZCB3b3JrbG9hZC4gVGhpcyBpcyB0aGVcbiAgICAgICAgICAvLyByZWFsIENESyBtZWNoYW5pc20gYmVoaW5kIHJlYWRlcnNJbkZhaWxvdmVyVGllciAtIHRoZXJlIGlzIG5vXG4gICAgICAgICAgLy8gc2VwYXJhdGUgcHJvbW90aW9uVGllciBmaWVsZCBvbiBzZXJ2ZXJsZXNzIHYyIGluc3RhbmNlcy5cbiAgICAgICAgICBzY2FsZVdpdGhXcml0ZXI6IHJlYWRlcnNJbkZhaWxvdmVyVGllcixcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgc2VydmVybGVzc1YyTWluQ2FwYWNpdHk6IG1pbkNhcGFjaXR5LFxuICAgICAgc2VydmVybGVzc1YyTWF4Q2FwYWNpdHk6IG1heENhcGFjaXR5LFxuICAgICAgc2VydmVybGVzc1YyQXV0b1BhdXNlRHVyYXRpb246XG4gICAgICAgIHByb3BzLnNlY29uZHNVbnRpbEF1dG9QYXVzZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IER1cmF0aW9uLnNlY29uZHMocHJvcHMuc2Vjb25kc1VudGlsQXV0b1BhdXNlKSxcbiAgICAgIHN0b3JhZ2VUeXBlOiBwcm9wcy5pb09wdGltaXplZFxuICAgICAgICA/IERCQ2x1c3RlclN0b3JhZ2VUeXBlLkFVUk9SQV9JT1BUMVxuICAgICAgICA6IERCQ2x1c3RlclN0b3JhZ2VUeXBlLkFVUk9SQSxcblxuICAgICAgc3RvcmFnZUVuY3J5cHRlZDogcHJvcHMuc3RvcmFnZUVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgc3RvcmFnZUVuY3J5cHRpb25LZXk6IHByb3BzLnN0b3JhZ2VFbmNyeXB0aW9uS2V5LFxuXG4gICAgICBiYWNrdXA6IHtcbiAgICAgICAgcmV0ZW50aW9uOiBwcm9wcy5iYWNrdXBSZXRlbnRpb24gPz8gRHVyYXRpb24uZGF5cyg3KSxcbiAgICAgICAgcHJlZmVycmVkV2luZG93OiBwcm9wcy5wcmVmZXJyZWRCYWNrdXBXaW5kb3csXG4gICAgICB9LFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU6IHByb3BzLmF1dG9NaW5vclZlcnNpb25VcGdyYWRlID8/IHRydWUsXG5cbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBlZmZlY3RpdmVSZW1vdmFsUG9saWN5LFxuICAgICAgaWFtQXV0aGVudGljYXRpb246IHByb3BzLmlhbUF1dGhlbnRpY2F0aW9uID8/IHRydWUsXG5cbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogcHJvcHMuZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0cyA/PyBmYWxzZSxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLFxuXG4gICAgICBjbG91ZHdhdGNoTG9nc0V4cG9ydHM6IHByb3BzLmNsb3Vkd2F0Y2hMb2dzRXhwb3J0cyA/PyBbJ3Bvc3RncmVzcWwnXSxcbiAgICAgIGNsb3Vkd2F0Y2hMb2dzUmV0ZW50aW9uOlxuICAgICAgICBwcm9wcy5jbG91ZHdhdGNoTG9nc1JldGVudGlvbiA/PyBSZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgcGVlciBvZiBwcm9wcy5hbGxvd0Zyb20gPz8gW10pIHtcbiAgICAgIHRoaXMuY2x1c3Rlci5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0RnJvbShwZWVyKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlY3JldCA9IHRoaXMuY2x1c3Rlci5zZWNyZXQ7XG4gICAgLy8gQSByZXRhaW5lZCBjbHVzdGVyIGlzIHVzZWxlc3Mgd2l0aG91dCBpdHMgY3JlZGVudGlhbHM6IGtlZXAgdGhlIGdlbmVyYXRlZFxuICAgIC8vIHNlY3JldCB1bmxlc3MgdGhlIGNsdXN0ZXIgaXRzZWxmIGlzIGRlc3Ryb3llZC4gRGF0YWJhc2VDbHVzdGVyIGNyZWF0ZXNcbiAgICAvLyB0aGUgZ2VuZXJhdGVkIHNlY3JldCBhcyBpdHMgJ1NlY3JldCcgY2hpbGQ7IHVzZXItc3VwcGxpZWQgc2VjcmV0cyBhcmVcbiAgICAvLyBsZWZ0IGFsb25lLlxuICAgIGNvbnN0IGdlbmVyYXRlZFNlY3JldCA9IHRoaXMuY2x1c3Rlci5ub2RlLnRyeUZpbmRDaGlsZCgnU2VjcmV0Jyk7XG4gICAgaWYgKGdlbmVyYXRlZFNlY3JldCBpbnN0YW5jZW9mIFJlc291cmNlKSB7XG4gICAgICBnZW5lcmF0ZWRTZWNyZXQuYXBwbHlSZW1vdmFsUG9saWN5KFxuICAgICAgICBwcm9wcy5zZWNyZXRSZW1vdmFsUG9saWN5ID8/XG4gICAgICAgICAgKGVmZmVjdGl2ZVJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICAgICAgPyBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgICAgICAgIDogUmVtb3ZhbFBvbGljeS5SRVRBSU4pLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jbHVzdGVySWRlbnRpZmllciA9IHRoaXMuY2x1c3Rlci5jbHVzdGVySWRlbnRpZmllcjtcbiAgICB0aGlzLmNsdXN0ZXJSZXNvdXJjZUlkZW50aWZpZXIgPSB0aGlzLmNsdXN0ZXIuY2x1c3RlclJlc291cmNlSWRlbnRpZmllcjtcbiAgICB0aGlzLmluc3RhbmNlSWRlbnRpZmllcnMgPSB0aGlzLmNsdXN0ZXIuaW5zdGFuY2VJZGVudGlmaWVycztcbiAgICB0aGlzLmNsdXN0ZXJFbmRwb2ludCA9IHRoaXMuY2x1c3Rlci5jbHVzdGVyRW5kcG9pbnQ7XG4gICAgdGhpcy5jbHVzdGVyUmVhZEVuZHBvaW50ID0gdGhpcy5jbHVzdGVyLmNsdXN0ZXJSZWFkRW5kcG9pbnQ7XG4gICAgdGhpcy5pbnN0YW5jZUVuZHBvaW50cyA9IHRoaXMuY2x1c3Rlci5pbnN0YW5jZUVuZHBvaW50cztcbiAgICB0aGlzLmVuZ2luZSA9IHRoaXMuY2x1c3Rlci5lbmdpbmU7XG4gICAgdGhpcy5jbHVzdGVyQXJuID0gdGhpcy5jbHVzdGVyLmNsdXN0ZXJBcm47XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuY2x1c3Rlci5jb25uZWN0aW9ucztcbiAgICB0aGlzLmRiQ2x1c3RlclJlZiA9IHRoaXMuY2x1c3Rlci5kYkNsdXN0ZXJSZWY7XG4gICAgdGhpcy5zdGFjayA9IHRoaXMuY2x1c3Rlci5zdGFjaztcbiAgICB0aGlzLmVudiA9IHRoaXMuY2x1c3Rlci5lbnY7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBjYXBhY2l0eSByYW5nZSwgcmVhZGVyIGNvdW50IGFuZCBhdXRvLXBhdXNlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBtaW5DYXBhY2l0eSBtaW5pbXVtIEFDVXNcbiAgICogQHBhcmFtIG1heENhcGFjaXR5IG1heGltdW0gQUNVc1xuICAgKiBAcGFyYW0gcmVhZGVycyBudW1iZXIgb2YgcmVhZGVyIGluc3RhbmNlc1xuICAgKiBAcGFyYW0gc2Vjb25kc1VudGlsQXV0b1BhdXNlIGlkbGUgdGltZSBiZWZvcmUgcGF1c2UsIGlmIGFueVxuICAgKi9cbiAgc3RhdGljIHZhbGlkYXRlKFxuICAgIG1pbkNhcGFjaXR5OiBudW1iZXIsXG4gICAgbWF4Q2FwYWNpdHk6IG51bWJlcixcbiAgICByZWFkZXJzOiBudW1iZXIsXG4gICAgc2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpc0hhbGZTdGVwID0gKHZhbHVlOiBudW1iZXIpID0+IE51bWJlci5pc0ludGVnZXIodmFsdWUgKiAyKTtcbiAgICBpZiAobWluQ2FwYWNpdHkgPCAwIHx8ICFpc0hhbGZTdGVwKG1pbkNhcGFjaXR5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWluQ2FwYWNpdHkgbXVzdCBiZSAwIG9yIGEgcG9zaXRpdmUgaGFsZi1zdGVwIHZhbHVlLCBnb3QgJHttaW5DYXBhY2l0eX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbWF4Q2FwYWNpdHkgPD0gMC41IHx8XG4gICAgICBtYXhDYXBhY2l0eSA+XG4gICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NQVhfQ0FQQUNJVFlfTElNSVQgfHxcbiAgICAgICFpc0hhbGZTdGVwKG1heENhcGFjaXR5KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWF4Q2FwYWNpdHkgbXVzdCBiZSBhIGhhbGYtc3RlcCB2YWx1ZSBncmVhdGVyIHRoYW4gMC41IGFuZCBhdCBtb3N0ICR7U3RhbmRhcmRQb3N0Z3Jlc0F1cm9yYVNlcnZlcmxlc3NDbHVzdGVyLk1BWF9DQVBBQ0lUWV9MSU1JVH0sIGdvdCAke21heENhcGFjaXR5fWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobWluQ2FwYWNpdHkgPiBtYXhDYXBhY2l0eSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWluQ2FwYWNpdHkgKCR7bWluQ2FwYWNpdHl9KSBtdXN0IG5vdCBleGNlZWQgbWF4Q2FwYWNpdHkgKCR7bWF4Q2FwYWNpdHl9KWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocmVhZGVycykgfHwgcmVhZGVycyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcmVhZGVycyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIGdvdCAke3JlYWRlcnN9YCk7XG4gICAgfVxuICAgIGlmIChzZWNvbmRzVW50aWxBdXRvUGF1c2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG1pbkNhcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc2Vjb25kc1VudGlsQXV0b1BhdXNlIHJlcXVpcmVzIG1pbkNhcGFjaXR5IHRvIGJlIDAnKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoc2Vjb25kc1VudGlsQXV0b1BhdXNlKSB8fFxuICAgICAgICBzZWNvbmRzVW50aWxBdXRvUGF1c2UgPFxuICAgICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NSU5fQVVUT19QQVVTRV9TRUNPTkRTIHx8XG4gICAgICAgIHNlY29uZHNVbnRpbEF1dG9QYXVzZSA+XG4gICAgICAgICAgU3RhbmRhcmRQb3N0Z3Jlc0F1cm9yYVNlcnZlcmxlc3NDbHVzdGVyLk1BWF9BVVRPX1BBVVNFX1NFQ09ORFNcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYHNlY29uZHNVbnRpbEF1dG9QYXVzZSBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAke1N0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NSU5fQVVUT19QQVVTRV9TRUNPTkRTfSBhbmQgJHtTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuTUFYX0FVVE9fUEFVU0VfU0VDT05EU30sIGdvdCAke3NlY29uZHNVbnRpbEF1dG9QYXVzZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZyb20gSURhdGFiYXNlQ2x1c3RlclxuXG4gIGFkZFByb3h5KGlkOiBzdHJpbmcsIG9wdGlvbnM6IERhdGFiYXNlUHJveHlPcHRpb25zKTogRGF0YWJhc2VQcm94eSB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5hZGRQcm94eShpZCwgb3B0aW9ucyk7XG4gIH1cblxuICBncmFudENvbm5lY3QoZ3JhbnRlZTogSUdyYW50YWJsZSwgZGJVc2VyOiBzdHJpbmcpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5ncmFudENvbm5lY3QoZ3JhbnRlZSwgZGJVc2VyKTtcbiAgfVxuXG4gIGdyYW50RGF0YUFwaUFjY2VzcyhncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIuZ3JhbnREYXRhQXBpQWNjZXNzKGdyYW50ZWUpO1xuICB9XG5cbiAgLy8gRnJvbSBJU2VjcmV0QXR0YWNobWVudFRhcmdldFxuXG4gIGFzU2VjcmV0QXR0YWNobWVudFRhcmdldCgpOiBTZWNyZXRBdHRhY2htZW50VGFyZ2V0UHJvcHMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIuYXNTZWNyZXRBdHRhY2htZW50VGFyZ2V0KCk7XG4gIH1cblxuICAvLyBGcm9tIElSZXNvdXJjZVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IFJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aGlzLmNsdXN0ZXIuYXBwbHlSZW1vdmFsUG9saWN5KHBvbGljeSk7XG4gIH1cblxuICAvLyBGcm9tIElEYXRhYmFzZUNsdXN0ZXIgKG1ldHJpY3MpXG5cbiAgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpYyhtZXRyaWNOYW1lLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNDUFVVdGlsaXphdGlvbihwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljQ1BVVXRpbGl6YXRpb24ocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljRGF0YWJhc2VDb25uZWN0aW9ucyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRGF0YWJhc2VDb25uZWN0aW9ucyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNEZWFkbG9ja3MocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY0RlYWRsb2Nrcyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNFbmdpbmVVcHRpbWUocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY0VuZ2luZVVwdGltZShwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNGcmVlYWJsZU1lbW9yeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRnJlZWFibGVNZW1vcnkocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljRnJlZUxvY2FsU3RvcmFnZShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRnJlZUxvY2FsU3RvcmFnZShwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNOZXR3b3JrUmVjZWl2ZVRocm91Z2hwdXQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY05ldHdvcmtSZWNlaXZlVGhyb3VnaHB1dChwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNOZXR3b3JrVGhyb3VnaHB1dChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljTmV0d29ya1Rocm91Z2hwdXQocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljTmV0d29ya1RyYW5zbWl0VGhyb3VnaHB1dChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljTmV0d29ya1RyYW5zbWl0VGhyb3VnaHB1dChwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNTbmFwc2hvdFN0b3JhZ2VVc2VkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5tZXRyaWNTbmFwc2hvdFN0b3JhZ2VVc2VkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1RvdGFsQmFja3VwU3RvcmFnZUJpbGxlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljVG90YWxCYWNrdXBTdG9yYWdlQmlsbGVkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1ZvbHVtZUJ5dGVzVXNlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljVm9sdW1lQnl0ZXNVc2VkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1ZvbHVtZVJlYWRJT1BzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5tZXRyaWNWb2x1bWVSZWFkSU9Qcyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNWb2x1bWVXcml0ZUlPUHMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY1ZvbHVtZVdyaXRlSU9Qcyhwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
2
+ import type { DBClusterStorageType, PostgresEngineVersion } from 'aws-cdk-lib/aws-rds';
3
+ import type { Construct } from 'constructs';
4
+ import { ExtendedConstruct } from '../../aws-cdk';
5
+ import type { StandardPostgresProps } from './postgres-props';
6
+ /**
7
+ * Properties for a StandardPostgresCluster.
8
+ */
9
+ export interface StandardPostgresClusterProps extends StandardPostgresProps {
10
+ /**
11
+ * The PostgreSQL engine version to use.
12
+ *
13
+ * @default the latest version supported by this library
14
+ */
15
+ readonly engineVersion?: PostgresEngineVersion;
16
+ /**
17
+ * The name given to the cluster.
18
+ *
19
+ * @default CloudFormation-generated name
20
+ */
21
+ readonly clusterIdentifier?: string;
22
+ /**
23
+ * The instance type used for the writer and reader instances.
24
+ *
25
+ * @default m5d.large
26
+ */
27
+ readonly instanceType?: InstanceType;
28
+ /**
29
+ * The number of instances in the cluster. A Multi-AZ DB cluster requires one
30
+ * writer and two readers.
31
+ *
32
+ * @default 3
33
+ */
34
+ readonly instances?: number;
35
+ /**
36
+ * The storage type of the cluster.
37
+ *
38
+ * @default DBClusterStorageType.IO1
39
+ */
40
+ readonly storageType?: DBClusterStorageType;
41
+ /**
42
+ * The allocated storage in gibibytes.
43
+ *
44
+ * @default 100
45
+ */
46
+ readonly allocatedStorage?: number;
47
+ /**
48
+ * The provisioned IOPS for the cluster.
49
+ *
50
+ * @default 1000
51
+ */
52
+ readonly iops?: number;
53
+ /**
54
+ * Additional parameters applied to the instance-level parameter group. Distinct
55
+ * from the cluster-level parameterGroup/parameters.
56
+ *
57
+ * @default no additional parameters
58
+ */
59
+ readonly instanceParameterGroupParameters?: Record<string, string>;
60
+ /**
61
+ * Whether the instances in the cluster are publicly accessible.
62
+ *
63
+ * @default false
64
+ */
65
+ readonly publiclyAccessible?: boolean;
66
+ }
67
+ /**
68
+ * A standard PostgreSQL Multi-AZ RDS database cluster.
69
+ */
70
+ export declare class StandardPostgresCluster extends ExtendedConstruct {
71
+ constructor(scope: Construct, id: string, props: StandardPostgresClusterProps);
72
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardPostgresCluster = void 0;
4
+ const aws_cdk_1 = require("../../aws-cdk");
5
+ const truemark_1 = require("../../truemark");
6
+ /**
7
+ * A standard PostgreSQL Multi-AZ RDS database cluster.
8
+ */
9
+ class StandardPostgresCluster extends aws_cdk_1.ExtendedConstruct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, {
12
+ standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
13
+ });
14
+ // TODO Implementation
15
+ }
16
+ }
17
+ exports.StandardPostgresCluster = StandardPostgresCluster;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MtcmRzL2xpYi9zdGFuZGFyZC1wb3N0Z3Jlcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLDJDQUE4RDtBQUM5RCw2Q0FBK0M7QUF5RS9DOztHQUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSwyQkFBaUI7SUFDNUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSwwQkFBZSxDQUFDO1NBQ3RFLENBQUMsQ0FBQztRQUNILHNCQUFzQjtJQUN4QixDQUFDO0NBQ0Y7QUFYRCwwREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtJbnN0YW5jZVR5cGV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge1xuICBEQkNsdXN0ZXJTdG9yYWdlVHlwZSxcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNDbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkUG9zdGdyZXNDbHVzdGVyUHJvcHMgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IFBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgdXNlZCBmb3IgdGhlIHdyaXRlciBhbmQgcmVhZGVyIGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbTVkLmxhcmdlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU/OiBJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGluIHRoZSBjbHVzdGVyLiBBIE11bHRpLUFaIERCIGNsdXN0ZXIgcmVxdWlyZXMgb25lXG4gICAqIHdyaXRlciBhbmQgdHdvIHJlYWRlcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDNcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgdHlwZSBvZiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgREJDbHVzdGVyU3RvcmFnZVR5cGUuSU8xXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlVHlwZT86IERCQ2x1c3RlclN0b3JhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb2NhdGVkIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25lZCBJT1BTIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgaW9wcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFwcGxpZWQgdG8gdGhlIGluc3RhbmNlLWxldmVsIHBhcmFtZXRlciBncm91cC4gRGlzdGluY3RcbiAgICogZnJvbSB0aGUgY2x1c3Rlci1sZXZlbCBwYXJhbWV0ZXJHcm91cC9wYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUGFyYW1ldGVyR3JvdXBQYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5zdGFuY2VzIGluIHRoZSBjbHVzdGVyIGFyZSBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkIFBvc3RncmVTUUwgTXVsdGktQVogUkRTIGRhdGFiYXNlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZFBvc3RncmVzQ2x1c3RlciBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdGFuZGFyZFBvc3RncmVzQ2x1c3RlclByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHN0YW5kYXJkVGFnczogU3RhbmRhcmRUYWdzLm1lcmdlKHByb3BzLnN0YW5kYXJkVGFncywgTGliU3RhbmRhcmRUYWdzKSxcbiAgICB9KTtcbiAgICAvLyBUT0RPIEltcGxlbWVudGF0aW9uXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,97 @@
1
+ import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
2
+ import type { IInstanceEngine, PostgresEngineVersion, StorageType } from 'aws-cdk-lib/aws-rds';
3
+ import type { Construct } from 'constructs';
4
+ import { ExtendedConstruct } from '../../aws-cdk';
5
+ import type { StandardPostgresProps } from './postgres-props';
6
+ /**
7
+ * Properties for a StandardPostgresInstance.
8
+ */
9
+ export interface StandardPostgresInstanceProps extends StandardPostgresProps {
10
+ /**
11
+ * The PostgreSQL engine version to use.
12
+ *
13
+ * @default the latest version supported by this library
14
+ */
15
+ readonly engineVersion?: PostgresEngineVersion;
16
+ /**
17
+ * Overrides the engine used for the instance. When provided, engineVersion
18
+ * is ignored.
19
+ *
20
+ * @default DatabaseInstanceEngine.postgres with engineVersion
21
+ */
22
+ readonly engine?: IInstanceEngine;
23
+ /**
24
+ * The instance type of the database instance.
25
+ *
26
+ * @default t4g.medium
27
+ */
28
+ readonly instanceType?: InstanceType;
29
+ /**
30
+ * The name given to the database instance.
31
+ *
32
+ * @default CloudFormation-generated name
33
+ */
34
+ readonly instanceIdentifier?: string;
35
+ /**
36
+ * Whether the instance is deployed in multiple availability zones.
37
+ *
38
+ * @default true
39
+ */
40
+ readonly multiAz?: boolean;
41
+ /**
42
+ * The storage type of the instance.
43
+ *
44
+ * @default StorageType.GP3
45
+ */
46
+ readonly storageType?: StorageType;
47
+ /**
48
+ * The allocated storage in gibibytes.
49
+ *
50
+ * @default 100
51
+ */
52
+ readonly allocatedStorage?: number;
53
+ /**
54
+ * The upper limit storage may be autoscaled to in gibibytes. Set to the same
55
+ * value as allocatedStorage to disable storage autoscaling.
56
+ *
57
+ * @default 1000
58
+ */
59
+ readonly maxAllocatedStorage?: number;
60
+ /**
61
+ * The provisioned IOPS for the instance. Only applies to io1 and io2 storage
62
+ * and to gp3 storage above the free IOPS threshold.
63
+ *
64
+ * @default no provisioned IOPS
65
+ */
66
+ readonly iops?: number;
67
+ /**
68
+ * The storage throughput in mebibytes per second. Only applies to gp3 storage.
69
+ *
70
+ * @default determined by RDS
71
+ */
72
+ readonly storageThroughput?: number;
73
+ /**
74
+ * The number of read replicas to create.
75
+ *
76
+ * @default 0
77
+ */
78
+ readonly readReplicas?: number;
79
+ /**
80
+ * The instance type used for read replicas.
81
+ *
82
+ * @default same as instanceType
83
+ */
84
+ readonly readReplicaInstanceType?: InstanceType;
85
+ /**
86
+ * Whether the instance is publicly accessible.
87
+ *
88
+ * @default false
89
+ */
90
+ readonly publiclyAccessible?: boolean;
91
+ }
92
+ /**
93
+ * A standard PostgreSQL RDS database instance.
94
+ */
95
+ export declare class StandardPostgresInstance extends ExtendedConstruct {
96
+ constructor(scope: Construct, id: string, props: StandardPostgresInstanceProps);
97
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardPostgresInstance = void 0;
4
+ const aws_cdk_1 = require("../../aws-cdk");
5
+ const truemark_1 = require("../../truemark");
6
+ /**
7
+ * A standard PostgreSQL RDS database instance.
8
+ */
9
+ class StandardPostgresInstance extends aws_cdk_1.ExtendedConstruct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, {
12
+ standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
13
+ });
14
+ // TODO Implementation
15
+ }
16
+ }
17
+ exports.StandardPostgresInstance = StandardPostgresInstance;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvc3RhbmRhcmQtcG9zdGdyZXMtaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsMkNBQThEO0FBQzlELDZDQUErQztBQXNHL0M7O0dBRUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLDJCQUFpQjtJQUM3RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFvQztRQUVwQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxzQkFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLDBCQUFlLENBQUM7U0FDdEUsQ0FBQyxDQUFDO1FBQ0gsc0JBQXNCO0lBQ3hCLENBQUM7Q0FDRjtBQVhELDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0luc3RhbmNlVHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7XG4gIElJbnN0YW5jZUVuZ2luZSxcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBTdG9yYWdlVHlwZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgdHlwZSB7Q29uc3RydWN0fSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7RXh0ZW5kZWRDb25zdHJ1Y3QsIFN0YW5kYXJkVGFnc30gZnJvbSAnLi4vLi4vYXdzLWNkayc7XG5pbXBvcnQge0xpYlN0YW5kYXJkVGFnc30gZnJvbSAnLi4vLi4vdHJ1ZW1hcmsnO1xuaW1wb3J0IHR5cGUge1N0YW5kYXJkUG9zdGdyZXNQcm9wc30gZnJvbSAnLi9wb3N0Z3Jlcy1wcm9wcyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBTdGFuZGFyZFBvc3RncmVzSW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRQb3N0Z3Jlc0luc3RhbmNlUHJvcHMgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IFBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBlbmdpbmUgdXNlZCBmb3IgdGhlIGluc3RhbmNlLiBXaGVuIHByb3ZpZGVkLCBlbmdpbmVWZXJzaW9uXG4gICAqIGlzIGlnbm9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IERhdGFiYXNlSW5zdGFuY2VFbmdpbmUucG9zdGdyZXMgd2l0aCBlbmdpbmVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBJSW5zdGFuY2VFbmdpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIHRoZSBkYXRhYmFzZSBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdDRnLm1lZGl1bVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBnaXZlbiB0byB0aGUgZGF0YWJhc2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGRlcGxveWVkIGluIG11bHRpcGxlIGF2YWlsYWJpbGl0eSB6b25lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIHR5cGUgb2YgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdG9yYWdlVHlwZS5HUDNcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VUeXBlPzogU3RvcmFnZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvY2F0ZWQgc3RvcmFnZSBpbiBnaWJpYnl0ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHVwcGVyIGxpbWl0IHN0b3JhZ2UgbWF5IGJlIGF1dG9zY2FsZWQgdG8gaW4gZ2liaWJ5dGVzLiBTZXQgdG8gdGhlIHNhbWVcbiAgICogdmFsdWUgYXMgYWxsb2NhdGVkU3RvcmFnZSB0byBkaXNhYmxlIHN0b3JhZ2UgYXV0b3NjYWxpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25lZCBJT1BTIGZvciB0aGUgaW5zdGFuY2UuIE9ubHkgYXBwbGllcyB0byBpbzEgYW5kIGlvMiBzdG9yYWdlXG4gICAqIGFuZCB0byBncDMgc3RvcmFnZSBhYm92ZSB0aGUgZnJlZSBJT1BTIHRocmVzaG9sZC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcHJvdmlzaW9uZWQgSU9QU1xuICAgKi9cbiAgcmVhZG9ubHkgaW9wcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgdGhyb3VnaHB1dCBpbiBtZWJpYnl0ZXMgcGVyIHNlY29uZC4gT25seSBhcHBsaWVzIHRvIGdwMyBzdG9yYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZXRlcm1pbmVkIGJ5IFJEU1xuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZVRocm91Z2hwdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVhZCByZXBsaWNhcyB0byBjcmVhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRSZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgdXNlZCBmb3IgcmVhZCByZXBsaWNhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgc2FtZSBhcyBpbnN0YW5jZVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRSZXBsaWNhSW5zdGFuY2VUeXBlPzogSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkIFBvc3RncmVTUUwgUkRTIGRhdGFiYXNlIGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRQb3N0Z3Jlc0luc3RhbmNlIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkUG9zdGdyZXNJbnN0YW5jZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHN0YW5kYXJkVGFnczogU3RhbmRhcmRUYWdzLm1lcmdlKHByb3BzLnN0YW5kYXJkVGFncywgTGliU3RhbmRhcmRUYWdzKSxcbiAgICB9KTtcbiAgICAvLyBUT0RPIEltcGxlbWVudGF0aW9uXG4gIH1cbn1cbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * as domain_redirect from './aws-patterns-domain-redirect/index';
14
14
  export * as website from './aws-patterns-website/index';
15
15
  export * as wordpress from './aws-patterns-wordpress/index';
16
16
  export * as aws_patterns_workspaces from './aws-patterns-workspaces/index';
17
+ export * as aws_rds from './aws-rds/index';
17
18
  export * as aws_route53 from './aws-route53/index';
18
19
  export * as aws_s3 from './aws-s3/index';
19
20
  export * as aws_ses from './aws-ses/index';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.helpers = exports.aws_workspaces = exports.aws_wafv2 = exports.aws_vpc = exports.aws_ssm_patch = exports.aws_ssm_activation = exports.aws_ssm = exports.aws_sqs = exports.aws_ses = exports.aws_s3 = exports.aws_route53 = exports.aws_patterns_workspaces = exports.wordpress = exports.website = exports.domain_redirect = exports.aws_monitoring = exports.aws_lambda = exports.aws_ecs = exports.aws_dynamodb = exports.aws_directory_service = exports.aws_codepipeline = exports.aws_cloudwatch = exports.aws_cloudfront = exports.aws_centergauge = exports.aws_cdk = exports.aws_bedrock = exports.aws_apigatewayv2 = void 0;
3
+ exports.helpers = exports.aws_workspaces = exports.aws_wafv2 = exports.aws_vpc = exports.aws_ssm_patch = exports.aws_ssm_activation = exports.aws_ssm = exports.aws_sqs = exports.aws_ses = exports.aws_s3 = exports.aws_route53 = exports.aws_rds = exports.aws_patterns_workspaces = exports.wordpress = exports.website = exports.domain_redirect = exports.aws_monitoring = exports.aws_lambda = exports.aws_ecs = exports.aws_dynamodb = exports.aws_directory_service = exports.aws_codepipeline = exports.aws_cloudwatch = exports.aws_cloudfront = exports.aws_centergauge = exports.aws_cdk = exports.aws_bedrock = exports.aws_apigatewayv2 = void 0;
4
4
  exports.aws_apigatewayv2 = require("./aws-apigatewayv2/index");
5
5
  exports.aws_bedrock = require("./aws-bedrock/index");
6
6
  exports.aws_cdk = require("./aws-cdk/index");
@@ -17,6 +17,7 @@ exports.domain_redirect = require("./aws-patterns-domain-redirect/index");
17
17
  exports.website = require("./aws-patterns-website/index");
18
18
  exports.wordpress = require("./aws-patterns-wordpress/index");
19
19
  exports.aws_patterns_workspaces = require("./aws-patterns-workspaces/index");
20
+ exports.aws_rds = require("./aws-rds/index");
20
21
  exports.aws_route53 = require("./aws-route53/index");
21
22
  exports.aws_s3 = require("./aws-s3/index");
22
23
  exports.aws_ses = require("./aws-ses/index");
@@ -28,4 +29,4 @@ exports.aws_vpc = require("./aws-vpc/index");
28
29
  exports.aws_wafv2 = require("./aws-wafv2/index");
29
30
  exports.aws_workspaces = require("./aws-workspaces/index");
30
31
  exports.helpers = require("./helpers/index");
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0RBQTZEO0FBQzdELHFEQUFtRDtBQUNuRCw2Q0FBMkM7QUFDM0MsNkRBQTJEO0FBQzNELDJEQUF5RDtBQUN6RCwyREFBeUQ7QUFDekQsK0RBQTZEO0FBQzdELHlFQUF1RTtBQUN2RSx1REFBcUQ7QUFDckQsNkNBQTJDO0FBQzNDLG1EQUFpRDtBQUNqRCwyREFBeUQ7QUFDekQsMEVBQXdFO0FBQ3hFLDBEQUF3RDtBQUN4RCw4REFBNEQ7QUFDNUQsNkVBQTJFO0FBQzNFLHFEQUFtRDtBQUNuRCwyQ0FBeUM7QUFDekMsNkNBQTJDO0FBQzNDLDZDQUEyQztBQUMzQyw2Q0FBMkM7QUFDM0MsbUVBQWlFO0FBQ2pFLHlEQUF1RDtBQUN2RCw2Q0FBMkM7QUFDM0MsaURBQStDO0FBQy9DLDJEQUF5RDtBQUN6RCw2Q0FBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBhd3NfYXBpZ2F0ZXdheXYyIGZyb20gJy4vYXdzLWFwaWdhdGV3YXl2Mi9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfYmVkcm9jayBmcm9tICcuL2F3cy1iZWRyb2NrL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19jZGsgZnJvbSAnLi9hd3MtY2RrL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19jZW50ZXJnYXVnZSBmcm9tICcuL2F3cy1jZW50ZXJnYXVnZS9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2xvdWRmcm9udCBmcm9tICcuL2F3cy1jbG91ZGZyb250L2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19jbG91ZHdhdGNoIGZyb20gJy4vYXdzLWNsb3Vkd2F0Y2gvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2NvZGVwaXBlbGluZSBmcm9tICcuL2F3cy1jb2RlcGlwZWxpbmUvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2RpcmVjdG9yeV9zZXJ2aWNlIGZyb20gJy4vYXdzLWRpcmVjdG9yeS1zZXJ2aWNlL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19keW5hbW9kYiBmcm9tICcuL2F3cy1keW5hbW9kYi9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfZWNzIGZyb20gJy4vYXdzLWVjcy9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfbGFtYmRhIGZyb20gJy4vYXdzLWxhbWJkYS9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfbW9uaXRvcmluZyBmcm9tICcuL2F3cy1tb25pdG9yaW5nL2luZGV4JztcbmV4cG9ydCAqIGFzIGRvbWFpbl9yZWRpcmVjdCBmcm9tICcuL2F3cy1wYXR0ZXJucy1kb21haW4tcmVkaXJlY3QvaW5kZXgnO1xuZXhwb3J0ICogYXMgd2Vic2l0ZSBmcm9tICcuL2F3cy1wYXR0ZXJucy13ZWJzaXRlL2luZGV4JztcbmV4cG9ydCAqIGFzIHdvcmRwcmVzcyBmcm9tICcuL2F3cy1wYXR0ZXJucy13b3JkcHJlc3MvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3BhdHRlcm5zX3dvcmtzcGFjZXMgZnJvbSAnLi9hd3MtcGF0dGVybnMtd29ya3NwYWNlcy9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfcm91dGU1MyBmcm9tICcuL2F3cy1yb3V0ZTUzL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19zMyBmcm9tICcuL2F3cy1zMy9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfc2VzIGZyb20gJy4vYXdzLXNlcy9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfc3FzIGZyb20gJy4vYXdzLXNxcy9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfc3NtIGZyb20gJy4vYXdzLXNzbS9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfc3NtX2FjdGl2YXRpb24gZnJvbSAnLi9hd3Mtc3NtLWFjdGl2YXRpb24vaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NzbV9wYXRjaCBmcm9tICcuL2F3cy1zc20tcGF0Y2gvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3ZwYyBmcm9tICcuL2F3cy12cGMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3dhZnYyIGZyb20gJy4vYXdzLXdhZnYyL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c193b3Jrc3BhY2VzIGZyb20gJy4vYXdzLXdvcmtzcGFjZXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgaGVscGVycyBmcm9tICcuL2hlbHBlcnMvaW5kZXgnO1xuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0RBQTZEO0FBQzdELHFEQUFtRDtBQUNuRCw2Q0FBMkM7QUFDM0MsNkRBQTJEO0FBQzNELDJEQUF5RDtBQUN6RCwyREFBeUQ7QUFDekQsK0RBQTZEO0FBQzdELHlFQUF1RTtBQUN2RSx1REFBcUQ7QUFDckQsNkNBQTJDO0FBQzNDLG1EQUFpRDtBQUNqRCwyREFBeUQ7QUFDekQsMEVBQXdFO0FBQ3hFLDBEQUF3RDtBQUN4RCw4REFBNEQ7QUFDNUQsNkVBQTJFO0FBQzNFLDZDQUEyQztBQUMzQyxxREFBbUQ7QUFDbkQsMkNBQXlDO0FBQ3pDLDZDQUEyQztBQUMzQyw2Q0FBMkM7QUFDM0MsNkNBQTJDO0FBQzNDLG1FQUFpRTtBQUNqRSx5REFBdUQ7QUFDdkQsNkNBQTJDO0FBQzNDLGlEQUErQztBQUMvQywyREFBeUQ7QUFDekQsNkNBQTJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgYXdzX2FwaWdhdGV3YXl2MiBmcm9tICcuL2F3cy1hcGlnYXRld2F5djIvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2JlZHJvY2sgZnJvbSAnLi9hd3MtYmVkcm9jay9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2RrIGZyb20gJy4vYXdzLWNkay9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2VudGVyZ2F1Z2UgZnJvbSAnLi9hd3MtY2VudGVyZ2F1Z2UvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2Nsb3VkZnJvbnQgZnJvbSAnLi9hd3MtY2xvdWRmcm9udC9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2xvdWR3YXRjaCBmcm9tICcuL2F3cy1jbG91ZHdhdGNoL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19jb2RlcGlwZWxpbmUgZnJvbSAnLi9hd3MtY29kZXBpcGVsaW5lL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19kaXJlY3Rvcnlfc2VydmljZSBmcm9tICcuL2F3cy1kaXJlY3Rvcnktc2VydmljZS9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfZHluYW1vZGIgZnJvbSAnLi9hd3MtZHluYW1vZGIvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2VjcyBmcm9tICcuL2F3cy1lY3MvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2xhbWJkYSBmcm9tICcuL2F3cy1sYW1iZGEvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX21vbml0b3JpbmcgZnJvbSAnLi9hd3MtbW9uaXRvcmluZy9pbmRleCc7XG5leHBvcnQgKiBhcyBkb21haW5fcmVkaXJlY3QgZnJvbSAnLi9hd3MtcGF0dGVybnMtZG9tYWluLXJlZGlyZWN0L2luZGV4JztcbmV4cG9ydCAqIGFzIHdlYnNpdGUgZnJvbSAnLi9hd3MtcGF0dGVybnMtd2Vic2l0ZS9pbmRleCc7XG5leHBvcnQgKiBhcyB3b3JkcHJlc3MgZnJvbSAnLi9hd3MtcGF0dGVybnMtd29yZHByZXNzL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19wYXR0ZXJuc193b3Jrc3BhY2VzIGZyb20gJy4vYXdzLXBhdHRlcm5zLXdvcmtzcGFjZXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3JkcyBmcm9tICcuL2F3cy1yZHMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3JvdXRlNTMgZnJvbSAnLi9hd3Mtcm91dGU1My9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfczMgZnJvbSAnLi9hd3MtczMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NlcyBmcm9tICcuL2F3cy1zZXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NxcyBmcm9tICcuL2F3cy1zcXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NzbSBmcm9tICcuL2F3cy1zc20vaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NzbV9hY3RpdmF0aW9uIGZyb20gJy4vYXdzLXNzbS1hY3RpdmF0aW9uL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19zc21fcGF0Y2ggZnJvbSAnLi9hd3Mtc3NtLXBhdGNoL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c192cGMgZnJvbSAnLi9hd3MtdnBjL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c193YWZ2MiBmcm9tICcuL2F3cy13YWZ2Mi9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfd29ya3NwYWNlcyBmcm9tICcuL2F3cy13b3Jrc3BhY2VzL2luZGV4JztcbmV4cG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzL2luZGV4JztcbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
3
  "description": "AWS CDK constructs created by TrueMark",
4
- "version": "1.26.0",
4
+ "version": "1.27.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "typesVersions": {
@@ -48,6 +48,9 @@
48
48
  "aws-patterns-wordpress": [
49
49
  "./dist/aws-patterns-wordpress/index.d.ts"
50
50
  ],
51
+ "aws-rds": [
52
+ "./dist/aws-rds/index.d.ts"
53
+ ],
51
54
  "aws-route53": [
52
55
  "./dist/aws-route53/index.d.ts"
53
56
  ],
@@ -186,6 +189,10 @@
186
189
  "types": "./dist/aws-patterns-wordpress/index.d.ts",
187
190
  "default": "./dist/aws-patterns-wordpress/index.js"
188
191
  },
192
+ "./aws-rds": {
193
+ "types": "./dist/aws-rds/index.d.ts",
194
+ "default": "./dist/aws-rds/index.js"
195
+ },
189
196
  "./aws-route53": {
190
197
  "types": "./dist/aws-route53/index.d.ts",
191
198
  "default": "./dist/aws-route53/index.js"